提交 163a4602 authored 作者: 王鹏飞's avatar 王鹏飞

feat: 创建会议新增并发数选择

上级 1a8edce0
module.exports = {
domain: 'dev.ezijing.com',
// url: 'https://live-broadcast2-admin.ezijing.com/api',
url: 'https://meetings.ezijing.com/api',
url: 'https://live-center.ezijing.com/api',
webpack: {
externals: {
CKEDITOR: 'window.CKEDITOR',
......
......@@ -87,3 +87,9 @@ export function fileUpload(formData) {
export function getSignature() {
return httpRequest.get('/api/usercenter/aliyun/get-signature')
}
/**
* 获取时间段内的会议个数
*/
export function getMeetingCount(params) {
return httpRequest.get('/api/live/admin/v3/tencent/meeting/count', { params })
}
......@@ -2,17 +2,17 @@
<div class="calendar">
<div class="calendar-h">
<el-button icon="el-icon-arrow-left" size="mini" circle @click="btnClick('pre')"></el-button>
<span>{{curYearMonth}}</span>
<span>{{ curYearMonth }}</span>
<el-button icon="el-icon-arrow-right" size="mini" circle @click="btnClick('next')"></el-button>
</div>
<div class="week-bar">
<span v-for="item in weekList" :key="item">{{item}}</span>
<span v-for="item in weekList" :key="item">{{ item }}</span>
</div>
<div class="calendar-day-list">
<ul :class="{'range-selecting': rangeState.selecting}">
<ul :class="{ 'range-selecting': rangeState.selecting }">
<li v-for="item in dayList" :key="item.getTime()" @click="selectDay(item)">
<div :class="getDayCellClasses(item)">
<span>{{item.getTime() === toDay ? '今' : item.getDate()}}</span>
<span>{{ item.getTime() === toDay ? '今' : item.getDate() }}</span>
</div>
</li>
</ul>
......@@ -20,12 +20,12 @@
</div>
</template>
<script>
import { getMeetingCount } from '@/api/common'
import { dateFormat, getYMDByDate } from '@/utils/dateAlgs'
import getDays from './getDays'
export default {
props: {
defaultDate: {
},
defaultDate: {},
type: {
type: String,
default: 'date' // 'date', 'daterange'
......@@ -45,12 +45,13 @@ export default {
rangeEndDate: null,
rangeDates: [],
selectFirstDate: null,
selectLastDate: null
selectLastDate: null,
dateCountList: []
}
},
computed: {
toDay() {
const date = new Date();
const date = new Date()
const todayTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime()
return todayTime
},
......@@ -96,8 +97,6 @@ export default {
immediate: true
}
},
created() {
},
methods: {
init() {
this.activeDate = ''
......@@ -119,7 +118,13 @@ export default {
default: this.selectFirstDate && !this.rangeStartDate && date.getTime() === this.selectFirstDate.getTime(),
'start-date': this.rangeStartDate && date.getTime() === this.rangeStartDate.getTime(),
'end-date': this.rangeStartDate && date.getTime() === this.rangeEndDate.getTime(),
'is-range': this.rangeDates.length > 0 && this.rangeDates.some(d => date.getTime() === d.getTime())
'is-range': this.rangeDates.length > 0 && this.rangeDates.some(d => date.getTime() === d.getTime()),
'has-meeting': this.dateCountList.some(item => {
if (+new Date(item.date) === date.getTime()) {
return !!item.total
}
return false
})
}
return classes
},
......@@ -129,10 +134,11 @@ export default {
},
initDays() {
this.dayList = getDays(this.monthFirstDate)
this.getMeetingCount()
},
btnClick(type) {
const month = type === 'pre' ? this.activeMonth - 1 : this.activeMonth + 1;
this.monthFirstDate = new Date(this.activeYear, month, 1);
const month = type === 'pre' ? this.activeMonth - 1 : this.activeMonth + 1
this.monthFirstDate = new Date(this.activeYear, month, 1)
this.initDays()
},
selectDay(date) {
......@@ -166,7 +172,10 @@ export default {
this.rangeEndDate = isReverse ? this.selectFirstDate : this.selectLastDate
this.getRangeDates()
this.rangeState.selecting = false
this.$emit('change', { dates: [this.rangeStartDate, this.rangeEndDate], daysCount: this.rangeDates.length + 1 })
this.$emit('change', {
dates: [this.rangeStartDate, this.rangeEndDate],
daysCount: this.rangeDates.length + 1
})
}
} else {
}
......@@ -175,88 +184,98 @@ export default {
const sDate = getYMDByDate(this.rangeStartDate)
const eDate = getYMDByDate(this.rangeEndDate)
const datesArr = []
while ((eDate.getTime() - sDate.getTime()) > 0) {
const year = sDate.getFullYear();
const month = sDate.getMonth();
const day = sDate.getDate();
datesArr.push(new Date(year, month, day));
sDate.setDate(day + 1);
while (eDate.getTime() - sDate.getTime() > 0) {
const year = sDate.getFullYear()
const month = sDate.getMonth()
const day = sDate.getDate()
datesArr.push(new Date(year, month, day))
sDate.setDate(day + 1)
}
this.rangeDates = datesArr
},
handleMouseMove(it) {
// if (!this.rangeState.selecting) return;
// console.log(it)
},
getMeetingCount() {
const startTime = this.dayList[0]
const endTime = this.dayList[this.dayList.length - 1]
getMeetingCount({
start_time: dateFormat(startTime, '{y}-{m}-{d}'),
end_time: dateFormat(endTime, '{y}-{m}-{d}')
}).then(res => {
this.dateCountList = res.data
})
}
}
}
</script>
<style scoped>
.calendar{
color:#606266;
width:224px;
<style lang="scss" scoped>
.calendar {
color: #606266;
width: 224px;
}
.calendar-h{
padding:10px 0;
width:204px;
margin:0 auto;
display:flex;
.calendar-h {
padding: 10px 0;
width: 204px;
margin: 0 auto;
display: flex;
}
.calendar-h span{
display:block;
line-height:28px;
flex:1;
text-align:center;
.calendar-h span {
display: block;
line-height: 28px;
flex: 1;
text-align: center;
}
.week-bar{
display:flex;
width:224px;
margin:0 auto;
.week-bar {
display: flex;
width: 224px;
margin: 0 auto;
}
.week-bar>span{
width:32px;
text-align:center;
font-size:12px;
.week-bar > span {
width: 32px;
text-align: center;
font-size: 12px;
}
.calendar-day-list{
width:252px;
margin:0 auto;
.calendar-day-list {
width: 252px;
margin: 0 auto;
}
.calendar-day-list ul{
display:flex;
flex-wrap:wrap;
padding-top:10px;
.calendar-day-list ul {
display: flex;
flex-wrap: wrap;
padding-top: 10px;
}
.calendar-day-list li{
width:32px;
height:32px;
text-align:center;
font-size:12px;
position:relative;
cursor:pointer;
.calendar-day-list li {
width: 32px;
height: 32px;
text-align: center;
font-size: 12px;
position: relative;
cursor: pointer;
}
.calendar-day-list li div{
padding:2px 0;
.calendar-day-list li div {
padding: 2px 0;
}
.calendar-day-list li span{
display:inline-block;
width:24px;
height:24px;
line-height:24px;
.calendar-day-list li span {
display: inline-block;
width: 24px;
height: 24px;
line-height: 24px;
border-radius: 50%;
-moz-user-select:none; /*火狐*/
-webkit-user-select:none; /*webkit浏览器*/
-ms-user-select:none; /*IE10*/
-khtml-user-select:none; /*早期浏览器*/
user-select:none;
-moz-user-select: none; /*火狐*/
-webkit-user-select: none; /*webkit浏览器*/
-ms-user-select: none; /*IE10*/
-khtml-user-select: none; /*早期浏览器*/
user-select: none;
}
.calendar-day-list li .grey span{
color:#c0c4cc;
.calendar-day-list li .grey span {
color: #c0c4cc;
}
.calendar-day-list li span:hover{
.calendar-day-list li span:hover {
background-color: #f5f7fa;
}
.calendar-day-list li .today span{
.calendar-day-list li .today span {
background: #ecf5ff;
color: #409eff;
}
......@@ -264,31 +283,46 @@ export default {
.calendar-day-list li .start-date,
.calendar-day-list li .end-date,
.calendar-day-list li .default,
.range-selecting li div:hover{
.range-selecting li div:hover {
background-color: #f2f6fc;
}
.calendar-day-list li .start-date{
border-radius:12px 0 0 12px;
.calendar-day-list li .start-date {
border-radius: 12px 0 0 12px;
margin-left: 2px;
}
.calendar-day-list li .end-date{
border-radius:0 12px 12px 0;
.calendar-day-list li .end-date {
border-radius: 0 12px 12px 0;
margin-right: 2px;
}
.calendar-day-list li .start-date.end-date,
.calendar-day-list li .default,
.range-selecting li div:hover{
border-radius:12px;
margin:0 2px;
.range-selecting li div:hover {
border-radius: 12px;
margin: 0 2px;
}
.calendar-day-list li .current span,
.calendar-day-list li .start-date span,
.calendar-day-list li .end-date span{
.calendar-day-list li .end-date span {
background-color: #409eff;
color:#fff;
color: #fff;
}
.calendar-day-list li .default span,
.range-selecting li:hover span {
background-color: rgba(64, 158, 255, 0.4);
color: #fff;
}
.calendar-day-list li .default span, .range-selecting li:hover span{
background-color: rgba(64,158,255, .4);
color:#fff;
.calendar-day-list li .has-meeting {
position: relative;
&::after {
content: '';
position: absolute;
top: 0;
right: 2px;
width: 4px;
height: 4px;
background-color: #aa1941;
border-radius: 50%;
overflow: hidden;
}
}
</style>
......@@ -294,6 +294,7 @@ export default {
},
more() {
const query = {
concurrency: this.data.concurrency,
account: this.data.accountId,
start: this.startTimestamp,
end: this.endTimestamp
......@@ -312,6 +313,7 @@ export default {
const form = this.form
const params = {
instanceid: 1,
concurrency: this.data.concurrency,
userid: this.data.accountId,
subject: form.subject,
start_time: dateFormat(this.startTimestamp),
......
......@@ -105,6 +105,7 @@ export default {
const account = {
userid: _accont.userid,
name: _accont.username,
type: _accont.type,
events: []
}
for (let j = 0; j < mList.length; j++) {
......
<template>
<div class="meeting-account-create">
<div class="inner">
<meeting-form :data="reviewData" :users="userList" @submitForm="handleSubmit" @dateChange="handleDateChange"></meeting-form>
<meeting-form
:data="reviewData"
:users="userList"
@submitForm="handleSubmit"
@dateChange="handleDateChange"
></meeting-form>
<div class="right-container">
<div class="title">{{ reviewData.startDate | timeFormat }} {{ reviewData.startDate | timeFormat('星期{a}') }}</div>
<div class="title">
{{ reviewData.startDate | timeFormat }} {{ reviewData.startDate | timeFormat('星期{a}') }}
</div>
<schedule :options="options" :data="schedule" :date="reviewData.startDate" />
<div class="pre-time-range" :style="{ top: getTop, height: getHeight }"></div>
</div>
</div>
<meeting-success-dialog :dialogVisible.sync="dialogVisible" :details="details"/>
<meeting-success-dialog :dialogVisible.sync="dialogVisible" :details="details" />
</div>
</template>
<script>
......@@ -18,8 +25,8 @@ import MeetingSuccessDialog from '@/components/MeetingSuccessDialog/index'
import { createMeeting, getMeetingDetails, getNonpagedMeetingList } from '@api/common'
import { timeTrans, getYMDByDate, dateFormat, isSameDate } from '@/utils/dateAlgs'
import { mapGetters } from 'vuex'
export default ({
data () {
export default {
data() {
return {
dialogVisible: false,
reviewData: {
......@@ -107,7 +114,7 @@ export default ({
},
watch: {
dialogVisible: {
handler: function (nv) {
handler: function(nv) {
if (!nv) {
this.goList()
}
......@@ -144,7 +151,7 @@ export default ({
text: '获取腾讯会议详情,请稍后...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
})
const params = {
meeting_id: obj.meeting_id
}
......@@ -163,6 +170,8 @@ export default ({
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
const query = this.$route.query
params.concurrency = query.concurrency ? parseInt(query.concurrency) || 1 : 1
params.userid = this.userid
createMeeting(params).then(res => {
loading.close()
......@@ -176,13 +185,15 @@ export default ({
},
fetchMeetingDetails(params) {
return new Promise((resolve, reject) => {
getMeetingDetails(params).then(res => {
getMeetingDetails(params)
.then(res => {
if (res.code === 0 && res.data.id) {
resolve(res.data)
} else {
reject(res)
}
}).catch((err) => reject(err))
})
.catch(err => reject(err))
})
},
fetchMeetingList() {
......@@ -194,19 +205,21 @@ export default ({
start_time: start,
end_time: end
}
getNonpagedMeetingList(params).then((res) => {
getNonpagedMeetingList(params)
.then(res => {
if (res.code === 0 && res.data && res.data.list) {
console.log(res.data.list)
this.schedule.events = res.data.list
} else {
}
}).catch()
})
.catch()
}
}
})
}
</script>
<style scoped>
.meeting-account-create{
.meeting-account-create {
overflow-y: auto;
height: calc(100% - 52px);
}
......@@ -215,7 +228,7 @@ export default ({
background: #fff;
margin: 0 15px;
border-radius: 4px;
padding-bottom:10px;
padding-bottom: 10px;
}
.right-container {
position: relative;
......@@ -238,8 +251,8 @@ export default ({
width: calc(100% - 70px);
background: #52b837;
}
.search-keywords-checked{
color: #F56C6C;
.search-keywords-checked {
color: #f56c6c;
font-size: 12px;
line-height: 1;
padding-top: 4px;
......@@ -250,22 +263,22 @@ export default ({
.right-container .el-scrollbar ::v-deep.el-scrollbar__wrap {
/* overflow:hidden; */
}
.tx-meeting-container ::v-deep.el-dialog__header{
padding-top:14px;
.tx-meeting-container ::v-deep.el-dialog__header {
padding-top: 14px;
}
.tx-meeting-container ::v-deep.el-dialog__headerbtn{
top:12px;
right:12px;
.tx-meeting-container ::v-deep.el-dialog__headerbtn {
top: 12px;
right: 12px;
}
.tx-meeting-container ::v-deep.el-dialog__body{
padding:10px 0;
margin:0 20px;
border: 1px solid #DBDBDB;
.tx-meeting-container ::v-deep.el-dialog__body {
padding: 10px 0;
margin: 0 20px;
border: 1px solid #dbdbdb;
}
.tx-meeting-container ::v-deep.el-dialog__footer{
padding-bottom:16px;
.tx-meeting-container ::v-deep.el-dialog__footer {
padding-bottom: 16px;
}
.tx-meeting-container ::v-deep.el-dialog .el-form-item{
margin:0;
.tx-meeting-container ::v-deep.el-dialog .el-form-item {
margin: 0;
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论