This commit is contained in:
lcw
2025-11-22 21:59:58 +08:00
parent ea3022c3f6
commit 93c49dff27
661 changed files with 195357 additions and 2160 deletions

View File

@ -0,0 +1,136 @@
<template>
<el-dialog width="1400px" :draggable="true" custom-class="bgData" :model-value="modelValue" append-to-body
@close="close" :show-close="false">
<template #title>
<div class="title">
<div class="titleName">测试数据</div>
<div>
<el-icon :size="25" class="titleIcon">
<BottomLeft />
</el-icon>
<el-icon :size="25" class="titleIcon">
<FullScreen />
</el-icon>
<el-icon @click="close" :size="25" class="titleIcon">
<Close />
</el-icon>
</div>
</div>
<div class="statusBar">
<div>00:04</div>
<div>正在讲话...</div>
<div>
<el-icon :size="25" class="titleIcon">
<InfoFilled />
</el-icon>
<el-icon :size="25" class="titleIcon">
<CircleCheckFilled />
</el-icon>
<el-icon @click="close" :size="25" class="titleIcon">
<Unlock />
</el-icon>
</div>
</div>
</template>
<div class="content"></div>
<template #footer>
<Footer @close="close" />
</template>
</el-dialog>
</template>
<script setup>
import { ref, watch, reactive, toRaw, computed, getCurrentInstance } from "vue";
import Footer from './footer.vue'
// import useCallModule from '../sdk/call.js'
const { proxy } = getCurrentInstance();
// const Call = useCallModule()
lemon.login.login({
username: "linzhigongan1",
password: "linzhigongan1",
realm: "puc.com",
webpucUrl: "https://192.168.0.1:16888",
}).then(res => {
console.log(res,"登录成功");
}).catch(err => {
console.log(err,"登录失败");
})
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
titleValue: {
type: String,
default: ''
}
})
const emit = defineEmits(['update:modelValue']);
const close = () => {
emit('update:modelValue', false);
}
</script>
<style lang="scss" scoped>
@import "@/assets/css/layout.scss";
@import "@/assets/css/element-plus.scss";
.title {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #e4e7ed;
padding: 10px;
.titleName {
font-size: 20px;
margin-bottom: 5px;
width: 40%;
}
.titleIcon {
margin-left: 15px;
}
}
.statusBar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 6px;
}
.content {
padding: 0 10px;
height: 60vh;
overflow: auto;
background-color: #000;
}
.tabBoxRadio .el-checkbox__inner {
border-radius: 50% !important;
}
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
display: none;
}
.bgData {
padding: 10px;
}
::v-deep .el-dialog__body {
padding: 0 !important;
}
</style>
<style>
.bgData .el-dialog__header,
.el-dialog__body {
padding: 0;
}
</style>

View File

@ -0,0 +1,88 @@
<template>
<div class="footer">
<div class="footerWidth">
<div>
<div class="icon"><img src="@/assets/images/icon/jyy-k.png" alt=""></div>
<div>麦克风</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/lb-k.png" alt=""></div>
<div>喇叭</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/sp-k.png" alt=""></div>
<div>摄像头</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/fx.png" alt=""></div>
<div>共享</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/hyyq.png" alt=""></div>
<div>邀请参会</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/glcy.png" alt=""></div>
<div>管理成员</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/jt.png" alt=""></div>
<div>截图</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/gb.png" alt=""></div>
<div>视频广播</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/yyjl.png" alt=""></div>
<div>语音激励</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/fz.png" alt=""></div>
<div>画面反转</div>
</div>
<div>
<div class="icon"><img src="@/assets/images/icon/yy.png" alt=""></div>
<div>应用</div>
</div>
</div>
<div class="footerBtn">
<el-button type="danger">结束会议</el-button>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
const emit=defineEmits(['close'])
const close=()=>{
emit('close')
}
</script>
<style scoped lang="scss">
.footer {
display: flex;
justify-content: space-between;
align-items: center;
height: 50px;
.footerWidth {
display: flex;
justify-content: space-between;
align-items: center;
flex: 1;
.icon{
width: 25px;
margin: 0 auto;
img{
width: 100%;
}
}
}
.footerBtn {
width: 100px;
margin-left: 20px;
}
}
</style>

View File

