From 11716d70cedf174055840f39bf2f1664acdfd30c Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 23 Apr 2025 16:02:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
public/img/bg/index_logo.png | 0
/dev/null | 0
src/views/tickets/ticket.vue | 128 ++++++++++++++++++++----------------------
src/views/system/dept.vue | 1
src/views/tickets/orderLog.vue | 6 +-
public/img/bg/mainLogo.png | 0
index.html | 2
src/views/base/region.vue | 2
src/page/index/logo.vue | 2
9 files changed, 68 insertions(+), 73 deletions(-)
diff --git a/index.html b/index.html
index 6de0d9e..2c07141 100644
--- a/index.html
+++ b/index.html
@@ -11,7 +11,7 @@
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="format-detection" content="telephone=no" />
- <link rel="icon" href="/favicon.png" />
+ <link rel="icon" href="/img/bg/index_logo.png" />
<link rel="stylesheet" href="/iconfont/index.css" />
<link rel="stylesheet" href="/iconfont/avue/iconfont.css" />
<link rel="stylesheet" href="/iconfont/saber/iconfont.css" />
diff --git a/public/img/bg/index_logo.png b/public/img/bg/index_logo.png
new file mode 100644
index 0000000..43577c7
--- /dev/null
+++ b/public/img/bg/index_logo.png
Binary files differ
diff --git a/public/img/bg/logo.png b/public/img/bg/logo.png
deleted file mode 100644
index b3e40cc..0000000
--- a/public/img/bg/logo.png
+++ /dev/null
Binary files differ
diff --git a/public/img/bg/mainLogo.png b/public/img/bg/mainLogo.png
new file mode 100644
index 0000000..0db1ec8
--- /dev/null
+++ b/public/img/bg/mainLogo.png
Binary files differ
diff --git a/src/page/index/logo.vue b/src/page/index/logo.vue
index e181c40..db62d5d 100644
--- a/src/page/index/logo.vue
+++ b/src/page/index/logo.vue
@@ -8,7 +8,7 @@
<transition-group name="fade">
<template v-if="getScreen(!isCollapse)">
<div style="display: flex; align-items: left; gap: 5px; margin: 8px 8px 10px 20px;">
- <img class="img" src="/img/logo.png" alt="" width="50%" height="50%" />
+ <img class="img" src="/img/bg/mainLogo.png" alt="" width="50%" height="50%" />
<!-- <span style="font-size: 20px;" key="1">
{{ this.parentDeptInfo.sysName }}
</span> -->
diff --git a/src/views/base/region.vue b/src/views/base/region.vue
index 32c8fcd..012b64e 100644
--- a/src/views/base/region.vue
+++ b/src/views/base/region.vue
@@ -95,7 +95,7 @@
nodeKey: 'id',
lazy: true,
treeLoad: function (node, resolve) {
- const parentCode = node.level === 0 ? '00' : node.data.id;
+ const parentCode = node.level === 0 ? '000000000000' : node.data.id;
getLazyTree(parentCode).then(res => {
resolve(
res.data.data.map(item => {
diff --git a/src/views/system/dept.vue b/src/views/system/dept.vue
index f253b58..e2f6e33 100644
--- a/src/views/system/dept.vue
+++ b/src/views/system/dept.vue
@@ -218,6 +218,7 @@
{
label: '行政区划',
prop: 'areaCode',
+ checkStrictly: true,
type: 'cascader',
labelWidth: 120,
props: {
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index f46fd3d..8590d70 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -197,7 +197,7 @@
</el-dialog>
<!-- 工单详情对话框 -->
- <el-dialog v-model="detailVisible" title="工单详情" width="70%" :close-on-click-modal="false" @close="resetForm" >
+ <el-dialog v-model="detailVisible" title="编辑工单" width="70%" :close-on-click-modal="false" @close="resetForm" >
<el-form :model="form" ref="testform" label-width="100px">
<div class="custom-steps-container">
<!-- 标题行 -->
@@ -287,8 +287,8 @@
<el-button type="danger"
v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
@click="submitForm(1)">发布</el-button>
- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
- @click="submitForm(0)">保存</el-button>
+ <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
+ @click="submitForm(0)">保存</el-button> -->
<el-button type="primary" v-if="form.status == 1 && userInfo.user_id != form.create_user"
@click="orderLogPass(form.id)">通过</el-button>
diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index 3e5e526..a0f80b5 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -156,6 +156,10 @@
<el-dialog v-model="detailVisible" title="工单详情" width="80%" append-to-body>
<div class="detail-container">
<div class="event-title-center">{{ currentDetail.orderName || '事件名称' }}</div>
+ <div v-if="totalTime" class="event-total-time"
+ style="text-align:center;color:#666;font-size:15px;margin-bottom:12px;">
+ 总耗时:{{ totalTime }}
+ </div>
<!-- 工单状态流程 -->
<div class="custom-steps-container">
<!-- 标题行 -->
@@ -276,7 +280,7 @@
style="font-size: 32px; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">+</span>
</el-upload>
<div class="el-upload__tip" style="margin-top: 12px;" v-if="hasProcessedAndOverBtnPermission()">
- 支持 jpg/png 格式图片,单张不超过 5MB
+ (上传照片即可完结工单,只能上传jpg、jpeg、png照片,且不超过5M)
</div>
</div>
<!-- 图片和地图部分 -->
@@ -286,13 +290,9 @@
<div class="media-box">
<div class="media-title">事件图片</div>
<div class="media-content">
- <el-image
- v-if="currentDetail.mediaUrl"
- :src="getThumbUrl(currentDetail.mediaUrl)"
- :preview-src-list="[currentDetail.mediaUrl]"
- fit="cover"
- style="width: 100%; height: 300px; cursor: pointer;"
- >
+ <el-image v-if="currentDetail.mediaUrl" :src="getThumbUrl(currentDetail.mediaUrl)"
+ :preview-src-list="[currentDetail.mediaUrl]" fit="contain"
+ style="width: 700px; height: 520px; cursor: pointer;">
<template #placeholder>
<div class="image-placeholder">
<i class="el-icon-picture-outline"></i>
@@ -316,13 +316,9 @@
<template v-if="currentDetail.status === 5">
<div class="media-title">工单处理图片</div>
<div class="media-content">
- <el-image
- v-if="currentDetail.updatePhotoUrl"
- :src="getThumbUrl(currentDetail.updatePhotoUrl)"
- :preview-src-list="[currentDetail.updatePhotoUrl]"
- fit="cover"
- style="width: 100%; height: 300px; cursor: pointer;"
- >
+ <el-image v-if="currentDetail.updatePhotoUrl" :src="getThumbUrl(currentDetail.updatePhotoUrl)"
+ :preview-src-list="[currentDetail.updatePhotoUrl]" fit="fill"
+ style="width: 700px; height: 520px; cursor: pointer;">
<template #placeholder>
<div class="image-placeholder">
<i class="el-icon-picture-outline"></i>
@@ -342,7 +338,7 @@
<template v-else>
<div class="media-title">地图标记事件点</div>
<div class="media-content">
- <div id="map-container" style="width: 100%; height: 300px; background: #f5f5f5;">
+ <div id="map-container" style="width: 700px; height: 520px; background: #f5f5f5;">
<map-container v-if='detailVisible' ref="MapContainer"></map-container>
</div>
</div>
@@ -356,23 +352,29 @@
<div class="dialog-footer">
<template v-if="currentDetail.status === 2">
<!-- 待审核 -->
- <el-button v-if="hasReviewBtnPermission()" type="primary" :loading="approveLoading" @click="approveTicket">通过</el-button>
- <el-button v-if="hasReviewBtnPermission()" type="danger" :loading="rejectLoading" @click="rejectTicket">不通过</el-button>
+ <el-button v-if="hasReviewBtnPermission()" type="primary" :loading="approveLoading"
+ @click="approveTicket">通过</el-button>
+ <el-button v-if="hasReviewBtnPermission()" type="danger" :loading="rejectLoading"
+ @click="rejectTicket">不通过</el-button>
<el-button @click="detailVisible = false">取消</el-button>
</template>
<template v-else-if="currentDetail.status === 0">
- <el-button v-if="hasProcessingBtnPermission()" type="primary" :loading="dispatchLoading" @click="approveAndDispatch">通过并派发</el-button>
- <el-button v-if="hasProcessingBtnPermission()" type="danger" :loading="rejectLoading" @click="rejectTicket">不通过</el-button>
+ <el-button v-if="hasProcessingBtnPermission()" type="primary" :loading="dispatchLoading"
+ @click="approveAndDispatch">通过并派发</el-button>
+ <el-button v-if="hasProcessingBtnPermission()" type="danger" :loading="rejectLoading"
+ @click="rejectTicket">不通过</el-button>
<el-button @click="detailVisible = false">取消</el-button>
</template>
<template v-if="currentDetail.status === 3">
<!-- 处理中 -->
- <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="completeLoading" @click="completeTicket">完成工单</el-button>
+ <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="completeLoading"
+ @click="completeTicket">完成工单</el-button>
<el-button @click="detailVisible = false">取消</el-button>
</template>
<template v-else-if="currentDetail.status === 4">
<!-- 已完成 -->
- <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="finalizeLoading" @click="finalizeTicket">完结工单</el-button>
+ <el-button v-if="hasProcessedAndOverBtnPermission()" type="primary" :loading="finalizeLoading"
+ @click="finalizeTicket">完结工单</el-button>
<el-button @click="detailVisible = false">取消</el-button>
</template>
<template v-else-if="currentDetail.status === 5">
@@ -404,7 +406,7 @@
</el-dialog>
<!-- 添加在其他 dialog 组件之后 -->
- <el-dialog v-model="reviewDialogVisible" title="批量审核" width="70%" append-to-body custom-class="review-dialog">
+ <el-dialog v-model="reviewDialogVisible" title="批量审核" width="70%" append-to-body custom-class="review-dialog" @close="cancleBatchReject">
<div class="review-container">
<div class="review-image-wrapper">
<!-- 修改左右箭头的显示条件 -->
@@ -413,15 +415,9 @@
</div>
<div class="review-image-container">
- <el-image
- v-if="currentReviewImage"
- :src="getThumbUrl(currentReviewImage)"
- fit="cover"
- :preview-src-list="getImageList()"
- :initial-index="currentImageIndex - 1"
- class="preview-image"
- style="cursor: pointer;"
- >
+ <el-image v-if="currentReviewImage" :src="getThumbUrl(currentReviewImage)" fit="fill"
+ :preview-src-list="getImageList()" :initial-index="currentImageIndex - 1" class="preview-image"
+ style="cursor: pointer;">
<template #error>
<div class="image-error">
<i class="el-icon-picture-outline"></i>
@@ -516,7 +512,7 @@
selection: true, // 添加多选功能
index: true, // 保留序号功能
indexLabel: '序号',
- indexWidth: 60,
+ indexWidth: 60,
menuWidth: 150,
searchMenuSpan: 6,
viewBtn: false,
@@ -621,6 +617,7 @@
reviewDialogVisible: false, // 新增:审核对话框可见性
currentReviewImage: '', // 新增:当前审核图片
currentImageIndex: 1, // 新增:当前图片索引
+ totalTime: '',
isShowInfo: false,
};
},
@@ -850,7 +847,6 @@
isPass: 0,
eventNum: currentItem.orderNumber,
eventName: currentItem.orderName,
- eventType: currentItem.type,
};
const response = await flowEvent(data);
@@ -1180,27 +1176,27 @@
},
async fetchTabCounts() {
- try {
- // 判断是否有部门筛选
- let params = {};
- if (this.filters.department) {
- params.deptId = this.filters.department;
- }
- const response = await getstatusCount(params);
- const { statusCount, totalCount, userCount } = response.data.data;
- this.tabs.forEach(tab => {
- if (tab.name === 'all') {
- tab.count = totalCount || 0; // 总工单数
- } else if (tab.name === 'myTickets') {
- tab.count = userCount || 0; // 我发起的工单数
- } else {
- tab.count = statusCount[String(tab.value)] || 0; // 根据状态值映射
+ try {
+ // 判断是否有部门筛选
+ let params = {};
+ if (this.filters.department) {
+ params.deptId = this.filters.department;
+ }
+ const response = await getstatusCount(params);
+ const { statusCount, totalCount, userCount } = response.data.data;
+ this.tabs.forEach(tab => {
+ if (tab.name === 'all') {
+ tab.count = totalCount || 0; // 总工单数
+ } else if (tab.name === 'myTickets') {
+ tab.count = userCount || 0; // 我发起的工单数
+ } else {
+ tab.count = statusCount[String(tab.value)] || 0; // 根据状态值映射
+ }
+ });
+ } catch (error) {
+ this.$message.error('获取 tab 数据失败');
}
- });
- } catch (error) {
- this.$message.error('获取 tab 数据失败');
- }
-},
+ },
handleTabChange(tab) {
this.activeTab = tab.props?.name || tab.name;
@@ -1300,6 +1296,8 @@
const steps = Array.isArray(stepResponse.data.data)
? stepResponse.data.data
: stepResponse.data.data?.steps || [];
+ const finishedStep = steps.find(s => String(s.status) === '5');
+ this.totalTime = finishedStep && finishedStep.total_time ? finishedStep.total_time : '';
if (this.activeTab !== 'myTickets') {
this.stepInfos = steps.map(step => ({
status: String(step.status),
@@ -1534,10 +1532,6 @@
status: this.currentDetail.status,
isPass: 0, // 0 表示通过
eventNum: this.currentDetail.orderNumber,
- eventName: this.currentDetail.orderName, // 工单名称
- eventType: this.currentDetail.type, // 工单类型
- departmentId: this.dispatchForm.department, // 派发部门 ID
- handlerId: this.dispatchForm.handler, // 处理人 ID
};
const file = this.currentDetail.file || null; // 如果没有文件,则为 null
@@ -1734,7 +1728,7 @@
try {
// 检查是否上传了图片
if (!this.currentDetail.photos || !this.currentDetail.photos.length) {
- this.$message.warning('请上传处理图片');
+ this.$message.warning('请上传事件处理照片,或飞行任务结束核验工单是否完结');
return;
}
@@ -1966,8 +1960,6 @@
status: currentItem.status,
isPass: 0,
eventNum: currentItem.orderNumber,
- eventName: currentItem.orderName,
- eventType: currentItem.type,
};
console.log('删除前:', this.selections)
const response = await flowEvent(data);
@@ -2005,8 +1997,11 @@
},
cancleBatchReject() {
- reviewDialogVisible = false;
- this.fetchTableData();
+ this.reviewDialogVisible = false;
+ this.selections = [];
+ this.currentImageIndex = 1;
+ this.currentReviewImage = '';
+ this.fetchTableData();
},
// 批量审核不通过
async handleBatchReject() {
@@ -2022,7 +2017,7 @@
return;
}
- await this.$confirm('确认驳回当前工单?', '提示', {
+ await this.$confirm('确认该工单审核不通过?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@@ -2034,7 +2029,6 @@
isPass: 1,
eventNum: currentItem.orderNumber,
eventName: currentItem.orderName,
- eventType: currentItem.type,
};
const response = await flowEvent(data);
@@ -2292,7 +2286,7 @@
}
.dialog-footer {
- text-align: right;
+ text-align: center;
padding-top: 16px;
border-top: 1px solid #ebeef5;
@@ -2468,7 +2462,7 @@
.media-content {
position: relative;
- height: 300px;
+ // height: 300px;
}
.image-placeholder,
--
Gitblit v1.9.3