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

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

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