| src/assets/images/dataCenter/positionicon.png | patch | view | raw | blame | history | |
| src/assets/images/dataCenter/videoplay.png | patch | view | raw | blame | history | |
| src/page/index/top/index.vue | ●●●●● patch | view | raw | blame | history | |
| src/store/modules/user.js | ●●●●● patch | view | raw | blame | history | |
| src/views/dataCenter/components/searchData.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/dataCenter/dataCenter.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/wel/components/backlog.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/wel/components/flightStatistics.vue | ●●●●● patch | view | raw | blame | history |
src/assets/images/dataCenter/positionicon.png
src/assets/images/dataCenter/videoplay.png
src/page/index/top/index.vue
@@ -103,10 +103,8 @@ }).then(() => { this.$store.dispatch('LogOut').then(() => { const env = import.meta.env.VITE_APP_ENV console.log(env); const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? this.$router.push({ path: '/login' }):window.location.replace(`${adminUrl}#/login`) }) }) }, src/store/modules/user.js
@@ -27,6 +27,7 @@ import { encrypt } from '@/utils/sm2'; import md5 from 'js-md5'; const user = { state: { tenantId: getStore({ name: 'tenantId' }) || '', @@ -269,16 +270,31 @@ }); }, GetMenu({ commit, dispatch }, tenantId) { const errLogOut = () => { dispatch('LogOut').then(()=>{ const env = import.meta.env.VITE_APP_ENV const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL env === 'development' ? window.location.href = "/manage/login" : window.location.replace(`${adminUrl}#/login`) }) } return new Promise(resolve => { getRoutes(tenantId).then(res => { const data = res.data.data; let menu = deepClone(data); menu?.forEach(ele => formatPath(ele, true)); if (!res.data?.data?.length){ errLogOut() return } menu.forEach(ele => formatPath(ele, true)); commit('SET_MENU', menu); commit('SET_MENU_ALL', menu); dispatch('GetButtons'); resolve(menu); }); }).catch(err =>{ errLogOut() }) }); }, GetButtons({ commit }) { src/views/dataCenter/components/searchData.vue
@@ -79,6 +79,7 @@ v-model="searchForm.photoType" placeholder="请选择" clearable @clear="changePhotoType" > <el-option v-for="item in CategoryOption" @@ -193,7 +194,11 @@ }, { deep: true } ); const changePhotoType =(val)=>{ if(val === undefined){ searchForm.photoType = '' } } // 部门 let deptTreeData = ref([]); // 机巢 src/views/dataCenter/dataCenter.vue
@@ -13,7 +13,6 @@ <el-table v-loading="loadings" element-loading-text="加载中" stripe :data="tableData" class="custom-header" @selection-change="handleSelectionChange" @@ -45,13 +44,21 @@ :src="scope.row?.smallUrl" alt="" /> <img v-else-if="scope.row?.resultType === 1" :src="convertVideoUrlToThumbnail(scope.row?.link)" alt="" class="imageBox" @click="enterFullScreen(scope.row)" /> <!-- 视频 --> <div v-else-if="scope.row?.resultType === 1" class="videoItem1"> <img :src="convertVideoUrlToThumbnail(scope.row?.link)" alt="" class="imageBox" @click="enterFullScreen(scope.row)" /> <img class="playBox" @click="enterFullScreen(scope.row)" src="@/assets/images/dataCenter/videoplay.png" alt="" /> </div> <!-- 正射 --> <el-image v-else-if="scope.row?.resultType === 4" @@ -71,7 +78,7 @@ </el-table-column> <el-table-column prop="jobTime" label="任务时间" /> <el-table-column property="photoType" label="文件类别"> <template #default="scope"> <template #default="scope"> <span>{{ photoTypeMap[scope.row.photoType] ? photoTypeMap[scope.row.photoType] : '--' }}</span> @@ -82,21 +89,24 @@ <span>{{ resultTypeMap[row?.resultType] }}</span> </template> </el-table-column> <el-table-column label="操作" width="150" align="center"> <el-table-column label="操作" width="200" align="center"> <template #default="scope"> <span class="look" @click="lookDetail(scope.row)">查看</span> <span class="delete" @click="deleteDetail(scope.row)" v-if="scope.row.resultType !== 2" >删除</span <el-button icon="el-icon-view" type="text" @click="lookDetail(scope.row)" >查看</el-button > <span class="location" @click="positionDetail(scope.row)" <el-button v-if="scope.row.resultType !== 2" icon="el-icon-delete" type="text" @click="deleteDetail(scope.row)" >删除</el-button > <el-button v-if="shouldShowLocation(scope.row)" >定位</span type="text" @click="positionDetail(scope.row)" > <img :src="positionicon" class="custom-icon" />定位</el-button > </template> </el-table-column> @@ -258,6 +268,8 @@ </template> <script setup> import videoplay from '@/assets/images/dataCenter/videoplay.png'; import positionicon from '@/assets/images/dataCenter/positionicon.png'; import { useStore } from 'vuex'; import { PublicCesium } from '@/utils/cesium/publicCesium'; import { Cartesian3 } from 'cesium'; @@ -730,7 +742,12 @@ cursor: pointer; margin-right: 10px; } .custom-icon { width: 14px; height: 14px; margin-right: 5px; vertical-align: middle; } .delete { color: #ff241c; margin-right: 10px; @@ -756,7 +773,17 @@ width: 76px; height: 72px; } .videoItem1 { .playBox { width: 20px; height: 20px; position: absolute; top: 46%; left: 43%; transform: translate(-50%, -50%); cursor: pointer; } } .videoDialog :deep(.el-dialog) { height: 600px; width: 54%; src/views/wel/components/backlog.vue
@@ -9,13 +9,13 @@ <div> {{ item.name }} <div class="dots">{{ item.number >= 100 ? '99+' : item.number }}</div> <!-- <div class="dots">99+</div> --> </div> </div> </div> </div> <div class="todo-items" v-if="todos.length > 0" v-loading="loading"> <div class="todo-items" v-if="todos.length > 0" v-loading="loading" element-loading-background="rgba(255, 255, 255, 0.5)"> <div v-for="(item, index) in todos" :key="index" class="todo-item" :style="getStatusStyle(item.status)" @click="jumporder(item)"> <div class="status-indicator"><img :src="getStatus(item.status)" alt=""></div> @@ -65,6 +65,10 @@ const store = useStore() const permission = computed(() => store.getters.permission) const checked = ref('事件工单') const todosCache = reactive({ '事件工单': [], '智飞工单': [] }) const titleList = ref([ { label: 'event_order_count', @@ -77,11 +81,11 @@ number: 0, }, ]) const titleClick = (item, index) => { checked.value = item.name getListMatter() } const titleClick = async (item, index) => { checked.value = item.name await getListMatter() } const userInfo = computed(() => store.getters.userInfo) const todos = ref([]) const loading = ref(false) @@ -203,24 +207,25 @@ }) } // 获取事件工单或者智飞工单的信息 const getListMatter = async () => { if (checked.value === '事件工单') { loading.value = true const type = 1 loading.value = true const type = checked.value === '事件工单' ? 1 : 2 // 使用缓存数据 if (todosCache[checked.value].length > 0) { todos.value = todosCache[checked.value] } try { const res = await getOrderOrEventApi(type, userInfo.value.detail.areaCode) todos.value = res.data.data || [] const data = res.data.data || [] todos.value = data todosCache[checked.value] = data } finally { loading.value = false // console.log('事件工单', todos.value); } else if (checked.value === '智飞工单') { loading.value = true const type = 2 const res = await getOrderOrEventApi(type, userInfo.value.detail.areaCode) todos.value = res.data.data || [] loading.value = false // console.log('智飞工单', todos.value); } } onMounted(() => { getListMatter() getOrderCount() @@ -313,12 +318,19 @@ .todo-items { margin-top: 10px; // height: 250px; transition: opacity 0.3s ease; height: pxToVh(250); overflow-y: scroll; &:empty { display: none; } } .todo-item { transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.3s ease; margin: 6px 0; display: flex; align-items: center; @@ -415,5 +427,8 @@ font-size: 14px; color: #7c8091; } .el-empty { transition: opacity 0.3s ease; } } </style> src/views/wel/components/flightStatistics.vue
@@ -89,8 +89,7 @@ const getFlyTimeList = () => { getFlyTime(params.value).then(res => { const resList = res?.data?.data || []; console.log('飞行',resList); lineCharts(resList); }); }; @@ -177,7 +176,7 @@ }, }, axisLabel: { interval: 0, // interval: 0, color: '#383838', }, },