|
@@ -1,11 +1,350 @@
|
|
|
<template>
|
|
|
- 前方通信
|
|
|
+ <div class="communication-container">
|
|
|
+ <div class="tabs">
|
|
|
+ <div v-for="(item, index) in menu" :key="index" :class="activeIndex === index ? 'tab tab_active' : 'tab'">
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--视频会商-->
|
|
|
+ <div v-show="activeIndex === 0" class="content">
|
|
|
+ <div class="left-content">
|
|
|
+ <div class="search-box">
|
|
|
+ <div class="input-box">
|
|
|
+ <input class="input" type="text" placeholder="组织架构搜索" />
|
|
|
+ </div>
|
|
|
+ <div class="select-box">全部</div>
|
|
|
+ <div class="input-box2">
|
|
|
+ <input class="input" type="text" placeholder="组织架构搜索" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="tree-container">
|
|
|
+ <div class="tree-box">
|
|
|
+ <div style="overflow-y: auto; height: 100%">
|
|
|
+ <el-tree :data="treeData" accordion @node-click="handleNodeClick" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="user-box">
|
|
|
+ <div class="user-table">
|
|
|
+ <div class="tr">
|
|
|
+ <div class="td2">
|
|
|
+ <div :class="getCheckedClass()" @click="handleChecked"></div>
|
|
|
+ </div>
|
|
|
+ <div class="td">姓名</div>
|
|
|
+ <div class="td3">职务</div>
|
|
|
+ </div>
|
|
|
+ <div class="table-content">
|
|
|
+ <div v-for="(item, index) in userList" :key="index" class="tr2">
|
|
|
+ <div class="td2">
|
|
|
+ <div :class="item.checked ? 'checked-box-active' : 'checked-box'" @click="handleChecked2(item)"></div>
|
|
|
+ </div>
|
|
|
+ <div class="td">{{ item.name }}</div>
|
|
|
+ <div class="td3">
|
|
|
+ {{ item.duty }}
|
|
|
+ <div class="phone-icon"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
+let activeIndex = ref(0);
|
|
|
+const menu = ref([{ name: '视频会商' }, { name: '无人机' }, { name: '单兵设备' }]);
|
|
|
+const treeData = ref([
|
|
|
+ {
|
|
|
+ label: '茂名市',
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '茂名市委',
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '茂名市纪委监委',
|
|
|
+ isLeaf: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '茂名市委办公室',
|
|
|
+ isLeaf: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '茂名市委组织部',
|
|
|
+ isLeaf: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '茂名市人大',
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '茂名市人大常委会秘书长、副秘书长',
|
|
|
+ isLeaf: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '茂名市人大常委会办公室',
|
|
|
+ isLeaf: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '茂名市人大常委会研究室',
|
|
|
+ isLeaf: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+]);
|
|
|
+const userList = ref([]);
|
|
|
|
|
|
+const getCheckedClass = () => {
|
|
|
+ let res = 'checked-box';
|
|
|
+ let len = userList.value.length;
|
|
|
+ let checkedLen = 0;
|
|
|
+ userList.value.forEach((item) => {
|
|
|
+ if (item.checked) {
|
|
|
+ checkedLen++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (checkedLen > 0 && checkedLen === len) {
|
|
|
+ res = 'checked-box-active';
|
|
|
+ } else if (checkedLen > 0) {
|
|
|
+ res = 'checked-box-half';
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+};
|
|
|
+const handleNodeClick = (item) => {
|
|
|
+ if (item.isLeaf) {
|
|
|
+ const data = [
|
|
|
+ {
|
|
|
+ name: '李莉莉',
|
|
|
+ duty: '副主任'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '何里',
|
|
|
+ duty: '副主任'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '张三',
|
|
|
+ duty: '副主任'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '张三',
|
|
|
+ duty: '副主任'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '张三',
|
|
|
+ duty: '副主任'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '张三',
|
|
|
+ duty: '副主任'
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ data.forEach((item) => {
|
|
|
+ item.checked = false;
|
|
|
+ });
|
|
|
+ userList.value = data;
|
|
|
+ }
|
|
|
+};
|
|
|
+const handleChecked = () => {
|
|
|
+ const checkedClass = getCheckedClass();
|
|
|
+ let flag = true;
|
|
|
+ if (checkedClass === 'checked-box-active') {
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ userList.value.forEach((item) => {
|
|
|
+ item.checked = flag;
|
|
|
+ });
|
|
|
+};
|
|
|
+const handleChecked2 = (item) => {
|
|
|
+ item.checked = !item.checked;
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
+.communication-container {
|
|
|
+ width: 1963px;
|
|
|
+ height: 659px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/communicationBg.png') no-repeat;
|
|
|
+ position: relative;
|
|
|
+ padding-top: 100px;
|
|
|
+ padding-left: 60px;
|
|
|
+ .tabs {
|
|
|
+ display: flex;
|
|
|
+ .tab {
|
|
|
+ font-size: 44px;
|
|
|
+ font-family: YouSheBiaoTiHei;
|
|
|
+ text-align: center;
|
|
|
+ color: #b6bbcc;
|
|
|
+ width: 317px;
|
|
|
+ height: 78px;
|
|
|
+ line-height: 85px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/tab.png') no-repeat;
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ color: #ffffff;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/tabActive.png') no-repeat;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ .tab_active {
|
|
|
+ color: #ffffff;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/tabActive.png') no-repeat;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .content {
|
|
|
+ margin-top: 12px;
|
|
|
+ .left-content {
|
|
|
+ .search-box {
|
|
|
+ display: flex;
|
|
|
+ .input-box {
|
|
|
+ width: 487px;
|
|
|
+ height: 56px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/search1.png') no-repeat;
|
|
|
+ display: flex;
|
|
|
+ padding-left: 70px;
|
|
|
+ }
|
|
|
+ .input-box2 {
|
|
|
+ width: 270px;
|
|
|
+ height: 56px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/search2.png') no-repeat;
|
|
|
+ display: flex;
|
|
|
+ padding-left: 70px;
|
|
|
+ }
|
|
|
+ .select-box {
|
|
|
+ width: 176px;
|
|
|
+ height: 56px;
|
|
|
+ line-height: 56px;
|
|
|
+ padding-left: 20px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/selectBox.png') no-repeat;
|
|
|
+ margin: 0 10px;
|
|
|
+ color: #83a3be;
|
|
|
+ font-size: 32px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .input {
|
|
|
+ background: transparent;
|
|
|
+ color: #83a3be;
|
|
|
+ font-size: 32px;
|
|
|
+ outline: none;
|
|
|
+ appearance: none;
|
|
|
+ height: 100%;
|
|
|
+ border: none;
|
|
|
+ &::placeholder {
|
|
|
+ color: #83a3be;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .tree-container {
|
|
|
+ margin-top: 15px;
|
|
|
+ display: flex;
|
|
|
+ .tree-box {
|
|
|
+ width: 488px;
|
|
|
+ height: 354px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/treeBg.png') no-repeat;
|
|
|
+ padding: 15px 8px;
|
|
|
+ overflow: hidden;
|
|
|
+ :deep(.el-tree) {
|
|
|
+ background-color: transparent;
|
|
|
+ color: #fbffff;
|
|
|
+ font-size: 32px;
|
|
|
+ .el-tree-node__content {
|
|
|
+ height: auto;
|
|
|
+ padding-top: 10px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ white-space: normal;
|
|
|
+ word-break: break-all;
|
|
|
+ }
|
|
|
+ .el-tree-node__expand-icon {
|
|
|
+ color: #297cfc;
|
|
|
+ font-size: 23px;
|
|
|
+ }
|
|
|
+ .el-tree-node:focus > .el-tree-node__content,
|
|
|
+ .el-tree-node__content:hover {
|
|
|
+ background-color: transparent !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .user-box {
|
|
|
+ margin-left: 10px;
|
|
|
+ width: 488px;
|
|
|
+ height: 354px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/treeBg.png') no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ .user-table {
|
|
|
+ padding: 15px 8px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ font-size: 32px;
|
|
|
+ color: #fbffff;
|
|
|
+ .checked-box,
|
|
|
+ .checked-box-half,
|
|
|
+ .checked-box-active {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .checked-box {
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/checkedBox.png') no-repeat;
|
|
|
+ }
|
|
|
+ .checked-box-half {
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/checkedBox2.png') no-repeat;
|
|
|
+ }
|
|
|
+ .checked-box-active {
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/checkedBox3.png') no-repeat;
|
|
|
+ }
|
|
|
+ .tr {
|
|
|
+ background-color: #102e76;
|
|
|
+ }
|
|
|
+ .tr,
|
|
|
+ .tr2 {
|
|
|
+ display: flex;
|
|
|
+ padding: 6px 0;
|
|
|
+ .td {
|
|
|
+ flex: 2;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .td2 {
|
|
|
+ width: 65px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ .td3 {
|
|
|
+ flex: 3;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .table-content {
|
|
|
+ height: 275px;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
+ .tr2 {
|
|
|
+ margin-top: 10px;
|
|
|
+ background-color: #122868;
|
|
|
+ }
|
|
|
+ .phone-icon {
|
|
|
+ width: 62px;
|
|
|
+ height: 63px;
|
|
|
+ background: url('@/assets/images/emergencyCommandMap/communication/phone.png');
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.title {
|
|
|
+ position: absolute;
|
|
|
+ top: 6px;
|
|
|
+ left: 141px;
|
|
|
+ font-size: 60px;
|
|
|
+}
|
|
|
</style>
|