Commit 1631ce80 authored by 华国豪's avatar 华国豪 🙄

1

parent 0eceec81
'use strict' 'use strict'
const webpack = require("webpack")
const path = require('path') const path = require('path')
const utils = require('./utils') const utils = require('./utils')
const config = require('../config') const config = require('../config')
...@@ -8,16 +9,16 @@ function resolve (dir) { ...@@ -8,16 +9,16 @@ function resolve (dir) {
return path.join(__dirname, '..', dir) return path.join(__dirname, '..', dir)
} }
const createLintingRule = () => ({ // const createLintingRule = () => ({
test: /\.(js|vue)$/, // test: /\.(js|vue)$/,
loader: 'eslint-loader', // loader: 'eslint-loader',
enforce: 'pre', // enforce: 'pre',
include: [resolve('src'), resolve('test')], // include: [resolve('src'), resolve('test')],
options: { // options: {
formatter: require('eslint-friendly-formatter'), // formatter: require('eslint-friendly-formatter'),
emitWarning: !config.dev.showEslintErrorsInOverlay // emitWarning: !config.dev.showEslintErrorsInOverlay
} // }
}) // })
module.exports = { module.exports = {
context: path.resolve(__dirname, '../'), context: path.resolve(__dirname, '../'),
...@@ -40,7 +41,7 @@ module.exports = { ...@@ -40,7 +41,7 @@ module.exports = {
}, },
module: { module: {
rules: [ rules: [
...(config.dev.useEslint ? [createLintingRule()] : []), // ...(config.dev.useEslint ? [createLintingRule()] : []),
{ {
test: /\.vue$/, test: /\.vue$/,
loader: 'vue-loader', loader: 'vue-loader',
...@@ -88,5 +89,13 @@ module.exports = { ...@@ -88,5 +89,13 @@ module.exports = {
net: 'empty', net: 'empty',
tls: 'empty', tls: 'empty',
child_process: 'empty' child_process: 'empty'
} },
plugins: [
new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery',
        'root.jQuery': 'jquery'
    })
]
} }
...@@ -5,21 +5,132 @@ ...@@ -5,21 +5,132 @@
</keep-alive> </keep-alive>
<router-view v-if="!$route.meta.keepAlive"/> <router-view v-if="!$route.meta.keepAlive"/>
<vue-nav/> <vue-nav/>
<vue-baberrage
:isShow="barrageIsShow"
:barrageList="barrageList"
:loop="barrageLoop"
>
</vue-baberrage>
<div style="position: absolute;left: 0;top: 0;padding: 2%;background-color: red;z-index: 10086;" @click="sendMsg()">sendMsg</div>
<!-- style="position: absolute; top: 20%;z-index: 20199" -->
<audio ref="homeAudio" :loop="AudioPlayType ? true : false" :src="url" controls></audio>
</div> </div>
</template> </template>
<script> <script>
import { MESSAGE_TYPE } from 'vue-baberrage'
import pageNav from './components/pageNav' import pageNav from './components/pageNav'
export default { export default {
name: 'App', name: 'App',
components: { components: {
'vue-nav': pageNav 'vue-nav': pageNav
},
data () {
return {
barrageIsShow: true,
barrageList: [],
barrageLoop: false,
proxy: {},
currentId: 0,
url: "/static/audio/bg_m_000.mp3",
AudioPlayType: 1,
} }
},
mounted () {
let audio = this.$refs.homeAudio
let $this = this
audio.addEventListener('ended', function () {
if ($this.AudioPlayType === 0) {
$this.MsgBus.$emit('nextMusic')
}
}, false);
$this.connectServer()
this.MsgBus.$on('setBarrageShow', function (type) {
$this.barrageIsShow = type
})
// 监听音乐播放 暂停
this.MsgBus.$on('audioPlay', function (type) {
$this.setAudioPlay(type)
})
// 监听音乐播放设置
this.MsgBus.$on('audioType', function (type) {
$this.setAudioType(type)
})
// 监听音乐播放
this.MsgBus.$on('changeMusic', function (url) {
$this.url = url
setTimeout(()=>{
$this.setAudioPlay(0)
}, 50)
})
// setInterval(()=>{
// let barrageObj = {
// id: ++this.currentId,
// avatar: 'https://profile.csdnimg.cn/E/6/D/3_nalaluky',
// msg: '哦呦he好很社会合适的看阿萨德阿萨德~~~',
// name: '一个不愿意透露姓名的网友',
// time: 15,
// type: MESSAGE_TYPE.NORMAL
// }
// $this.barrageList.push(barrageObj)
// }, 5000)
},
methods: {
setAudioType: function (type) {
this.AudioPlayType = type
this.$forceUpdate()
},
setAudioPlay: function (type) {
if (type == 0) {
this.$refs.homeAudio.play()
} else {
this.$refs.homeAudio.pause()
}
},
connectServer() {
var $this = this;
var conn = $.hubConnection("http://192.168.2.65:7838/signalr", {
qs: `i=888888&n=罗超&p=${encodeURIComponent(
"http://imgfile.oytour.com/New/Upload/User/20191018150051176.png"
)}`
});
$this.proxy = conn.createHubProxy("annualLeaveHub");
$this.getMsg();
conn
.start()
.done(data => {
$this.sendMsg();
})
.fail(data => {});
},
sendMsg () {
var $this = this;
$this.proxy.invoke("SendBarrage", '我擦很社会啊').done(msg => {
console.log(msg)
});
},
getMsg () {
var $this = this;
$this.proxy.on("barrage", data => {
let barrage = data
let barrageObj = {
id: ++this.currentId,
avatar: barrage.p,
msg: barrage.m,
name: barrage.n,
time: 15,
type: MESSAGE_TYPE.NORMAL
}
this.barrageList.push(barrageObj)
})
}
}
} }
</script> </script>
<style> <style>
@import url("//at.alicdn.com/t/font_1574056_wu2f2wryiyk.css"); @import url("//at.alicdn.com/t/font_1574056_qf60my177p.css");
@import "./assets/css/init.css"; @import "./assets/css/init.css";
@import "./assets/css/animate.css"; @import "./assets/css/animate.css";
#app { #app {
...@@ -29,4 +140,29 @@ export default { ...@@ -29,4 +140,29 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.baberrage-stage {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
left: 0;
top: 0;
z-index: 999;
}
.baberrage-msg{
font-size: 3rem;
}
.baberrage-item{
display: flex !important;
align-items: center !important;
padding: .6rem 1rem !important;
}
.baberrage-name{
color: rgb(115, 220, 255);
font-size: 3rem;
margin-left: .5rem;
}
.baberrage-item .baberrage-avatar{
position: initial !important;
}
</style> </style>
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
bottom: .5rem; bottom: .5rem;
left: 1rem; left: 1rem;
box-sizing: border-box; box-sizing: border-box;
z-index: 10010;
} }
.pageNav .left_nav{ .pageNav .left_nav{
padding: 1rem; padding: 1rem;
...@@ -19,6 +20,8 @@ ...@@ -19,6 +20,8 @@
position: relative; position: relative;
opacity: 0.1; opacity: 0.1;
transition: opacity linear 4s; transition: opacity linear 4s;
padding-right: 20rem;
box-sizing: border-box;
} }
.pageNav .left_nav:hover{ .pageNav .left_nav:hover{
opacity: 1; opacity: 1;
...@@ -76,6 +79,33 @@ ...@@ -76,6 +79,33 @@
color: #e1830a !important; color: #e1830a !important;
} }
.control_btn{ .control_btn{
position: absolute;
right: 12rem;
}
.music_box{
position: absolute; position: absolute;
right: 1rem; right: 1rem;
display: flex;
align-items: center;
}
.music-select{
padding: .8rem 0;
}
.music-select input{
background: transparent;
color: #e9d5ab !important;
border: none;
width: 100px;
padding-right: 0 !important;
text-align: center;
}
.music-select .el-input__suffix{
display: none;
}
.el-select-dropdown {
z-index: 10011 !important;
}
.music_box .iconfont{
font-size: 2.8rem;
cursor: pointer;
} }
\ No newline at end of file
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</div> </div>
</div> </div>
</template> </template>
<p v-else class="item_name">{{item.Name}}</p> <p v-else>{{item.Name}}</p>
</div> </div>
<div class="control_btn"> <div class="control_btn">
<div class="left_nav_item" v-for="(item, index) in controlMenu" @click="changeControlState(index)" :key="index" :index="index"> <div class="left_nav_item" v-for="(item, index) in controlMenu" @click="changeControlState(index)" :key="index" :index="index">
...@@ -23,29 +23,78 @@ ...@@ -23,29 +23,78 @@
<p class="item_name">{{item.Name}}</p> <p class="item_name">{{item.Name}}</p>
</div> </div>
</div> </div>
<div class="music_box">
<el-select v-model="value" @change="changeMusic" placeholder="请选择" class="music-select">
<el-option
popper-class="music-option"
v-for="item in options"
:key="item.value"
:label="item.name"
:value="item.value">
</el-option>
</el-select>
<template>
<i v-if="AudioType === 1" @click="changeAudioType(0)" class="iconfont iconxunhuan"></i>
<i v-else @click="changeAudioType(1)" class="iconfont iconliebiao"></i>
</template>
<template>
<i v-if="AudioStateIndex === 1" @click="changeAudioState(0)" class="iconfont iconbofang1"></i>
<i v-else @click="changeAudioState(1)" class="iconfont iconzanting"></i>
</template>
</div> </div>
<div class="right_nav">
aa
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {leftNavMenu, controlMenu} from '../assets/js/menuJson' import {leftNavMenu, controlMenu} from '../assets/js/menuJson'
import {musicOptions} from '../assets/js/musicJson'
export default { export default {
name: 'pageNav', name: 'pageNav',
data () { data () {
return { return {
options: musicOptions,
value: '/static/audio/bg_m_000.mp3',
leftNavMenu: leftNavMenu, leftNavMenu: leftNavMenu,
controlMenu: controlMenu, controlMenu: controlMenu,
activeIndex: 0, activeIndex: 0,
mouseIndex: -1, mouseIndex: -1,
animateClass: '' animateClass: '',
AudioStateIndex: 1,
AudioType: 1
} }
}, },
created () {}, created () {
mounted () {}, },
mounted () {
let $this = this
this.MsgBus.$on('nextMusic', function () {
$this.nextMusic()
})
},
methods: { methods: {
nextMusic: function () {
for(let i = 0; i < this.options.length; i++) {
if (this.options[i].value === this.value) {
let num = i === this.options.length - 1 ? 0 : i + 1
this.value = this.options[num].value
this.changeMusic(this.options[num].value)
break;
}
}
},
changeAudioType: function (type) {
this.AudioType = type
this.MsgBus.$emit('audioType', type)
},
changeMusic: function (e){
this.MsgBus.$emit('changeMusic', e)
this.AudioStateIndex = 0
},
changeAudioState: function (type) {
this.AudioStateIndex = type
this.MsgBus.$emit('audioPlay', type)
},
mouseOver: function (index) { mouseOver: function (index) {
this.mouseIndex = index this.mouseIndex = index
this.animateClass = 'animated rollIn' this.animateClass = 'animated rollIn'
...@@ -58,6 +107,7 @@ export default { ...@@ -58,6 +107,7 @@ export default {
let Name = this.controlMenu[index].Name let Name = this.controlMenu[index].Name
if (Name === '弹幕') { if (Name === '弹幕') {
console.log('dm') console.log('dm')
this.MsgBus.$emit('setBarrageShow', this.controlMenu[index].state)
} else if (Name === '声音') { } else if (Name === '声音') {
console.log('sy') console.log('sy')
this.mutePage(this.controlMenu[index].state) this.mutePage(this.controlMenu[index].state)
...@@ -117,7 +167,7 @@ export default { ...@@ -117,7 +167,7 @@ export default {
} }
</script> </script>
<style scoped> <style>
@import "//at.alicdn.com/t/font_1574056_t1y09rcq99s.css"; @import "//at.alicdn.com/t/font_1574056_t1y09rcq99s.css";
@import "../assets/css/pageNav.css"; @import "../assets/css/pageNav.css";
</style> </style>
...@@ -7,10 +7,14 @@ import ElementUI from 'element-ui' ...@@ -7,10 +7,14 @@ import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
import socketio from 'socket.io-client' import socketio from 'socket.io-client'
import MsgBus from './assets/js/msgBus' import MsgBus from './assets/js/msgBus'
import { vueBaberrage } from 'vue-baberrage'
import 'signalr'
Vue.prototype.MsgBus = MsgBus Vue.prototype.MsgBus = MsgBus
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.use(ElementUI) Vue.use(ElementUI)
Vue.use(vueBaberrage)
Vue.prototype.$socketio = socketio Vue.prototype.$socketio = socketio
/* 路由发生变化修改页面title */ /* 路由发生变化修改页面title */
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.meta.title) { if (to.meta.title) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment