Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/types/components.d.ts
yangyuxuan 8 months ago
parent
commit
80faadebee

+ 6 - 5
src/types/components.d.ts

@@ -22,12 +22,9 @@ declare module 'vue' {
     DistributionMap: typeof import('./../components/Map/YztMap/DistributionMap.vue')['default']
     DrawMap: typeof import('./../components/Map/YztMap/DrawMap.vue')['default']
     Editor: typeof import('./../components/Editor/index.vue')['default']
-    ElAnchor: typeof import('element-plus/es')['ElAnchor']
-    ElAnchorLink: typeof import('element-plus/es')['ElAnchorLink']
     ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
-    ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCol: typeof import('element-plus/es')['ElCol']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
@@ -45,11 +42,14 @@ declare module 'vue' {
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
+    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
@@ -58,14 +58,13 @@ declare module 'vue' {
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
-    ElTabPane: typeof import('element-plus/es')['ElTabPane']
-    ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
+    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     ExcelEditor: typeof import('./../components/ExcelEditor/index.vue')['default']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
@@ -77,6 +76,8 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
+    IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
+    IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 72 - 49
src/views/emergencyCommandMap/LeftSection/Communication.vue

@@ -61,28 +61,28 @@
           </div>
         </div>
       </div>
-<!--      <div class="select-box2">-->
-<!--        <div class="select-header">-->
-<!--          <div class="left-item">-->
-<!--            <div>已选择:</div>-->
-<!--            <div class="text">{{ selectList.length }}</div>-->
-<!--            <div>人</div>-->
-<!--          </div>-->
-<!--          <div class="clear-btn" @click="clearSelect">清空</div>-->
-<!--        </div>-->
-<!--        <div class="select-content">-->
-<!--          <div v-for="(item, index) in selectList" :key="index" class="box-item">-->
-<!--            <div class="line">-->
-<!--              <div class="text1">{{ item.name }}</div>-->
-<!--              <div class="text2">{{ item.duty }}</div>-->
-<!--            </div>-->
-<!--            <div class="line" style="margin-top: 20px">-->
-<!--              <div class="text2">{{ item.dept }}</div>-->
-<!--            </div>-->
-<!--            <div class="close-btn" @click="deleteItem(item)"></div>-->
-<!--          </div>-->
-<!--        </div>-->
-<!--      </div>-->
+      <!--      <div class="select-box2">-->
+      <!--        <div class="select-header">-->
+      <!--          <div class="left-item">-->
+      <!--            <div>已选择:</div>-->
+      <!--            <div class="text">{{ selectList.length }}</div>-->
+      <!--            <div>人</div>-->
+      <!--          </div>-->
+      <!--          <div class="clear-btn" @click="clearSelect">清空</div>-->
+      <!--        </div>-->
+      <!--        <div class="select-content">-->
+      <!--          <div v-for="(item, index) in selectList" :key="index" class="box-item">-->
+      <!--            <div class="line">-->
+      <!--              <div class="text1">{{ item.name }}</div>-->
+      <!--              <div class="text2">{{ item.duty }}</div>-->
+      <!--            </div>-->
+      <!--            <div class="line" style="margin-top: 20px">-->
+      <!--              <div class="text2">{{ item.dept }}</div>-->
+      <!--            </div>-->
+      <!--            <div class="close-btn" @click="deleteItem(item)"></div>-->
+      <!--          </div>-->
+      <!--        </div>-->
+      <!--      </div>-->
       <div class="btn-box">
         <div class="btn" @click="handleJoinMeeting">
           <div class="icon1"></div>
@@ -143,15 +143,12 @@ const getCheckedClass = () => {
   return res;
 };
 const handleNodeClick = (item) => {
-  // if (item.isLeaf) {
-  //   debugger
-    getAvconDeptList(item.id, {}).then((res) => {
-      res.data.forEach((item) => {
-        item.checked = false;
-      });
-      userList.value = res.data;
+  getAvconDeptList(item.id, {}).then((res) => {
+    res.data.forEach((item) => {
+      item.checked = false;
     });
-  // }
+    userList.value = res.data;
+  });
 };
 // 全选、全取消
 const handleChecked = () => {
@@ -162,11 +159,13 @@ const handleChecked = () => {
   }
   userList.value.forEach((item) => {
     item.checked = flag;
+    changeSelectList(item);
   });
 };
 // 单个选中、取消选中
 const handleChecked2 = (item) => {
   item.checked = !item.checked;
+  changeSelectList(item);
 };
 // 清空
 const clearSelect = () => {
@@ -175,6 +174,19 @@ const clearSelect = () => {
       item.checked = false;
     }
   });
+  selectList.value = [];
+};
+const changeSelectList = (item) => {
+  const index = selectList.value.findIndex((item2) => item2.id === item.id);
+  if (item.checked) {
+    if (index === -1) {
+      selectList.value.push(item);
+    }
+  } else {
+    if (index > -1) {
+      selectList.value.splice(index);
+    }
+  }
 };
 // 清空指定项
 const deleteItem = (item) => {
@@ -184,6 +196,8 @@ const deleteItem = (item) => {
       break;
     }
   }
+  item.checked = false;
+  changeSelectList(item);
 };
 // 会议号入会
 const handleJoinMeeting = () => {
@@ -193,11 +207,11 @@ const handleJoinMeeting = () => {
   const screenWidth = window.screen.width * window.devicePixelRatio;
   const screenHeight = window.screen.height * window.devicePixelRatio;
   const data = {
-    "userid": "", // 空表示后台获取当前用户对应融合通信dev_id
-    "password": "123",
+    'userid': '', // 空表示后台获取当前用户对应融合通信dev_id
+    'password': '123',
     roomid: '715724498', // 会议号
-    windowpos: { "x": 0, "y": 0, "width": screenWidth, "height": screenHeight, "top": true },
-    members: { num: 1} // 不用邀请别人
+    windowpos: { 'x': 0, 'y': 0, 'width': screenWidth, 'height': screenHeight, 'top': true },
+    members: { num: 1 } // 不用邀请别人
   };
   getStartMiniParan(data).then((res) => {
     // 创建一个a标签元素
@@ -207,14 +221,14 @@ const handleJoinMeeting = () => {
     // 触发点击事件
     a.click();
   });
-}
+};
 
 // 电话呼叫
 const handleStartCall = () => {
   let dev_list = [];
-  userList.value.forEach((item)=>{
-    if(item.checked && item.mobile != '') {
-      dev_list.push({id: item.mobile, avtype: 'a'}); // a 音频 v 视频 默认 av
+  userList.value.forEach((item) => {
+    if (item.checked && item.mobile != '') {
+      dev_list.push({ id: item.mobile, avtype: 'a' }); // a 音频 v 视频 默认 av
     }
   });
   if (dev_list.length == 0) {
@@ -224,14 +238,13 @@ const handleStartCall = () => {
   const screenWidth = window.screen.width * window.devicePixelRatio;
   const screenHeight = window.screen.height * window.devicePixelRatio;
   const data = {
-    "userid": "", // 空表示后台获取当前用户对应融合通信dev_id
-    "password": "123",
+    'userid': '', // 空表示后台获取当前用户对应融合通信dev_id
+    'password': '123',
     roomid: '', // 空表示新会议室
-    windowpos: { "x": 0, "y": 0, "width": screenWidth, "height": screenHeight, "top": true },
+    windowpos: { 'x': 0, 'y': 0, 'width': screenWidth, 'height': screenHeight, 'top': true },
     members: {
       num: dev_list.length + 2, // 配置多少个座位,一般就是邀请人多少个就多少个
-      "dev-list": dev_list,
-      // "sip-list": [ { "id": "60002" }, { "id": "60008", "avtype": "a" }, { "id": "60003", "avtype": "v" } ]
+      'dev-list': dev_list
     }
   };
   getStartMiniParan(data).then((res) => {
@@ -245,16 +258,26 @@ const handleStartCall = () => {
 };
 // 发起会议
 const handleStartMeeting = () => {
+  let dev_list = [];
+  userList.value.forEach((item) => {
+    if (item.checked && item.mobile != '') {
+      dev_list.push({ id: item.mobile, avtype: 'av' }); // a 音频 v 视频 默认 av
+    }
+  });
+  if (dev_list.length == 0) {
+    proxy?.$modal.msgError('请勾选人员');
+    return false;
+  }
   const screenWidth = window.screen.width * window.devicePixelRatio;
   const screenHeight = window.screen.height * window.devicePixelRatio;
   const data = {
-    userid: 'mmyj0006@mm.zw.yj', // 空表示后台获取当前用户对应融合通信dev_id
-    password: '123',             // 空表示后台获取
+    userid: '', // 空表示后台获取当前用户对应融合通信dev_id
+    password: '123', // 空表示后台获取
     roomid: '',
-    windowpos: { "x": 0, "y": 0, "width": screenWidth, "height": screenHeight, "top": true },
+    windowpos: { 'x': 0, 'y': 0, 'width': screenWidth, 'height': screenHeight, 'top': true },
     members: {
-      num: 6, // 配置多少个座位,一般就是邀请人多少个就多少个
-      'dev-list': [{ id: 'mmyj0010@mm.zw.yj', avtype: 'av' }]  // 0010是李步尚
+      num: dev_list.length + 2, // 配置多少个座位,一般就是邀请人多少个就多少个
+      'dev-list': dev_list
     }
   };
   getStartMiniParan(data).then((res) => {
@@ -269,7 +292,7 @@ const handleStartMeeting = () => {
 
 onMounted(() => {
   getTree();
-})
+});
 </script>
 
 <style lang="scss" scoped>

+ 17 - 6
src/views/globalMap/RightMenu/OnlinePlotting/index.vue

@@ -86,7 +86,7 @@
               :class="menuActive3 === index ? 'tab tab_active' : 'tab'"
               @click="clickTab3(item, index)"
             >
-              <div :class="menuActive3 === index ? 'checked2' : 'checked1'"></div>
+              <div v-show="!showSetting" :class="menuActive3 === index ? 'checked2' : 'checked1'"></div>
               <img :src="getImageUrl(item.image)" class="icon" />
               {{ item.name }}
               <div v-if="!!showSetting" class="setting-btn" @click="handleShowSetting(item)" />
@@ -326,11 +326,13 @@ const clickTab = (value: number) => {
 };
 // 点击二级菜单
 const clickTab2 = (value: number) => {
+  handleExitMenuActive();
   menuActive2.value = value;
 };
 // 点击三级菜单
 const clickTab3 = (item, index) => {
   if (showSetting.value) return;
+  handleExitMenuActive(true);
   const type = item.value;
   if (mouseToolState.value.graphicsType !== type || (mouseToolState.value.graphicsType === 'marker' && mouseToolState.value.title !== item.name)) {
     if (type === 'text') {
@@ -342,8 +344,8 @@ const clickTab3 = (item, index) => {
         graphicsType: type,
         lineWidth: mouseToolState.value.lineWidth,
         color: mouseToolState.value.color,
-        icon: getImageUrl(item.icon),
-        iconName: item.icon,
+        icon: getImageUrl(item.image),
+        iconName: item.image,
         size: item.size,
         title: item.name
       };
@@ -365,11 +367,19 @@ const clickTab3 = (item, index) => {
     }
     menuActive3.value = index;
   } else {
-    showTextEdit.value = false;
-    drawing.value = false;
-    mouseToolState.value.graphicsType = '';
+    handleExitMenuActive();
+  }
+};
+// 切换菜单、设置后退出菜单选中
+const handleExitMenuActive = (noClearActive?: boolean) => {
+  if (!noClearActive) {
     menuActive3.value = '';
   }
+  showTextEdit.value = false;
+  drawing.value = false;
+  mouseToolState.value.graphicsType = '';
+  const drawTool = getDrawTool();
+  drawTool.closeDraw();
 };
 const handleTextEdit = () => {
   const drawTool = getDrawTool();
@@ -799,6 +809,7 @@ const handleShowDialog = () => {
 let showSetting = ref(false);
 const handleOpenSetting = () => {
   showSetting.value = true;
+  handleExitMenuActive();
   getTemplateTreeData();
 };
 const handleQuitSetting = () => {

+ 1 - 1
src/views/globalMap/RightMenu/PreventDrowning.vue

@@ -3,7 +3,7 @@
     <div class="container">
       <div class="gradient-text common-dialog-title2">防溺水</div>
       <div class="box-left">
-        <el-input v-model="queryParams.keyword" class="custom-input" placeholder="搜索" @input="initData" >
+        <el-input v-model="queryParams.keyword" class="custom-input" placeholder="搜索" @input="initData">
           <template #prefix>
             <el-icon class="el-input__icon"><search /></el-icon>
           </template>