123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- import { defineComponent, onMounted, watchEffect, ref } from "vue";
- import { RouterView, useRoute, useRouter } from 'vue-router';
- import MarkerMap from '@/components/MarkerMap';
- import './index.scss';
- import { useIncidentStore, useDaHuaStore, useMainStore,useCommonStore,useMarkerStore } from '@/store';
- import { constants } from 'zlib';
- import clsx from "clsx";
- import moment from 'moment';
- // @ts-ignore
- import closeicon from '@/assets/icons/detail/close.png';
- import { ElMessage } from "element-plus";
- moment.locale('zh-cn', {
- months:
- '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
- '_',
- ),
- monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
- weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
- weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
- weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
- longDateFormat: {
- LT: 'Ah点mm分',
- LTS: 'Ah点m分s秒',
- L: 'YYYY-MM-DD',
- LL: 'YYYY年MMMD日',
- LLL: 'YYYY年MMMD日Ah点mm分',
- LLLL: 'YYYY年MMMD日ddddAh点mm分',
- l: 'YYYY-MM-DD',
- ll: 'YYYY年MMMD日',
- lll: 'YYYY年MMMD日Ah点mm分',
- llll: 'YYYY年MMMD日ddddAh点mm分',
- },
- meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
- meridiemHour: function (h, meridiem) {
- let hour = h;
- if (hour === 12) {
- hour = 0;
- }
- if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
- return hour;
- } else if (meridiem === '下午' || meridiem === '晚上') {
- return hour + 12;
- } else {
- // '中午'
- return hour >= 11 ? hour : hour + 12;
- }
- },
- meridiem: function (hour, minute, isLower) {
- const hm = hour * 100 + minute;
- if (hm < 600) {
- return '凌晨';
- } else if (hm < 900) {
- return '早上';
- } else if (hm < 1130) {
- return '上午';
- } else if (hm < 1230) {
- return '中午';
- } else if (hm < 1800) {
- return '下午';
- } else {
- return '晚上';
- }
- },
- calendar: {
- sameDay: function () {
- return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
- },
- nextDay: function () {
- return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
- },
- lastDay: function () {
- return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
- },
- nextWeek: function () {
- let startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
- prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';
- return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
- },
- lastWeek: function () {
- let startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
- prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
- return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
- },
- sameElse: 'LL',
- },
- ordinalParse: /\d{1,2}(日|月|周)/,
- ordinal: function (number, period) {
- switch (period) {
- case 'd':
- case 'D':
- case 'DDD':
- return number + '日';
- case 'M':
- return number + '月';
- case 'w':
- case 'W':
- return number + '周';
- default:
- return number;
- }
- },
- relativeTime: {
- future: '%s内',
- past: '%s前',
- s: '几秒',
- m: '1 分钟',
- mm: '%d 分钟',
- h: '1 小时',
- hh: '%d 小时',
- d: '1 天',
- dd: '%d 天',
- M: '1 个月',
- MM: '%d 个月',
- y: '1 年',
- yy: '%d 年',
- },
- week: {
- // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
- dow: 1, // Monday is the first day of the week.
- doy: 4, // The week that contains Jan 4th is the first week of the year.
- },
- });
- export default defineComponent({
- setup() {
- const route = useRoute();
- const router = useRouter();
- const store = useIncidentStore();
- const daHuaStore = useDaHuaStore();
- const mainStore = useMainStore();
- const commonstore = useCommonStore();
- const markerstore = useMarkerStore();
- const sqdh = ref(import.meta.env.VITE_DH_SERVER as string + "/index.html");
- const markmap = ref(null);
- // console.log(sqdh.value);
- const handleDaHuaSystem = () => {
- daHuaStore.dahuaUserVisible = true;
- const DAHUA = document.getElementById('DAHUA') as HTMLIFrameElement;
- DAHUA?.contentWindow?.postMessage('creatMeeting', '*');
- };
- // console.log(daHuaStore.dhuser);
- // const list = computed(() => [
- // ]);
- // login da hua
- onMounted(async () => {
- const meeting = new Meeting();
- meeting.$Message = ElMessage;
- meeting.openClient(() => {
- // console.log("======")
- meeting.settargetId("vPlayArea");
- window.metting = meeting;
- });
- var dv = document.getElementsByClassName('videoifram')[0];
- var x = 0;
- var y = 0;
- var l = 0;
- var t = 0;
- var isDown = false;
- //鼠标按下事件
- dv.onmousedown = function (e) {
- //获取x坐标和y坐标
- x = e.clientX;
- y = e.clientY;
- //获取左部和顶部的偏移量
- l = dv.offsetLeft;
- t = dv.offsetTop;
- //开关打开
- isDown = true;
- //设置样式
- dv.style.cursor = 'move';
- }
- //鼠标移动
- window.onmousemove = function (e) {
- if (isDown == false) {
- return;
- }
- //获取x和y
- var nx = e.clientX;
- var ny = e.clientY;
- //计算移动后的左偏移量和顶部的偏移量
- var nl = nx - (x - l);
- var nt = ny - (y - t);
- dv.style.left = nl + 'px';
- dv.style.top = nt + 'px';
- setTimeout(() => {
- try{
- console.log(window.vPlayArea)
- if(window.vPlayArea){
- window.vPlayArea.dragResize(0,0,0,0)
- }
- }catch(E){
- console.log(E)
- }
- }, 1);
- }
- //鼠标抬起事件
- dv.onmouseup = function () {
- //开关关闭
- isDown = false;
- dv.style.cursor = 'default';
- }
- try {
- window.dologin = async () => {
- await markerstore.initDHUser();
- };
- window.dologin();
- } catch (error) {
- console.log(error)
- }
- // if (!localStorage.getItem('DAHUA_token')) {
- // daHuaStore.DAHUALogin();
- // } else {
- // daHuaStore.KEEPAlive(); //保活 //获取当前用户信息
- // daHuaStore.DAHUAUserInfo().then((res) => {
- // console.log(res);
- // daHuaStore.DAHUACreateMeet(res).then((data) => {
- // //创建会议
- // console.log(data);
- // let obj = {
- // user: res,
- // meetId: data.id,
- // member: [
- // {
- // userName: res.userName,
- // userId: res.userCode,
- // region: res.paasId,
- // type: 'client',
- // // speak:'true',
- // number: res.userPhone,
- // // department:'根组织'
- // },
- // ],
- // };
- // localStorage.setItem('meeting', JSON.stringify(obj));
- // // console.log(obj);
- // // daHuaStore.DAHUAMeetingMember(obj);
- // // daHuaStore.DAHUAMeetingUser(data.id);
- // // daHuaStore.DAHUADeleteMeet(data.id);
- // });
- // });
- // // console.log(dhUser);
- // daHuaStore.DAHUADeviceList('S4NbecfYB1DFLAIM9FFHQ8'); //测试执法记录仪
- // daHuaStore.DAHUADeviceList('S4NbecfYB1DGB68AN187Q8'); //执法人员设备列表
- // daHuaStore.DAHUADeviceList('S4NbecfYB1DGB68S6S0UFC'); //执法车辆列表
- // }
- // const DAHUA = document.getElementById('DAHUA') as HTMLIFrameElement;
- // if (!DAHUA) return
- // DAHUA.onload = function () {
- // // @ts-ignore
- // DAHUA.contentWindow.postMessage('onload', '*');
- // }
- // window.addEventListener('message', e => {
- // if (e.data === 'closeIframe') {
- // daHuaStore.dahuaUserVisible = false;
- // }
- // }, false);
- try {
- (yjzh_btn.value)?.addEventListener("click", () => {
- if(commonstore.isclick){
- return;
- }
- commonstore.isclick = true;
- var isc = true;
- if(window.theSocket){
- if(window.metting){
- setTimeout(() => {
- cremetting11();
- }, 1000);
- }else{
- const meeting = new Meeting();
- meeting.$Message = ElMessage;
- meeting.settargetId("vPlayArea");
- window.metting = meeting;
- setTimeout(() => {
- cremetting11();
- }, 1000);
- }
- }else{
- const meeting = new Meeting();
- meeting.$Message = ElMessage;
- meeting.openClient(() => {
- meeting.settargetId("vPlayArea");
- window.metting = meeting;
- setTimeout(() => {
- cremetting11();
- }, 1000);
- });
- }
- async function cremetting11() {
- try{
- window.metting.deleteAllMeeting(()=>{});
- }catch(E){}
- dothing();
- async function dothing(){
- if(!isc) return;
- isc = false;
- await window.metting.getLocalUserInfo();
-
- window.metting.queryUser(localStorage.getItem("userId")).then(res => {
-
- const chartParams = {
- chatName: "测试会商名称",
- groupType: 2,
- bOpenDirect: true,
- // groupType: 2, //1 群聊 传2 会商 传3 群聊会会商
- memberInfo: [
- {
- memberId: res.userCode, // 成员id
- memberName: res.name, // 成员名称
- memberType: 4, // 成员类型,Integer ,1 单兵;2 普通电话;3 对讲机;4 app|客户端;6 可是话机; 7 汇接话机(PSTN、手机号码等); 8 车载;9 无人机喊话云台; 10 无人机地面站对讲平台; 11 ipc; 12 NVR
- isOpenVideo: true,
-
- }
- ]
- };
- // window.theSocket && window.theSocket.openCreateGroupChatDlg();
- window.theSocket && window.theSocket.createGroupChat(chartParams);
- commonstore.isclick = false;
- });
- // _this.localUserInfo.masterName = res.userName;
- // _this.localUserInfo.masterId = res.userCode;
- // _this.localUserInfo.masterNumber = res.userPhone;
- // _this.localUserInfo.region = res.paasId;
-
- }
- }
- })
- } catch (error) {
- }
- });
- const timetext = ref("-");
- const datetext = ref('-');
- const weektext = ref('-');
- // debugger
- setInterval(() => {
- datetext.value =
- moment().format('YYYY年MM月DD日');
- weektext.value = moment().format('dddd');
- timetext.value = moment().format('HH:mm:ss');
- }, 1000)
- const yjzh_btn = ref(null);
- return () => (
- <section class="base-layout-container">
- {/* <iframe
- style={{ visibility: 'hidden', height: '100%', width: '100%' }}
- class={clsx('dahua-content', {
- ['display']: daHuaStore.dahuaUserVisible,
- })}
- id="DAHUA"
- name="DAHUA"
- src={sqdh.value}
- frameborder="0"
- /> */}
- <div
- class="videoifram"
- style={mainStore.videoisshow ? 'display:block' : 'display:none'}
- >
- <div class="title">{mainStore.videotitle}</div>
- <div class="closebtn" onClick={() => {
- mainStore.videoisshow = false;
- if(window.metting){
- window.metting.closeVideo();
-
- if (window.isdanbing) {
- window.metting.deleteAllMeeting(() => { });
- // window.metting.closeClient()
- // window.metting = false;
- // window.theSocket = false;
- }
- window.metting = false;
- }
- }}>
- <img src={closeicon} />
- </div>
- <div id="vPlayArea" ></div>
- </div>
- <header class="base-layout-title-contatisner" datatype={ process.env.NODE_ENV+"" }>
- <div class="back-to-home " onClick={() => router.push('/home')}></div>
- <div class="time-text ">
- <span>{timetext.value}</span>
- <span>{datetext.value}</span>
- <span>{weektext.value}</span>
- </div>
- </header>
- <main>
- <RouterView />
- <MarkerMap
- readonly={route.path.includes('incidentDetail')}
- ref={markmap}
- // marker={store.incidentDetail}
- />
- <div class={"yjld_btn " + (commonstore.isclick?"animate__animated animate__rotateIn":"")} ref={yjzh_btn}></div>
- </main>
- </section>
- );
- },
- });
|