-
- {{ displaySubject }} ({{ activeMeetingConfig?.meeting.number }})
-
-
+
+
-
-
-
- {{ name }}
-
+
+
+
+
+
+ {{ name }}
+
+
+
+ {{ activeMeetingConfig?.sharingMember?.alias}}正在共享屏幕
+
+
-
-
- {{ activeMeetingConfig?.sharingMember?.alias}}正在共享屏幕
-
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 结束共享
+
+
+
+
+
+ 结束会议
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 结束共享
-
-
-
-
-
- 结束会议
-
-
-
-
-
-
-
-
+
+
+
@@ -189,9 +205,9 @@ const store = useStore();
const element = ref({
x: 500,
y: -600,
- width: 500,
+ width: 960,
height: 500,
- isActive: false,
+ isActive: true,
});
const globalStore = store.state.useGlobalStore;
// 音视频会议-会控管理模块
@@ -241,9 +257,10 @@ const speakers = ref([]);
const selfGranted = ref(false);
const displaySubject = computed(() => {
- const text = globalStore.activeMeetingConfig?.subject || '';
- subject.value = text;
- return text;
+ const text = globalStore.activeMeetingConfig?.subject;
+ const defaultText = text && String(text).trim() ? text : '会议的标题';
+ subject.value = defaultText;
+ return defaultText;
});
// 0=关闭,1=打开,2=无扬声器
@@ -725,6 +742,17 @@ const setAudio = (stream) => {
}
};
+ const copyMeetingNumber = () => {
+ const number = activeMeetingConfig.value?.meeting?.number;
+ if (number) {
+ navigator.clipboard.writeText(number).then(() => {
+ ElMessage.success('会议号已复制');
+ }).catch(() => {
+ ElMessage.error('复制失败');
+ });
+ }
+ };
+
onMounted(()=>{
console.log(globalStore,'=====0000000000000');
@@ -759,85 +787,223 @@ onUnmounted(() => {
position: absolute;
display: flex;
flex-direction: column;
- justify-content: center;
-
margin: 2px;
- background: rgb(28,32,41);
- border: 2px dashed #e8e8e8;
- border-radius: 16px;
+ background: #fff;
+ border: none;
+ border-radius: 12px;
+ box-shadow: 0 4px 16px rgba(0,0,0,0.15);
+ cursor: default;
+ overflow: visible;
+ }
+
+ .conference-box {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ }
+
+ /* Header Styles */
+ .conference-header {
+ padding: 16px 20px 10px;
+ background: #fff;
+ border-bottom: 1px solid #f0f0f0;
+ flex-shrink: 0;
+ }
+
+ .header-top {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 8px;
+ padding-bottom: 8px;
+ border-bottom: 2px solid #c0c4cc;
+ }
+
+ .title-section {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ }
+
+ .conference-title {
+ margin: 0;
+ font-size: 18px;
+ font-weight: 600;
+ color: #333;
cursor: pointer;
}
+ .title-input {
+ width: 200px;
+ }
+
+ .meeting-id-tag {
+ display: flex;
+ align-items: center;
+ background: #e6f7ff;
+ color: #1890ff;
+ padding: 2px 8px;
+ border-radius: 4px;
+ font-size: 12px;
+ cursor: pointer;
+ transition: all 0.2s;
+ }
+
+ .meeting-id-tag:hover {
+ background: #bae7ff;
+ }
+
+ .id-label {
+ margin-right: 4px;
+ }
+
+ .copy-icon {
+ margin-left: 4px;
+ }
+
+ .participants-info {
+ display: flex;
+ align-items: center;
+ color: #666;
+ font-size: 13px;
+ gap: 6px;
+ }
+
+ /* Video Area Styles */
+ .video-content-area {
+ flex: 1;
+ position: relative;
+ background: #000;
+ margin: 10px;
+ border-radius: 12px;
+ overflow: hidden;
+ }
+
.video {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
position: absolute;
top: 0;
left: 0;
- width: 100%;
- height: 100%;
- object-fit: scale-down;
- }
-
- .buttonContainer {
- position: absolute;
- bottom: 0;
- width: 96%;
- margin: 8px;
- padding: 5px 3px;
- background: #fff;
- border-radius: 3px;
- }
-
- .speaks {
- align-items: center;
- }
-
- .wave {
- top: 0;
- width: 100%;
- height: 100px;
- }
-
- .close {
- position: absolute;
- top: 0;
- right: 0;
- margin: 5px;
- }
-
- .subject {
- position: absolute;
- top: -53px;
- padding: 0 5px;
- color: #ffff;
- background: #1c2029;
- border-radius: 5px;
- }
-
- .subject .arco-input-wrapper {
- margin: 8px 0;
- }
-
- .icon_broadcast {
- fill: #fff;
- }
-
- .img_broadcast {
- position: absolute;
- right: 20px;
- bottom: 60px;
+ pointer-events: none;
}
+ /* Top Box (Tags) */
.top-box {
position: absolute;
top: 10px;
+ left: 0;
+ right: 0;
+ z-index: 10;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ pointer-events: none;
}
- .top-box .arco-tag {
- margin: 5px;
+ .top-box .el-tag {
+ margin: 4px;
+ pointer-events: auto;
}
- ::v-deep .el-button.is-circle{
- width: 32px;
- height: 32px;
+ /* Control Bar Styles */
+ .control-bar {
+ position: absolute;
+ bottom: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ background: rgba(0, 0, 0, 0.65);
+ backdrop-filter: blur(10px);
+ border-radius: 40px;
+ padding: 8px 24px;
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ z-index: 20;
+ white-space: nowrap;
+ }
+
+ .control-btn {
+ background: transparent !important;
+ border: none !important;
+ color: #fff !important;
+ width: 40px !important;
+ height: 40px !important;
+ padding: 0 !important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ transition: background 0.3s;
+ }
+
+ .control-btn:hover {
+ background: rgba(255, 255, 255, 0.15) !important;
+ border-radius: 50%;
+ }
+
+ .control-btn img {
+ width: 24px;
+ height: 24px;
+ filter: brightness(0) invert(1); /* Make black icons white */
+ }
+
+ .control-arrow {
+ margin-left: -12px;
+ margin-top: 10px;
+ cursor: pointer;
+ }
+
+ .hangup-btn {
+ background-color: #f56c6c !important;
+ border-color: #f56c6c !important;
+ color: #fff !important;
+ height: 36px;
+ padding: 0 20px;
+ }
+
+ .hangup-btn:hover {
+ background-color: #f78989 !important;
+ border-color: #f78989 !important;
+ }
+
+ /* Close Card Button */
+ .close-card-btn {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ color: #999;
+ z-index: 100;
+ }
+
+ .close-card-btn:hover {
+ color: #666;
+ background: transparent;
+ }
+
+ /* Misc */
+ .img_broadcast {
+ position: absolute;
+ right: 20px;
+ bottom: 80px; /* Adjusted to be above control bar */
+ width: 40px;
+ height: 40px;
+ }
+
+ ::v-deep .el-button.is-circle {
+ /* Reset element plus styles if needed */
+ }
+
+ ::v-deep .drs-handle {
+ width: 10px;
+ height: 10px;
+ background: #1890ff;
+ border: 2px solid #fff;
+ border-radius: 2px;
+ box-shadow: 0 0 0 1px rgba(0,0,0,0.2);
+ z-index: 1000;
+ pointer-events: auto;
}
diff --git a/src/components/Consultation/demo.vue b/src/components/Consultation/demo.vue
index f264efe..a45670e 100644
--- a/src/components/Consultation/demo.vue
+++ b/src/components/Consultation/demo.vue
@@ -216,7 +216,7 @@ const getLoginAccountInfo =() =>{
const openInit = (it,type) =>{
modleType.value = type;
if(type == '会议'){
- // 判断是否有会议号
+ 判断是否有会议号
let into = it.number ? '确定开始会议?' : '没有找到会议,是否创建会议?'
ElMessageBox.confirm(into,'提示',{
confirmButtonText:'确定',