Browse Source

v1.7 修改问题

master
DESKTOP-00SUCB6\Administrator 4 years ago
parent
commit
a8547db242
  1. 12
      public/template/001/login/login/index.scss
  2. 14
      public/template/001/styles/element-ui.scss
  3. 41
      src/api/login.js
  4. 1
      src/main.js
  5. 35
      src/permission.js
  6. 28
      src/router/index.js
  7. 4
      src/utils/request.js
  8. 3
      src/views/forum/news.vue
  9. 3
      src/views/harvest/benchmark.vue
  10. 3
      src/views/harvest/electronicMeetings.vue
  11. 3
      src/views/harvest/example.vue
  12. 3
      src/views/harvest/whitepaper.vue
  13. 36
      src/views/home/index.vue
  14. 63
      src/views/layout/components/header.vue
  15. 242
      src/views/login/companyInfo.vue
  16. 21
      src/views/login/editPassword.vue
  17. 136
      src/views/login/myMeeting.vue
  18. 6
      src/views/login/retrievePassword.vue
  19. 210
      src/views/login/userInfo.vue
  20. 3
      src/views/meeting/news.vue
  21. 197
      src/views/meeting/signup.vue
  22. 29
      src/views/notice/noticeShow.vue

12
public/template/001/login/login/index.scss

@ -11,6 +11,12 @@
.platform-select .el-input{ .platform-select .el-input{
width:100%; width:100%;
} }
.is-error .el-form-item__content {
border: 1px solid #e60012;
}
.el-form-item__content:focus-within {
border: 1px solid #01496e;
}
.el-input { .el-input {
display: inline-block; display: inline-block;
height: 34px; height: 34px;
@ -226,9 +232,3 @@
color:#000; color:#000;
background-color: rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.2);
} }
.is-error .el-form-item__content {
border: 1px solid #e60012;
}
.el-form-item__content:focus-within {
border: 1px solid #01496e;
}

14
public/template/001/styles/element-ui.scss

