From 24ed311c46eaaebdfa6f226998306093d923cb56 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 21 Jul 2025 13:56:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
src/views/job/components/SearchBox.vue | 41 ++++++----
src/views/job/components/TaskAlgorithmBusiness.vue | 9 ++
src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue | 71 ++++++++---------
src/views/tickets/ticket.vue | 8 +-
src/views/job/components/TaskTop/TaskIndustry.vue | 12 +-
src/views/wel/components/flyratio.vue | 6
src/views/wel/components/proportionStatic.vue | 6
src/views/wel/components/flightStatistics.vue | 81 +++++++++----------
src/views/wel/components/taskOutcome.vue | 6
9 files changed, 122 insertions(+), 118 deletions(-)
diff --git a/src/views/job/components/SearchBox.vue b/src/views/job/components/SearchBox.vue
index 9a53df5..3e5d3db 100644
--- a/src/views/job/components/SearchBox.vue
+++ b/src/views/job/components/SearchBox.vue
@@ -57,9 +57,21 @@
</div>
</div>
</el-form-item>
+ <div class="more" v-if="isExpand" @click="toggleExpand">收起</div>
+ <div class="more" v-else @click="toggleExpand">更多</div>
+ <div class="search-btn" :style="{ bottom: isExpand ? '5px' : '-3px' }">
+ <div class="btn clear" @click="handleReset">
+ <img src="@/assets/images/task/clear.png" />重置
+ </div>
+ <div class="btn search" @click="handleSearch">
+ <img src="@/assets/images/task/search.png" />搜索
+ </div>
+ <!-- <div class="btn add" @click="addTask"><img src="@/assets/images/task/add.png"/>新增</div> -->
+ </div>
<el-form-item label="任务算法:" v-if="isExpand" class="taskAlgorithm">
<TaskAlgorithmBusiness
- :setWidth="222"
+ ref="algorithmRef"
+ :setWidth="160"
:showAlgorithm="true"
@algorithmChange="algorithmChange"
/>
@@ -108,17 +120,6 @@
<el-option label="临时任务" :value="0" />
</el-select>
</el-form-item>
- <div class="more" v-if="isExpand" @click="toggleExpand">收起</div>
- <div class="more" v-else @click="toggleExpand">更多</div>
- <div class="search-btn" :style="{ bottom: isExpand ? '5px' : '-3px' }">
- <div class="btn search" @click="handleSearch">
- <img src="@/assets/images/task/search.png" />搜索
- </div>
- <div class="btn clear" @click="handleReset">
- <img src="@/assets/images/task/clear.png" />清空
- </div>
- <!-- <div class="btn add" @click="addTask"><img src="@/assets/images/task/add.png"/>新增</div> -->
- </div>
</div>
</el-form>
</div>
@@ -136,6 +137,8 @@
const store = useStore();
const userAreaCode = computed(() => store.getters.userInfo.detail.areaCode);
const selectedAreaCode = computed(() => store.state.user.selectedAreaCode);
+
+const algorithmRef = ref(null)
const isExpand = ref(false);
const toggleExpand = () => {
isExpand.value = !isExpand.value;
@@ -282,6 +285,8 @@
searchForm.date_enum = 'TODAY';
searchForm.area_code = userAreaCode.value;
checked.value = 'today';
+ signDevice_sn.value = ''
+ algorithmRef.value?.clear()
handleNodeClick({ id: userAreaCode.value });
handleSearch();
};
@@ -360,7 +365,7 @@
display: flex;
flex-wrap: wrap;
align-items: center;
- gap: 20px 12px; // 设置行间距和列间距
+ gap: 20px 15px; // 设置行间距和列间距
.more {
cursor: pointer;
@@ -369,16 +374,17 @@
color: #1c5cff;
line-height: 32px;
font-size: 16px;
+ margin: 0 28px;
}
.search-btn {
- position: absolute;
- right: 0;
+ // position: absolute;
+ // right: 0;
display: flex;
justify-content: space-between;
cursor: pointer;
- font-size: 14px;
-
+ font-size: 14px;
+
.btn {
width: 80px;
height: 32px;
@@ -387,6 +393,7 @@
display: flex;
justify-content: center;
align-items: center;
+ // margin-left: px;
img {
width: 14px;
height: 14px;
diff --git a/src/views/job/components/TaskAlgorithmBusiness.vue b/src/views/job/components/TaskAlgorithmBusiness.vue
index c5c0a9a..8e9b992 100644
--- a/src/views/job/components/TaskAlgorithmBusiness.vue
+++ b/src/views/job/components/TaskAlgorithmBusiness.vue
@@ -77,6 +77,15 @@
emit('businessChange', value)
}
+const clear = () => {
+ ai_types.value = [] // 清空算法选择
+ handleAlgorithmChange(ai_types.value)
+}
+
+defineExpose({
+ clear,
+})
+
onMounted(() => {
requestDictionary()
})
diff --git a/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue b/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
index 4e96fd7..5b3a96a 100644
--- a/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
+++ b/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
@@ -17,6 +17,7 @@
<el-table-column prop="ai_type_str" label="关联算法" show-overflow-tooltip align="center" />
<el-table-column label="任务状态" align="center">
<template #default="scope">
+ <div class="base_f_c_c">
<span :style="{
color:
scope.row.status === 1
@@ -33,6 +34,16 @@
}">
{{ scope.row.status ? getStatusText(scope.row.status) : '' }}
</span>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.reason"
+ placement="top"
+ popper-class="reasonNotFly ztzf-tooltip-box1"
+ >
+ <el-icon v-if="scope.row.status === 5 && scope.row.reason" color="#FF4848"><QuestionFilled /></el-icon>
+ </el-tooltip>
+ </div>
</template>
</el-table-column>
<el-table-column prop="is_circle_job" label="任务类型" align="center">
@@ -50,43 +61,25 @@
<el-table-column prop="creator_name" label="创建人" align="center" show-overflow-tooltip />
<el-table-column label="操作" width="200" align="center">
<template #default="scope">
- <div
- v-if="scope.row.status === 2"
- class="btnItem"
- link
- type="primary"
- @click="turnBack(scope.row)"
- >
+ <!-- <el-button type="text" @click="rejectDetail(row.id)">驳回原因</el-button> -->
+ <el-button icon="el-icon-back" v-if="scope.row.status === 2" type="text"
+ @click="turnBack(scope.row)">
返航
- </div>
- <div
- v-if="scope.row.status === 1"
- class="btnItem"
- link
- type="primary"
- @click="cancelTask(scope.row)"
- >
+ </el-button>
+ <el-button icon="el-icon-close" v-if="scope.row.status === 1" type="text"
+ @click="cancelTask(scope.row)">
取消任务
- </div>
- <div class="btnItem" link type="primary" @click="handleDetail(scope.row)">查看</div>
+ </el-button>
+ <el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination">
- <el-pagination
- class="ztzf-pagination"
- popper-class="custom-pagination-dropdown"
- background
- :page-sizes="[10, 20, 30, 40,50,100]"
- :size="size"
- v-model:current-page="jobListParams.current"
- v-model:page-size="jobListParams.size"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- />
+ <el-pagination class="ztzf-pagination" popper-class="custom-pagination-dropdown" background
+ :page-sizes="[10, 20, 30, 40, 50, 100]" :size="size" v-model:current-page="jobListParams.current"
+ v-model:page-size="jobListParams.size" layout="total, sizes, prev, pager, next, jumper" :total="total"
+ @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</div>
<!-- 添加任务 -->
@@ -113,7 +106,7 @@
import DeviceJobDetails from '../DeviceJobDetails.vue'
import CancelTaskDialog from '../CancelTaskDialog.vue'
import { useStore } from 'vuex'
-import { cloneDeep } from 'lodash';
+import { cloneDeep } from 'lodash'
const store = useStore()
const singleUavHome = computed(() => store.state.home.singleUavHome)
const jobListParams = reactive({
@@ -130,14 +123,14 @@
// 获取任务列表
const getJobList = () => {
- const apiParams = {
- ...cloneDeep(jobListParams),
- searchParams: {
- ...cloneDeep(jobListParams.searchParams),
- status_list: jobListParams.searchParams.status || undefined,
- status: undefined,
- },
- }
+ const apiParams = {
+ ...cloneDeep(jobListParams),
+ searchParams: {
+ ...cloneDeep(jobListParams.searchParams),
+ status_list: jobListParams.searchParams.status || undefined,
+ status: undefined,
+ },
+ }
jobList(apiParams).then(res => {
if (res.data.code !== 0) return
jobListData.value = res.data.data.records
diff --git a/src/views/job/components/TaskTop/TaskIndustry.vue b/src/views/job/components/TaskTop/TaskIndustry.vue
index 3d36176..bd2ae82 100644
--- a/src/views/job/components/TaskTop/TaskIndustry.vue
+++ b/src/views/job/components/TaskTop/TaskIndustry.vue
@@ -39,24 +39,24 @@
name: '机巢事件统计',
type: 'pie',
// roseType: 'radius',
- radius: ['40%', '70%'],
+ radius: ['36%', '60%'],
// center: ['50%', '45%'],
// radius: '70%', // 设置饼图的半径
- center: ['50%', '50%'], // 调整饼图位置
+ center: ['50%', '36%'], // 调整饼图位置
data: [],
label: {
show: true,
position: 'outside',
formatter: '{c}',
fontSize: 12,
- color: '#fff',
+ color: '#000',
},
labelLine: {
show: true,
- length: 5,
- length2: 8,
+ length: 10,
+ length2: 10,
lineStyle: {
- color: '#fff',
+ color: '#000',
},
},
},
diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index 0e388df..7c6466e 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -1457,10 +1457,10 @@
if (status === -1 || status === '-1') return ''
// 状态颜色映射
const colorMap = {
- 0: '#ffb6b6', // 待处理-淡红
- 3: '#e57373', // 处理中-更淡红
- 2: '#faad14', // 待审核-橙色
- 4: '#a0cfff', // 已完成-淡蓝
+ 0: '#FF7411', // 待处理-淡红
+ 3: '#FFC300', // 处理中-更淡红
+ 2: '#FF472F', // 待审核-橙色
+ 4: '#0291A1', // 已完成-淡蓝
}
return colorMap[String(status)] || ''
},
diff --git a/src/views/wel/components/flightStatistics.vue b/src/views/wel/components/flightStatistics.vue
index 16768fd..c6fe262 100644
--- a/src/views/wel/components/flightStatistics.vue
+++ b/src/views/wel/components/flightStatistics.vue
@@ -67,21 +67,16 @@
const unitMap = {
飞行时长: '小时',
飞行里程: '公里',
- // 任务成果: '个',
+
};
const flyTypeList = ref([
{ name: '飞行时长', value: 0, img: flyImg1, key: 'hour_count' },
{ name: '飞行里程', value: 0, img: flyImg2, key: 'flight_mileage' },
- // { name: '任务成果', value: 0, img: flyImg3 },
+
]);
// 飞行统计
const getFlyList = () => {
- // getFly(params.value).then(res => {
- // flyTypeList.value = flyTypeList.value.map(item => ({
- // ...item,
- // value: res.data.data[keyMapping[item.name]] || 0,
- // }));
- // });
+
tongjiNestApi(flyparams.value).then(res => {
flyTypeList.value = flyTypeList.value.map(item => ({
@@ -94,18 +89,19 @@
const getFlyTimeList = () => {
getFlyTime(params.value).then(res => {
const resList = res?.data?.data || [];
+ console.log('飞行',resList);
+
lineCharts(resList);
});
};
const refresh = () => {
- params.value.date_enum = 'CURRENT_YEAR';
- checked.value = 'CURRENT_YEAR';
- dateSelect.value = 'CURRENT_YEAR';
+
getFlyList();
getFlyTimeList();
+
+
};
let timeClick = (item, index) => {
-
checked.value = item;
params.value.date_enum = item;
dateSelect.value = item;
@@ -187,41 +183,40 @@
},
yAxis: [
{
- type: 'log',
- name: '单位:小时',
+ type: 'value',
+ name: '单位:小时',
+ nameTextStyle: {
+ color: '#383838',
+ fontSize: '1.2rem',
+ },
+ axisLine: {
+ show: false,
+ lineStyle: {
+ color: '#cdd5e2',
+ },
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ type: 'dashed',
+ color: '#cdd5e2',
+ width: 1,
+ opacity: 0.5,
+ },
+ },
+ axisLabel: {
+ color: '#666666',
+ }
+ },
+ {
+ type: 'value',
+ name: '单位:公里',
nameTextStyle: {
color: '#383838',
fontSize: '1.2rem',
},
- min: 1,
- logBase: 3,
- axisLine: {
- show: false,
- lineStyle: {
- color: '#cdd5e2',
- },
- },
- splitLine: {
- show: true,
- lineStyle: {
- type: 'dashed',
- color: '#cdd5e2',
- width: 1,
- opacity: 0.5,
- },
- },
- axisLabel: {
- color: '#666666', // 直接配置颜色
- },
- },
- {
- type: 'log',
- name: '单位:公里',
- nameTextStyle: {
- color: '#383838',
- },
- min: 1,
- logBase: 3,
+
+
axisLine: {
show: false,
lineStyle: {
diff --git a/src/views/wel/components/flyratio.vue b/src/views/wel/components/flyratio.vue
index d9dff52..1edbfea 100644
--- a/src/views/wel/components/flyratio.vue
+++ b/src/views/wel/components/flyratio.vue
@@ -52,9 +52,9 @@
},
});
const refresh = () => {
- params.value.date_enum = 'CURRENT_YEAR';
- checked.value = 'CURRENT_YEAR';
- dateSelect.value = 'CURRENT_YEAR';
+ // params.value.date_enum = 'CURRENT_YEAR';
+ // checked.value = 'CURRENT_YEAR';
+ // dateSelect.value = 'CURRENT_YEAR';
getIndustryJobNumPieChart();
};
let timeClick = (item, index) => {
diff --git a/src/views/wel/components/proportionStatic.vue b/src/views/wel/components/proportionStatic.vue
index f83bd7e..41f2d56 100644
--- a/src/views/wel/components/proportionStatic.vue
+++ b/src/views/wel/components/proportionStatic.vue
@@ -84,9 +84,9 @@
});
};
const refresh = () => {
- params.value.date_enum = 'CURRENT_YEAR';
- checked.value = 'CURRENT_YEAR';
- dateSelect.value = 'CURRENT_YEAR';
+ // params.value.date_enum = 'CURRENT_YEAR';
+ // checked.value = 'CURRENT_YEAR';
+ // dateSelect.value = 'CURRENT_YEAR';
getTypeData();
};
diff --git a/src/views/wel/components/taskOutcome.vue b/src/views/wel/components/taskOutcome.vue
index ea24d7f..e8186e6 100644
--- a/src/views/wel/components/taskOutcome.vue
+++ b/src/views/wel/components/taskOutcome.vue
@@ -40,9 +40,9 @@
const totalNum = ref(0)
const dateSelect = ref('CURRENT_YEAR');
const refresh = () => {
- params.value.dateEnum = 'CURRENT_YEAR';
- checked.value = 'CURRENT_YEAR';
- dateSelect.value = 'CURRENT_YEAR';
+ // params.value.dateEnum = 'CURRENT_YEAR';
+ // checked.value = 'CURRENT_YEAR';
+ // dateSelect.value = 'CURRENT_YEAR';
getBarChartData(params.value);
};
let timeClick = (item, index) => {
--
Gitblit v1.9.3