From 2777b59c3e1d2b9a76f7072a1ceebf7f78eddaff Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Thu, 04 Dec 2025 17:05:19 +0800
Subject: [PATCH] Merge branch 'refs/heads/feature/v8.0/8.0.4' into test
---
src/views/job/components/SearchBox.vue | 40 ++++++-
src/views/resource/components/spotDetails.vue | 28 ++++-
src/views/device/components/DockControlPanel.vue | 2
src/views/dataCenter/dataCenter.vue | 50 ++++++---
src/axios.js | 19 +++
src/views/device/airport.vue | 109 ++++++++++++---------
6 files changed, 170 insertions(+), 78 deletions(-)
diff --git a/src/axios.js b/src/axios.js
index 4acc439..3ef44cf 100644
--- a/src/axios.js
+++ b/src/axios.js
@@ -50,6 +50,25 @@
`${website.clientId}:${website.clientSecret}`
)}`;
}
+ // 后端的要求
+ if (router.currentRoute.value.path === '/job/jobstatistics'){
+ const userAreaCode = store?.state?.user?.userInfo?.detail?.areaCode
+ const paramsKey = config.method === 'get' ? 'params' : 'data';
+ const codeKey = config.method === 'get' ? 'areaCode' : 'area_code';
+ const paramCode = config?.params?.areaCode || config?.data?.area_code
+ try {
+ if (paramCode){
+ if (paramCode === userAreaCode) {
+ config[paramsKey][codeKey] = config.method === 'get' ? '' : undefined;
+ } else {
+ if (!Array.isArray(config[paramsKey])){
+ config[paramsKey] = {...config[paramsKey],[codeKey]: paramCode}
+ }
+ }
+ }
+ }catch (e) {}
+ }
+
//headers判断请求是否携带token
const meta = config.meta || {};
const isToken = meta.isToken === false;
diff --git a/src/views/dataCenter/dataCenter.vue b/src/views/dataCenter/dataCenter.vue
index 40ed9c2..a1baa56 100644
--- a/src/views/dataCenter/dataCenter.vue
+++ b/src/views/dataCenter/dataCenter.vue
@@ -93,13 +93,15 @@
<el-table-column property="link" label="缩略图" width="120">
<template #default="scope">
- <img
+ <div v-if="scope.row?.resultType === 5" class="videoItem1">
+ <img
class="quanjing"
@click="clickpanorama(scope.row)"
- v-if="scope.row?.resultType === 5"
+
:src="scope.row?.smallUrl"
alt=""
/>
+ </div>
<!-- 视频 -->
<div v-else-if="scope.row?.resultType === 1" class="videoItem1">
<img
@@ -116,20 +118,23 @@
/>
</div>
<!-- 正射 -->
- <el-image
- v-else-if="scope.row?.resultType === 4"
+ <div v-else-if="scope.row?.resultType === 4" class="videoItem1">
+ <el-image
+
:src="getzsSmallImg(scope.row?.link)"
:preview-src-list="[getzsSmallImg(scope.row?.link)]"
fit="cover"
preview-teleported
/>
- <el-image
- v-else
+ </div>
+ <div v-else class="videoItem1">
+ <el-image
:src="scope.row?.smallUrl"
:preview-src-list="[scope.row?.showUrl]"
fit="cover"
preview-teleported
/>
+ </div>
</template>
</el-table-column>
<el-table-column prop="jobTime" label="任务时间" />
@@ -1027,17 +1032,30 @@
width: 76px;
height: 72px;
}
+
.videoItem1 {
- .playBox {
- width: 20px;
- height: 20px;
- position: absolute;
- top: 46%;
- left: 43%;
- transform: translate(-50%, -50%);
- cursor: pointer;
- }
- }
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+
+ min-height: 80px;
+}
+
+.playBox {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+
+ z-index: 1;
+}
.videoDialog :deep(.el-dialog) {
height: 600px;
width: 54%;
diff --git a/src/views/device/airport.vue b/src/views/device/airport.vue
index f0898a0..e336b6c 100644
--- a/src/views/device/airport.vue
+++ b/src/views/device/airport.vue
@@ -26,18 +26,18 @@
<template #firmware_status="{ row }">
<div v-if="row.firmware_status == 1" class="onlineStatus1">
<el-tag type="info">无需升级</el-tag>
- <el-tag type="primary" effect="dark" class="active-element" @click="rollFirmware(row)">版本管理</el-tag>
+<!-- <el-tag type="primary" effect="dark" class="active-element" @click="rollFirmware(row)">版本管理</el-tag>-->
<!-- <div style="background-color: #f1f1f1; border-radius: 4px">无需升级</div> -->
</div>
<div v-if="row.firmware_status == 2" class="onlineStatus1">
<!-- <el-tag type="success" effect="dark" class="active-element" @click="updateFirmware(row)"
>升级固件</el-tag
> -->
- <el-tag type="primary" effect="dark" class="active-element" @click="rollFirmware(row)">版本管理</el-tag>
+<!-- <el-tag type="primary" effect="dark" class="active-element" @click="rollFirmware(row)">版本管理</el-tag>-->
<!-- <div @click="updateFirmware(row)" class="firmware_status">升级固件</div> -->
</div>
<div v-if="row.firmware_status == 3" class="onlineStatus">
- <el-tag type="success" effect="dark" class="active-element" @click="updateFirmware(row)">一致性升级</el-tag>
+<!-- <el-tag type="success" effect="dark" class="active-element" @click="updateFirmware(row)">一致性升级</el-tag>-->
<!-- <div @click="updateFirmware(row)" class="firmware_status">一致性升级</div> -->
</div>
<div v-if="row.firmware_status == 4" class="onlineStatus">
@@ -409,7 +409,6 @@
},
],
},
-
{
label: '4G增强',
prop: 'link_workmode',
@@ -532,7 +531,18 @@
},
],
},
-
+ {
+ label: '固件升级',
+ prop: 'firmware_status',
+ labelWidth: 145,
+ width: 100,
+ // hide: true,
+ viewDisabled: true,
+ addDisabled: true,
+ editDisplay: false, //编辑显示
+ addDisplay: false,
+ viewDisplay: false,
+ },
{
label: '设备SN',
prop: 'device_sn',
@@ -627,18 +637,6 @@
labelWidth: 145,
width: 110,
editDisplay: false, //编辑显示
- },
- {
- label: '固件升级',
- prop: 'firmware_status',
- labelWidth: 145,
- width: 100,
- hide: true,
- viewDisabled: true,
- addDisabled: true,
- editDisplay: false, //编辑显示
- addDisplay: false,
- viewDisplay: false,
},
{
label: '所属部门',
@@ -869,21 +867,30 @@
websocket?.initSocket()
},
async messageHandler(payload) {
- if (!payload) {
+ let loadData = JSON.parse(payload)
+ if (!loadData) {
return
}
- if (payload.biz_code != 'ota_progress') {
+
+ if (loadData.biz_code != 'ota_progress') {
return
}
- var data = payload.data
- this.data.forEach(e => {
- if (e.device_sn == data.sn && data.output.status == 'in_progress') {
- e.firmware_progress = data.output.progress.percent
+ console.log(loadData.data.output.progress.percent, '6666')
+ this.data.forEach((e, index) => {
+ if ((e.device_sn == loadData.data.sn || e.child_sn == loadData.data.sn) && loadData.data.output.status == 'in_progress') {
+ e.firmware_progress = loadData.data.output.progress.percent
+ if (e.children[0]) {
+ e.children[0].firmware_progress = loadData.data.output.progress.percent;
+ }
+ console.log('是否更新中2',e.children[0])
}
- if (e.device_sn == data.sn && data.output.status == 'ok') {
+ if ((e.device_sn == loadData.data.sn || e.child_sn == loadData.data.sn) && loadData.data.output.status == 'ok') {
// 升级完成修改状态
e.firmware_status = 1
+ if (e.children[0]) {
+ e.children[0].firmware_status = 1
+ }
const webscoket = this.websocketMap.get(e.workspace_id)
// 关闭
webscoket?.close()
@@ -892,6 +899,7 @@
this.webSocketIdSet.delete(e.workspace_id)
}
})
+ // this.$forceUpdate()
},
init() {
(this.page = {
@@ -1133,7 +1141,7 @@
message: '操作成功!',
})
this.onLoad(this.page)
- done()
+ // done()
})
},
// 升级固件按钮事件
@@ -1372,25 +1380,25 @@
this.$refs.crud.toggleSelection()
})
},
- async getFullAreaCode(areaCode) {
- console.log('getFullAreaCode', areaCode)
- if (!areaCode) return ''
-
- const code = areaCode.toString()
-
- if (code.includes(',')) return code
-
- if (code.endsWith('0000000000')) {
- return code
- } else if (code.endsWith('00000000') && !code.endsWith('0000000000')) {
- const provinceCode = code.substring(0, 2) + '0000000000'
- return `${provinceCode},${code}`
- } else {
- const provinceCode = code.substring(0, 2) + '0000000000'
- const cityCode = code.substring(0, 4) + '00000000'
- return `${provinceCode},${cityCode},${code}`
- }
- },
+ // async getFullAreaCode(areaCode) {
+ // console.log('getFullAreaCode', areaCode)
+ // if (!areaCode) return ''
+ //
+ // const code = areaCode.toString()
+ //
+ // if (code.includes(',')) return code
+ //
+ // if (code.endsWith('0000000000')) {
+ // return code
+ // } else if (code.endsWith('00000000') && !code.endsWith('0000000000')) {
+ // const provinceCode = code.substring(0, 2) + '0000000000'
+ // return `${provinceCode},${code}`
+ // } else {
+ // const provinceCode = code.substring(0, 2) + '0000000000'
+ // const cityCode = code.substring(0, 4) + '00000000'
+ // return `${provinceCode},${cityCode},${code}`
+ // }
+ // },
beforeOpen(done, type) {
if (['edit', 'view'].includes(type)) {
getDetail(this.form.id).then(async res => {
@@ -1443,12 +1451,16 @@
this.page.total = data.total
data.records.forEach(e => {
e['hasChildren'] = e.has_children
- if (e.firmware_status == 4) {
+ if (e.firmware_status == 4 || e.mode_code === 3) {
+ console.log('监听了没')// 机巢升级 firmware_status === 4
this.connectWebSocket(e)
}
e.duration_of_insurance = [e?.insure_start_time?.slice(0, 10) || '', e?.insure_expired_time?.slice(0, 10) || '']
})
- this.data = data.records
+ this.data = data.records.map(item => ({
+ ...item,
+ firmware_progress: 0
+ }));
this.loading = false
this.selectionClear()
})
@@ -1460,7 +1472,10 @@
childSn: tree.child_sn,
}
getList(1, 10, params).then(res => {
- const data = res.data.data.records
+ const data = res.data.data.records.map(item =>({
+ ...item,
+ firmware_progress: 0
+ }))
data.forEach(e => {
e.duration_of_insurance = [e?.insure_start_time?.slice(0, 10) || '', e?.insure_expired_time?.slice(0, 10) || '']
})
diff --git a/src/views/device/components/DockControlPanel.vue b/src/views/device/components/DockControlPanel.vue
index 9a93c71..e51976b 100644
--- a/src/views/device/components/DockControlPanel.vue
+++ b/src/views/device/components/DockControlPanel.vue
@@ -233,7 +233,7 @@
watch(
() => Store.getters.deviceState,
value => {
- console.log(value, '测试')
+ // console.log(value, '测试')
// console.log('设备状态变化', value.deviceInfo[props.deviceInfo.child_sn])
if (props.sn && (value.currentSn === props.deviceInfo.child_sn || value.currentSn === props.deviceInfo.device_sn)) {
debugStatus.value = value.dockInfo[props.deviceInfo.device_sn]?.basic_osd?.mode_code === EDockModeCode.Remote_Debugging
diff --git a/src/views/job/components/SearchBox.vue b/src/views/job/components/SearchBox.vue
index 6f6e0af..83bba63 100644
--- a/src/views/job/components/SearchBox.vue
+++ b/src/views/job/components/SearchBox.vue
@@ -320,27 +320,47 @@
let timeListEnum = ['TODAY', 'CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR'];
let checked = ref('month');
+// 根据 周期 获取时间段
+function getDateRange(date_enum) {
+ // 设置对应的日期范围
+ switch (date_enum) {
+ case 'today':
+ dateRange.value = [dayjs().startOf('day').format(timeFormat), dayjs().endOf('day').format(timeFormat)]
+ break
+ case 'week':
+ dateRange.value = [dayjs().startOf('week').format(timeFormat), dayjs().format(timeFormat)]
+ break
+ case 'month':
+ dateRange.value = [dayjs().startOf('month').format(timeFormat), dayjs().format(timeFormat)]
+ break
+ case 'year':
+ dateRange.value = [dayjs().startOf('year').format(timeFormat), dayjs().format(timeFormat)]
+ break
+ }
+}
+
let timeClick = (item, index) => {
- if (checked.value === item){
+ if (checked.value === item) {
checked.value = null
searchForm.date_enum = undefined
- }else{
+ dateRange.value = []
+ } else {
checked.value = item
searchForm.date_enum = timeListEnum[index]
+ getDateRange(item)
}
- dateRange.value = []
handleSearch()
-};
+}
// 搜索
const handleSearch = () => {
if (!dateRange.value) {
dateRange.value = [];
}
- if (dateRange.value && dateRange.value.length) {
- // 有值时 清除 日 本周 本月 本年状态
- checked.value = '';
- searchForm.date_enum = '';
- }
+ // if (dateRange.value && dateRange.value.length) {
+ // // 有值时 清除 日 本周 本月 本年状态
+ // checked.value = '';
+ // searchForm.date_enum = '';
+ // }
// 提交至store
let params = {
...searchForm,
@@ -446,6 +466,8 @@
dateRange.value = dateArray;
const find = store.state.tags.bsTagList.find(i => i.path === '/job/jobstatistics')
find && (find.query = {})
+ } else {
+ getDateRange('month')
}
// 查询一次
handleSearch()
diff --git a/src/views/resource/components/spotDetails.vue b/src/views/resource/components/spotDetails.vue
index dd0f1eb..1a923a1 100644
--- a/src/views/resource/components/spotDetails.vue
+++ b/src/views/resource/components/spotDetails.vue
@@ -30,6 +30,7 @@
v-model="item.value"
placeholder="请选择图斑类型"
style="width: 102%"
+ :disabled="item.value ==='综合类'"
>
<el-option
v-for="opt in spotTypeOptions"
@@ -60,7 +61,14 @@
<div class="table-overlay">
<div class="table-content">
<div class="tabname">图斑列表</div>
- <el-table
+ <div class="tabBoxLoading"
+ v-loading="tableLoading"
+ element-loading-text="加载中..."
+ element-loading-background="rgba(0, 0, 0, 0.1)"
+ >
+ <el-table
+ v-if="tableData.length > 0"
+
ref="polygonTableEle"
highlight-current-row
:row-class-name="tableRowClassName"
@@ -108,6 +116,7 @@
</template>
</el-table-column>
</el-table>
+ </div>
</div>
</div>
@@ -160,6 +169,7 @@
const homeViewer = shallowRef(null);
let tbJwdList = [];
const loading = ref(false);
+const tableLoading = ref(true);
const tableData = ref([]);
const AlltableData = ref([]);
let total = ref(0);
@@ -260,9 +270,9 @@
const isInit = ref(true);
// 图斑管理表格
const getTableList = () => {
+ tableLoading.value = true;
const requestParams = {
patchesInfoId: props.detailid,
-
};
AlltableMapListApi(requestParams).then(res => {
tableData.value = res.data.data?.map(item => ({
@@ -277,6 +287,8 @@
} else {
entitiesAddSpot();
}
+ }).finally(() => {
+ tableLoading.value = false;
});
};
@@ -640,7 +652,7 @@
getspotManagementTableApi();
}, 0);
} else {
-
+ tableLoading.value = false;
tableData.value = [];
isEditing.value = false;
handleUpDateDrawState(false);
@@ -907,9 +919,15 @@
z-index: 9999 !important;
max-width: 300px;
}
+.tabBoxLoading {
+height: 100%;
+
+}
+
.el-table {
- flex: 1;
- overflow: auto;
+height: 98%;
+overflow: auto;
+
}
.btnGroups {
position: absolute;
--
Gitblit v1.9.3