@ -0,0 +1,139 @@
<template>
<el-dialog width="1400px" title="选择参会人员" :draggable="true" :model-value="modelValue" append-to-body @close="close"
:show-close="false">
<div class="content">
<div class="left">
<el-tabs v-model="activeName" @tab-click="handleClick" :stretch="true">
<el-tab-pane label="全网设备" name="first">
<el-tree-v2 style="max-width: 600px" :data="data" :props="propsData" :height="530" />
</el-tab-pane>
<el-tab-pane label="调度台" name="second">Config</el-tab-pane>
<el-tab-pane label="动态警组" name="third">Role</el-tab-pane>
<el-tab-pane label="第三方会议" name="fourth">Task</el-tab-pane>
<el-tab-pane label="车载" name="fourth">Task</el-tab-pane>
</el-tabs>
<!-- <el-tree-v2
style="max-width: 600px"
:data="data"
:props="propsData"
:height="600"
/> -->
</div>
<div class="right"></div>
</div>
</el-dialog>
</template>
<script setup>
import { ref, watch, reactive, toRaw, computed, getCurrentInstance, onMounted } from "vue";
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
titleValue: {
type: String,
default: ''
}
})
// Tabs 组件
const activeName = ref('first')
const handleClick = (tab) => {
console.log(tab)
}
onMounted(() => {
lemon.basedata.fetchSystemOrg({
flat: true,
key_word: ""
}).then(res => {
console.log(res);
})
})
const getJgList = () => {
}
const getKey = (prefix, id) => {
return `${prefix}-${id}`
}
const createData = (
maxDeep,
maxChildren,
minNodesNumber,
deep = 1,
key = 'node'
) => {
let id = 0
return Array.from({ length: minNodesNumber })
.fill(deep)
.map(() => {
const childrenNumber =
deep === maxDeep ? 0 : Math.round(Math.random() * maxChildren)
const nodeKey = getKey(key, ++id)
return {
id: nodeKey,
label: nodeKey,
children: childrenNumber
? createData(maxDeep, maxChildren, childrenNumber, deep + 1, nodeKey)
: undefined,
}
})
}
const propsData = {
value: 'id',
label: 'label',
children: 'children',
}
const data = createData(4, 30, 40)
const emit = defineEmits(['update:modelValue']);
const close = () => {
emit('update:modelValue', false);
}
</script>
<style lang="scss" scoped>
@import "@/assets/css/layout.scss";
@import "@/assets/css/element-plus.scss";
.content {
padding: 0 10px;
height: 60vh;
overflow: auto;
display: flex;
.left {
width: 20%;
height: 100%;
// background-color: #3c8aff;
margin-right: 5px;
}
.right {
flex: 1;
height: 99%;
border: 1px solid #ccc;
}
}
::v-deep .el-tabs__nav-wrap::after {
background-color: #ccc;
}
::v-deep .el-tabs__nav-next,
.el-tabs__nav-prev {
color: #000;
}
::v-deep .el-tabs__item {
color: #000;
}
::v-deep .el-tabs__item.is-active {
color: #3c8aff;
}
</style>

View File

@ -13,11 +13,12 @@
<el-input placeholder="请选择关联线索" @click="chooseVisiblexS = true" readonly v-model="listQuery.glxsmc"></el-input>
</template>
<template #chryList>
<el-input placeholder="请选择参会人员" @click="chooseVisible = true" readonly v-model="listQuery.rymc"></el-input>
<el-input placeholder="请选择参会人员" @click="openMeetings = true" readonly v-model="listQuery.rymc"></el-input>
</template>
</FormMessage>
</div>
</div>
<Personnel v-model="openMeetings" />
<ChooseUser v-model="chooseVisible" :Single="false" @choosedUsers="handleUserSelected" :roleIds="roleIds" />
<Xslist v-model="chooseVisiblexS" @choosed="choosed" :roleIds="roleIdsxs"></Xslist>
</template>
@ -27,6 +28,7 @@ import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue";
import Xslist from '@/components/ChooseList/ChooseXs/index.vue'
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import Personnel from '../components/Communications/personnel.vue'
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, } from "vue";
const emit = defineEmits(["updateDate"]);
@ -109,6 +111,8 @@ const close = () => {
dialogForm.value = false;
loading.value = false;
};
// 选择参会人员
const openMeetings=ref(false)
defineExpose({ init });
</script>