ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/api/newapi/Parameters.js
@@ -11,3 +11,6 @@ export const Pouse = () => http.post(`/api/Parameters/PauseButton`); //è·åå½å伸缩æä½ç½® export const GetPosition = () => http.post(`/api/Parameters/CurrentLocation`); //è·åå½å客æ·ç«¯çipå°åæ¥å³å®è§é¢æµ export const GetStandid=()=>http.post(`/api/IPaddress/GetStandid`); ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/api/user.js
@@ -24,7 +24,9 @@ //ä¿®æ¹å¯ç id=${data.id}& export const UpdatePassword = (data) => http.post(`/api/User/modifyPwd?newPwd=${data.newPwd}&oldPwd=${data.oldPwd}`) // export const UpdatePwd = (data) => http.post(`/api/User/UpdatePwd?id=${data.id}&newPwd=${data.newPwd}&oldPwd=${data.oldPwd}`) // export const UpdatePwd = (data) => http.post(`/api/User/UpdatePwd?id=${data.id}&newPwd=${data.newPwd}&oldPwd=${data.oldPwd}`) export const UpdatePwd = (data) =>http.post(`/api/User/UpdatePwd?id=${encodeURIComponent(data.id)}&newPwd=${encodeURIComponent(data.newPwd)}&oldPwd=${encodeURIComponent(data.oldPwd)}`) //导åºç¨æ·å表 export const ExportApi = (data) => http.download("/api/User/Export", data, "ç¨æ·åè¡¨æ°æ®.xlsx", "å è½½ä¸"); ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/assets/index/icon/Ö÷ҳͼƬ.png
ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/layout/index.vue
@@ -34,17 +34,34 @@ alt="" /> </div> <!-- <div style="color: red;font-size:1.8rem; align-items: center"> æ¥è¦ï¼<span>{{ isfalsedata.length <= 0 ? "" : isfalsedata[0].AlarmContent }}</span> </div> --> <!-- æ¿ææ°ç䏿¡æ°æ® --> <div style="color: red;font-size:1.8rem; align-items: center"> <!-- <div style="color: red;font-size:1.8rem; align-items: center"> <span>{{ isfalsedata.length <= 0 ? "" : isfalsedata[isfalsedata.length - 1].AlarmContent }}</span> </div> --> <div style=" display: flex; justify-content: center; align-items: center; width: 45%; "> <img style=" width: 3.88rem; height: 3.88rem; cursor: pointer; " src="@/assets/index/icon/主页å¾ç.png" alt="" @click="router.push({ path: '/index' })" /> <!--@/assets/index/icon/home.png <span style="margin-right: 1.81rem;font-size: 2.88rem;color: rgb(255, 255, 255)" @click="router.push({ path: '/index' })" >è¿å</span> --> </div> <!-- å ä½ --> @@ -70,7 +87,8 @@ >æéä¿®æ¹</span > --> <img <!-- å ¨å± --> <!-- <img v-if="!isFullscreen" style=" width: 2.88rem; @@ -81,7 +99,7 @@ src="@/assets/screen.png" alt="" @click="screenonToggle" /> /> --> <img v-if="isFullscreen" style=" @@ -94,20 +112,23 @@ alt="" @click="screenonToggle" /> <img <!-- è¿å主页 --> <!-- <img style=" width: 2.88rem; height: 2.88rem; margin-right: 1.81rem; cursor: pointer; " src="@/assets/index/icon/home.png" alt="" @click="router.push({ path: '/index' })" /> /> --> <!-- <span style="margin-right: 1.81rem;font-size: 1.88rem;color: rgb(255, 255, 255)" @click="router.push({ path: '/index' })" >è¿å</span> --> <div> <span style="color: rgb(255, 255, 255); font-size: 1.88rem" style="color: rgb(255, 255, 255);cursor: pointer; font-size: 1.88rem; ;" class="tetxsize" >è§è²ï¼{{ acountInfo.roleName }}</span > @@ -119,7 +140,8 @@ >å§åï¼{{ acountInfo.userTrueName }}</span > </div> <img <!-- 头å --> <!-- <img v-if="avatar" @click="to(links[0])" :src="avatar" @@ -146,9 +168,10 @@ overflow: hidden; box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(0, 0, 0, 0.4); " /> /> --> <div <!-- ç¨æ·å --> <!-- <div style=" cursor: pointer; line-height: 1.25rem; @@ -159,8 +182,10 @@ class="tetxsize" > {{ userName }} </div> </div> --> </div> <!--éåºå¾ç --> <img @click="to(links[1])" src="@/assets/index/loginout.png" @@ -169,9 +194,22 @@ height: 2.44rem; height: 2.44rem; margin-left: 0.69rem; margin-right: 1.81rem; " alt="" /> <!-- å ¨å±æ¹æ³å¾ç --> <img v-if="!isFullscreen" style=" width: 2.88rem; height: 2.88rem; cursor: pointer; " src="@/assets/screen.png" alt="" @click="screenonToggle" /> </div> </div> </header> ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/utils/index.js
@@ -1,11 +1,12 @@ import { dayjs } from "element-plus"; // import XLSX from "xlsx"; //å¯¼å ¥xlsx export const baseUrl = "http://127.0.0.1:1598" export const baseUrl = "http://192.168.1.103:9093" // http://127.0.0.1:1598 // http://192.168.1.103:9093 以å线ä¸å°å export const faceRecognitionUrl = "http://192.168.1.103:9095" // export const faceRecognitionUrl = "http://127.0.0.1:1598" //对象转FormDataçææ¹æ³ export function objToFormData(obj) { ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/views/tts/AlarmReset/AlarmReset.vue
@@ -103,6 +103,7 @@ clearInterval(timer.value); // å建WebSocketè¿æ¥ //"ws://127.0.0.1:9295/admin" //ws://192.168.1.103:5173 //192.168.1.103 client.value = new WebSocket("ws://192.168.1.103:5173/"); client.value.onopen = function () { ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/views/tts/PickAndDrop/Manualcontrol.vue
@@ -565,6 +565,7 @@ AutoPickAndDrop, Pouse, GetParameter, GetStandid, } from "@/api/newapi/Parameters.js"; // import EZUIKit from "ezuikit-js"; @@ -778,26 +779,63 @@ const webRtcServer_left = ref(null) const webRtcServer_right = ref(null) // æå头 RTSP å°åï¼æ³¨æ %23 æ¿ä»£ #ï¼è¿æ¯ URL ç¼ç è§é¢ç¼ç æ ¼å¼ ä» H.265 ä¿®æ¹ä¸º H.264ï¼265䏿¯æ const rtspLeft = 'rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101' const rtspRight = 'rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201' // æå头 RTSP å°åï¼æ³¨æ %23 æ¿ä»£ #ï¼è¿æ¯ URL ç¼ç ;è§é¢ç¼ç æ ¼å¼ ä» H.265 ä¿®æ¹ä¸º H.264ï¼265䏿¯æ const videoStreamList = [ // index = StationID - 1ï¼å¯¹åº StationID = 1 æ¶å第 0 项 { left: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201" }, { left: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/201" }, { left: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/201" } // å¯ä»¥ç»§ç»æ·»å æ´å¤ç«ç¹æµå°å ]; const getStationId = async () => { try { const res = await GetStandid() console.log("æå¨è§é¢çæ§ç«ç¹",res) if (res.status) { const stationId = parseInt(res.data); initVideoByStationId(stationId); } else { ElMessage.error("è·åç«ç¹ç¼å·å¤±è´¥ï¼" + res.message); } } catch (err) { ElMessage.error("请æ±å¤±è´¥ï¼" + err.message); } }; // WebRtcStreamer æå¡å°å const serverUrl = 'http://192.168.1.103:8000' // â æ¹ä¸ºä½ è¿è¡çé£å°çµèç IP const initVideo = () => { try { webRtcServer_left.value = new WebRtcStreamer('video_left', serverUrl) webRtcServer_left.value.connect(rtspLeft) const initVideoByStationId = (stationId) => { const index = stationId - 1; webRtcServer_right.value = new WebRtcStreamer('video_right', serverUrl) webRtcServer_right.value.connect(rtspRight) console.log('è§é¢åå§å宿') } catch (err) { ElMessage.error('è§é¢åå§å失败: ' + err.message) if (index < 0 || index >= videoStreamList.length) { ElMessage.error("æ æçç«ç¹ç¼å·ï¼" + stationId); return; } } const rtspUrls = videoStreamList[index]; try { webRtcServer_left.value = new WebRtcStreamer("video_left", serverUrl); webRtcServer_left.value.connect(rtspUrls.left); webRtcServer_right.value = new WebRtcStreamer("video_right", serverUrl); webRtcServer_right.value.connect(rtspUrls.right); console.log("è§é¢åå§å宿ï¼", rtspUrls); } catch (err) { ElMessage.error("è§é¢åå§å失败: " + err.message); } }; //鿝è§é¢å½æ° const destroyVideo = () => { @@ -835,7 +873,8 @@ onMounted(() => { initVideo(), getStationId(); // 页é¢å è½½æ¶èªå¨è·åå¹¶ææ¾è§é¢ // initVideo(), isStart.value = true; // 设置为å¼å§ç¶æ createSocket(); getParameter(); ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/views/tts/PickAndDrop/PickAndDrop.vue
@@ -37,25 +37,9 @@ <div class="item">缩å°ä½:{{ 0 }}</div> <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> <div class="pulse1"></div> <div class="pulse2"></div> <div class="pulse3"></div> </div> </div> --> </div> <!-- è§é¢æ¡ --> <div style="display: flex; justify-content: center"> <!-- <div style=" display: flex; flex-direction: column; align-items: center; width: 80%; " > --> <!-- 横å±è§é¢çæ§å·¦ä¾§ --> <div class="video_l"> <video @@ -82,30 +66,12 @@ <span>å³ä¾§è¦ææºæ</span> <span></span> </div> <!-- è§é¢æ¡ --> <!-- <div style=" display: flex; flex-direction: column; align-items: center; width: 80%; " > --> <div class="operate"> <div class="item">伸å°ä½:{{ ruleForm.leftPosition }}</div> <!-- ruleForm.leftPosition --> <div class="item">缩å°ä½:{{ 0 }}</div> <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> <div class="pulse1"></div> <div class="pulse2"></div> <div class="pulse3"></div> </div> </div> --> </div> <div style="display: flex; justify-content: center;"> <!-- 横å±è§é¢çæ§å³ä¾§ --> @@ -120,8 +86,6 @@ height="100%" ></video> </div> <!-- </div> --> </div> </div> </div> @@ -144,18 +108,8 @@ <div class="item">缩å°ä½:{{ 0 }}</div> <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> <div class="pulse1"></div> <div class="pulse2"></div> <div class="pulse3"></div> </div> </div> --> </div> <!-- <span style="color: #fff; font-size: 2.5rem; font-weight: bold" >è§é¢çæ§å·¦ä¾§</span > --> <div style="display: flex; flex-direction: column; align-items: center"> <div class="video_l"> <video @@ -186,18 +140,7 @@ <div class="item">缩å°ä½:{{ 0 }}</div> <div class="item">伸åºé度:{{ ruleForm.retractionSpeed }}</div> <div class="item">缩åé度:{{ ruleForm.retractionSpeed }}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> <div class="pulse1"></div> <div class="pulse2"></div> <div class="pulse3"></div> </div> </div> --> </div> <!-- <span style="color: #fff; font-size: 2.5rem; font-weight: bold" >è§é¢çæ§å³ä¾§</span > --> <div style="display: flex; flex-direction: column; align-items: center"> <div class="video_r"> <video @@ -233,6 +176,7 @@ Pouse, GetPosition, GetParameter, GetStandid } from "@/api/newapi/Parameters.js"; const router = useRouter(); @@ -251,8 +195,6 @@ retractionSpeed: 0, manualExtend: 0, manualRetraction: 0, // depid: userInfo.depid, // account: userInfo.userName, leftPosition: 0, rightPosition: 0, }); @@ -347,31 +289,66 @@ const webRtcServer_right = ref(null); // æå头 RTSP å°åï¼æ³¨æ %23 æ¿ä»£ #ï¼è¿æ¯ URL ç¼ç const rtspLeft = "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101"; const rtspRight = "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201"; const videoStreamList = [ // index = StationID - 1ï¼å¯¹åº StationID = 1 æ¶å第 0 项 { left: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201" }, { left: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/201" }, { left: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/101", right: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/201" } // å¯ä»¥ç»§ç»æ·»å æ´å¤ç«ç¹æµå°å ]; const getStationId = async () => { try { const res = await GetStandid() console.log("è§é¢çæ§ç«ç¹",res) if (res.status) { const stationId = parseInt(res.data); initVideoByStationId(stationId);/// ä¼ éå°è§é¢åå§å彿°ï¼è°ç¨æ¹æ³ï¼ } else { ElMessage.error("è·åç«ç¹ç¼å·å¤±è´¥ï¼" + res.message); } } catch (err) { ElMessage.error("请æ±å¤±è´¥ï¼" + err.message); } }; // WebRtcStreamer æå¡å°å const serverUrl = "http://192.168.1.103:8000"; // â æ¹ä¸ºä½ è¿è¡çé£å°çµèç IP const initVideo = () => { //æ ¹æ®å端è¿åçä¸åæ°åæ¥è¯»åä¸åçè§é¢çæ§æµ const initVideoByStationId = (stationId) => { const index = stationId - 1; if (index < 0 || index >= videoStreamList.length) { ElMessage.error("æ æçç«ç¹ç¼å·ï¼" + stationId); return; } const rtspUrls = videoStreamList[index]; try { webRtcServer_left.value = new WebRtcStreamer("video_left", serverUrl); webRtcServer_left.value.connect(rtspLeft); webRtcServer_left.value.connect(rtspUrls.left); webRtcServer_right.value = new WebRtcStreamer("video_right", serverUrl); webRtcServer_right.value.connect(rtspRight); webRtcServer_right.value.connect(rtspUrls.right); console.log( "è§é¢åå§å宿", webRtcServer_left.value, webRtcServer_right.value ); console.log("è§é¢åå§å宿ï¼", rtspUrls); } catch (err) { ElMessage.error("è§é¢åå§å失败: " + err.message); } }; const destroyVideo = () => { if (webRtcServer_left.value) { @@ -386,7 +363,8 @@ // 以䏿¯è§é¢çæ§ onMounted(() => { initVideo(); getStationId(); // 页é¢å è½½æ¶èªå¨è·åå¹¶ææ¾è§é¢ // initVideoByStationId(); //çå¬çªå£å¤§å°åå window.addEventListener("resize", () => { nextTick(() => { @@ -430,9 +408,6 @@ const isPortrait = ref(checkOrientation() === 'portrait'); onActivated(() => { // ç¼åé¡µé¢ æå¼é¡µé¢ å®ç°ææ¾ // const video = document.getElementById("video"); // video.paused && video.play(); ["video_left", "video_right"].forEach((id) => { const video = document.getElementById(id); if (video && video.paused) video.play(); @@ -441,9 +416,6 @@ // 页é¢åç¨ onDeactivated(() => { // ç¼åé¡µé¢ ç¦»å¼é¡µé¢ å®ç°æå // const video = document.getElementById("video"); // video.play && video.pause(); ["video_left", "video_right"].forEach((id) => { const video = document.getElementById(id); if (video && !video.paused) video.pause(); ÏîÄ¿´úÂë/ǰ¶Ë/µ¥»ú°æ/src/views/tts/UserManagement/Usermanagement.vue
@@ -1,6 +1,6 @@ <template> <div class="Usermanagement"> <div class="content"> <div class="content" > <div class="checkbox"> <div :class="['item', isactive == 1 ? 'isactive' : '']" @@ -208,7 +208,7 @@ > </div> </div> <div style="margin-top: 1rem; height: 100%"> <div style="margin-top: 1rem; height: 90%"> <!-- ç¨æ·å表 --> <el-table empty-text="ææ æ°æ®" @@ -575,7 +575,7 @@ <el-table-column prop="unitName" label="åä½åç§°" align="center" /> <el-table-column prop="creater" label="å建è " align="center" /> <el-table-column prop="createDate" label="åå»ºæ¥æ" align="center" /> <el-table-column label="æä½" align="center"> <el-table-column label="æä½" > <template #default="scope"> <span v-if=" @@ -638,7 +638,8 @@ > <el-table-column type="selection" align="center" /> <el-table-column prop="iPaddress" label="ipå°å" align="center" /> <el-table-column prop="addressname" label="æ£ä¿®é" align="center" /> <el-table-column prop="addressname" label="设å¤åç§°" align="center" /> <el-table-column prop="stationID" label="æ£ä¿®é" align="center" /> <el-table-column label="æä½" align="center"> <template #default="scope"> <span @@ -1387,7 +1388,7 @@ fontSize: isMin ? '2rem' : '1rem', fontWeight: 'bold', }" >ç¨æ·ip</span >设å¤ip</span > </div> </template> @@ -1444,14 +1445,44 @@ color: 'black', fontWeight: bold, }" >æ£ä¿®é</span >设å¤åç§°</span > </div> </template> <el-input style="height: 2rem" size="small" v-model="formip.addressname" placeholder="请è¾å ¥" /> </el-form-item> <el-form-item prop="stationID"> <template #label> <div style="display: flex; align-items: flex-end"> <span :style="{ color: 'red', marginRight: '0.2rem', fontSize: '2rem', }" >*</span > <span :style="{ fontSize: isMin ? '2rem' : '0.88rem', color: 'black', fontWeight: bold, }" >轨éç«</span > </div> </template> <el-input style="height: 2rem" size="small" v-model="formip.stationID" placeholder="请è¾å ¥" /> </el-form-item> @@ -2446,6 +2477,7 @@ getIpData(); } }; //ç¦æ¢é¡µé¢æ»å¨ //æ¹éå é¤ const ids = ref([]); @@ -2718,6 +2750,7 @@ id: 0, iPaddress: "", addressname: "", stationID:0 }); const formipRef = ref(null); //è·åipæ°æ® @@ -2780,6 +2813,7 @@ onMounted(() => { if (window.innerWidth <= 1080) { isMin.value = true; // document.body.style.overflow = "hidden"; } //æå°å½åå±å¹å®½åº¦ userInfo.value = JSON.parse(localStorage.getItem("user")); @@ -2802,6 +2836,7 @@ width: 100%; display: flex; flex-direction: column; .checkbox { width: 25rem; ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/api/newapi/Parameters.js
@@ -8,4 +8,7 @@ //æå export const Pause = (data) => request.post({ url: `/api/Parameters/PauseButton?deptid=${data}` }); //åå»ä¼¸ç¼©æå½åä½ç½® export const GetPosition = (data) => request.post({ url: `/api/Parameters/CurrentLocation?deptid=${data}` }); export const GetPosition = (data) => request.post({ url: `/api/Parameters/CurrentLocation?deptid=${data}` }); //è¿åä¼¸ç¼©ææ¯å°plc设置çåæ° export const BackfillSpeed=(data)=>request.post({ url: `/api/Parameters/BackfillSpeed?plank=${data}` }); ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/api/newapi/user.js
@@ -24,7 +24,8 @@ //ä¿®æ¹å¯ç id=${data.id}& export const UpdatePassword = (data) => request.post({ url: `/api/User/modifyPwd?newPwd=${data.newPwd}&oldPwd=${data.oldPwd}` }) // export const UpdatePwd = (data) => request.post({ url: `/api/User/UpdatePwd?id=${data.id}&newPwd=${data.newPwd}&oldPwd=${data.oldPwd}` }) // export const UpdatePwd = (data) => request.post({ url: `/api/User/UpdatePwd?id=${data.id}&newPwd=${data.newPwd}&oldPwd=${data.oldPwd}` }) export const UpdatePwd = (data) =>http.post(`/api/User/UpdatePwd?id=${encodeURIComponent(data.id)}&newPwd=${encodeURIComponent(data.newPwd)}&oldPwd=${encodeURIComponent(data.oldPwd)}`) //导åºç¨æ·å表 export const ExportApi = (data) => http.download("/api/User/Export", data, "ç¨æ·åè¡¨æ°æ®.xlsx", "å è½½ä¸"); ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/axios/service.ts
@@ -20,7 +20,7 @@ // 'http://192.168.1.103:9090' //ä¸çº¿å°å // 'http://192.168.0.80:1596' axiosInstance.interceptors.request.use((res: InternalAxiosRequestConfig) => { const controller = new AbortController() const controller = new AbortController() const url = res.url || '' res.signal = controller.signal abortControllerMap.set( ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/permission.ts
@@ -39,9 +39,17 @@ await permissionStore.generateRoutes('static') } // permissionStore.getAddRouters.forEach((route) => { // router.addRoute(route as unknown as RouteRecordRaw) // å¨ææ·»å å¯è®¿é®è·¯ç±è¡¨ // }) //ä¸é¢æ¯æèªå·±ä¿®æ¹çè·¯ç±è®¿é®æ¹å¼ï¼ä¸é¢è®¿é®4000è·¯å¾æ»æ¯æ¥éï¼ permissionStore.getAddRouters.forEach((route) => { router.addRoute(route as unknown as RouteRecordRaw) // å¨ææ·»å å¯è®¿é®è·¯ç±è¡¨ }) const normalizedRoute = { ...route, path: route.path.startsWith('/') ? route.path : `/${route.path}` // [!code ++] }; router.addRoute(normalizedRoute as unknown as RouteRecordRaw); // [!code ++] }); const redirectPath = from.query.redirect || to.path const redirect = decodeURIComponent(redirectPath as string) const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect } ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/views/Authorization/Team/Team.vue
@@ -111,7 +111,7 @@ }) } // ç¼è¾çç» // ç¼è¾çç» const EditTream = (val) => { Treamtype.value = "ä¿®æ¹" formTeam.value = Object.assign({}, val) ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/views/Authorization/iPaddress/iPaddress.vue
@@ -160,6 +160,7 @@ formIP.value = { iPaddress: '', addressname: '', stationID:0, createDate: formatTime(new Date()), creater: JSON.parse(localStorage.getItem('user')).userName } @@ -236,7 +237,8 @@ > <el-table-column type="selection" align="center" /> <el-table-column prop="iPaddress" label="IPå°å" align="center" /> <el-table-column prop="addressname" label="æ£ä¿®é" align="center" /> <el-table-column prop="addressname" label="设å¤åç§°" align="center" /> <el-table-column prop="stationID" label="æ£ä¿®é" align="center" /> <!-- <el-table-column prop="creater" label="å建è " align="center" /> --> <el-table-column prop="createDate" label="å建æ¶é´" align="center" /> <el-table-column label="æä½" align="center"> @@ -335,6 +337,20 @@ placeholder="请è¾å ¥æ£ä¿®éåç§°" /> </el-form-item> <el-form-item prop="stationID"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> <span style="font-size: 0.88rem; color: black; font-weight: bold">æ£ä¿®éå·</span> </div> </template> <el-input style="height: 2rem" size="small" v-model="formIP.stationID" placeholder="请è¾å ¥æ£ä¿®éå·" /> </el-form-item> </el-form> <template #footer> <div class="dialog-footer" style="text-align: center"> ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/views/Login/components/LoginForm.vue
@@ -197,7 +197,9 @@ addRoute(route as RouteRecordRaw) // å¨ææ·»å å¯è®¿é®è·¯ç±è¡¨ }) permissionStore.setIsAddRouters(true) push({ path: redirect.value || permissionStore.addRouters[0].path }) // push({ path: redirect.value || permissionStore.addRouters[0].path }) push({ path: '/PickAndDrop' }) } } } finally { @@ -228,7 +230,9 @@ addRoute(route as RouteRecordRaw) // å¨ææ·»å å¯è®¿é®è·¯ç±è¡¨ }) permissionStore.setIsAddRouters(true) push({ path: redirect.value || permissionStore.addRouters[0].path }) // push({ path: redirect.value || permissionStore.addRouters[0].path }) push({ path: '/tts/PickAndDrop' }) } } ÏîÄ¿´úÂë/ǰ¶Ë/ºǫ́/src/views/tts/PickAndDrop/PickAndDrop.vue
@@ -115,7 +115,7 @@ <div v-if="isMobile" class="content"> <div class="content_l"> <div class="model">左侧伸缩æ</div> <div class="operate" style="opacity: 0"> <div class="operate" style="opacity: 100"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> @@ -138,7 +138,7 @@ </div> <div class="content_r"> <div class="model">å³ä¾§ä¼¸ç¼©æ</div> <div class="operate" style="opacity: 0"> <div class="operate" style="opacity: 100"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> @@ -164,9 +164,9 @@ <div v-else class="content_mobile"> <div class="content_l"> <div style="display: flex; align-items: center"> <div class="model">左侧伸缩æ</div> <div class="model">左侧ç«å±ä¼¸ç¼©æ</div> <div class="mode"></div> <div class="operate" style="opacity: 0"> <div class="operate" style="opacity:100"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> @@ -190,9 +190,9 @@ </div> <div class="content_r"> <div style="display: flex; align-items: center"> <div class="model">å³ä¾§ä¼¸ç¼©æ</div> <div class="model">å³ä¾§ç«å±ä¼¸ç¼©æ</div> <div class="mode"></div> <div class="operate" style="opacity: 0"> <div class="operate" style="opacity: 100"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> @@ -221,6 +221,7 @@ <!-- éè¿æ ç¾é¡µåæ¢é¨é¨ï¼å¹¶å¨æå 载该é¨é¨çä½ç½®æ°æ®ã --> <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> <el-tab-pane v-for="item in list" :key="item.id" :label="item.name" :name="item.id"> <!-- Manualcontrolï¼æ§å¶æ¨ªå± --> <div class="Manualcontrol"> <div class="button"> <el-button @@ -304,10 +305,10 @@ </div> </div> <div class="operate"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> <div class="item">缩åé度</div> <div class="item">伸å°ä½{{ruleForm.leftPosition}}</div> <div class="item">缩å°ä½{{0}}</div> <div class="item">伸åºé度{{ruleForm.extendSpeed}}</div> <div class="item">缩åé度{{ruleForm.extendSpeed}}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> @@ -406,10 +407,10 @@ </div> </div> <div class="operate"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> <div class="item">缩åé度</div> <div class="item">伸å°ä½{{ruleForm.leftPosition}}</div> <div class="item">缩å°ä½{{0}}</div> <div class="item">伸åºé度{{ruleForm.extendSpeed}}</div> <div class="item">缩åé度{{ruleForm.extendSpeed}}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> @@ -499,17 +500,17 @@ <span style="font-size: 1.25rem; text-align: center">ç¹å¨ç¼©</span> </el-button> </div> <div style="color: #fff; font-size: 1.5rem"> 左侧伸缩æ </div> <div style="color: #fff; font-size: 1.5rem"> 左侧ç«å±æå¨ä¼¸ç¼©æ </div> <div style="color: #fff; font-size: 1.5rem"> <!-- å½å伸缩æä½ç½®:{{ Position.left }} --> </div> </div> <!-- æ style廿就æ¾ç¤ºäº--> <div class="operate" style="opacity: 0"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> <div class="item">缩åé度</div> <div class="operate" style="opacity: 100"> <div class="item">伸å°ä½{{ruleForm.leftPosition}}</div> <div class="item">缩å°ä½{{0}}</div> <div class="item">伸åºé度{{ruleForm.extendSpeed}}</div> <div class="item">缩åé度{{ruleForm.extendSpeed}}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> @@ -521,11 +522,21 @@ </div> <div style="display: flex; flex-direction: column; align-items: center"> <div class="video_l"> <span style="color: #fff; font-size: 1.25rem; font-weight: bold" <!-- <span style="color: #fff; font-size: 1.25rem; font-weight: bold" >ç«å±æå¨è§é¢çæ§å·¦ä¾§</span > <img src="@/assets/imgs/right.png" alt="" /> <img src="@/assets/imgs/right.png" alt="" /> --> <video id="video_left" autoplay muted controls playsinline width="100%" height="100%" ></video> </div> </div> </div> <div class="content_r"> @@ -596,16 +607,16 @@ <span style="font-size: 1.25rem; text-align: center">ç¹å¨ç¼©</span> </el-button> </div> <div style="color: #fff; font-size: 1.5rem"> å³ä¾§ä¼¸ç¼©æ </div> <div style="color: #fff; font-size: 1.5rem"> å³ä¾§ç«å±æå¨ä¼¸ç¼©æ </div> <div style="color: #fff; font-size: 1.5rem"> <!-- å½å伸缩æä½ç½®:{{ Position.right }} --> </div> </div> <div class="operate" style="opacity: 0"> <div class="item">伸å°ä½</div> <div class="item">缩å°ä½</div> <div class="item">伸åºé度</div> <div class="item">缩åé度</div> <div class="operate" style="opacity:100"> <div class="item">伸å°ä½{{ruleForm.leftPosition}}</div> <div class="item">缩å°ä½{{0}}</div> <div class="item">伸åºé度{{ruleForm.extendSpeed}}</div> <div class="item">缩åé度{{ruleForm.extendSpeed}}</div> <!-- <div class="open"> <div class="city"> <div class="dotted"></div> @@ -617,11 +628,20 @@ </div> <div style="display: flex; flex-direction: column; align-items: center"> <div class="video_r"> <span style="color: #fff; font-size: 1.25rem; font-weight: bold" <!-- <span style="color: #fff; font-size: 1.25rem; font-weight: bold" >è§é¢çæ§å³ä¾§58</span > <img src="@/assets/imgs/left.png" alt="" /> <img src="@/assets/imgs/left.png" alt="" /> --> <video id="video_left" autoplay muted controls playsinline width="100%" height="100%" ></video> </div> </div> </div> @@ -639,6 +659,7 @@ <el-radio :value="3">æ£ä¿®éä¸</el-radio> <el-radio :value="4">æ£ä¿®éå</el-radio> <el-radio :value="5">æ£ä¿®éäº</el-radio> <el-radio :value="6">æ£ä¿®éå </el-radio> </el-radio-group> </div> <template #footer> @@ -653,7 +674,7 @@ import { ref, onMounted, nextTick ,onUnmounted,onActivated,onDeactivated ,onBeforeUnmount} from 'vue' import { useRouter } from 'vue-router' import { ElMessage } from 'element-plus' import { AutoPickAndDrop, ManualOperation, Pause, GetPosition } from '@/api/newapi/Parameters.js' import { AutoPickAndDrop, ManualOperation, Pause, GetPosition,BackfillSpeed } from '@/api/newapi/Parameters.js' const activeName = ref('first') const router = useRouter() const isShow = ref(false) @@ -749,6 +770,49 @@ console.log(res) }, 2000) //å®ä¹ä¼¸ç¼©æè¿åéåº¦åæ° const ruleForm = ref({ id: 0, extendSpeed: 0, retractionSpeed: 0, manualExtend: 0, manualRetraction: 0, leftPosition: 0, rightPosition: 0, }); //è°ç¨è¿å伸缩æè®¾ç½®åæ° const GetfillSpeed= async(DeptId)=>{ try{ const res = await BackfillSpeed(DeptId) // console.log('DeptId',DeptId) console.log("è¿åé度信æ¯",res) if(res.status === true){ if(res.code === 0){ ruleForm.value.extendSpeed = res.data == null ? 0 : res.data.extendSpeed; ruleForm.value.retractionSpeed = res.data == null ? 0 : res.data.retractionSpeed; ruleForm.value.manualExtend = res.data == null ? 0 : res.data.manualExtend; ruleForm.value.manualRetraction = res.data == null ? 0 : res.data.manualRetraction; ruleForm.value.leftPosition = res.data == null ? 0 : res.data.leftPosition; ruleForm.value.rightPosition = res.data == null ? 0 : res.data.rightPosition; }else{ ElMessage.error(res.message) } }else{ ElMessage.error('è·å伸缩æé度失败') } } catch(error){ console.error(error) ElMessage.error('è·å伸缩æé度失败') } } // éè¿æ ç¾é¡µåæ¢é¨é¨ï¼å¹¶å¨æå 载该é¨é¨çä½ç½®æ°æ®ã @@ -781,17 +845,17 @@ const webRtcServer_left = ref(null) const webRtcServer_right = ref(null) //忢æ ç¾ const handleClick = (tab, event) => { destroyVideo()//åæ¢çæ¶åæ¶é¤ä¸æ¬¡çè§é¢çæ§æµ console.log(tab.index); console.log("å½åæ ç¾ä¸è¡¨",tab.index); DeptId.value = Number(tab.index) + 1 // GetPosition(DeptId.value).then((res) => { // Position.value.left = res.data.lift // Position.value.right = res.data.right // }) console.log('å½åé¨é¨ID:', DeptId.value) GetfillSpeed(DeptId.value) rstp.value=srtpaddres[tab.index].left rstp1.value=srtpaddres[tab.index].right } @@ -895,12 +959,13 @@ } onMounted(() => { GetfillSpeed(1) //è·å伸缩æé度 initVideo()//å¼å§çæ¶åå¯¼å ¥è§é¢çæ§æµ // çå¬çªå£å¤§å°åå window.addEventListener('resize', () => { nextTick(() => { if (window.innerWidth > 1200) { isMobile.value = true isMobile.value = true //é»è®¤æ¯æ¨ªå± } else { isMobile.value = false } @@ -980,20 +1045,6 @@ top: -0.25rem; border-radius: 50%; } // .Aspan::after { // content: ''; // position: absolute; // height: 0.66rem; // /* 设置边æ¡çé¿åº¦ */ // width: 0.66rem; // /* 设置边æ¡ç宽度 */ // background-color: rgba(102, 255, 255, 1); // /* 设置边æ¡çé¢è² */ // right: -9.5rem; // top: -0.25rem; // border-radius: 50%; // } } .btn::after { @@ -1033,9 +1084,9 @@ .content { display: flex; .content_l { display: flex; flex-direction: column; justify-content: space-between; // display: flex; // flex-direction: column; // justify-content: space-between; width: 50%; height: 45rem; background-color: rgba(9, 48, 104, 1); @@ -1050,11 +1101,19 @@ font-size: 2rem; } //横å±èªå¨é¡µé¢å·¦è¾¹ .operate { // display: flex; // margin-left: auto; // flex-direction: column; // align-items: flex-end; // padding: 0.58rem 0.58rem; display: flex; flex-direction: column; align-items: flex-end; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; margin-bottom: 10px; .item { display: flex; @@ -1074,6 +1133,7 @@ font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-left: 1rem; } .open { @@ -1176,10 +1236,11 @@ } } //横å±èªå¨é¡µé¢å³è¾¹ .content_r { display: flex; flex-direction: column; justify-content: space-between; // display: flex; // flex-direction: column; // justify-content: space-between; width: 50%; height: 45rem; background-color: rgba(9, 48, 104, 1); @@ -1195,11 +1256,18 @@ font-size: 2rem; } //横å±èªå¨é¡µé¢å³è¾¹ .operate { display: flex; flex-direction: column; align-items: flex-end; // display: flex; // flex-direction: column; // align-items: flex-end; // padding: 0.58rem 0.58rem; display: flex; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; margin-bottom: 10px; .item { display: flex; flex-direction: column; @@ -1218,6 +1286,7 @@ font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-left: 10px; } .open { @@ -1321,6 +1390,7 @@ } } // æ§å¶ç«å±æ ·å¼ .content_mobile { display: flex; flex-direction: column; @@ -1343,10 +1413,15 @@ } .operate { // display: flex; // flex-direction: column; // align-items: flex-end; // padding: 0 0.88rem; display: flex; flex-direction: column; align-items: flex-end; padding: 0 0.88rem; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { display: flex; flex-direction: column; @@ -1365,6 +1440,7 @@ font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-right: 1rem; } .open { @@ -1483,10 +1559,15 @@ } .operate { display: flex; flex-direction: column; align-items: flex-end; padding: 0 0.88rem; // display: flex; // flex-direction: column; // align-items: flex-end; // padding: 0 0.88rem; display: flex; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { display: flex; flex-direction: column; @@ -1505,6 +1586,7 @@ font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-right: 1rem; } .open { @@ -1639,20 +1721,6 @@ top: -0.25rem; border-radius: 50%; } // .Aspan::after { // content: ''; // position: absolute; // height: 0.66rem; // /* 设置边æ¡çé¿åº¦ */ // width: 0.66rem; // /* 设置边æ¡ç宽度 */ // background-color: rgba(102, 255, 255, 1); // /* 设置边æ¡çé¢è² */ // right: -11.8rem; // top: -0.25rem; // border-radius: 50%; // } } .btn::after { @@ -1691,9 +1759,9 @@ .content { display: flex; .content_l { display: flex; flex-direction: column; justify-content: space-between; // display: flex; // flex-direction: column; // // justify-content: space-between; width: 50%; height: 45rem; background-color: rgba(9, 48, 104, 1); @@ -1723,8 +1791,11 @@ .operate { display: flex; flex-direction: column; align-items: flex-end; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { display: flex; flex-direction: column; @@ -1732,6 +1803,7 @@ width: 8.75rem; height: 3.19rem; border-radius: 0.31rem; margin-left:0.5rem ; background: linear-gradient( 90deg, rgba(0, 224, 255, 0.74) 0%, @@ -1742,7 +1814,8 @@ color: rgb(255, 255, 255); font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-top: 1rem; margin-bottom: 1rem; } .open { @@ -1846,9 +1919,9 @@ } .content_r { display: flex; justify-content: space-between; flex-direction: column; // display: flex; // justify-content: space-between; // flex-direction: column; width: 50%; height: 45rem; background-color: rgba(9, 48, 104, 1); @@ -1880,9 +1953,14 @@ } .operate { display: flex; align-items: flex-end; flex-direction: column; // display: flex; // align-items: flex-end; // flex-direction: column; // padding: 0.58rem 0.58rem; display: flex; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { @@ -1891,6 +1969,7 @@ justify-content: center; width: 8.75rem; height: 3.19rem; margin-left:0.5rem ; border-radius: 0.31rem; background: linear-gradient( 90deg, @@ -1902,7 +1981,8 @@ color: rgb(255, 255, 255); font-size: 1.13rem; padding-left: 0.69rem; margin-top: 0.88rem; margin-top: 1rem; margin-bottom: 1rem; } .open { @@ -2043,10 +2123,15 @@ } .operate { display: flex; flex-direction: column; align-items: flex-end; padding: 0.88rem 0.58rem; // display: flex; // flex-direction: column; // align-items: flex-end; // padding: 0.88rem 0.58rem; display: flex; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { display: flex; flex-direction: column; @@ -2054,6 +2139,7 @@ width: 8.75rem; height: 4.19rem; border-radius: 0.31rem; margin-right: 1rem; background: linear-gradient( 90deg, rgba(0, 224, 255, 0.74) 0%, @@ -2199,10 +2285,15 @@ } .operate { display: flex; flex-direction: column; padding: 0 0.88rem; align-items: flex-end; // display: flex; // flex-direction: column; // padding: 0 0.88rem; // align-items: flex-end; display: flex; flex-direction: row; // 横åæå align-items: center; // åç´å± ä¸ justify-content: flex-start; // é å·¦ padding: 0.58rem 0.58rem; .item { display: flex; flex-direction: column; @@ -2210,6 +2301,7 @@ width: 8.75rem; height: 4.19rem; border-radius: 0.31rem; margin-right: 1rem; background: linear-gradient( 90deg, rgba(0, 224, 255, 0.74) 0%,