From 7ddb7f6d597bf264a294393008d18ca89e7084da Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 28 Jan 2026 18:47:28 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
---
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue | 58 ++++
applications/task-work-order/src/views/orderView/flyingHand/index.vue | 10
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue | 217 +++++++++++++------
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue | 65 +++++
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue | 3
applications/drone-command/src/views/basicManage/deviceStock/fwDeviceTrackApi.js | 9
applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue | 11
applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue | 2
uniapps/work-wx/src/subPackages/flightApplication/add.vue | 16 +
applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue | 9
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue | 64 +----
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/inspectionRequestApi.js | 11
applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue | 6
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue | 2
applications/task-work-order/src/views/orderView/organizational/zoningManagement/FormDiaLog.vue | 4
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue | 4
applications/task-work-order/src/styles/tags.scss | 4
applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js | 37 +++
applications/drone-command/src/views/basicManage/deviceStock/index.vue | 31 ++
applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue | 2
applications/task-work-order/src/styles/common/cockpit.scss | 18 +
applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue | 6
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue | 32 ++
uniapps/work-app/src/subPackages/workDetail/index.vue | 15
24 files changed, 467 insertions(+), 169 deletions(-)
diff --git a/applications/drone-command/src/views/basicManage/deviceStock/fwDeviceTrackApi.js b/applications/drone-command/src/views/basicManage/deviceStock/fwDeviceTrackApi.js
index 4669bb1..1c03ad2 100644
--- a/applications/drone-command/src/views/basicManage/deviceStock/fwDeviceTrackApi.js
+++ b/applications/drone-command/src/views/basicManage/deviceStock/fwDeviceTrackApi.js
@@ -35,3 +35,12 @@
params,
})
}
+
+// 更新出库状态
+export const fwDeviceUpdateTrackStatusApi = params => {
+ return request({
+ url: `/drone-fw/device/fwDevice/updateTrackStatus`,
+ method: 'post',
+ params,
+ })
+}
diff --git a/applications/drone-command/src/views/basicManage/deviceStock/index.vue b/applications/drone-command/src/views/basicManage/deviceStock/index.vue
index e635bdd..b87baa7 100644
--- a/applications/drone-command/src/views/basicManage/deviceStock/index.vue
+++ b/applications/drone-command/src/views/basicManage/deviceStock/index.vue
@@ -86,11 +86,17 @@
{{ getDictLabel(row.status, dictObj.deviceStatus) }}
</template>
</el-table-column>
+ <el-table-column prop="yxzt" show-overflow-tooltip width="116" label="出库状态">
+ <template v-slot="{ row }">
+ {{ getDictLabel(row.trackStatus, trackStatusOptions) }}
+ </template>
+ </el-table-column>
<el-table-column label="操作" class-name="operation-btns">
<template v-slot="{ row }">
<el-link @click="handleView(row)">查看</el-link>
<el-link @click="handleEdit(row)">编辑</el-link>
- <el-link @click="outbound(row)">出库</el-link>
+ <el-link v-if="row.trackStatus === 0" @click="outbound(row)">出库</el-link>
+ <el-link v-else @click="returnDevice(row)">归还</el-link>
<el-link @click="scrap(row)" v-if="row.status !== 3">报废</el-link>
<!-- <el-link @click="handleDelete(row)" type="danger">删除</el-link>-->
</template>
@@ -121,6 +127,7 @@
import { onMounted, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { exportFwDeviceApi, fwDevicePageApi, fwDeviceRemoveApi } from '@/views/basicManage/deviceStock/fwDevice'
+import { fwDeviceUpdateTrackStatusApi } from '@/views/basicManage/deviceStock/fwDeviceTrackApi'
import FormDiaLog from './FormDiaLog.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { getDeptTree } from '@/api/system/dept'
@@ -162,6 +169,12 @@
provide('dictObj', dictObj)
provide('deptTree', deptTree)
+// 出库状态
+const trackStatusOptions = ref([
+ { dictKey: 0, dictValue: '未出库' },
+ { dictKey: 1, dictValue: '已出库' }
+])
+
// 获取列表
async function getList() {
const range = dateRangeFormat(dateRange.value)
@@ -204,6 +217,22 @@
outboundDialogRef.value?.open({ mode: 'edit', row: { ...row } })
}
+// 归还
+async function returnDevice(row) {
+ await ElMessageBox.confirm(`确认归还吗?`, '提示', {
+ type: 'warning',
+ customClass: 'command-page-view-message-box',
+ confirmButtonClass: 'command-message-box-confirm',
+ cancelButtonClass: 'command-message-box-cancel',
+ })
+ const payload = {
+ deviceId: row.id
+ }
+ await fwDeviceUpdateTrackStatusApi(payload)
+ ElMessage.success('归还成功')
+ getList()
+}
+
function scrap(row) {
scrapDialogRef.value?.open({ mode: 'edit', row: { ...row } })
}
diff --git a/applications/task-work-order/src/styles/common/cockpit.scss b/applications/task-work-order/src/styles/common/cockpit.scss
index 3c10b27..f5673b5 100644
--- a/applications/task-work-order/src/styles/common/cockpit.scss
+++ b/applications/task-work-order/src/styles/common/cockpit.scss
@@ -475,7 +475,7 @@
.detail-container {
display: flex;
justify-content: space-between;
- height: 680px;
+ max-height: 680px;
.detail-left {
margin-right: 20px;
@@ -519,6 +519,7 @@
.label {
display: inline-block;
width: 88px;
+ flex-shrink: 0;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 14px;
@@ -531,6 +532,8 @@
.val {
margin-left: 12px;
+ flex: 1;
+ overflow: hidden;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 14px;
@@ -539,6 +542,13 @@
text-align: left;
font-style: normal;
text-transform: none;
+ }
+
+ .val-long {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ cursor: pointer;
}
}
}
@@ -1048,14 +1058,14 @@
th.el-table__cell {
height: 40px;
- border-bottom: 1px solid #DBDFF1 !important;
+ border-bottom: 1px solid #E5E6EB !important;
.cell {
padding: 0 0 0 16px;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 14px;
- color: #9292C1;
+ color: #86909C;
text-align: left;
font-style: normal;
text-transform: none;
@@ -1071,7 +1081,7 @@
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 14px;
- color: #383874;
+ color: #4E5969;
text-align: left;
font-style: normal;
text-transform: none;
diff --git a/applications/task-work-order/src/styles/tags.scss b/applications/task-work-order/src/styles/tags.scss
index 0495822..d18a0cb 100644
--- a/applications/task-work-order/src/styles/tags.scss
+++ b/applications/task-work-order/src/styles/tags.scss
@@ -39,7 +39,7 @@
&:active {
color: #FFFFFF !important;
- background: #5B6BFF !important;
+ background: #4C34FF !important;
span {
color: #fff !important;
@@ -50,7 +50,7 @@
//padding: 0 !important;
//padding-left: 20px !important;
color: #FFFFFF !important;
- background: #5B6BFF !important;
+ background: #4C34FF !important;
.is-icon-close {
//margin: 0 10px;
diff --git a/applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js b/applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js
new file mode 100644
index 0000000..a11b5ff
--- /dev/null
+++ b/applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js
@@ -0,0 +1,37 @@
+import request from '@/axios'
+
+// 设备分页查询
+export function getEquipmentPage(params) {
+ return request({
+ url: '/drone-gd/workOrder/gdManageDevice/page',
+ method: 'get',
+ params
+ // params: { descs: 'create_time', ...params },
+ })
+}
+
+// 设备提交
+export function submitExternalEquipment(data) {
+ return request({
+ url: '/drone-gd/workOrder/gdManageDevice/submitExternal',
+ method: 'post',
+ data
+ })
+}
+
+// 设备删除
+export function removeEquipment(data) {
+ return request({
+ url: `/drone-gd/workOrder/gdManageDevice/remove?ids=${data.ids}`,
+ method: 'post',
+ })
+}
+
+// 设备详情查询
+export function getEquipmentDetail(params) {
+ return request({
+ url: '/drone-gd/workOrder/gdManageDevice/detail',
+ method: 'get',
+ params
+ })
+}
diff --git a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
index d0cc686..f8988f7 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -7,12 +7,57 @@
destroy-on-close
:close-on-click-modal="false"
>
+ <el-row class="detail-row-view" v-if="dialogType === 'view'">
+ <el-col :span="12">
+ <div class="label">飞手姓名</div>
+ <div class="val">{{ formData.flyerName }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">飞手电话</div>
+ <div class="val">{{ formData.flyerPhone }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">飞行时长</div>
+ <div class="val">{{ formData.flightHours }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">技术特长</div>
+ <div class="val">{{ getDictLabel(formData.technicalStrength, dictObj.technicalStrength) }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">擅长机型</div>
+ <div class="val">{{ getDictLabel(formData.skilledUavType, dictObj.skilledUavType) }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">擅长任务类型</div>
+ <div class="val">{{ getDictLabel(formData.skilledTaskType, dictObj.skilledTaskType) }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">项目经验</div>
+ <div class="val">{{ formData.projectExperience }}</div>
+ </el-col>
+ <el-col :span="12">
+ <div class="label">飞手证书</div>
+ <div class="val">
+ <el-image
+ v-for="(item, index) in formData.certification"
+ :key="index"
+ :src="item"
+ :preview-src-list="formData.certification"
+ class="gd-image"
+ style="width: 100px; height: 100px; margin-right: 10px;"
+ />
+ </div>
+ </el-col>
+ </el-row>
+
<el-form
ref="formRef"
:model="formData"
:rules="rules"
class="gd-form"
label-width="160px"
+ v-else
>
<el-row>
<el-col :span="12">
@@ -124,7 +169,7 @@
/>
</el-form-item>
</el-col>
- <el-col :span="24" v-if="dialogType === 'view'">
+ <!-- <el-col :span="24" v-if="dialogType === 'view'">
<el-form-item label="飞手证书" prop="certification">
<el-image
v-for="(item, index) in formData.certification"
@@ -135,11 +180,11 @@
style="width: 100px; height: 100px; margin-right: 10px;"
/>
</el-form-item>
- </el-col>
+ </el-col> -->
</el-row>
</el-form>
<template #footer>
- <el-button color="#F2F3F5" @click="handleClose">取消</el-button>
+ <el-button v-if="dialogType !== 'view'" color="#F2F3F5" @click="handleClose">取消</el-button>
<el-button
v-if="dialogType !== 'view'"
type="primary"
@@ -155,6 +200,7 @@
import { ref, reactive, computed, watch, inject } from 'vue'
import { submitFlyingHand } from './flyingHandApi'
import { ElMessage } from 'element-plus'
+import { getDictLabel } from '@ztzf/utils'
import { fieldRules } from '@ztzf/utils'
@@ -188,11 +234,11 @@
const dialogTitle = computed(() => {
switch (props.dialogType) {
case 'add':
- return '添加飞手信息'
+ return '新增'
case 'edit':
- return '编辑飞手信息'
+ return '编辑'
case 'view':
- return '查看飞手信息'
+ return '查看'
default:
return '飞手信息'
}
diff --git a/applications/task-work-order/src/views/orderView/flyingHand/index.vue b/applications/task-work-order/src/views/orderView/flyingHand/index.vue
index 46f1a72..686f871 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/index.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/index.vue
@@ -3,7 +3,13 @@
<basic-container>
<el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form">
<el-form-item label="飞手姓名" prop="flyerName">
- <el-select
+ <el-input
+ class="gd-input gray"
+ v-model="searchParams.flyerName"
+ placeholder="请输入飞手姓名"
+ clearable
+ />
+ <!-- <el-select
class="gd-select gray"
popper-class="gd-select-popper"
v-model="searchParams.flyerName"
@@ -15,7 +21,7 @@
:label="item.name"
:value="item.id"
/>
- </el-select>
+ </el-select> -->
</el-form-item>
<el-form-item label="擅长机型" prop="skilledUavType">
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
index d0f5699..7757fad 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/appInnovation/index.vue
@@ -64,7 +64,7 @@
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
<!-- <el-link type="primary" @click="openForm('edit', row)">编辑</el-link>-->
- <el-link type="primary" @click="handleDelete(row)" v-if="!['1', '2'].includes(row.innovationStatus)">删除</el-link>
+ <el-link type="primary" @click="handleDelete(row)" v-if="!['1', '2'].includes(row.innovationStatus) && row.isTheSameDepartment">删除</el-link>
</template>
</el-table-column>
</el-table>
@@ -96,7 +96,9 @@
gdApplicationInnovationPageApi,
gdApplicationInnovationRemoveApi,
} from '@/views/orderView/orderDataManage/appInnovation/appInnovationApi'
-
+import { useStore } from 'vuex'
+const store = useStore()
+const userDepartment = store.state.user.userInfo?.dept_id
// 初始化查询参数
const initSearchParams = () => ({
caseName: '', // 案例名称
@@ -128,6 +130,9 @@
loading.value = true
try {
const res = await gdApplicationInnovationPageApi(searchParams.value)
+ res?.data?.data?.records.forEach(item => {
+ item.isTheSameDepartment = String(item.createDept) === String(userDepartment)
+ })
list.value = res?.data?.data?.records ?? []
total.value = res?.data?.data?.total ?? 0
} finally {
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue
index c5d77b1..6d685f0 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/FormDiaLog.vue
@@ -7,7 +7,7 @@
destroy-on-close
:close-on-click-modal="false"
>
- <div class="detail-container" v-if="dialogReadonly">
+ <div class="detail-container detail-container1" v-if="dialogReadonly">
<el-row class="detail-row-view">
<el-col :span="12">
<div class="label">标题</div>
@@ -50,7 +50,7 @@
<div class="val">{{ formData.reviewOpinion }}</div>
</el-col>
</el-row>
- <div v-if=" detailObjectionStatus === '1'">
+ <div v-if=" detailObjectionStatus === '1' && !requesterProvider">
<div class="detail-title" :style="{ marginTop:pxToRem(20)}">异议反馈</div>
<el-form ref="feedbackFormRef" class="gd-dialog-form" :model="feedbackFormData"
:rules="feedbackRules" label-width="140px">
@@ -153,7 +153,6 @@
<div class="upload-container">
<el-upload
:http-request="handleHttpRequest"
- :limit="3"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
:on-remove="handleFileRemove"
@@ -166,7 +165,7 @@
<el-button type="primary">选择文件</el-button>
</template>
<template #tip>
- <div class="el-upload__tip">支持上传 (.zip/.rar/.7z/.tar/.gz)格式文件</div>
+ <div class="el-upload__tip">支持上传 (.zip/.rar/.7z/.tar/.gz)格式</div>
</template>
</el-upload>
</div>
@@ -178,18 +177,18 @@
<template #footer>
<template v-if="!dialogReadonly">
<el-button
- color="#F2F3F5"
+ color="#F2F3F5"
- v-if="!dialogReadonly"
- :loading="submitting"
- :disabled="submitting"
- @click="handleSubmit"
- >
- 保存
- </el-button>
- <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="handleApply">申请</el-button>
+ v-if="!dialogReadonly"
+ :loading="submitting || uploading"
+ :disabled="submitting || uploading"
+ @click="handleSubmit"
+ >
+ 保存
+ </el-button>
+ <el-button class="" color="#4C34FF" :loading="submitting || uploading" :disabled="submitting || uploading" @click="handleApply">申请</el-button>
</template>
- <template v-if="dialogReadonly && detailObjectionStatus === '1'">
+ <template v-if="dialogReadonly && detailObjectionStatus === '1' && !requesterProvider">
<el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="visible = false">取消</el-button>
<el-button
@@ -233,8 +232,12 @@
} from '@/views/orderView/orderDataManage/dataObjection/dataObjectionApi'
import { putFileAttachApi } from '@/views/orderView/orderDataManage/supplyAdd/supplyAddApi'
import { pxToRem } from '@/utils/rem'
+import { useStore } from 'vuex'
+const store = useStore()
+const requesterProvider = computed(() => store.state.user.userInfo?.role_id === '2014158512610869250')
// 初始化表单数据
const initForm = () => ({
+ id:'',
title: '',
objectionType: '',
submitter: '',
@@ -278,6 +281,7 @@
const fileList = ref([]) // 上传文件列表
const uploadedFiles = ref([]) // 已上传文件列表
const attachmentDetailsList = ref([])
+const uploading = ref(false) // 文件上传中状态
// 表单校验规则
const rules = {
@@ -288,6 +292,8 @@
catalogResourceName: fieldRules(true),
objectionDesc: fieldRules(true),
objectionBasis: fieldRules(true),
+ // attachId: dialogMode.value === 'add' ? fieldRules(true) : fieldRules(false)
+
}
// 异议反馈表单校验规则
@@ -298,6 +304,7 @@
// 自定义上传请求
const handleHttpRequest = async options => {
+ uploading.value = true
try {
const formDataObj = new FormData()
formDataObj.append('file', options.file)
@@ -310,16 +317,27 @@
} catch (error) {
options.onError(error)
console.error('文件上传失败:', error)
+ } finally {
+ uploading.value = false
}
}
// 文件移除
+// const handleFileRemove = (file, fileListVal) => {
+// uploadedFiles.value = fileListVal
+// }
const handleFileRemove = (file, fileListVal) => {
- if (file.response && file.response.attachId) {
- uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
- }
+ // 从展示列表中移除
+ fileList.value = fileListVal
+
+ // 从已上传列表中移除
+ const index = uploadedFiles.value.findIndex(item =>
+ item.attachId === file.attachId || item.name === file.name
+ )
+ if (index > -1) {
+ uploadedFiles.value.splice(index, 1)
+ }
}
-
// 上传前验证
const beforeFileUpload = file => {
const allowedExtensions = ['.zip', '.rar', '.7z', '.tar', '.gz']
@@ -328,11 +346,11 @@
ElMessage.error('只能上传压缩文件格式:.zip/.rar/.7z/.tar/.gz')
return false
}
- const maxSize = 100 * 1024 * 1024 // 100MB
- if (file.size > maxSize) {
- ElMessage.error('文件大小不能超过100MB')
- return false
- }
+ // const maxSize = 100 * 1024 * 1024 // 100MB
+ // if (file.size > maxSize) {
+ // ElMessage.error('文件大小不能超过100MB')
+ // return false
+ // }
return true
}
@@ -357,35 +375,53 @@
// 提交数据的通用函数
async function submitForm(objectionStatus) {
- const isValid = await formRef.value?.validate().catch(() => false)
- if (!isValid) return
- submitting.value = true
- try {
- // 构建符合接口要求的提交数据
- const submitData = {
- title: formData.value.title,
- objectionType: formData.value.objectionType,
- submitter: formData.value.submitter,
- submitterContact: formData.value.submitterContact,
- catalogResourceName: formData.value.catalogResourceName,
- objectionDesc: formData.value.objectionDesc,
- objectionBasis: formData.value.objectionBasis,
- areaCode: formData.value.areaCode || '',
- handleUnit: formData.value.handleUnit || '',
- // 构建附件列表
- attachmentList: uploadedFiles.value.map(file => ({
- attachId: file.attachId,
- attachName: file.originalName,
- })),
- objectionStatus: objectionStatus
- }
- await gdDataObjectionSubmitApi(submitData)
- ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
- visible.value = false
- emit('success')
- } finally {
- submitting.value = false
- }
+ const isValid = await formRef.value?.validate().catch(() => false)
+ if (!isValid) return
+
+ // 在编辑模式下,如果已有附件,可以不强制上传新附件
+ if (dialogMode.value === 'add' && uploadedFiles.value.length === 0) {
+ return ElMessage.warning('请上传附件')
+ }
+
+ submitting.value = true
+
+ try {
+ // 构建符合接口要求的提交数据
+ const submitData = {
+ // 编辑模式下传递id
+ ...(formData.value.id && { id: formData.value.id }),
+ title: formData.value.title,
+ objectionType: formData.value.objectionType,
+ submitter: formData.value.submitter,
+ submitterContact: formData.value.submitterContact,
+ catalogResourceName: formData.value.catalogResourceName,
+ objectionDesc: formData.value.objectionDesc,
+ objectionBasis: formData.value.objectionBasis,
+ areaCode: formData.value.areaCode || '',
+ handleUnit: formData.value.handleUnit || '',
+ // 构建附件列表 - 使用当前已上传的文件(包括回显的)
+ ...(uploadedFiles.value.length > 0 && {
+ attachmentList: uploadedFiles.value.map(file => ({
+ attachId: file.attachId,
+ attachName: file.originalName,
+ })),
+ }),
+ objectionStatus: objectionStatus
+ }
+
+ // 如果是编辑且没有修改附件,可以保留原有附件ID
+ if (dialogMode.value === 'edit' && formData.value.attachIds) {
+ // 这里可以根据业务需求决定是否保留原附件ID
+ // 如果接口支持更新时重新上传附件ID列表,可以这样做
+ }
+
+ await gdDataObjectionSubmitApi(submitData)
+ ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
+ visible.value = false
+ emit('success')
+ } finally {
+ submitting.value = false
+ }
}
// 提交新增/编辑(保存)
@@ -422,12 +458,42 @@
}
// 加载详情
async function loadDetail() {
- if (!formData.value.id) return
- const res = await gdDataObjectionDetailApi({ id: formData.value.id })
- formData.value = res?.data?.data ?? {}
- if (formData.value.attachIds) {
- getAttachDetail(formData.value.attachIds)
- }
+ if (!formData.value.id) return
+ const res = await gdDataObjectionDetailApi({ id: formData.value.id })
+ formData.value = res?.data?.data ?? {}
+
+ // 处理附件回显
+ if (formData.value.attachIds) {
+ await getAttachDetail(formData.value.attachIds)
+ // 回显到上传组件
+ updateFileListForDisplay()
+ }
+}
+
+// 更新文件列表用于显示
+function updateFileListForDisplay() {
+ fileList.value = []
+ uploadedFiles.value = []
+
+ if (attachmentDetailsList.value && attachmentDetailsList.value.length > 0) {
+ attachmentDetailsList.value.forEach(attach => {
+ const fileItem = {
+ name: attach.originalName || attach.name,
+ url: attach.link, // 用于预览
+ attachId: attach.id, // 文件ID
+ originalName: attach.originalName,
+ link: attach.link
+ }
+
+ fileList.value.push({
+ name: fileItem.name,
+ url: fileItem.url,
+ status: 'success' // 已上传状态
+ })
+
+ uploadedFiles.value.push(fileItem)
+ })
+ }
}
// 获取附件详情
async function getAttachDetail(attachIds) {
@@ -436,7 +502,6 @@
const detailPromises = ids.map(id => getAttachDetailApi({ id }))
const results = await Promise.all(detailPromises)
attachmentDetailsList.value = results.map(res => res.data.data).filter(Boolean)
- console.log('附件详情', attachmentDetailsList.value)
}
// 处理附件下载
async function handleDownloadAttach() {
@@ -462,25 +527,37 @@
// 打开弹框
async function open({ mode = 'add', row } = {}) {
- dialogMode.value = mode
- // 重置文件列表
- fileList.value = []
- uploadedFiles.value = []
- // 重置表单数据
- formData.value = dialogMode.value === 'add' ? initForm() : row
- // 重置反馈表单数据
- feedbackFormData.value = initFeedbackForm()
- if (dialogMode.value !== 'add') {
- await loadDetail()
- }
+ dialogMode.value = mode
+ // 重置文件列表
+ fileList.value = []
+ uploadedFiles.value = []
+ // 重置表单数据
+ formData.value = dialogMode.value === 'add' ? initForm() : row
+ // 重置反馈表单数据
+ feedbackFormData.value = initFeedbackForm()
+
+ if (dialogMode.value !== 'add') {
+ // 如果是编辑,设置ID并加载详情
+ if (row && row.id) {
+ formData.value.id = row.id
+ }
+ await loadDetail()
+ }
}
defineExpose({ open })
</script>
<style scoped lang="scss">
+.detail-container1 {
+display: flex;
+flex-direction: column;
+}
.upload-container {
width: 100%;
+ .el-upload__tip {
+ display: inline;
+ }
}
.label {
width: 120px !important;
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
index f54e1c3..fc0cc14 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/dataObjection/index.vue
@@ -67,7 +67,7 @@
<el-table-column prop="handleUnit" show-overflow-tooltip label="处理单位" />
<el-table-column prop="objectionDesc" show-overflow-tooltip label="异议描述" />
<el-table-column prop="objectionBasis" show-overflow-tooltip label="异议依据" />
- <el-table-column prop="attachName" show-overflow-tooltip label="附件名称" />
+ <el-table-column prop="attachNames" show-overflow-tooltip label="附件名称" />
<el-table-column prop="reviewOpinion" show-overflow-tooltip label="审核意见" />
<el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue b/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
index 5d3f891..344d20b 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/evaluate/index.vue
@@ -56,8 +56,8 @@
<el-table-column label="操作" class-name="operation-btns" width="150">
<template v-slot="{ row }">
<el-link type="primary" @click="openForm('view', row)">查看</el-link>
- <el-link type="primary" @click="openForm('edit', row)">编辑</el-link>
- <el-link type="primary" @click="handleDelete(row)">删除</el-link>
+ <el-link type="primary" @click="openForm('edit', row)" v-if="row.isTheSameDepartment">编辑</el-link>
+ <el-link type="primary" @click="handleDelete(row)" v-if="row.isTheSameDepartment">删除</el-link>
</template>
</el-table-column>
</el-table>
@@ -88,7 +88,9 @@
gdDataEvaluationPageApi,
gdDataEvaluationRemoveApi,
} from '@/views/orderView/orderDataManage/evaluate/evaluateApi'
-
+import { useStore } from 'vuex'
+const store = useStore()
+const userDepartment = store.state.user.userInfo?.dept_id
// 初始化查询参数
const initSearchParams = () => ({
title: '', // 标题
@@ -121,6 +123,9 @@
loading.value = true
try {
const res = await gdDataEvaluationPageApi(searchParams.value)
+ res?.data?.data?.records.forEach(item => {
+ item.isTheSameDepartment = String(item.createDept) === String(userDepartment)
+ })
list.value = res?.data?.data?.records ?? []
total.value = res?.data?.data?.total ?? 0
} finally {
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
index f25db98..1990fc0 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -69,7 +69,7 @@
</div>
<!-- 申请中-->
<div v-if="detailDemandStatus === '1' && !requesterProvider">
- <div class="detail-title">数据上传</div>
+ <div class="detail-title" :style="{ marginTop:pxToRem(10)}">数据上传</div>
<div class="upload-container">
<el-upload
:http-request="handleHttpRequest"
@@ -107,8 +107,8 @@
</div>
<template #footer>
<template v-if="detailDemandStatus === '1' && !requesterProvider">
- <el-button color="#F2F3F5" :loading="submitting" :disabled="submitting" @click="rejectTheApplication">拒绝申请</el-button>
- <el-button class="" color="#4C34FF" :loading="submitting" :disabled="submitting" @click="approvedByTheReview">审核通过</el-button>
+ <el-button color="#F2F3F5" :loading="submitting || uploading" :disabled="submitting || uploading" @click="rejectTheApplication">拒绝申请</el-button>
+ <el-button class="" color="#4C34FF" :loading="submitting || uploading" :disabled="submitting || uploading" @click="approvedByTheReview">审核通过</el-button>
</template>
<template v-if="detailDemandStatus === '2'">
<el-button class="" color="#4C34FF" @click="downloadAllFiles">全部下载</el-button>
@@ -155,8 +155,10 @@
const uploadedFiles = ref([]) // 已上传文件列表
const responseData = ref(null)
const submitting = ref(false) // 提交中状态
+const uploading = ref(false) // 文件上传中状态
// 自定义上传请求函数
const handleHttpRequest = async (options) => {
+ uploading.value = true
try {
// 创建FormData对象
const formData = new FormData()
@@ -164,7 +166,6 @@
// 调用导入的API函数
const response = await putFileAttachApi(formData)
- console.log('response',response)
if (response.data && response.data.success) {
// 调用上传成功的回调
options.onSuccess(response)
@@ -176,6 +177,8 @@
// 调用上传失败的回调
options.onError(error)
console.error('文件上传失败:', error)
+ } finally {
+ uploading.value = false
}
}
// 拒绝申请弹框控制
@@ -183,21 +186,7 @@
const tableData = ref([]) // 附件表格数据
// 文件移除
const handleFileRemove = (file, fileList) => {
-console.log('删除文件', fileList);
uploadedFiles.value = fileList
- // 从已上传文件列表中移除对应文件
- // if (file.response && file.response.attachId) {
- // // uploadedFiles.value = uploadedFiles.value.filter(item => item.attachId !== file.response.attachId)
- // // 找到 id=1 的对象的索引
- // const index = uploadedFiles.value.findIndex(item => item.attachId !== file.response.attachId)
-
- // // 如果找到了,移除该对象
- // if (index !== -1) {
- // uploadedFiles.value.splice(index, 1)
- // }
- // console.log('删除文件', uploadedFiles.value);
-
- // }
// 清空响应数据
if (responseData.value && responseData.value.attachId === file.response?.attachId) {
responseData.value = null
@@ -215,11 +204,11 @@
}
// 文件大小限制,这里限制为100MB
- const maxSize = 100 * 1024 * 1024 // 100MB
- if (file.size > maxSize) {
- ElMessage.error('文件大小不能超过100MB')
- return false
- }
+ // const maxSize = 100 * 1024 * 1024 // 100MB
+ // if (file.size > maxSize) {
+ // ElMessage.error('文件大小不能超过100MB')
+ // return false
+ // }
return true
}
@@ -229,7 +218,6 @@
// 添加更严格的检查,确保response不是undefined
if (response && response?.data && response?.data?.success) {
const fileData = response.data.data
- console.log('成功数据', fileData)
responseData.value = fileData
// 添加到已上传文件列表
uploadedFiles.value.push({
@@ -257,28 +245,13 @@
}
}
-// 下载文件
-const downloadFile = file => {
- if (file.link) {
- // 创建一个隐藏的a标签来触发下载
- const a = document.createElement('a')
- a.href = file.link
- a.download = file.originalName || file.name
- document.body.appendChild(a)
- a.click()
- document.body.removeChild(a)
- } else {
- ElMessage.warning('文件链接无效')
- }
-}
-
// 从表格下载文件
const downloadFileFromTable = file => {
if (file.fileUrl) {
// 创建一个隐藏的a标签来触发下载
const a = document.createElement('a')
a.href = file.fileUrl
- a.download = file.name || 'attachment'
+ a.download = file.fileOriginalName || '下载附件'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
@@ -309,7 +282,7 @@
if (file.fileUrl) {
const a = document.createElement('a')
a.href = file.fileUrl
- a.download = file.name || `attachment_${index + 1}`
+ a.download = file.fileOriginalName || `下载附件_${index + 1}`
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
@@ -389,9 +362,9 @@
// 拒绝申请
const rejectTheApplication = () => {
- if (uploadedFiles.value.length === 0) {
- return ElMessage.warning('请上传数据')
- }
+ // if (uploadedFiles.value.length === 0) {
+ // return ElMessage.warning('请上传数据')
+ // }
// 打开拒绝申请弹框
rejectionDialogVisible.value = true
}
@@ -503,6 +476,5 @@
:deep(.el-upload-list) {
margin-top: 10px;
}
-.el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .el-upload-list__item.is-success:hover .el-upload-list__item-status-label{
-display: none !important;}
+
</style>
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue
index 3fa0b0e..fb8977e 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/reasonForRejectionDialog.vue
@@ -10,7 +10,7 @@
:close-on-click-modal="false"
>
<div class="detail-container">
- <div class="detail-cell">
+ <div class="detail-cell-reject">
<span class="cell-label">拒绝原因:</span>
<el-input v-model="reasonForRejection" style="width: 380px" type="textarea" :rows="4" placeholder="请输入" />
</div>
@@ -65,4 +65,8 @@
</script>
<style scoped lang="scss">
+.detail-cell-reject {
+display: flex;
+justify-content: flex-start;
+ }
</style>
diff --git a/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
index c518c41..4a13918 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
@@ -1,7 +1,7 @@
<template>
<el-dialog class="gd-dialog" v-model="visible" title="查看" @closed="visible = false" width="1000px" destroy-on-close>
<div v-loading="loading">
- <el-table :data="list">
+ <el-table :data="list" class="gd-dialog-table">
<el-table-column label="线索缩略图" width="120">
<template v-slot="{ row }">
<el-image
@@ -42,9 +42,9 @@
</el-table>
</div>
- <template #footer>
+ <!-- <template #footer>
<el-button color="#F2F3F5" @click="visible = false">关闭</el-button>
- </template>
+ </template> -->
<DistributeDiaLog
ref="distributeDialogRef"
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
index 206b08d..4c99877 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -47,7 +47,11 @@
<el-table-column type="selection" width="46" />
<el-table-column type="index" width="64" label="序号" />
<el-table-column prop="nickName" show-overflow-tooltip label="文档名称" />
- <el-table-column prop="attachSize" show-overflow-tooltip label="文档大小" />
+ <el-table-column prop="attachSize" show-overflow-tooltip label="文档大小">
+ <template v-slot="{ row }">
+ {{ formatFileSize(row.attachSize) }}
+ </template>
+ </el-table-column>
<el-table-column prop="deptName" show-overflow-tooltip label="文档归属" />
<!-- <el-table-column prop="resultType" show-overflow-tooltip label="文档类型" /> -->
<el-table-column prop="resultType" show-overflow-tooltip label="文档类型">
@@ -138,10 +142,10 @@
</template>
<script setup>
import { Search, RefreshRight, Download, Upload, Delete } from '@element-plus/icons-vue'
-import { fjPageApi, fjSubmitApi, fjRemoveApi, fjDetailApi, fjUploadApi } from './inspectionRequestApi'
+import { fjPageApi, fjSubmitApi, fjRemoveApi, fjDetailApi, fjUploadApi,fjDownloadByByteApi } from './inspectionRequestApi'
import { useStore } from 'vuex'
import { ref, computed, inject, onMounted } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
+import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
import { getDictLabel } from '@ztzf/utils'
import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue'
import { getDictionaryByCode } from '@/api/system/dictbiz'
@@ -203,6 +207,15 @@
})
}
+// 将字节大小转换为可读格式的函数
+const formatFileSize = (bytes) => {
+ if (bytes === 0 || bytes === null) return '0 B'
+ const k = 1024
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB']
+ const i = Math.floor(Math.log(bytes) / Math.log(k))
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
+}
+
// 获取列表
async function getList() {
loading.value = true
@@ -261,9 +274,9 @@
const fileType = row?.link?.split('.').pop() || ''
if (!row.link) {
ElMessage.warning('文件链接不存在')
- }else if (allSupportedExtensions.includes(fileType)){
+ } else if (allSupportedExtensions.includes(fileType)){
window.open(`${VITE_APP_PREVIEW_URL}/onlinePreview?url=`+encodeURIComponent(Base64.encode(row.link)));
- }else {
+ } else {
ElMessage.warning(`${fileType}文件格式,可以下载再查看`)
}
}
@@ -289,7 +302,7 @@
selectedFiles.value = rows
selectedIds.value = rows.map(item => item.id)
}
-
+let loadingData
// 文档下载
async function handleDownload() {
// 如果是勾选一个可以直接下载,超过一个打包下载
@@ -298,8 +311,9 @@
ElMessage.warning('请选择要下载的文件')
return
}
- selectedFiles.value.forEach((file, index) => {
- setTimeout(() => {
+ if (selectedFiles.value.length === 1) {
+ selectedFiles.value.forEach((file, index) => {
+ // setTimeout(() => {
if (file.link) {
const a = document.createElement('a')
a.href = file.link
@@ -308,8 +322,32 @@
a.click()
document.body.removeChild(a)
}
- }, index * 300) // 300ms delay between downloads
- })
+ // }, index * 300) // 300ms delay between downloads
+ })
+ } else {
+ // 批量下载
+ try {
+ console.log(selectedFiles.value, '9999')
+ loadingData = ElLoading.service({ background: 'rgba(0, 0, 0, 0.5)', text: '打包中,请稍等...' })
+ const fileIds = selectedFiles.value.map(i => i.id)
+ // const res = await getDownloadStatusApi({ type: 'dpsjzx' })
+ // if (!['CANCELLED', 'COMPLETED'].includes(res.data.data?.status || 'COMPLETED')) {
+ // return ElMessage.warning('还有正在处理的')
+ // }
+ console.log(fileIds, '7777')
+ await fjDownloadByByteApi({ attachIds: fileIds }).then(res => {
+ if (res.data.code === 200) {
+ ElMessage.success('下载成功')
+ } else {
+ ElMessage.error(res.msg || '下载失败')
+ }
+ })
+ } catch (e) {
+ } finally {
+ loadingData.close()
+ }
+
+ }
}
// 文档上传
@@ -322,6 +360,8 @@
function onUploadFileBefore(file) {
// 执行文件上传
let data = new FormData()
+ // 获取文件扩展名
+ const fileExtension = file.name.split('.').pop().toLowerCase();
data.append('file', file)
fjUploadApi(data).then(res => {
@@ -330,6 +370,11 @@
// 保存文件URL到表单
uploadName.value = res.data.data.originalName
editParams.value.link = res.data.data.link
+ editParams.value.name = res.data.data.name
+ editParams.value.originalName = res.data.data.originalName
+ editParams.value.attachSize = file.size;
+ editParams.value.extension = fileExtension
+ editParams.value.domainUrl = res.data.data.link.replace(res.data.data.name, '')
} else {
ElMessage.error(res.msg || '上传失败')
}
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/inspectionRequestApi.js b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/inspectionRequestApi.js
index 034c138..cbca14f 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/inspectionRequestApi.js
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/inspectionRequestApi.js
@@ -43,4 +43,13 @@
method: 'post',
data,
})
-}
\ No newline at end of file
+}
+
+// 批量打包下载
+export const fjDownloadByByteApi = data => {
+ return request({
+ url: `/blade-resource/attach/downloadByByte`,
+ method: 'post',
+ data,
+ })
+}
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
index 89a3c4e..2a2648d 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -6,6 +6,7 @@
@closed="visible = false"
destroy-on-close
:close-on-click-modal="false"
+ width="80%"
>
<div class="detail-container" style="display: flex">
<div class="detail-left" v-if="dialogMode !== 'add' && processList.length">
@@ -46,7 +47,11 @@
</el-col>
<el-col :span="12">
<div class="label">巡查任务航线</div>
- <div class="val">{{ getAirName(formData.patrolRouteUrl) }}</div>
+ <div class="val val-long">
+ <el-tooltip :content="getAirName(formData.patrolRouteUrl)" placement="top">
+ {{ getAirName(formData.patrolRouteUrl) }}
+ </el-tooltip>
+ </div>
</el-col>
<el-col :span="12">
<div class="label">推荐飞手</div>
@@ -394,6 +399,7 @@
function loadList() {
gdWorkOrderFlowListApi({ workOrderId: formData.value.id, type: '1' }).then(res => {
processList.value = res.data.data
+ console.log(processList.value, 'processList.value')
})
}
@@ -507,4 +513,28 @@
</script>
<style lang="scss" scoped>
+
+/* 时间线样式 */
+:deep(.gd-timeline) {
+ padding-left: 90px;
+}
+
+:deep(.el-timeline-item) {
+ padding-bottom: 20px;
+ .item-content {
+ position: relative;
+ .flowName {
+ width: 80px;
+ position: absolute;
+ left: -120px;
+ top: 0px;
+ }
+ }
+}
+
+:deep(.el-timeline-item__timestamp) {
+ font-size: 12px;
+ color: #999;
+ margin-top: 2px;
+}
</style>
diff --git a/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue b/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
index 34a0513..5e322fa 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
@@ -194,7 +194,7 @@
confirmButtonClass: 'gd-confirm-button',
cancelButtonClass: 'gd-confirm-cancel-button',
})
- const ids = row ? row.id : selectedIds.value
+ const ids = row ? [row.id] : selectedIds.value
await operatingIncomeBatchDelete(ids)
ElMessage.success('删除成功')
selectedIds.value = []
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
index a844f9f..94c76cd 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -63,7 +63,7 @@
</el-table>
<template v-if="hasPatrolTaskList">
<div class="detail-title" :style="{ marginTop: pxToRem(20) }">巡查任务名称</div>
- <el-table class="setHeight" :data="patrolTaskList" row-key="id">
+ <el-table class="setHeight gd-dialog-table" :data="patrolTaskList" row-key="id">
<el-table-column prop="patrolTaskName" show-overflow-tooltip label="巡查任务名称" />
<el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型">
<template v-slot="{ row }">
diff --git a/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue b/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
index 185bb5f..5621c62 100644
--- a/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
@@ -357,7 +357,8 @@
const url = URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
- a.download = `机构列表${new Date().getTime()}.xlsx`
+ // `机构列表${new Date().getTime()}.xlsx`
+ a.download = `机构列表.xlsx`
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
diff --git a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/FormDiaLog.vue
index 5a8c4fc..d54e7a0 100644
--- a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/FormDiaLog.vue
@@ -22,7 +22,7 @@
</el-col>
<el-col :span="12">
<div class="label">区划级别</div>
- <div class="val"> {{ getDictLabel(formData.regionLevel, dictObj.divisionLevel) }}</div>
+ <div class="val"> {{ getDictLabel(formData.regionLevel, dictObj.regionLevel) }}</div>
</el-col>
<el-col :span="12">
<div class="label">区划排序</div>
@@ -86,7 +86,7 @@
placeholder="请选择"
clearable
>
- <el-option v-for="item in dictObj.divisionLevel" :key="item.dictKey"
+ <el-option v-for="item in dictObj.regionLevel" :key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey" />
</el-select>
diff --git a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
index 3b33484..bdcccd5 100644
--- a/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
@@ -56,7 +56,7 @@
<el-table-column prop="parentName" show-overflow-tooltip label="上级区划名称" />
<el-table-column prop="regionLevel" show-overflow-tooltip label="区划级别">
<template v-slot="{ row }">
- {{ getDictLabel(row.regionLevel, dictObj.divisionLevel) }}
+ {{ getDictLabel(row.regionLevel, dictObj.regionLevel) }}
</template>
</el-table-column>
<el-table-column prop="sort" show-overflow-tooltip label="排序" />
@@ -177,7 +177,7 @@
// 获取字典列表
function getDictList() {
- return getDictionaryByCode('zoningStatus,divisionLevel').then(res => {
+ return getDictionaryByCode('zoningStatus,regionLevel').then(res => {
dictObj.value = res.data.data
})
}
diff --git a/uniapps/work-app/src/subPackages/workDetail/index.vue b/uniapps/work-app/src/subPackages/workDetail/index.vue
index c951f8f..71ed67e 100644
--- a/uniapps/work-app/src/subPackages/workDetail/index.vue
+++ b/uniapps/work-app/src/subPackages/workDetail/index.vue
@@ -30,7 +30,7 @@
<div class="workOrderContainer">
<div class="orderRow">
<div class="rowTitle">工单编号</div>
- <div>{{ workDetailData.eventCode }}</div>
+ <div>{{ workDetailData.eventNum }}</div>
</div>
<div class="orderRow">
<div class="rowTitle">工单处置人</div>
@@ -65,10 +65,13 @@
</div>
</div>
<!-- 操作按钮 -->
- <div class="actionButton">
- <div class="btngroups">
+ <div class="actionButton" >
+ <div class="btngroups" v-if="workDetailData.eventStatus !== 3">
<up-button type="primary" color="#AEAEAE" text="退回" @click="rejectTicket"></up-button>
<up-button type="primary" color="#1D6FE9" text="确认" @click="confirmTheTicket"></up-button>
+ </div>
+ <div class="btngroups" v-if="workDetailData.eventStatus === 3">
+ <up-button type="primary" color="#1D6FE9" text="已确认" ></up-button>
</div>
</div>
<!-- 分享弹出层 -->
@@ -119,8 +122,6 @@
const res = await getGddetailedData(params)
const response = res.data.data
workDetailData.value = response
- console.log('详情', workDetailData.value)
-
}
// 图片预览
const previewImage = index => {
@@ -162,7 +163,7 @@
})
setTimeout(() => {
uni.navigateBack()
- }, 1500)
+ })
})
}
@@ -177,7 +178,7 @@
})
setTimeout(() => {
uni.navigateBack()
- }, 1500)
+ })
})
}
// 分享模态框状态
diff --git a/uniapps/work-wx/src/subPackages/flightApplication/add.vue b/uniapps/work-wx/src/subPackages/flightApplication/add.vue
index d660720..bfb7db3 100644
--- a/uniapps/work-wx/src/subPackages/flightApplication/add.vue
+++ b/uniapps/work-wx/src/subPackages/flightApplication/add.vue
@@ -334,6 +334,7 @@
v-model="startTime"
mode="datetime"
:min-date="minDate"
+ :formatter="formatter"
@confirm="onConfirmStartTime"
@cancel="isShowStartTime = false"
></u-datetime-picker>
@@ -342,6 +343,7 @@
v-model="endTime"
mode="datetime"
:min-date="minDate"
+ :formatter="formatter"
@confirm="onConfirmEndTime"
@cancel="isShowEndTime = false"
></u-datetime-picker>
@@ -548,11 +550,11 @@
const endTime = ref(Date.now()); // 设置默认值为当前时间戳
const onConfirmStartTime = (e) => {
- formParams.value.flightStartTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
+ formParams.value.flightStartTime = dayjs(e.value).format('YYYY-MM-DD HH:mm')
isShowStartTime.value = false
}
const onConfirmEndTime = (e) => {
- formParams.value.flightEndTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
+ formParams.value.flightEndTime = dayjs(e.value).format('YYYY-MM-DD HH:mm')
isShowEndTime.value = false
}
@@ -721,6 +723,16 @@
isSubmitDisabled.value = false
})
}
+
+const formatter = (type, value) => {
+ if (type === 'year') return `${value}年`;
+ if (type === 'month') return `${value}月`;
+ if (type === 'day') return `${value}日`;
+ if (type === 'hour') return `${value}时`;
+ if (type === 'minute') return `${value}分`;
+ return value;
+};
+
onMounted(() => {
// getProTypeApi()
// getTaskType()
--
Gitblit v1.9.3