@ -1,5 +0,0 @@ |
|||
{ |
|||
"dependencies": { |
|||
"vue-pdf": "^4.3.0" |
|||
} |
|||
} |
|||
@ -0,0 +1,216 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
<script> |
|||
import { |
|||
mapState, |
|||
mapMutations |
|||
} from 'vuex'; |
|||
export default { |
|||
data() { |
|||
return { |
|||
isAudio: true, |
|||
}; |
|||
}, |
|||
methods: { |
|||
...mapMutations(['setTrainPath']), |
|||
}, |
|||
mounted() {}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
onLaunch() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
/*每个页面公共css */ |
|||
@import '@/uni_modules/uview-ui/index.scss'; |
|||
@import 'common/demo.scss'; |
|||
|
|||
uni-view, |
|||
p, |
|||
span { |
|||
font-size: 16px; |
|||
} |
|||
/deep/.u-modal{ |
|||
background: #ffffff; |
|||
} |
|||
/deep/.u-modal__content__text span{ |
|||
font-size: 20px; |
|||
} |
|||
.avatarobx { |
|||
top: 16px; |
|||
right: 16px; |
|||
position: fixed; |
|||
display: flex; |
|||
align-items: center; |
|||
color: #fff; |
|||
.name{ |
|||
font-size: 18px; |
|||
} |
|||
.view-out { |
|||
margin-right: 10px; |
|||
// border-bottom:1px solid #fff; |
|||
} |
|||
|
|||
.avatar { |
|||
border-radius: 6px; |
|||
width: 30px; |
|||
height: 30px; |
|||
margin-left: 18px; |
|||
} |
|||
|
|||
.out { |
|||
width: 30px; |
|||
height: 30px |
|||
} |
|||
} |
|||
|
|||
.view-backimg { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
z-index: -1; |
|||
|
|||
.view-backimg-top { |
|||
height: 50vh; |
|||
background-image: url('./imgs/bg-top.png'); |
|||
background-size: 100% 100%; |
|||
} |
|||
|
|||
.view-backimg-bottom { |
|||
height: 50vh; |
|||
background-image: url('./imgs/left.png'); |
|||
background-size: 100% 100%; |
|||
} |
|||
} |
|||
|
|||
/deep/.u-toast__content__text--error, |
|||
/deep/.u-toast__content__text--success { |
|||
max-width: 500px !important; |
|||
} |
|||
.back{ |
|||
width:40px; |
|||
position: fixed !important; |
|||
top: 16px; |
|||
left: 16px; |
|||
} |
|||
.logo { |
|||
width: 500px; |
|||
position: fixed !important; |
|||
top:16px; |
|||
left: 16px; |
|||
} |
|||
|
|||
// 状态颜色 |
|||
.statusGray { |
|||
color: #c0c4cc; |
|||
} |
|||
|
|||
.statusGreen { |
|||
color: #10b884; |
|||
} |
|||
|
|||
.statusRed { |
|||
color: red; |
|||
} |
|||
|
|||
.view-none { |
|||
width: 100%; |
|||
font-size: 16px !important; |
|||
line-height: 50px; |
|||
color: #909399; |
|||
text-align: center; |
|||
} |
|||
|
|||
/deep/.uni-pagination__num-tag { |
|||
width: 30px !important; |
|||
min-width: 30px !important; |
|||
height: 30px !important; |
|||
font-size: 16px !important; |
|||
} |
|||
|
|||
.width-60 { |
|||
min-width: 60px !important; |
|||
} |
|||
|
|||
.width-100 { |
|||
min-width: 100px !important; |
|||
} |
|||
|
|||
.width-160 { |
|||
min-width: 160px !important; |
|||
} |
|||
|
|||
.width-250 { |
|||
min-width: 250px !important; |
|||
} |
|||
|
|||
.uni-select__input-box, |
|||
.uni-select { |
|||
height: 40px !important; |
|||
} |
|||
|
|||
.uni-select { |
|||
font-size: 16px !important; |
|||
} |
|||
|
|||
.uni-select__input-placeholder { |
|||
font-size: 16px !important; |
|||
} |
|||
|
|||
.uni-input-input, |
|||
uni-input { |
|||
border-radius: 5px; |
|||
height: 38px !important; |
|||
font-size: 16px !important; |
|||
} |
|||
|
|||
uni-input { |
|||
padding: 0 10px; |
|||
} |
|||
|
|||
.uni-icons { |
|||
font-size: 24px !important; |
|||
} |
|||
|
|||
.u-popup__content { |
|||
background-color: rgba(0, 0, 0, 0) !important; |
|||
} |
|||
|
|||
.uni-input-placeholder { |
|||
font-size: 16px; |
|||
line-height: 40px; |
|||
} |
|||
|
|||
.u-input--square { |
|||
height: 28px !important; |
|||
padding: 6px 9px !important; |
|||
} |
|||
|
|||
.u-input__content__field-wrapper__field { |
|||
font-size: 16px !important; |
|||
} |
|||
|
|||
uni-video { |
|||
width: 100% !important; |
|||
height: 100% !important; |
|||
} |
|||
|
|||
.u-toast { |
|||
font-size: 30px !important; |
|||
} |
|||
|
|||
// 时间选择样式 |
|||
.u-picker { |
|||
background: #fff; |
|||
} |
|||
|
|||
.u-toolbar__wrapper__cancel, |
|||
.u-toolbar__wrapper__confirm, |
|||
.u-toolbar__title { |
|||
font-size: 26px !important; |
|||
} |
|||
</style> |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
@ -0,0 +1,9 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
module.exports = { |
|||
// baseUrl: 'https://test.tall.wiki/datangMeeting/', // 测试
|
|||
baseUrl: 'http://10.89.114.11:9001/datangMeeting/', // 大唐
|
|||
versionsNum: '1.0.1.7', |
|||
versions: '测试版', |
|||
}; |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 340 KiB |
|
After Width: | Height: | Size: 656 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1004 B |
|
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1,156 @@ |
|||
{ |
|||
"name" : "神头发电会议系统", |
|||
"appid" : "__UNI__FBDBEC9", |
|||
"description" : "多平台快速开发的UI框架", |
|||
"versionName" : "1.0.0", |
|||
"versionCode" : 1, |
|||
"transformPx" : false, |
|||
"app-plus" : { |
|||
"optimization" : { |
|||
"subPackages" : true |
|||
}, |
|||
"safearea" : { |
|||
"bottom" : { |
|||
"offset" : "none" |
|||
} |
|||
}, |
|||
"splashscreen" : { |
|||
"alwaysShowBeforeRender" : true, |
|||
"waiting" : true, |
|||
"autoclose" : true, |
|||
"delay" : 0 |
|||
}, |
|||
"usingComponents" : true, |
|||
"nvueCompiler" : "uni-app", |
|||
"compilerVersion" : 3, |
|||
"modules" : { |
|||
"Webview-x5" : {}, |
|||
"Barcode" : {}, |
|||
"Camera" : {} |
|||
}, |
|||
"distribute" : { |
|||
"android" : { |
|||
"permissions" : [ |
|||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
|||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
|||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
|||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", |
|||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", |
|||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
|||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", |
|||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
|||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", |
|||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
|||
"<uses-feature android:name=\"android.hardware.camera\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
|||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
|||
], |
|||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ] |
|||
}, |
|||
"ios" : { |
|||
"idfa" : false, |
|||
"dSYMs" : false |
|||
}, |
|||
"sdkConfigs" : { |
|||
"ad" : {} |
|||
}, |
|||
"icons" : { |
|||
"android" : { |
|||
"hdpi" : "unpackage/res/icons/72x72.png", |
|||
"xhdpi" : "unpackage/res/icons/96x96.png", |
|||
"xxhdpi" : "unpackage/res/icons/144x144.png", |
|||
"xxxhdpi" : "unpackage/res/icons/192x192.png" |
|||
}, |
|||
"ios" : { |
|||
"appstore" : "unpackage/res/icons/1024x1024.png", |
|||
"ipad" : { |
|||
"app" : "unpackage/res/icons/76x76.png", |
|||
"app@2x" : "unpackage/res/icons/152x152.png", |
|||
"notification" : "unpackage/res/icons/20x20.png", |
|||
"notification@2x" : "unpackage/res/icons/40x40.png", |
|||
"proapp@2x" : "unpackage/res/icons/167x167.png", |
|||
"settings" : "unpackage/res/icons/29x29.png", |
|||
"settings@2x" : "unpackage/res/icons/58x58.png", |
|||
"spotlight" : "unpackage/res/icons/40x40.png", |
|||
"spotlight@2x" : "unpackage/res/icons/80x80.png" |
|||
}, |
|||
"iphone" : { |
|||
"app@2x" : "unpackage/res/icons/120x120.png", |
|||
"app@3x" : "unpackage/res/icons/180x180.png", |
|||
"notification@2x" : "unpackage/res/icons/40x40.png", |
|||
"notification@3x" : "unpackage/res/icons/60x60.png", |
|||
"settings@2x" : "unpackage/res/icons/58x58.png", |
|||
"settings@3x" : "unpackage/res/icons/87x87.png", |
|||
"spotlight@2x" : "unpackage/res/icons/80x80.png", |
|||
"spotlight@3x" : "unpackage/res/icons/120x120.png" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
"quickapp" : {}, |
|||
"mp-weixin" : { |
|||
"appid" : "", |
|||
"setting" : { |
|||
"urlCheck" : false, |
|||
"es6" : false, |
|||
"minified" : false, |
|||
"postcss" : false |
|||
}, |
|||
"optimization" : { |
|||
"subPackages" : true |
|||
}, |
|||
"usingComponents" : true, |
|||
"mergeVirtualHostAttributes" : true |
|||
}, |
|||
"mp-alipay" : { |
|||
"usingComponents" : true, |
|||
"component2" : true |
|||
}, |
|||
"mp-qq" : { |
|||
"optimization" : { |
|||
"subPackages" : true |
|||
}, |
|||
"appid" : "15646153" |
|||
}, |
|||
"mp-baidu" : { |
|||
"usingComponents" : true, |
|||
"appid" : "" |
|||
}, |
|||
"mp-toutiao" : { |
|||
"usingComponents" : true, |
|||
"appid" : "" |
|||
}, |
|||
"h5" : { |
|||
"template" : "template.h5.html", |
|||
"router" : { |
|||
"mode" : "history", |
|||
"base" : "/datang/meeting/client/" |
|||
}, |
|||
"optimization" : { |
|||
"treeShaking" : { |
|||
"enable" : false |
|||
} |
|||
}, |
|||
"title" : "神头发电会议系统", |
|||
"sdkConfigs" : { |
|||
"maps" : { |
|||
"qqmap" : { |
|||
"key" : "" |
|||
} |
|||
} |
|||
}, |
|||
"domain" : "", |
|||
"devServer" : { |
|||
"https" : false |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
{ |
|||
"pages": [ |
|||
{ |
|||
"path": "pages/index/index" // 会议列表 |
|||
}, |
|||
{ |
|||
"path": "pages/index/details" // 会议详情 |
|||
}, |
|||
{ |
|||
"path": "pages/index/pdf" // 预览pdf |
|||
}, |
|||
{ |
|||
"path": "pages/user/login" // 登录 |
|||
} |
|||
], |
|||
"globalStyle": { |
|||
"navigationBarTextStyle": "black", |
|||
"navigationBarTitleText": "神头发电会议系统", |
|||
"navigationBarBackgroundColor": "#FFFFFF", |
|||
"backgroundColor": "#FFFFFF", |
|||
"navigationStyle": "custom" |
|||
} |
|||
} |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
@ -0,0 +1,239 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
<template> |
|||
<view> |
|||
<view class="view-li" v-for="(item, index) in infos" :key="index"> |
|||
<view class="li-item" v-if="item.type == 'title'"> |
|||
<view class="li-title">{{item.title}}</view> |
|||
</view> |
|||
<view class="li-item " v-if="item.type == 'file-pdf'"> |
|||
<view class="li-pdf" @click="handlePdf(item)"> {{item.filePdfName}} |
|||
<span style="color:blue"> (预览)</span> |
|||
</view> |
|||
</view> |
|||
<view class="li-item" v-if="item.type == 'richtext'"> |
|||
<view class="li-text">{{item.richtext}}</view> |
|||
</view> |
|||
<view class="view-ul" v-if="item.infos && item.infos.length"> |
|||
<MeetingList :detailsId='detailsId' :infos='item.infos'></MeetingList> |
|||
</view> |
|||
</view> |
|||
<u-popup :show="show" @close="handleClose" mode="center"> |
|||
<view class="popup-close" @click='handleClose'> |
|||
<uni-icons class="popup-icons" type="closeempty" size="30"></uni-icons> |
|||
</view> |
|||
<view class="popup-box"> |
|||
<view class="view-pdf"> |
|||
<pdf v-if='show' ref="pdf" :page="pageNum" @progress="loadedRatio = $event" |
|||
@page-loaded="pageLoaded($event)" @num-pages="pageTotalNum=$event" @error="pdfError($event)" |
|||
@link-clicked="page = $event" :src="filePdfUrl"> |
|||
</pdf> |
|||
<div class="tools"> |
|||
<button :theme="'default'" type="submit" @click.stop="prePage" class="mr10"> |
|||
上一页 |
|||
</button> |
|||
<div class="page">{{pageNum}}/{{pageTotalNum}}</div> |
|||
<button :theme="'default'" type="submit" @click.stop="nextPage" class="mr10"> |
|||
下一页 |
|||
</button> |
|||
</div> |
|||
</view> |
|||
</view> |
|||
|
|||
</u-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import pdf from 'vue-pdf' |
|||
export default { |
|||
name: 'MeetingList', |
|||
props: ['infos','detailsId'], |
|||
components: { |
|||
pdf |
|||
}, |
|||
data() { |
|||
return { |
|||
show: false, |
|||
filePdfUrl: "", |
|||
pageNum: 1, |
|||
pageTotalNum: 1, |
|||
// 加载进度 |
|||
loadedRatio: 0, |
|||
curPageNum: 0, |
|||
pdfId: '', |
|||
}; |
|||
}, |
|||
onShow() { |
|||
console.log('infos', infos) |
|||
}, |
|||
methods: { |
|||
|
|||
// 关闭弹窗 |
|||
handleClose() { |
|||
this.pdfId = '' |
|||
this.show = false |
|||
}, |
|||
// 上一页函数, |
|||
prePage() { |
|||
var page = this.pageNum |
|||
page = page > 1 ? page - 1 : this.pageTotalNum |
|||
this.pageNum = page |
|||
}, |
|||
// 下一页函数 |
|||
nextPage() { |
|||
var page = this.pageNum |
|||
page = page < this.pageTotalNum ? page + 1 : 1 |
|||
this.pageNum = page |
|||
}, |
|||
// 页面加载回调函数,其中e为当前页数 |
|||
pageLoaded(e) { |
|||
this.curPageNum = e |
|||
}, |
|||
// 其他的一些回调函数。 |
|||
pdfError(error) { |
|||
console.error(error) |
|||
}, |
|||
// 显示pdf |
|||
handlePdf(_item) { |
|||
// this.filePdfUrl = _item.filePdfUrl |
|||
// this.show = true |
|||
uni.navigateTo({ |
|||
url: `/pages/index/pdf?filePdfUrl=${_item.filePdfUrl}&detailsId=${this.detailsId}`, |
|||
}); |
|||
}, |
|||
}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.popup-close { |
|||
position: fixed; |
|||
right: 20px; |
|||
top: 20px; |
|||
z-index: 9999; |
|||
|
|||
/deep/.uni-icons { |
|||
font-size: 40px !important; |
|||
color: #fff !important; |
|||
} |
|||
} |
|||
|
|||
/deep/.u-popup__content{ |
|||
position: relative; |
|||
.tools { |
|||
position: absolute; |
|||
left:10px; |
|||
right:10px; |
|||
bottom:0px; |
|||
background:#fff; |
|||
padding-top:10px; |
|||
padding-bottom:10px; |
|||
} |
|||
} |
|||
.popup-box { |
|||
max-height: 80vh; |
|||
overflow: auto; |
|||
} |
|||
|
|||
.view-gb { |
|||
max-width: 100px; |
|||
margin-left: 16px; |
|||
} |
|||
|
|||
.view-li { |
|||
// padding-left: 10px; |
|||
} |
|||
|
|||
.view-pdf { |
|||
width: 50vw; |
|||
padding: 16px 16px 50px 16px; |
|||
border: 1px solid #ededed; |
|||
background: #fff; |
|||
|
|||
.tools { |
|||
display: flex; |
|||
|
|||
uni-button { |
|||
font-size: 18px; |
|||
line-height: 44px; |
|||
height: 44px; |
|||
flex: 1 |
|||
} |
|||
|
|||
.page { |
|||
line-height: 44px; |
|||
height: 44px; |
|||
width: 100px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.pathsName { |
|||
color: #fff; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.pdfBox .el-button { |
|||
background: rgba(255, 255, 255, 0); |
|||
border: none; |
|||
/* width: 30px; */ |
|||
} |
|||
|
|||
.pdfBox>>>.el-icon-arrow-left, |
|||
.pdfBox>>>.el-icon-arrow-right { |
|||
font-size: 18px; |
|||
color: #000; |
|||
} |
|||
|
|||
.pdfBox .page { |
|||
margin: 0 10px; |
|||
} |
|||
|
|||
.pdfBox .el-button-group { |
|||
width: 100%; |
|||
justify-content: center; |
|||
display: flex; |
|||
align-items: center; |
|||
padding-top: 20px; |
|||
} |
|||
|
|||
.pdfBox { |
|||
padding-bottom: 20px; |
|||
margin-top: 20px; |
|||
background: #fff; |
|||
min-height: 300px; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item__label { |
|||
text-align: right; |
|||
margin-right: 10px !important; |
|||
padding: 0 !important; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item--medium .el-form-item__content { |
|||
flex: 1; |
|||
} |
|||
|
|||
.li-item { |
|||
uni-view { |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
span{ |
|||
font-size: 20px; |
|||
} |
|||
} |
|||
|
|||
|
|||
.li-title { |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
line-height: 30px; |
|||
} |
|||
} |
|||
</style> |
|||
<style></style> |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
@ -0,0 +1,169 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
<template> |
|||
<view class="box"> |
|||
<!-- <image class="back" src='../../imgs/back.png' mode="widthFix" @click="handleBack"></image> --> |
|||
<image class="logo" src='../../imgs/logo.png' alt="" mode="widthFix" ></image> |
|||
<view class="box-cent"> |
|||
<view class="box-cent1"> |
|||
<view class="view-box"> |
|||
<view style="text-align: center;"> |
|||
<span class="view-title"> {{listData.title}}</span> |
|||
</view> |
|||
<view class="view-ul"> |
|||
<MeetingList :detailsId='detailsId' :infos='listData.infos'></MeetingList> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<u-modal v-if="show" :show="show" @cancel="show = false" :showCancelButton="true" content='是否确认退出登录?' @confirm="handleOut"></u-modal> |
|||
</view> |
|||
<!-- 底部背景图 --> |
|||
<view class="view-backimg"> |
|||
<view class="view-backimg-top"></view> |
|||
<!-- <view class="view-backimg-bottom"></view> --> |
|||
</view> |
|||
<!-- 头像 - 头像 --> |
|||
<view class="avatarobx"> |
|||
<view class="name">{{userName}}</view> |
|||
<image @click='handleBack' class="avatar" src='../../imgs/arrow-left.png' mode="widthFix"></image> |
|||
<image @click="show = true" class="avatar" src='../../imgs/out.png' mode="widthFix"></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
queryMeeting, |
|||
meetingDetails |
|||
} from "@/common/api"; |
|||
import { |
|||
mapMutations |
|||
} from 'vuex'; |
|||
import MeetingList from "../components/MeetingList.vue" |
|||
|
|||
export default { |
|||
components: { |
|||
MeetingList |
|||
}, |
|||
data() { |
|||
return { |
|||
listData: [], |
|||
data: [], |
|||
userName: uni.getStorageSync("userName"), |
|||
show: false, |
|||
detailsId:'', |
|||
}; |
|||
}, |
|||
|
|||
created() { |
|||
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 |
|||
let curParam = routes[routes.length - 1].options; //获取路由参数 |
|||
this.detailsId = curParam.id |
|||
console.log('curParam', this.detailsId) |
|||
this.getMeetingDetails(curParam.id) //获取会议列表 |
|||
}, |
|||
methods: { |
|||
// 退出登录 |
|||
handleOut(){ |
|||
uni.clearStorage(); |
|||
uni.reLaunch({ |
|||
url: '/pages/user/login', |
|||
}); |
|||
}, |
|||
// logo 回到首页 |
|||
handleBack() { |
|||
uni.navigateTo({ |
|||
url: `/pages/index/index`, |
|||
}); |
|||
// uni.navigateBack({ |
|||
// delta: 1 |
|||
// }); |
|||
}, |
|||
// 查看详情 |
|||
handleItemClaick(_item) { |
|||
// enable false 不可查看详情 |
|||
if (!_item.enable) return |
|||
uni.navigateTo({ |
|||
url: `/pages/index/details?id=${_item.id}`, |
|||
}); |
|||
}, |
|||
// 获取验证码 |
|||
async getMeetingDetails(meetingId) { |
|||
const res = await meetingDetails({ |
|||
param: { |
|||
meetingId, |
|||
} |
|||
}); |
|||
const { |
|||
code, |
|||
data, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
this.listData = data |
|||
console.log(this.listData) |
|||
} |
|||
}, |
|||
}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
/deep/ .u-modal__content{ |
|||
text-align: center; |
|||
} |
|||
.avatar{ |
|||
} |
|||
.view-box { |
|||
margin-top: 50px; |
|||
} |
|||
|
|||
.view-ul { |
|||
text-align: left; |
|||
margin-bottom: 16px; |
|||
|
|||
.view-li { |
|||
font-size: 18px; |
|||
line-height: 26px; |
|||
|
|||
} |
|||
} |
|||
|
|||
.view-title { |
|||
display: inline-block; |
|||
border: 1px solid #000; |
|||
padding: 0 14px; |
|||
margin-bottom: 30px; |
|||
line-height: 50px; |
|||
border-radius: 6px; |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.box { |
|||
height: 100vh; |
|||
box-sizing: border-box; |
|||
padding: 20px 100px; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.box-cent { |
|||
flex: 1; |
|||
margin-top: 70px; |
|||
position: relative; |
|||
} |
|||
|
|||
.box-cent1 { |
|||
position: absolute; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
overflow: auto; |
|||
} |
|||
} |
|||
</style> |
|||
<style></style> |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
@ -0,0 +1,172 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
<template> |
|||
<view class="box"> |
|||
<!-- <image class="back" src='../../imgs/back.png' mode="widthFix" @click='handleBack'></image> --> |
|||
<image class="logo" src='../../imgs/logo.png' mode="widthFix" ></image> |
|||
<view class="box-cent"> |
|||
<view class="box-cent1"> |
|||
<view class="view-box" v-for="(item, index) in listData" :key="index"> |
|||
<view style="text-align: center;"> |
|||
<span class="view-title"> {{item.dateTitle}}</span> |
|||
</view> |
|||
<view class="view-ul"> |
|||
<view class="view-li" v-for="(row, rind) in item.meetingList" :key="rind" |
|||
> |
|||
<span @click="handleItemClaick(item,row)">{{rind + 1}}. {{row.title}}</span> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view v-if="!listData.length" class="view-none"> 暂无会议 </view> |
|||
</view> |
|||
<u-modal v-if="show" :show="show" @cancel="show = false" :showCancelButton="true" content='是否确认退出登录?' @confirm="handleOut"></u-modal> |
|||
</view> |
|||
<!-- 底部背景图 --> |
|||
<view class="view-backimg"> |
|||
<view class="view-backimg-top"></view> |
|||
<!-- <view class="view-backimg-bottom"></view> --> |
|||
</view> |
|||
<!-- 头像 - 头像 --> |
|||
<view class="avatarobx"> |
|||
<view class="name">{{userName}}</view> |
|||
<!-- <image @click='handleBack' class="avatar" src='../../imgs/arrow-left.png' mode="widthFix"></image> --> |
|||
<image @click="show = true" class="avatar" src='../../imgs/out.png' mode="widthFix"></image> |
|||
</view> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
queryMeeting, |
|||
meetingDetails |
|||
} from "@/common/api"; |
|||
import { |
|||
mapMutations |
|||
} from 'vuex'; |
|||
export default { |
|||
data() { |
|||
return { |
|||
listData: [], |
|||
userName: uni.getStorageSync("userName"), |
|||
show: false |
|||
}; |
|||
}, |
|||
created() { |
|||
this.getQueryMeeting() //获取会议列表 |
|||
}, |
|||
onShow(){ |
|||
this.userName = uni.getStorageSync("userName") |
|||
console.log('this.userName',this.userName) |
|||
}, |
|||
methods: { |
|||
// logo 回到首页 |
|||
handleBack() { |
|||
uni.navigateTo({ |
|||
url: `/pages/user/login`, |
|||
}); |
|||
// uni.navigateBack({ |
|||
// delta: 1 |
|||
// }); |
|||
}, |
|||
// 退出登录 |
|||
handleOut(){ |
|||
uni.clearStorage(); |
|||
uni.reLaunch({ |
|||
url: '/pages/user/login', |
|||
}); |
|||
}, |
|||
// 查看详情 |
|||
handleItemClaick(_item, _row) { |
|||
// enable false 不可查看详情 |
|||
if (!_item.enable) return |
|||
uni.navigateTo({ |
|||
url: `/pages/index/details?id=${_row.id}`, |
|||
}); |
|||
}, |
|||
// 获取验证码 |
|||
async getQueryMeeting() { |
|||
const res = await queryMeeting({ |
|||
param: {} |
|||
}); |
|||
const { |
|||
code, |
|||
data, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
this.listData = data |
|||
} |
|||
}, |
|||
}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
|
|||
/deep/ .u-modal__content{ |
|||
text-align: center; |
|||
} |
|||
.view-box{ |
|||
margin-top:50px ; |
|||
} |
|||
|
|||
.view-none{ |
|||
height: 100%; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-size: 40px !important; |
|||
} |
|||
.view-ul { |
|||
text-align: left; |
|||
margin-bottom: 16px; |
|||
|
|||
.view-li { |
|||
span{ |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
.view-title { |
|||
display: inline-block; |
|||
border: 1px solid #000; |
|||
padding: 0 14px; |
|||
margin-bottom: 30px; |
|||
line-height: 50px; |
|||
border-radius: 6px; |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.box { |
|||
height: 100vh; |
|||
background-size: cover; |
|||
box-sizing: border-box; |
|||
padding: 20px 100px; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.box-cent { |
|||
flex: 1; |
|||
margin-top: 70px; |
|||
position: relative; |
|||
} |
|||
|
|||
.box-cent1 { |
|||
position: absolute; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
overflow: auto; |
|||
} |
|||
} |
|||
</style> |
|||
<style></style> |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
@ -0,0 +1,302 @@ |
|||
<template> |
|||
<view class="box" style="position: relative;"> |
|||
<!-- <image class="back" src='../../imgs/back.png' mode="widthFix" @click="handleBack"></image> --> |
|||
<image class="logo" src='../../imgs/logo.png' mode="widthFix" ></image> |
|||
<view class="box-cent"> |
|||
<view class="box-cent1"> |
|||
<view class="view-pdf"> |
|||
<pdf ref="pdf" :page="pageNum" @progress="loadedRatio = $event" @page-loaded="pageLoaded($event)" |
|||
@num-pages="pageTotalNum=$event" @error="pdfError($event)" @link-clicked="page = $event" |
|||
:src="filePdfUrl"> |
|||
</pdf> |
|||
</view> |
|||
</view> |
|||
<u-modal v-if="show" :show="show" @cancel="show = false" :showCancelButton="true" content='是否确认退出登录?' @confirm="handleOut"></u-modal> |
|||
</view> |
|||
<!-- 底部背景图 --> |
|||
<view class="view-backimg"> |
|||
<view class="view-backimg-top"></view> |
|||
<!-- <view class="view-backimg-bottom"></view> --> |
|||
</view> |
|||
<div class="tools"> |
|||
<view style="width:50vw;display: flex;margin: auto;"> |
|||
<button :theme="'default'" type="submit" @click.stop="prePage" class="mr10"> |
|||
上一页 |
|||
</button> |
|||
<div class="page">{{pageNum}}/{{pageTotalNum}}</div> |
|||
<button :theme="'default'" type="submit" @click.stop="nextPage" class="mr10"> |
|||
下一页 |
|||
</button> |
|||
</view> |
|||
</div> |
|||
<!-- 头像 - 头像 --> |
|||
<view class="avatarobx"> |
|||
<view class="name">{{userName}}</view> |
|||
<image @click='handleBack' class="avatar" src='../../imgs/arrow-left.png' mode="widthFix"></image> |
|||
<image @click="show = true" class="avatar" src='../../imgs/out.png' mode="widthFix"></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import pdf from 'vue-pdf' |
|||
export default { |
|||
name: 'MeetingList', |
|||
props: ['infos'], |
|||
components: { |
|||
pdf |
|||
}, |
|||
data() { |
|||
return { |
|||
pageNum: 1, |
|||
pageTotalNum: 1, |
|||
// 加载进度 |
|||
loadedRatio: 0, |
|||
curPageNum: 0, |
|||
filePdfUrl: '', |
|||
userName: uni.getStorageSync("userName"), |
|||
show: false, |
|||
detailsId:'', |
|||
}; |
|||
}, |
|||
created() { |
|||
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 |
|||
let curParam = routes[routes.length - 1].options; //获取路由参数 |
|||
this.detailsId = curParam.detailsId |
|||
console.log('this.detailsId ',this.detailsId) |
|||
this.filePdfUrl = curParam.filePdfUrl |
|||
}, |
|||
methods: { |
|||
// logo 回到首页 |
|||
handleBack() { |
|||
uni.navigateTo({ |
|||
url: `/pages/index/details?id=${this.detailsId}`, |
|||
}); |
|||
// uni.navigateBack({ |
|||
// delta: 1 |
|||
// }); |
|||
}, |
|||
// 退出登录 |
|||
handleOut() { |
|||
uni.clearStorage(); |
|||
uni.reLaunch({ |
|||
url: '/pages/user/login', |
|||
}); |
|||
}, |
|||
// logo 回到首页 |
|||
handleLogo() { |
|||
uni.navigateTo({ |
|||
url: `/pages/index/index`, |
|||
}); |
|||
}, |
|||
|
|||
// 关闭弹窗 |
|||
handleClose() { |
|||
this.pdfId = '' |
|||
this.show = false |
|||
}, |
|||
// 上一页函数, |
|||
prePage() { |
|||
var page = this.pageNum |
|||
page = page > 1 ? page - 1 : this.pageTotalNum |
|||
this.pageNum = page |
|||
}, |
|||
// 下一页函数 |
|||
nextPage() { |
|||
var page = this.pageNum |
|||
page = page < this.pageTotalNum ? page + 1 : 1 |
|||
this.pageNum = page |
|||
}, |
|||
// 页面加载回调函数,其中e为当前页数 |
|||
pageLoaded(e) { |
|||
this.curPageNum = e |
|||
}, |
|||
// 其他的一些回调函数。 |
|||
pdfError(error) { |
|||
console.error(error) |
|||
}, |
|||
}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
/deep/ .u-modal__content{ |
|||
text-align: center; |
|||
} |
|||
.popup-close { |
|||
position: fixed; |
|||
right: 20px; |
|||
top: 20px; |
|||
z-index: 9999; |
|||
|
|||
/deep/.uni-icons { |
|||
font-size: 40px !important; |
|||
color: #fff !important; |
|||
} |
|||
} |
|||
|
|||
.view-gb { |
|||
max-width: 100px; |
|||
margin-left: 16px; |
|||
} |
|||
|
|||
.view-li { |
|||
// padding-left: 10px; |
|||
} |
|||
|
|||
.view-pdf { |
|||
width: 60vw; |
|||
margin: auto; |
|||
} |
|||
|
|||
.tools { |
|||
display: flex; |
|||
align-items: center; |
|||
position: absolute; |
|||
bottom: 26px; |
|||
left:16px; |
|||
right:16px; |
|||
|
|||
uni-button { |
|||
font-size: 18px; |
|||
line-height: 44px; |
|||
height: 44px; |
|||
flex: 1 |
|||
} |
|||
|
|||
.page { |
|||
line-height: 44px; |
|||
height: 44px; |
|||
width: 100px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
.pathsName { |
|||
color: #fff; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.pdfBox .el-button { |
|||
background: rgba(255, 255, 255, 0); |
|||
border: none; |
|||
/* width: 30px; */ |
|||
} |
|||
|
|||
.pdfBox>>>.el-icon-arrow-left, |
|||
.pdfBox>>>.el-icon-arrow-right { |
|||
font-size: 18px; |
|||
color: #000; |
|||
} |
|||
|
|||
.pdfBox .page { |
|||
margin: 0 10px; |
|||
} |
|||
|
|||
.pdfBox .el-button-group { |
|||
width: 100%; |
|||
justify-content: center; |
|||
display: flex; |
|||
align-items: center; |
|||
padding-top: 20px; |
|||
} |
|||
|
|||
.pdfBox { |
|||
padding-bottom: 20px; |
|||
margin-top: 20px; |
|||
background: #fff; |
|||
min-height: 300px; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item__label { |
|||
text-align: right; |
|||
margin-right: 10px !important; |
|||
padding: 0 !important; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item--medium .el-form-item__content { |
|||
flex: 1; |
|||
} |
|||
|
|||
.li-item { |
|||
uni-view { |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
|
|||
span { |
|||
font-size: 20px; |
|||
} |
|||
} |
|||
|
|||
|
|||
.li-title { |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
line-height: 30px; |
|||
} |
|||
} |
|||
|
|||
.view-box { |
|||
margin-top: 50px; |
|||
} |
|||
|
|||
.view-none { |
|||
height: 100%; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-size: 40px !important; |
|||
} |
|||
|
|||
.view-ul { |
|||
text-align: left; |
|||
margin-bottom: 16px; |
|||
|
|||
.view-li { |
|||
span { |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
.view-title { |
|||
display: inline-block; |
|||
border: 1px solid #000; |
|||
padding: 0 14px; |
|||
margin-bottom: 30px; |
|||
line-height: 50px; |
|||
border-radius: 6px; |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.box { |
|||
height: 100vh; |
|||
background-size: cover; |
|||
box-sizing: border-box; |
|||
padding: 20px 100px; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.box-cent { |
|||
flex: 1; |
|||
margin-top: 70px; |
|||
position: relative; |
|||
} |
|||
|
|||
.box-cent1 { |
|||
position: absolute; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
overflow: auto; |
|||
|
|||
} |
|||
} |
|||
</style> |
|||
<style></style> |
|||
@ -0,0 +1,303 @@ |
|||
<template> |
|||
<view class="box" style="position: relative;"> |
|||
<!-- <image class="back" src='../../imgs/back.png' mode="widthFix" @click="handleBack"></image> --> |
|||
<image class="logo" src='../../imgs/logo.png' mode="widthFix" ></image> |
|||
<view class="box-cent"> |
|||
<view class="box-cent1"> |
|||
<view class="view-pdf"> |
|||
<pdf v-for="i in numPages" :key="i" :src="filePdfUrl" :page="i"></pdf> |
|||
</view> |
|||
</view> |
|||
<u-modal v-if="show" :show="show" @cancel="show = false" :showCancelButton="true" content='是否确认退出登录?' @confirm="handleOut"></u-modal> |
|||
</view> |
|||
<!-- 底部背景图 --> |
|||
<view class="view-backimg"> |
|||
<view class="view-backimg-top"></view> |
|||
<!-- <view class="view-backimg-bottom"></view> --> |
|||
</view> |
|||
<!-- <div class="tools"> |
|||
<view style="width:50vw;display: flex;margin: auto;"> |
|||
<button :theme="'default'" type="submit" @click.stop="prePage" class="mr10"> |
|||
上一页 |
|||
</button> |
|||
<div class="page">{{pageNum}}/{{pageTotalNum}}</div> |
|||
<button :theme="'default'" type="submit" @click.stop="nextPage" class="mr10"> |
|||
下一页 |
|||
</button> |
|||
</view> |
|||
</div> --> |
|||
<!-- 头像 - 头像 --> |
|||
<view class="avatarobx"> |
|||
<view class="name">{{userName}}</view> |
|||
<image @click='handleBack' class="avatar" src='../../imgs/arrow-left.png' mode="widthFix"></image> |
|||
<image @click="show = true" class="avatar" src='../../imgs/out.png' mode="widthFix"></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import pdf from 'vue-pdf' |
|||
export default { |
|||
name: 'MeetingList', |
|||
props: ['infos'], |
|||
components: { |
|||
pdf |
|||
}, |
|||
data() { |
|||
return { |
|||
filePdfUrl: '', |
|||
userName: uni.getStorageSync("userName"), |
|||
detailsId:'', |
|||
numPages:'', |
|||
show:false |
|||
}; |
|||
}, |
|||
created() { |
|||
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 |
|||
let curParam = routes[routes.length - 1].options; //获取路由参数 |
|||
this.detailsId = curParam.detailsId |
|||
this.filePdfUrl = curParam.filePdfUrl |
|||
this.getNumPages(this.filePdfUrl ) |
|||
}, |
|||
methods: { |
|||
getNumPages(url) { |
|||
this.pdfSrc=url |
|||
this.pdfSrc = pdf.createLoadingTask(this.pdfSrc) |
|||
this.pdfSrc.promise.then(pdf => { |
|||
this.numPages = pdf.numPages |
|||
console.log('this.numPages',this.numPages) |
|||
}) |
|||
}, |
|||
// logo 回到首页 |
|||
handleBack() { |
|||
uni.navigateTo({ |
|||
url: `/pages/index/details?id=${this.detailsId}`, |
|||
}); |
|||
// uni.navigateBack({ |
|||
// delta: 1 |
|||
// }); |
|||
}, |
|||
// 退出登录 |
|||
handleOut() { |
|||
uni.clearStorage(); |
|||
uni.reLaunch({ |
|||
url: '/pages/user/login', |
|||
}); |
|||
}, |
|||
// logo 回到首页 |
|||
handleLogo() { |
|||
uni.navigateTo({ |
|||
url: `/pages/index/index`, |
|||
}); |
|||
}, |
|||
|
|||
// 关闭弹窗 |
|||
handleClose() { |
|||
this.pdfId = '' |
|||
this.show = false |
|||
}, |
|||
// 上一页函数, |
|||
prePage() { |
|||
var page = this.pageNum |
|||
page = page > 1 ? page - 1 : this.pageTotalNum |
|||
this.pageNum = page |
|||
}, |
|||
// 下一页函数 |
|||
nextPage() { |
|||
var page = this.pageNum |
|||
page = page < this.pageTotalNum ? page + 1 : 1 |
|||
this.pageNum = page |
|||
}, |
|||
// 页面加载回调函数,其中e为当前页数 |
|||
pageLoaded(e) { |
|||
this.curPageNum = e |
|||
}, |
|||
// 其他的一些回调函数。 |
|||
pdfError(error) { |
|||
console.error(error) |
|||
}, |
|||
}, |
|||
// 页面显示调用接口 |
|||
onLoad() {}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
/deep/ .u-modal__content{ |
|||
text-align: center; |
|||
} |
|||
.popup-close { |
|||
position: fixed; |
|||
right: 20px; |
|||
top: 20px; |
|||
z-index: 9999; |
|||
|
|||
/deep/.uni-icons { |
|||
font-size: 40px !important; |
|||
color: #fff !important; |
|||
} |
|||
} |
|||
|
|||
.view-gb { |
|||
max-width: 100px; |
|||
margin-left: 16px; |
|||
} |
|||
|
|||
.view-li { |
|||
// padding-left: 10px; |
|||
} |
|||
|
|||
.view-pdf { |
|||
width: 60vw; |
|||
margin: auto; |
|||
} |
|||
|
|||
.tools { |
|||
display: flex; |
|||
align-items: center; |
|||
position: absolute; |
|||
bottom: 26px; |
|||
left:16px; |
|||
right:16px; |
|||
|
|||
uni-button { |
|||
font-size: 18px; |
|||
line-height: 44px; |
|||
height: 44px; |
|||
flex: 1 |
|||
} |
|||
|
|||
.page { |
|||
line-height: 44px; |
|||
height: 44px; |
|||
width: 100px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
.pathsName { |
|||
color: #fff; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.pdfBox .el-button { |
|||
background: rgba(255, 255, 255, 0); |
|||
border: none; |
|||
/* width: 30px; */ |
|||
} |
|||
|
|||
.pdfBox>>>.el-icon-arrow-left, |
|||
.pdfBox>>>.el-icon-arrow-right { |
|||
font-size: 18px; |
|||
color: #000; |
|||
} |
|||
|
|||
.pdfBox .page { |
|||
margin: 0 10px; |
|||
} |
|||
|
|||
.pdfBox .el-button-group { |
|||
width: 100%; |
|||
justify-content: center; |
|||
display: flex; |
|||
align-items: center; |
|||
padding-top: 20px; |
|||
} |
|||
|
|||
.pdfBox { |
|||
padding-bottom: 20px; |
|||
margin-top: 20px; |
|||
background: #fff; |
|||
min-height: 300px; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item__label { |
|||
text-align: right; |
|||
margin-right: 10px !important; |
|||
padding: 0 !important; |
|||
} |
|||
|
|||
.contLeft-pane>>>.el-form-item--medium .el-form-item__content { |
|||
flex: 1; |
|||
} |
|||
|
|||
.li-item { |
|||
uni-view { |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
|
|||
span { |
|||
font-size: 20px; |
|||
} |
|||
} |
|||
|
|||
|
|||
.li-title { |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
line-height: 30px; |
|||
} |
|||
} |
|||
|
|||
.view-box { |
|||
margin-top: 50px; |
|||
} |
|||
|
|||
.view-none { |
|||
height: 100%; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-size: 40px !important; |
|||
} |
|||
|
|||
.view-ul { |
|||
text-align: left; |
|||
margin-bottom: 16px; |
|||
|
|||
.view-li { |
|||
span { |
|||
font-size: 20px; |
|||
line-height: 40px; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
.view-title { |
|||
display: inline-block; |
|||
border: 1px solid #000; |
|||
padding: 0 14px; |
|||
margin-bottom: 30px; |
|||
line-height: 50px; |
|||
border-radius: 6px; |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.box { |
|||
height: 100vh; |
|||
background-size: cover; |
|||
box-sizing: border-box; |
|||
padding: 20px 100px; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.box-cent { |
|||
flex: 1; |
|||
margin-top: 70px; |
|||
position: relative; |
|||
} |
|||
|
|||
.box-cent1 { |
|||
position: absolute; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
overflow: auto; |
|||
|
|||
} |
|||
} |
|||
</style> |
|||
<style></style> |
|||
|
After Width: | Height: | Size: 210 KiB |
|
After Width: | Height: | Size: 237 KiB |
@ -0,0 +1,402 @@ |
|||
<<<<<<< HEAD |
|||
======= |
|||
<template> |
|||
<div> |
|||
<div class="divbox"> |
|||
<div class="div-left"> |
|||
<image class="logo" src='../../imgs/logo.png' mode="widthFix"></image> |
|||
|
|||
</div> |
|||
<div class="div-right"> |
|||
<h1 class="h1-title">内部会议系统</h1> |
|||
<u-form :model="form" :rules="rules" ref="uForm" label-position="top" label-width="100" |
|||
class="view-form"> |
|||
<u-form-item label="" prop="username"> |
|||
<view class="form-item-box"> |
|||
<u-input autocomplete="new-password" class="form-item-input" v-model="form.username" |
|||
placeholder="请输入用户名" /> |
|||
</view> |
|||
</u-form-item> |
|||
<u-form-item label="" prop="password" class="form-item-pass" style="padding-bottom: 0"> |
|||
<view class="form-item-box" style="display: flex; align-items: center"> |
|||
<u-input :type="!passShow ? 'password' : ''" class="form-item-input" |
|||
autocomplete="new-password" v-model="form.password" placeholder="请输入密码" /> |
|||
<image @click="passShow = !passShow" v-if="passShow" mode="aspectFit" class="form-item-img" |
|||
src="../../imgs/xyj.png" style="margin-right: 14px"></image> |
|||
<image @click="passShow = !passShow" v-else mode="aspectFit" class="form-item-img" |
|||
src="../../imgs/xyj1.png" style="margin-right: 14px"></image> |
|||
</view> |
|||
</u-form-item> |
|||
|
|||
<u-form-item label="" prop="code"> |
|||
<view style="width:100%; display: flex;"> |
|||
<view class="form-item-box" style="flex:1"> |
|||
<u-input autocomplete="off" class="form-item-input" v-model="form.code" |
|||
placeholder="请输入验证码" /> |
|||
</view> |
|||
<view class="code-imagebox" @click="getCaptchaImage()"> |
|||
<image class='code-image' :src="codeUrl" alt=""></image> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
</u-form-item> |
|||
<view @click="show = true" style="text-align: right;"> 忘记密码?</view> |
|||
</u-form> |
|||
|
|||
<view class="log-but" @click="handleLogin"> 登录 </view> |
|||
</div> |
|||
</div> |
|||
<u-modal :show="show" :content='configData' @confirm="show = false"></u-modal> |
|||
<u-toast ref="uToast"></u-toast> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import { |
|||
mapMutations, |
|||
mapState |
|||
} from "vuex"; |
|||
import { |
|||
login, |
|||
captchaImage, |
|||
config |
|||
} from "@/common/userApi"; |
|||
export default { |
|||
name: "SignIn", |
|||
components: {}, |
|||
data() { |
|||
return { |
|||
show:false, |
|||
codeUrl: '', // 图片验证码 |
|||
passShow: false, |
|||
form: { |
|||
username: "", |
|||
password: "", |
|||
}, |
|||
configData:'', |
|||
rules: { |
|||
username: [{ |
|||
required: true, |
|||
message: "请输入用户名", |
|||
trigger: ["blur"], |
|||
}], |
|||
password: [{ |
|||
required: true, |
|||
message: "请输入密码", |
|||
trigger: ["blur"], |
|||
}], |
|||
code: [{ |
|||
required: true, |
|||
message: "请输入验证码", |
|||
trigger: ["blur"], |
|||
}], |
|||
}, |
|||
}; |
|||
}, |
|||
computed: { |
|||
...mapState("ht", ["reportId"]), |
|||
}, |
|||
created() { |
|||
this.getCaptchaImage() // 获取验证码 |
|||
this.getConfig() // 获取配置信息 |
|||
this.keyEnter() |
|||
}, |
|||
methods: { |
|||
...mapMutations(["setTrainPath"]), |
|||
// 监听回车事件 |
|||
keyEnter(){ |
|||
document.onkeydown = e =>{ |
|||
if(e.keyCode == 13){ |
|||
this.handleLogin() // 登录 |
|||
} |
|||
} |
|||
}, |
|||
// 获取验证码 |
|||
async getConfig() { |
|||
const res = await config('sys.password.forget'); |
|||
const { |
|||
code, |
|||
rows, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
this.configData = rows[0]?.configValue || '' |
|||
} |
|||
}, |
|||
// 获取验证码 |
|||
async getCaptchaImage() { |
|||
const res = await captchaImage(); |
|||
const { |
|||
code, |
|||
data, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
this.codeUrl = "data:image/gif;base64," + res.img; |
|||
this.form.uuid = res.uuid |
|||
} |
|||
}, |
|||
// 登录 |
|||
async handleLogin() { |
|||
this.$refs.uForm.validate().then(async (formRes) => { |
|||
const param = { |
|||
username: this.form.username, |
|||
password: this.form.password, |
|||
code: this.form.code, // 4训练师端、5居家端、6医生端 |
|||
uuid: this.form.uuid, |
|||
}; |
|||
const res = await login(param); |
|||
const { |
|||
code, |
|||
data, |
|||
msg |
|||
} = res; |
|||
if (code === 200) { |
|||
uni.setStorageSync("userToken", res.token); |
|||
uni.setStorageSync("userName", this.form.username); |
|||
uni.navigateTo({ |
|||
url: "/pages/index/index", |
|||
}); |
|||
// 全屏 |
|||
var docElm = document.documentElement; |
|||
if (docElm.requestFullscreen) { |
|||
docElm.requestFullscreen(); |
|||
} else if (docElm.mozRequestFullScreen) { |
|||
docElm.mozRequestFullScreen(); |
|||
} else if (docElm.webkitRequestFullScreen) { |
|||
docElm.webkitRequestFullScreen(); |
|||
} else if (elem.msRequestFullscreen) { |
|||
elem.msRequestFullscreen(); |
|||
} |
|||
this.handleSuccess("登录成功"); |
|||
} else { |
|||
this.handleError(msg || "登录失败"); |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
// 错误提示信息 |
|||
handleError(_tips) { |
|||
this.$refs.uToast.show({ |
|||
type: "error", |
|||
icon: false, |
|||
message: _tips, |
|||
}); |
|||
}, |
|||
// 正确提示信息 |
|||
handleSuccess(_tips) { |
|||
this.$refs.uToast.show({ |
|||
type: "success", |
|||
icon: false, |
|||
message: _tips, |
|||
}); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.view-form { |
|||
width: 80% |
|||
} |
|||
|
|||
.code-imagebox { |
|||
width: 100px; |
|||
margin-left: 12px; |
|||
|
|||
.code-image { |
|||
width: 100px; |
|||
height: 48px; |
|||
} |
|||
} |
|||
|
|||
.log-but { |
|||
width: 400px; |
|||
line-height: 48px; |
|||
background: #3d78ff; |
|||
border-radius: 4px; |
|||
font-size: 20px; |
|||
color: #ffffff; |
|||
text-align: center; |
|||
margin-top: 36px; |
|||
} |
|||
|
|||
.checkbox-box { |
|||
display: flex; |
|||
} |
|||
|
|||
.view-yd { |
|||
width: 440px; |
|||
} |
|||
|
|||
/deep/.u-checkbox__icon-wrap--square { |
|||
width: 18px !important; |
|||
height: 18px !important; |
|||
} |
|||
|
|||
.pawss { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
color: #3d78ff; |
|||
|
|||
.forget { |
|||
font-size: 14px !important; |
|||
} |
|||
} |
|||
|
|||
/deep/ .u-checkbox-label--left span { |
|||
font-size: 14px !important; |
|||
} |
|||
|
|||
.form-fg { |
|||
height: 30px; |
|||
} |
|||
|
|||
.form-item-img { |
|||
width: 20px; |
|||
height: 30px; |
|||
} |
|||
|
|||
.ipt-box { |
|||
width: 380px; |
|||
margin: 0 100px; |
|||
} |
|||
|
|||
.code-wrap { |
|||
display: flex; |
|||
|
|||
.code-field { |
|||
flex: 1; |
|||
} |
|||
|
|||
.code-btn { |
|||
margin-left: 10px; |
|||
} |
|||
|
|||
i { |
|||
position: absolute; |
|||
top: 30px; |
|||
right: 15px; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
|
|||
.forgetPassword { |
|||
cursor: pointer; |
|||
color: rgba(0, 0, 0, 0.54); |
|||
} |
|||
|
|||
.forgetPassword:hover { |
|||
text-decoration: underline; |
|||
color: rgba(0, 0, 0, 0.87); |
|||
} |
|||
</style> |
|||
<style scoped lang="scss"> |
|||
.form-item-box { |
|||
width: 100%; |
|||
border-radius: 4px 4px 4px 4px; |
|||
border: 1px solid #dcdfe6; |
|||
height: 46px; |
|||
} |
|||
|
|||
.form-item-input { |
|||
height: 46px !important; |
|||
border-radius: 23px; |
|||
padding: 0 14px !important; |
|||
color: #333333; |
|||
box-sizing: border-box; |
|||
border: none; |
|||
} |
|||
|
|||
/deep/ .uni-input-input { |
|||
//font-size: 50px; |
|||
} |
|||
|
|||
.form-item-input:placeholder { |
|||
font-size: 16px; |
|||
color: #000; |
|||
} |
|||
|
|||
.form-item-codebut { |
|||
font-size: 12px; |
|||
color: #888888; |
|||
width: 100px; |
|||
text-align: center; |
|||
border-left: 1px solid #d8d8d8; |
|||
} |
|||
|
|||
/deep/ .u-form-item__body__left__content__label { |
|||
width: 100px; |
|||
font-size: 22px; |
|||
color: #000000; |
|||
margin-bottom: 16px; |
|||
} |
|||
|
|||
/deep/.u-input__content__field-wrapper__field { |
|||
height: 48px; |
|||
line-height: 48px; |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/.ant-input { |
|||
font-size: 22px; |
|||
} |
|||
|
|||
/deep/.ant-input-affix-wrapper .ant-input:not(:first-child) { |
|||
padding-left: 40px; |
|||
} |
|||
|
|||
.h1-title { |
|||
text-align: center; |
|||
font-weight: bold; |
|||
font-size: 36px; |
|||
width: 100%; |
|||
margin-bottom: 20px; |
|||
} |
|||
|
|||
.divbox { |
|||
display: flex; |
|||
background-image: url('../../imgs/left.png'); |
|||
background-position: left bottom; |
|||
background-repeat: no-repeat; |
|||
background-size: 100% ; |
|||
.div-left { |
|||
position: relative; |
|||
flex: 1; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
.equipment { |
|||
position: absolute; |
|||
bottom: 4px; |
|||
color: #6fcd9d; |
|||
} |
|||
} |
|||
} |
|||
.divbox { |
|||
width: 100%; |
|||
height: 100vh; |
|||
display: flex; |
|||
|
|||
.div-left { |
|||
flex: 2; |
|||
} |
|||
|
|||
.div-right { |
|||
background:rgba(255, 255, 255, .6) ; |
|||
width: 500px; |
|||
|
|||
|
|||
text-align: left; |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
justify-content: center; |
|||
align-content: center; |
|||
|
|||
.p-note { |
|||
color: #10b884; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
>>>>>>> 25ec9f751d39f07689d8b4df360b7c458d10409a |
|||
|
After Width: | Height: | Size: 26 KiB |
@ -1,9 +1,14 @@ |
|||
# 页面标题 |
|||
VUE_APP_TITLE = 大唐会议管理系统 |
|||
VUE_APP_TITLE = 神头发电会议系统 |
|||
|
|||
# 生产环境配置 |
|||
ENV = 'production' |
|||
NODE_ENV = 'production' |
|||
|
|||
# 大唐会议管理系统/生产环境 |
|||
VUE_APP_BASE_API = '/prod-api' |
|||
VUE_APP_IMG_URL = 'https://test.tall.wiki/datangMeeting' |
|||
|
|||
# 大唐 |
|||
VUE_APP_BASE_API = 'http://10.89.114.11:9001/datangMeeting' |
|||
VUE_APP_IMG_URL = 'http://10.89.114.11:9001/' |
|||
VUE_APP_API_QZURL = 'http://10.89.114.11:9001/' |
|||
|
|||
# 访问路径 |
|||
VUE_APP_PUBLIC_PATH = '/datang/meeting/admin/' |
|||
|
|||
@ -1,12 +1,17 @@ |
|||
# 页面标题 |
|||
VUE_APP_TITLE = 大唐会议管理系统 |
|||
VUE_APP_TITLE = 神头发电会议系统 |
|||
|
|||
BABEL_ENV = production |
|||
# 生产环境配置 |
|||
NODE_ENV = 'production' |
|||
# 测试 |
|||
# VUE_APP_BASE_API = 'https://test.tall.wiki/datangMeeting' |
|||
# VUE_APP_IMG_URL = 'https://test.tall.wiki/' |
|||
# VUE_APP_API_QZURL = 'https://test.tall.wiki/' |
|||
|
|||
NODE_ENV = production |
|||
# 大唐 |
|||
VUE_APP_BASE_API = 'http://10.89.114.11:9001/datangMeeting' |
|||
VUE_APP_IMG_URL = 'http://10.89.114.11:9001/' |
|||
VUE_APP_API_QZURL = 'http://10.89.114.11:9001/' |
|||
|
|||
# 测试环境配置 |
|||
ENV = 'staging' |
|||
|
|||
# 大唐会议管理系统/测试环境 |
|||
VUE_APP_BASE_API = '/stage-api' |
|||
# 访问路径 |
|||
VUE_APP_PUBLIC_PATH = '/datang/meeting/admin/' |
|||
|
|||
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 163 KiB |