@ -5,9 +5,9 @@
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
} }
.el-table__header-wrapper tr { // .el-table__header-wrapper tr {
background-color: #ececec !important; // background-color: #ececec !important;
} // }
.el-table th, .el-table th,
.el-table tr { .el-table tr {
background-color: transparent; background-color: transparent;
@ -87,10 +87,12 @@
//下拉菜单 //下拉菜单
.el-dropdown-menu { .el-dropdown-menu {
background-color: #F7F7F7 !important; background-color: #fff !important;
.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover { .el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover {
background-color:#014a6e21 !important; // background-color:#014a6e21 !important;
color: #606266; color: #1A5C7D;
// font-weight: 600;
// font-size: 14px;
} }
} }

41
src/api/login.js

@ -41,20 +41,47 @@ export function setUpPassword(params) {
data:params data:params
}); });
} }
//获取登录信
export function getLoginInfo() {
return request({
url: '/userWeb/getLoginInfo',
method: 'get'
});
}
//普通账户修改密码 //普通账户修改密码
export function updatePass(params) { export function updatePass(params) {
return request({ return request({
url: '/api-login/user/updatePassword', baseURL:config.CODE_URL,
url: '/common/updatePassword',
method: 'post',
data:params
});
}
//修改个人信息
export function updateUserInfo(params) {
return request({
url: '/userWeb/updateUserInfo',
method: 'post', method: 'post',
data:params data:params
}); });
} }
//修改企业信息
export function updateCompanyInfo(params) {
return request({
url: '/userWeb/updateCompanyInfo',
method: 'post',
data:params
});
}
//获取短信验证码 //获取短信验证码
export function sendMessage(params) { export function sendMessage(params) {
return request({ return request({

1
src/main.js

@ -8,6 +8,7 @@ import router from './router'
import store from './store' import store from './store'
import md5 from 'js-md5'; //md5 加密 import md5 from 'js-md5'; //md5 加密
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import '@/permission' // 权限控制
Vue.prototype.$md5 = md5 Vue.prototype.$md5 = md5
Vue.prototype.$echarts = echarts Vue.prototype.$echarts = echarts
Vue.config.productionTip = false Vue.config.productionTip = false

35
src/permission.js

@ -0,0 +1,35 @@
import router from './router'
import {MessageBox } from 'element-ui'
// import NProgress from 'nprogress' // Progress 进度条
// import 'nprogress/nprogress.css'// Progress 进度条样式
import {getToken} from '@/utils/auth' // 验权
const whiteList = ['signupMeeting'] // 不重定向白名单
router.beforeEach((to, from, next) => {
// NProgress.start()
if (getToken()) {
next()
document.documentElement.scrollTop = document.body.scrollTop = 0;
} else {
if (whiteList.indexOf(to.name) !== -1) {
MessageBox.alert('该功能需要登录后使用,请登录', '提示', {
closeOnClickModal:true,
confirmButtonText: '去登录',
cancelButtonText: '返回',
type: 'warning',
}).then(() => {
next('/login')
})
.catch(action => {
});
} else {
next()
}
}
// NProgress.done()
})
// router.afterEach(() => {
// NProgress.done() // 结束Progress
// })

28
src/router/index.js

@ -76,6 +76,17 @@ const routes = [
}, },
meta: {title: '大会新闻', icon: 'register', noCache: true}, meta: {title: '大会新闻', icon: 'register', noCache: true},
},
{
path: 'signup',
name: 'signupMeeting',
components:{
banner: () => import('@/components/banner'),
default:() => import('@/views/meeting/signup.vue')
},
meta: {title: '大会报名', icon: 'register', noCache: true},
}, },
// { // {
// path: 'replay', // path: 'replay',
@ -198,7 +209,22 @@ const routes = [
name: 'userInfo', name: 'userInfo',
hidden: true, hidden: true,
meta: {title: '个人中心', icon: 'eye', noCache: true}, meta: {title: '个人中心', icon: 'eye', noCache: true},
}, },
{
path: 'companyInfo',
component: () => import('@/views/login/companyInfo.vue'),
name: 'companyInfo',
hidden: true,
meta: {title: '企业信息', icon: 'eye', noCache: true},
},
{
path: 'myMeeting',
component: () => import('@/views/login/myMeeting.vue'),
name: 'myMeeting',
hidden: true,
meta: {title: '我的大会', icon: 'eye', noCache: true},
},
{ {
path: 'register', path: 'register',
component: () => import('@/views/login/register.vue'), component: () => import('@/views/login/register.vue'),

4
src/utils/request.js

@ -71,14 +71,14 @@ service.interceptors.response.use(
if (res.status !== 200) { if (res.status !== 200) {
// 300:失效的token; // 300:失效的token;
if (res.status === 511) { if (res.status === 74001) {
if (isToken) { if (isToken) {
isToken = false isToken = false
MessageBox.alert('你已被登出,请重新登录', '确定登出', { MessageBox.alert('你已被登出,请重新登录', '确定登出', {
confirmButtonText: '重新登录', confirmButtonText: '重新登录',
type: 'warning', type: 'warning',
callback: () => { callback: () => {
store.dispatch('FedLogOut').then(() => { store.dispatch('LogOut').then(() => {
isToken = true isToken = true
router.replace({ name: 'login' }) router.replace({ name: 'login' })
// location.reload(); // location.reload();

3
src/views/forum/news.vue

@ -57,7 +57,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

3
src/views/harvest/benchmark.vue

@ -57,7 +57,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

3
src/views/harvest/electronicMeetings.vue

@ -57,7 +57,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

3
src/views/harvest/example.vue

@ -57,7 +57,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

3
src/views/harvest/whitepaper.vue

@ -57,7 +57,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

36
src/views/home/index.vue

@ -21,9 +21,9 @@
联盟介绍 联盟介绍
<span class="font-size-16">about ></span> <span class="font-size-16">about ></span>
</span> </span>
<p class="content">由一线食品生产装备解决方案提供商等共同发起成立的中国食品工业互联网产业联盟旨在更好的引导食品工业企业加强智能装备智能工厂云计算物联网移动互联网大数据等...</p> <p class="content">{{IntroduceDescription}}</p>
<br><br><br> <br><br><br>
<router-link :to="{name:'noticeShow',query:{'type':'LMJS','title':'关于联盟'}}"> <router-link target="_blank" :to="{name:'noticeShow',query:{'type':'LMJS','title':'关于联盟'}}">
<a class="mybutton-1 color-white">查看更多 >></a> <a class="mybutton-1 color-white">查看更多 >></a>
</router-link> </router-link>
</div> </div>
@ -184,7 +184,7 @@
</div> </div>
</template> </template>
<script> <script>
import {getNoticeList,getNoticeListByMoreType} from "@/api/notice.js" import {getNoticeList,getNoticeListByMoreType,getNoticeInfo} from "@/api/notice.js"
export default { export default {
name:'home', name:'home',
data(){ data(){
@ -193,17 +193,19 @@ export default {
newsList:[], newsList:[],
informationList:[], informationList:[],
noticeList:[], noticeList:[],
IntroduceDescription:''
} }
}, },
mounted(){ mounted(){
this.initCarousel() this.initCarousel()
this.initNewsOrInformation("LMDTLX") this.initNewsOrInformation("LMDTLX")
this.initNoticeByMoreType() this.initNoticeByMoreType()
this.initIntroduce()
}, },
methods:{ methods:{
alertMesg(mes) { alertMesg(mes) {
this.$alert(mes,'提示', { confirmButtonText: '确定',}); this.$alert(mes,'提示', { confirmButtonText: '确定',});
}, },
initCarousel(){ initCarousel(){
let carouselParams = { let carouselParams = {
"pageNum": 1, "pageNum": 1,
@ -218,6 +220,22 @@ export default {
this.carouselPicList = res.data.list this.carouselPicList = res.data.list
}) })
}, },
initIntroduce(){
let params = {
"pageNum": 1,
"pageSize": 1,
"search": {
"type": 'LMJS'
},
"sort": ""
}
getNoticeList(params).then(res => {
if(res.data && res.data.list.length > 0)
{
this.IntroduceDescription = res.data.list[0].description
}
})
},
initNewsOrInformation(type){ initNewsOrInformation(type){
let newsParams = { let newsParams = {
"pageNum": 1, "pageNum": 1,
@ -247,7 +265,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
changeTitleBox(e,type){ changeTitleBox(e,type){
let aDoc = document.getElementsByName("title-box") let aDoc = document.getElementsByName("title-box")
@ -258,9 +277,6 @@ export default {
e.currentTarget.className = "title-box is-active" e.currentTarget.className = "title-box is-active"
// e.target.className = "title-box is-active" // e.target.className = "title-box is-active"
this.initNewsOrInformation(type) this.initNewsOrInformation(type)
},
jump(){
this.$router.push({name:'electronicMeetings'})
} }
} }

63
src/views/layout/components/header.vue

@ -2,18 +2,35 @@
<div> <div>
<div class="top-content"> <div class="top-content">
<span>欢迎访问中国食品工业互联网产业联盟</span> <span>欢迎访问中国食品工业互联网产业联盟</span>
<span class="float-right"> <span class="user-block">
<a href="#/">返回首页</a> <a href="#/">返回首页</a>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<span v-if="!name"> <span v-if="!name">
<a href="#/register">加入联盟</a> <a v-if="!name" href="#/register">加入联盟</a>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<a href="#/login">登录</a> <a href="#/login">登录</a>
</span> </span>
<span v-else> <span v-else>
<span>欢迎{{name}}</span> <el-dropdown >
<el-divider direction="vertical"></el-divider> <span class="avatar-wrapper">
<a >个人中心</a> <span>欢迎{{name}}</span>
<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu class="user-dropdown" slot="dropdown">
<router-link class="inlineBlock" to="/userInfo">
<el-dropdown-item>个人信息</el-dropdown-item>
</router-link>
<router-link class="inlineBlock" to="/companyInfo">
<el-dropdown-item>企业信息</el-dropdown-item>
</router-link>
<router-link class="inlineBlock" to="/myMeeting">
<el-dropdown-item>我的大会</el-dropdown-item>
</router-link>
<router-link class="inlineBlock" to="/editPassword">
<el-dropdown-item>修改密码</el-dropdown-item>
</router-link>
</el-dropdown-menu>
</el-dropdown>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<a @click="logout">退出</a> <a @click="logout">退出</a>
</span> </span>
@ -124,7 +141,8 @@ export default {
{ {
if(item.meta.typeId) if(item.meta.typeId)
{ {
this.$router.push({name:'noticeShow',query:{'type':item.meta.typeId,'title':title}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'type':item.meta.typeId,'title':title}});
window.open(routeUrl.href, '_blank');
} else { } else {
this.$router.push({name:item.name}) this.$router.push({name:item.name})
} }
@ -136,14 +154,19 @@ export default {
}, },
logout() { logout() {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.reload() // vue-router bug\
this.$router.push({path: "/"}); this.$router.push({path: "/"});
// vue-router bug\
location.reload()
}) })
} }
} }
}; };
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
.user-block {
position: absolute;
right: 0;
}
.top-content { .top-content {
position: relative; position: relative;
width: 1200px; width: 1200px;
@ -187,26 +210,8 @@ export default {
color: #fff; color: #fff;
border: 1px solid #fff; border: 1px solid #fff;
} }
// @media screen and (min-width: 1300px) and (max-width: 1500px) { .avatar-wrapper {
// .logo { cursor: pointer;
// // width: 420px; position: relative;
// height: 70px; }
// }
// }
// @media screen and (min-width: 1000px) and (max-width: 1300px) {
// .logo {
// display: none;
// }
// .logo2 {
// display: inline-block;
// }
// }
// @media screen and (max-width: 1000px) {
// .logo {
// display: none;
// }
// .logo2 {
// display: none;
// }
// }
</style> </style>

242
src/views/login/companyInfo.vue

@ -0,0 +1,242 @@
<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>
<el-form :model="form" :rules="rules" ref="userInfo" class="el-form-new">
<el-form-item label="企业名称:" :label-width="formLabelWidth" prop="name">
<el-input v-if="isEdit" v-model="form.name" autocomplete="off" placeholder="请输入企业名称"></el-input>
<span v-else>{{form.name}}</span>
</el-form-item>
<el-form-item label="组织/单位营业执照:" :label-width="formLabelWidth" prop="enOpeAddress">
<div class="flex-box">
<el-upload
v-if="isEdit"
class="avatar-uploader"
:action="upload_file"
:headers="upload_headers"
:data="upload_data"
:show-file-list="false"
:on-success="handleLicenceSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="businessLicenceUrl" :src="businessLicenceUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<img v-else :src="businessLicenceUrl" class="avatar"/>
</div>
</el-form-item>
<el-form-item label="法人姓名:" :label-width="formLabelWidth" prop="enLegalName">
<el-input v-if="isEdit" v-model="form.enLegalName" autocomplete="off" placeholder="请输入法人姓名"></el-input>
<span v-else>{{form.enLegalName}}</span>
</el-form-item>
<el-form-item label="法人身份证照:" :label-width="formLabelWidth" prop="enCeAddressZ">
<div v-if="isEdit" class="flex-box">
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:headers="upload_headers"
:data="upload_data"
:show-file-list="false"
:on-success="handlePhotoSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="photoUrl" :src="photoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:headers="upload_headers"
:data="upload_data"
:show-file-list="false"
:on-success="handleReverseSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="reversePhotoUrl" :src="reversePhotoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<div v-else class="flex-box">
<img :src="photoUrl" class="avatar"/>&nbsp;
<img :src="reversePhotoUrl" class="avatar"/>
</div>
<el-form-item label-width="150px" prop="enCeAddressF"></el-form-item>
</el-form-item>
<el-row>
<el-form-item :label-width="formLabelWidth" style="text-align: center;">
<template v-if="isEdit">
<el-button type="primary" size="small" @click="submitForm('userInfo')" style="width:200px;text-align: center;">确定</el-button>
<el-button type="info" size="small" @click="resetForm('userInfo')" >返回</el-button>
</template>
<template v-else>
<el-button type="primary" size="small" @click="editInfo" style="width:200px;text-align: center;">编辑</el-button>
</template>
</el-form-item>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import {getLoginInfo,updateCompanyInfo} from "@/api/login"
export default {
name: 'companyInfo',
data() {
//
const checkPhotoZ = (rule, value, callback) => {
if ("" == value || !value) {
return callback(new Error("请上传正面法人证件照"));
} else {
callback();
}
};
//
const checkPhotoF = (rule, value, callback) => {
if ("" == value || !value) {
return callback(new Error("请上传反面法人证件照"));
} else {
callback();
}
};
//
const checkPhotoOpe = (rule, value, callback) => {
if ("" == value || !value) {
return callback(new Error("请上传营业执照"));
} else {
callback();
}
};
return {
isEdit: false,
code_url: config.CODE_URL,
formLabelWidth: '170px',
upload_file: config.UPLOAD_URL, //
upload_headers:{
powerToken: '800580795f01449f9100c4d2983d13c9'
},
upload_data:{
uploadType:'1',
suffixType:'8',
folder:'company'
},
photoUrl: "", //
reversePhotoUrl: "", //
businessLicenceUrl: "", ///
form: {
enCeAddressF: "",
enCeAddressZ: "",
enLegalName: "",
enOpeAddress: "",
name: "",
},
params:{},
rules: {
name: [{required: true, message: "请输入企业名称", trigger: "blur"}],
enLegalName: [
{required: true, message: "请输入法人姓名", trigger: "blur"}
],
enCeAddressZ: [
{required: true, validator: checkPhotoZ, trigger: "blur"}
],
enCeAddressF: [
{required: true, validator: checkPhotoF, trigger: "blur"}
],
enOpeAddress: [
{required: true, validator: checkPhotoOpe, trigger: "blur"}
]
}
}
},
mounted() {
this.initData()
},
methods: {
initData() {
getLoginInfo().then(res => {
this.form = res.data.companyInfo
this.photoUrl = this.form.enCeAddressZ
this.reversePhotoUrl = this.form.enCeAddressF
this.businessLicenceUrl = this.form.enOpeAddress
})
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.updateCompanyInfomation()
} else {
return false;
}
});
},
updateCompanyInfomation(){
const params = {
enCeAddressF: this.form.enCeAddressF,
enCeAddressZ: this.form.enCeAddressZ,
enLegalName: this.form.enLegalName,
enOpeAddress: this.form.enOpeAddress,
name: this.form.name,
id: this.form.id,
}
updateCompanyInfo(params).then(res => {
this.$message({
message: "修改成功!",
type: "success"
});
this.isEdit = false
this.initData()
})
},
editInfo() {
let _obj = JSON.stringify(this.form)
this.params = JSON.parse(_obj);
this.isEdit = true
},
resetForm(formName) {
this.$refs[formName].resetFields();
let _obj = JSON.stringify(this.params)
this.form = JSON.parse(_obj);
this.isEdit = false
},
///
handleLicenceSuccess(res, file) {
this.businessLicenceUrl = URL.createObjectURL(file.raw);
this.form.enOpeAddress = res.data;
},
//
handlePhotoSuccess(res, file) {
this.photoUrl = URL.createObjectURL(file.raw);
this.form.enCeAddressZ = res.data;
},
//
handleReverseSuccess(res, file) {
this.reversePhotoUrl = URL.createObjectURL(file.raw);
this.form.enCeAddressF = res.data;
},
//
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return isLt2M;
},
}
}
</script>
<style lang="scss" scoped>
// .form-footer {
// text-align: center;
// }
.el-form-new {
width: 500px;
min-height: 450px;
margin: 0 auto;
}
</style>

21
src/views/login/editPassword.vue

@ -1,6 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="app-main"> <div class="app-main">
<p class="font-size-24 font-weight-bold line-height-2em">修改密码</p>
<el-divider></el-divider>
<el-form :model="form" :rules="rules" ref="password" class="el-form-new"> <el-form :model="form" :rules="rules" ref="password" class="el-form-new">
<el-form-item label="原密码:" :label-width="formLabelWidth" prop="oldPassword"> <el-form-item label="原密码:" :label-width="formLabelWidth" prop="oldPassword">
<el-input type="password" v-model="form.oldPassword" autocomplete="off"></el-input> <el-input type="password" v-model="form.oldPassword" autocomplete="off"></el-input>
@ -11,10 +13,10 @@
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="again"> <el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="again">
<el-input type="password" v-model="form.again" autocomplete="off"></el-input> <el-input type="password" v-model="form.again" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<div class="form-footer"> <el-form-item :label-width="formLabelWidth" style="text-align: center;">
<el-button type="danger" size="mini" @click="submitForm('password')">确定</el-button> <el-button type="primary" size="small" @click="submitForm('password')" style="width:150px;text-align: center;">确定</el-button>
<el-button type="info" size="mini" @click="resetForm('password')">取消</el-button> <el-button type="info" size="small" @click="resetForm('password')">返回</el-button>
</div> </el-form-item>
</el-form> </el-form>
</div> </div>
</div> </div>
@ -62,13 +64,12 @@ export default {
methods: { methods: {
updatePass() { updatePass() {
const param = { const param = {
id:this.id, "account": this.name,
userName: this.name, "confirmPassword": this.$md5(this.form.again),
newpass: this.$md5(this.form.newPassword), "newPassword": this.$md5(this.form.newPassword),
oldpass: this.$md5(this.form.oldPassword) "oldPassword": this.$md5(this.form.oldPassword)
}; };
updatePass(param).then(res => { updatePass(param).then(res => {
console.log(res);
this.$message({ this.$message({
message: "修改成功!", message: "修改成功!",
type: "success" type: "success"
@ -81,7 +82,6 @@ export default {
if (valid) { if (valid) {
this.updatePass(); this.updatePass();
} else { } else {
console.log("error submit!!");
return false; return false;
} }
}); });
@ -100,6 +100,7 @@ export default {
} }
.el-form-new { .el-form-new {
width: 400px; width: 400px;
min-height: 450px;
margin: 0 auto; margin: 0 auto;
} }
</style> </style>

136
src/views/login/myMeeting.vue

@ -0,0 +1,136 @@
<template>
<div class="app-container">
<div class="app-main" style="min-height:500px">
<p class="font-size-24 font-weight-bold line-height-2em">我的大会</p>
<el-divider></el-divider>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="title" label="会议名称"></el-table-column>
<el-table-column prop="type" label="会议类型" width="120">
<template slot-scope="scope">
<span v-if="scope.row.type == 1">食品工业互联网大会</span>
<span v-else-if="scope.row.type == 2">食品工业转型升级论坛</span>
<span v-else-if="scope.row.type == 3">线上会议沙龙</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始时间" width="120"></el-table-column>
<el-table-column prop="endTime" label="结束时间" width="120"></el-table-column>
<el-table-column prop="confereeType" label="参会类型" width="120">
<template slot-scope="scope">
<span v-if="scope.row.confereeType == 0">所有人</span>
<span v-else-if="scope.row.confereeType == 1">仅限会员</span>
</template>
</el-table-column>
<el-table-column prop="schedule" label="会议日程"></el-table-column>
<el-table-column prop="address" label="会议地址"></el-table-column>
<el-table-column prop="sponsor" label="主办单位"></el-table-column>
<el-table-column prop="organizer" label="承办单位"></el-table-column>
<el-table-column prop="coOrganizer" label="协办单位"></el-table-column>
<!-- <el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-button type="text" size="small" @click="editMeet(scope.row.id)"><i class="el-icon-edit"></i>修改</el-button>
<el-button type="text" size="small" @click="deleteMeet(scope.row.id)"><i class="el-icon-delete"></i>移除</el-button>
</template>
</el-table-column> -->
</el-table>
<el-pagination
layout="prev, pager, next"
:current-page.sync="currentPage"
@current-change="handleCurrentChange"
:page-size="10"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>
import {getNoticeList} from "@/api/notice.js"
export default {
name:"myMeeting",
data(){
return {
tableData:[],
currentPage:1,
total:0
}
},
mounted(){
},
methods:{
//
handleCurrentChange(val) {
this.currentPage = val
this.initSearchList()
}
}
}
</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>

6
src/views/login/retrievePassword.vue

@ -68,7 +68,7 @@ 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.form.newPassword) {
return callback(new Error("两次输入密码不一致")); return callback(new Error("两次输入密码不一致"));
} else { } else {
callback(); callback();
@ -149,15 +149,13 @@ export default {
this.$refs[formName].validate(valid => { this.$refs[formName].validate(valid => {
if (valid) { if (valid) {
setUpPassword(this.form).then(res => { setUpPassword(this.form).then(res => {
console.log(res);
this.$message({ this.$message({
message: res.message, message: res.message,
type: "success" type: "success"
}); });
this.$router.push({path:'/'}) this.$router.push({path:'/login'})
}) })
} else { } else {
console.log("error submit!!");
return false; return false;
} }
}); });

210
src/views/login/userInfo.vue

@ -1,89 +1,104 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="app-main"> <div class="app-main">
<el-form :model="form" :rules="rules" ref="userInfo" class="el-form-new"> <p class="font-size-24 font-weight-bold line-height-2em">个人信息</p>
<el-form-item label="用户类型:" :label-width="formLabelWidth"> <el-divider></el-divider>
<span>{{ userType[1]}}</span> <el-form :model="form" :rules="rules" ref="userInfo" class="el-form-new">
</el-form-item> <el-form-item label="用户名:" :label-width="formLabelWidth" prop="account">
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="userName"> <span>{{form.account}}</span>
<span>{{ param.userName }}</span> </el-form-item>
</el-form-item> <el-form-item label="姓名:" :label-width="formLabelWidth" prop="name">
<el-form-item label="姓名:" :label-width="formLabelWidth" prop="realName"> <el-input v-if="isEdit" v-model="form.name" autocomplete="off" size="small" placeholder="请输入姓名"></el-input>
<span v-if="!isEdit">{{ param.realName }}</span> <span v-else>{{form.name}}</span>
<el-input v-else v-model="form.realName" autocomplete="off"></el-input> </el-form-item>
</el-form-item> <el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email">
<el-form-item label="身份证件号码:" :label-width="formLabelWidth"> <el-input v-if="isEdit" v-model="form.email" autocomplete="off" size="small" placeholder="请输入邮箱"></el-input>
<span v-if="!isEdit">{{ param.idNumber }}</span> <span v-else>{{form.email}}</span>
<el-input v-else v-model="form.idNumber" autocomplete="off"></el-input> </el-form-item>
</el-form-item> <el-form-item label="手机号:" :label-width="formLabelWidth" prop="phone" ref="phone">
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email"> <el-input v-if="isEdit" v-model.number="form.phone" autocomplete="off" minlength="11" maxlength="11" size="small" placeholder="请输入手机号"></el-input>
<span v-if="!isEdit">{{ param.email }}</span> <span v-else>{{form.phone}}</span>
<el-input v-else v-model="form.email" autocomplete="off"></el-input> </el-form-item>
</el-form-item> <el-form-item :label-width="formLabelWidth" style="text-align: center;">
<el-form-item label="手机号:" :label-width="formLabelWidth" prop="phone"> <template v-if="isEdit">
<span v-if="!isEdit">{{ param.phone }}</span> <el-button type="primary" size="small" @click="submitForm('userInfo')" style="width:150px;text-align: center;">确定</el-button>
<el-input v-else v-model="form.phone" autocomplete="off"></el-input> <el-button type="info" size="small" @click="resetForm('userInfo')" >返回</el-button>
</el-form-item> </template>
<div class="form-footer"> <template v-else>
<el-button type="danger" size="mini" v-if="!isEdit" @click="editInfo">编辑</el-button> <el-button type="primary" size="small" @click="editInfo" style="width:150px;text-align: center;">编辑</el-button>
<div v-else> </template>
<el-button type="danger" size="mini" @click="submitForm('userInfo')">确定</el-button> </el-form-item>
<el-button type="info" size="mini" @click="resetForm('userInfo')">取消</el-button> </el-form>
</div>
</div> </div>
</el-form>
</div> </div>
</div>
</template> </template>
<script> <script>
import {getUserDetail, updateUserInfo, editPersonalCenter} from "@/api/user" import {getLoginInfo,updateUserInfo,existsUserName} from "@/api/login"
import {validateEmail,validateChinese,validatePhone} from '@/utils/validate';
export default { export default {
name: 'userInfo', name: 'userInfo',
data() { data() {
const checkIsUserdUser = (rule, value, callback) => {
if (validateChinese(value)) {
return callback(new Error('用户名不可为中文'));
} else {
if (!this.isEdit) {
existsUserName({account: this.form.account}).then(res => {
callback()
}).catch(err => {
return callback(new Error(err.message));
})
} 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 {
isEdit: false, isEdit: false,
id: this.$store.getters.id || '',
formLabelWidth: '150px',
param: {}, param: {},
formLabelWidth: '170px',
form: { form: {
id:"", name: '',
userName: '', account: '',
realName: '',
idNumber: '',
email: '', email: '',
phone: '' phone: '',
}, },
params:{},
rules: { rules: {
userName: [ name: [
{required: true, message: '请输入用户名', trigger: 'blur'} {required: true, message: '请输入姓名', trigger: 'blur'}
], ],
realName: [ account: [
{required: true, message: '请输入姓名', trigger: 'blur'} {required: true, message: '请输入用户名', trigger: 'blur'},
], {validator: checkIsUserdUser, trigger: 'blur'}
idNumber: [ ],
{message: '请输入身份证件号码', trigger: 'blur'} email: [
], {required: true, message: '请输入邮箱', trigger: 'blur'},
email: [ {validator: checkEmail, trigger: 'blur'}
{required: true, message: '请输入邮箱', trigger: 'blur'} ],
], phone: [
phone: [ {required: true, validator: checkPhone, trigger: 'blur'}
{required: true, message: '请输入手机号', trigger: 'blur'} ],
]
},
userType: {//
1: '系统用户',
/*2: '',
3: '企业用户',
4: '政府用户',*/
}, },
/*userLevel: new Map([ //
[1, '系统用户'],
[2, '公众用户'],
[3, '企业用户'],
[4, '政府用户']
]),*/
} }
}, },
mounted() { mounted() {
@ -91,58 +106,59 @@ export default {
}, },
methods: { methods: {
initData() { initData() {
getUserDetail({'id': this.id}).then(res => { getLoginInfo().then(res => {
this.param = res.data this.form = res.data.userInfo
}) })
}, },
submitForm(formName) { submitForm(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
const param = { this.updateUserInfomation()
userType: 1, } else {
id: this.form.id, return false;
userName:this.form.userName, }
phone: this.form.phone, });
idNumber: this.form.idNumber, },
name: this.form.realName, updateUserInfomation(){
const params = {
name: this.form.name,
account: this.form.account,
email: this.form.email, email: this.form.email,
version: this.form.version phone: this.form.phone,
} id: this.form.id
updateUserInfo(param).then(res => { }
updateUserInfo(params).then(res => {
this.$message({ this.$message({
message: res.msg, message: "修改成功!",
type: res.code == 200 ? 'success' : 'error' type: "success"
}); });
let _obj = JSON.stringify(this.form)
this.param = JSON.parse(_obj);
this.isEdit = false this.isEdit = false
this.initData() this.initData()
}) })
} else {
console.log('error submit!!');
return false;
}
});
}, },
editInfo() { editInfo() {
let _obj = JSON.stringify(this.param) let _obj = JSON.stringify(this.form)
this.form = JSON.parse(_obj); this.params = JSON.parse(_obj);
this.isEdit = true this.isEdit = true
}, },
resetForm(formName) { resetForm(formName) {
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
let _obj = JSON.stringify(this.params)
this.form = JSON.parse(_obj);
this.isEdit = false this.isEdit = false
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.form-footer { // .form-footer {
text-align: center; // text-align: center;
} // }
.el-form-new { .el-form-new {
width: 400px; width: 500px;
min-height: 400px;
margin: 0 auto; margin: 0 auto;
} }
</style> </style>

3
src/views/meeting/news.vue

@ -58,7 +58,8 @@ export default {
}) })
}, },
showNoticeDetail(item){ showNoticeDetail(item){
this.$router.push({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}}) let routeUrl = this.$router.resolve({name:'noticeShow',query:{'id':item.id,'title':item.topicTypeText}});
window.open(routeUrl.href, '_blank');
}, },
// //
handleCurrentChange(val) { handleCurrentChange(val) {

197
src/views/meeting/signup.vue

@ -0,0 +1,197 @@
<template>
<div class="app-container">
<el-row>
<el-col :span="18">
<span class="title">大会报名</span>
<el-divider></el-divider>
<div class="signup-block">
<el-form label-position="top" label-width="80px" :model="form">
<p class="text-center">大会登记</p>
<br>
<el-form-item label="姓名:" :label-width="formLabelWidth" prop="name">
<el-input v-model="form.name" autocomplete="off" size="small" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="公司名称" :label-width="formLabelWidth" prop="company">
<el-input v-model="form.company" autocomplete="off" size="small" placeholder="请输入公司名称"></el-input>
</el-form-item>
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email">
<el-input v-model="form.email" autocomplete="off" size="small" 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" size="small" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="职务:" :label-width="formLabelWidth" prop="duty">
<el-input v-model.number="form.duty" autocomplete="off" minlength="11" maxlength="11" size="small" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="住宿:" :label-width="formLabelWidth" prop="stay">
<el-radio-group v-model="form.stay">
<el-radio :label="0">不住</el-radio>
<el-radio :label="1">单间</el-radio>
<el-radio :label="2">双人标间</el-radio>
</el-radio-group>
</el-form-item>
<div class="meet-info">
<p class="title-1">会议日程</p>
<p class="content">23日报到24日全天会议25日上午参观</p>
<br>
<p class="title-1">免费提醒</p>
<p class="content">VIP食品企业嘉宾免收参会费用并提供五星级酒店住宿特邀食品企业免收一人参会费用</p>
<br>
<p class="title-1">费用说明</p>
<p class="content">本次会议费800/包括资料费餐费等食宿由组委会统一安排住宿参考官网-同期服务-酒店住宿住宿费用自理</p>
<br>
<p class="title-1">会议费用权益</p>
<p class="content">24日中午大会午餐24日大会晚宴门票会议资料袋会刊及会刊免费刊登参会企业信息</p>
<br>
<p class="title-1">会刊填报方式</p>
<p class="content">登录官网-互联网大会-观众中心-会刊填报</p>
<br>
<p class="title-1">汇款账户</p>
<p class="content">
户名中国食品和包装机械工业协会<br>
开户银行浦发银行北京北沙滩支行<br>
账号91350155260000197<br>
</p>
<br>
<p class="title-1">关于发票</p>
<p class="content">索取发票请登录官网-互联网大会-观众中心-发票申请填写发票详细信息</p>
</div>
<el-form-item label="验证码:" :label-width="formLabelWidth" prop="verificationCode">
<el-input v-model="form.verificationCode" autocomplete="off" minlength="4" maxlength="4" size="small" style="width:180px;" placeholder="请输入验证码"></el-input>
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/>
<img :src="_getImage('login','refresh.png')" alt="点击刷新" class="code-refresh" @click="refreshCode" />
</el-form-item>
</el-form>
</div>
</el-col>
<el-col :span="1"><br></el-col>
<el-col :span="5">
<p class="title2">主办单位</p>
<p class="line-height-2em">中国食品和包装机械工业协会</p>
<p class="title2">承办单位</p>
<p class="line-height-2em">中国食品工业互联网产业联盟</p>
<p class="title2">协办单位</p>
<p class="line-height-2em">中国联合装备集团有限公司</p>
<p class="line-height-2em">北京中轻合力国际展览有限公司</p>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
name: "signup",
data() {
return {
code_url: config.CODE_URL,
form: {
name: '',
company: '',
email: '',
phone:'',
duty:'',
stay:'',
verificationCode:'',
t:''
},
codeSrc:''
};
},
mounted() {
this.initData()
this.form.t = Math.random().toString().substring(0,13)
this.codeSrc = this.code_url + "/common/getVerificationCode/" + this.form.t;
},
methods:{
initData(){
},
//
refreshCode: function () {
this.form.t = Math.random().toString().substring(0,13)
document
.getElementById("codePic")
.setAttribute(
"src",
this.code_url + "/common/getVerificationCode/" + this.form.t
);
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.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;
}
}
.title2 {
position: relative;
color: #1e50ae;
font-size: 15px;
padding: 0 10px;
margin: 10px 0;
height: 40px;
font-weight: bold;
font-family: 微软雅黑;
&::before {
content: " ";
position: absolute;
left: 0;
bottom: 0;
width: 100px;
height: 4px;
background: #1e50ae;
}
&::after {
content: " ";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background: #949494;
}
}
.signup-block {
position: relative;
margin: 50px;
.title-1 {
font-size: 14px;
font-weight: 600;
line-height: 30px;
}
.content {
color: #333333;
font-size: 14px;
line-height: 30px;
}
.code-pic {
position: relative;
margin: 0 5px;
border: 1px solid rgba(220, 220, 220, 1);
border-radius: 3px;
width: 90px;
height: 32px;
vertical-align: middle;
}
}
</style>

29
src/views/notice/noticeShow.vue

@ -4,11 +4,13 @@
<div class="content"> <div class="content">
<div class="app-container"> <div class="app-container">
<h2 class="text-center">{{noticeTitle}}</h2> <h2 class="text-center">{{noticeTitle}}</h2>
<p v-if="source" class="text-center font-size-13"><br> <p v-if="source" class="text-center font-size-13" style="position: relative;"><br>
<span style="margin-right:30px;">发布于{{issueStartTime}}</span> <span style="margin-right:30px;">发布于{{issueStartTime}}</span>
来源 来源
<span style="color:#8a8a8a;">{{source}}</span> <span style="color:#8a8a8a;">{{source}}</span>
<a v-if="name && token && fileUrl" target="_blank" :href="fileUrl" class="download-bt">资料下载</a>
</p> </p>
<el-divider></el-divider> <el-divider></el-divider>
<p class="ql-editor" v-html="content"></p> <p class="ql-editor" v-html="content"></p>
</div> </div>
@ -17,11 +19,18 @@
</template> </template>
<script> <script>
import {mapGetters} from 'vuex';
import banner from '@/components/banner'; import banner from '@/components/banner';
import {getNoticeInfo,getNoticeList} from "@/api/notice" import {getNoticeInfo,getNoticeList} from "@/api/notice"
import 'quill/dist/quill.snow.css' import 'quill/dist/quill.snow.css'
export default { export default {
name:"noticeShow", name:"noticeShow",
computed: {
...mapGetters([
'name',
'token'
])
},
data(){ data(){
return { return {
ID: this.$route.query.id || '', ID: this.$route.query.id || '',
@ -30,7 +39,8 @@ export default {
// title:this.$route.query.title || '', // title:this.$route.query.title || '',
noticeTitle:'', noticeTitle:'',
source:'', source:'',
issueStartTime:'' issueStartTime:'',
fileUrl:''
} }
}, },
components: { components: {
@ -67,6 +77,7 @@ export default {
this.noticeTitle = res.data.title this.noticeTitle = res.data.title
this.source = res.data.source this.source = res.data.source
this.issueStartTime = res.data.issueStartTime this.issueStartTime = res.data.issueStartTime
this.fileUrl = res.data.accessoryUrl
} }
}) })
} }
@ -78,6 +89,7 @@ export default {
this.noticeTitle = res.data.title this.noticeTitle = res.data.title
this.source = res.data.source this.source = res.data.source
this.issueStartTime = res.data.issueStartTime this.issueStartTime = res.data.issueStartTime
this.fileUrl = res.data.accessoryUrl
} }
}) })
} }
@ -95,6 +107,19 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.download-bt {
position: absolute;
cursor: pointer;
right: 0;
padding: 5px 10px;
background: #184576;
color: #fff;
border: 0;
&:hover {
background: #4db55b;
transition: all 0.3s;
}
}
.banner { .banner {
position: relative; position: relative;
.banner-bg { .banner-bg {

Loading…
Cancel
Save