applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
@@ -1,47 +1,45 @@ <template> <el-dialog class="gd-dialog" v-model="visible" title="查看" @closed="visible = false" width="1000px" destroy-on-close> <div class="gd-table-container" v-loading="loading" style="height: 600px"> <div class="gd-table-content gd-table-content-bg"> <el-table class="gd-table" :data="list"> <el-table-column label="线索缩略图" width="120"> <template v-slot="{ row }"> <el-image v-if="row.resultUrl" :src="row.resultUrl" :preview-src-list="[row.resultUrl]" fit="cover" style="width: 80px; height: 60px" preview-teleported /> <span v-else>-</span> </template> </el-table-column> <el-table-column prop="resultCode" show-overflow-tooltip label="线索编号" /> <el-table-column prop="shootTime" show-overflow-tooltip label="拍摄时间" /> <el-table-column label="线索位置" show-overflow-tooltip> <template v-slot="{ row }"> {{ formatLocation(row) }} </template> </el-table-column> <el-table-column prop="distributeStatus" show-overflow-tooltip label="线索状态"> <template v-slot="{ row }"> {{ getDistributeStatusLabel(row.distributeStatus) }} </template> </el-table-column> <el-table-column prop="distributeDeptName" show-overflow-tooltip label="分发部门" /> <el-table-column prop="distributeUserName" show-overflow-tooltip label="分发人员" /> <el-table-column label="操作" class-name="operation-btns" width="140"> <template v-slot="{ row }"> <el-link type="primary" @click="openDistributeDialog(row)" :disabled="row.distributeStatus === 1 || currentRow.taskStatus !== '50'" > 转为事件并分发 </el-link> </template> </el-table-column> </el-table> </div> <div v-loading="loading"> <el-table :data="list"> <el-table-column label="线索缩略图" width="120"> <template v-slot="{ row }"> <el-image v-if="row.resultUrl" :src="row.resultUrl" :preview-src-list="[row.resultUrl]" fit="cover" style="width: 80px; height: 60px" preview-teleported /> <span v-else>-</span> </template> </el-table-column> <el-table-column prop="resultCode" show-overflow-tooltip label="线索编号" /> <el-table-column prop="shootTime" show-overflow-tooltip label="拍摄时间" /> <el-table-column label="线索位置" show-overflow-tooltip> <template v-slot="{ row }"> {{ formatLocation(row) }} </template> </el-table-column> <el-table-column prop="distributeStatus" show-overflow-tooltip label="线索状态"> <template v-slot="{ row }"> {{ getDistributeStatusLabel(row.distributeStatus) }} </template> </el-table-column> <el-table-column prop="distributeDeptName" show-overflow-tooltip label="分发部门" /> <el-table-column prop="distributeUserName" show-overflow-tooltip label="分发人员" /> <el-table-column label="操作" class-name="operation-btns" width="140"> <template v-slot="{ row }"> <el-link type="primary" @click="openDistributeDialog(row)" :disabled="row.distributeStatus === 1 || currentRow.taskStatus !== '8'" > 转为事件并分发 </el-link> </template> </el-table-column> </el-table> </div> <template #footer> applications/task-work-order/src/views/orderView/orderManage/clueEvents/index.vue
@@ -159,7 +159,12 @@ const range = dateRangeFormat(dateRange.value) loading.value = true try { const res = await gdPatrolTaskPageApi({ ...searchParams.value, startTime: range[0], endTime: range[1] }) const res = await gdPatrolTaskPageApi({ ...searchParams.value, startTime: range[0], endTime: range[1], taskStatus: 8 }) list.value = res?.data?.data?.records ?? [] total.value = res?.data?.data?.total ?? 0 } finally { applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -221,7 +221,7 @@ const dialogMode = ref('add') // 弹框模式 const submitting = ref(false) // 提交中 const dialogReadonly = computed(() => dialogMode.value === 'view') const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' }) const titleEnum = ref({ edit: '新增', view: '查看', add: '新增' }) // 工单相关 const workOrderList = ref([]) // 工单列表 @@ -270,7 +270,7 @@ // 获取工单列表 async function getWorkOrderList() { const res = await gdWorkOrderPageApi({ size: 999, workOrderStatus: '20' }) const res = await gdWorkOrderPageApi({ size: 999, workOrderStatus: dialogMode.value ==='add' ? '20' : '' }) workOrderList.value = res?.data?.data?.records ?? [] } @@ -294,7 +294,7 @@ // 获取设备列表 async function getDeviceList() { const res = await gdManageDeviceListApi({ deviceIds: selectedWorkOrder.value.recommendDeviceIds, deviceIds: selectedWorkOrder.value?.recommendDeviceIds, }) deviceList.value = res?.data?.data ?? [] } @@ -302,6 +302,7 @@ watch( () => selectedWorkOrderId.value, () => { handleWorkOrderChange(selectedWorkOrderId.value) getDeviceList() } ) @@ -364,9 +365,9 @@ // 打开弹框 async function open({ mode = 'add', row } = {}) { console.log(row, 'rowrow') dialogMode.value = mode if (mode === 'add') { await getWorkOrderList() if (dialogMode.value === 'add') { selectedWorkOrderId.value = null selectedWorkOrder.value = null taskList.value = [initTaskRow()] @@ -385,7 +386,7 @@ } onMounted(() => { getWorkOrderList() }) defineExpose({ open }) applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -18,10 +18,10 @@ :type="index === processList.length - 1 ? 'success' : 'info'" :color="activity.color" :hollow="activity.hollow" :timestamp="activity.flowDesc.split(' ')[1] + activity.flowDesc.split(' ')[2]" :timestamp="activity.createTime" > <div class="item-content"> <div>{{ activity.flowDesc.split(' ')[0] }}</div> <div>{{ activity.operator }}</div> <div class="flowName">{{ activity.flowName }}</div> </div> </el-timeline-item> applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
@@ -20,8 +20,8 @@ <el-table-column label="操作" width="180" align="center" class-name="operation-btns"> <template #default="scope"> <!-- <el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button> --> <el-link @click="handleEdit(scope.row)">编辑</el-link> <el-link @click="handleDelete(scope.row)">删除</el-link> <el-link type="primary" @click="handleEdit(scope.row)">编辑</el-link> <el-link type="primary" @click="handleDelete(scope.row)">删除</el-link> </template> </el-table-column> </el-table> applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -18,10 +18,10 @@ :type="index === processList.length - 1 ? 'success' : 'info'" :color="activity.color" :hollow="activity.hollow" :timestamp="activity.flowDesc.split(' ')[1] + activity.flowDesc.split(' ')[2]" :timestamp="activity.createTime" > <div class="item-content"> <div>{{ activity.flowDesc.split(' ')[0] }}</div> <div>{{ activity.operator }}</div> <div class="flowName">{{ activity.flowName }}</div> </div> </el-timeline-item> uniapps/work-app/src/api/map.js
@@ -7,3 +7,11 @@ data: { hidden_flag: 0, ...data }, }) } // 位置上报 export const reportLocationApi = data => { return request({ url: '/webservice/jaUserTrajectory/reportLocation', method: 'post', data, }) } uniapps/work-app/src/pages/map/index.vue
@@ -1,13 +1,3 @@ <!-- * @Author : yuan * @Date : 2025-12-03 14:20:57 * @LastEditors : yuan * @LastEditTime : 2025-12-20 16:49:02 * @FilePath : \src\pages\map\index.vue * @Description : * Copyright 2025 OBKoro1, All Rights Reserved. * 2025-12-03 14:20:57 --> <template> <view class="page-wrap"> <WebViewPlus :src="`${viewUrl}`" @webMessage="onPostMessage" /> uniapps/work-app/src/pages/work/index.vue
@@ -2,7 +2,7 @@ <div class="eventTickets" :style="{ paddingTop: topMargin + 'px' }"> <div class="searchTop"> <up-search placeholder="请输入关键字搜索" :animation="true" v-model="listParams.keyword" :show-action="false" @search="handleSearch"></up-search> <up-search placeholder="请输入关键字搜索" :animation="true" v-model="listParams.keyword" :show-action="false" @search="handleSearch" @clear="handleClear"></up-search> </div> <div class="listBox"> <div class="tabs-container"> @@ -18,6 +18,11 @@ <div class="itemContent">{{formatDate(item.createTime) }}</div> </div> </div> </div> <!-- 暂无数据提示 --> <div class="noData" v-if="!loading && dataList.length === 0"> <text>暂无数据</text> </div> <!-- 加载提示 --> @@ -151,6 +156,15 @@ // 搜索功能 const handleSearch = () => { listParams.value.current = 1 hasMore.value = true dataList.value = [] getDataList() getstatusCountData() } // 清除搜索 const handleClear = () => { listParams.value.keyword = '' listParams.value.current = 1 hasMore.value = true dataList.value = [] @@ -295,5 +309,15 @@ color: #999; width: 100%; } .noData { display: flex; justify-content: center; align-items: center; height: 300rpx; font-size: 28rpx; color: #999; width: 100%; } } </style> uniapps/work-app/src/store/modules/location.js
@@ -1,5 +1,6 @@ import { defineStore } from 'pinia' import locationUtil from '@/utils/location.js' import { reportLocationApi } from '@/api/map.js' const useLocationStore = defineStore('location', { state: () => ({ @@ -12,7 +13,9 @@ // 位置更新间隔(毫秒) updateInterval: 5000, // 位置监听器ID watcherId: null watcherId: null, // 上次位置上报时间 lastReportTime: 0 }), getters: { @@ -115,13 +118,32 @@ }, /** * 位置信息上报(可根据实际需求实现) * 位置信息上报 * @param {Object} location 位置信息 */ reportLocation(location) { // 这里可以添加位置信息上报到服务器的逻辑 // 例如:api.uploadLocation(location) console.log('位置上报:', location); async reportLocation(location) { try { const now = Date.now(); // 检查是否达到上报时间间隔(1分钟) if (now - this.lastReportTime >= 60000) { // 构造请求参数 const params = { longitude: location.longitude, latitude: location.latitude, // reportTime: new Date().toISOString() }; // 调用位置上报接口 const result = await reportLocationApi(params); console.log('位置上报成功:', result); // 更新上次上报时间 this.lastReportTime = now; } } catch (error) { console.error('位置上报失败:', error); } }, /**