From 6cc0ab0effad7d563b2175719639ea6f8ccce4e9 Mon Sep 17 00:00:00 2001
From: 刘淇 <290219706@qq.com>
Date: Tue, 18 Aug 2026 09:25:54 +0800
Subject: [PATCH] 养护任务
---
common/config/env.js | 4 ++--
pages-sub/daily/quick-order/add-order.vue | 2 ++
pages-sub/problem/regional-order-manage/add-patrol-order.vue | 118 ++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------
pages-sub/problem/regional-order-manage/distribution-order.vue | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------
pages-sub/problem/work-order-manage/add-order.vue | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------
pages/index/index.vue | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
6 files changed, 202 insertions(+), 420 deletions(-)
diff --git a/common/config/env.js b/common/config/env.js
index 999e2b2..95bbb62 100644
--- a/common/config/env.js
+++ b/common/config/env.js
@@ -2,10 +2,10 @@
const env = {
// 开发环境
development: {
- baseUrl: 'https://test.jichengshanshui.com.cn:28302',
+ // baseUrl: 'https://test.jichengshanshui.com.cn:28302',
// https://test.jichengshanshui.com.cn:28302
- // baseUrl: 'http://192.168.1.186:48081',
+ baseUrl: 'http://192.168.1.111:48081',
uploadUrl: 'https://test.jichengshanshui.com.cn:28302',
// baseApi:'admin-api',
diff --git a/pages-sub/daily/quick-order/add-order.vue b/pages-sub/daily/quick-order/add-order.vue
index 98bae81..66fc1b4 100644
--- a/pages-sub/daily/quick-order/add-order.vue
+++ b/pages-sub/daily/quick-order/add-order.vue
@@ -191,11 +191,13 @@ export default {
'wy': '物业',
'zx': '秩序管理',
'hj': '环境卫生',
+ 'yw': '常规运维',
'园林': 'yl',
'市政': 'sz',
'物业': 'wy',
'秩序管理': 'zx',
'环境卫生': 'hj',
+ '常规运维' : 'yw'
},
busiLineOptions: [], // 业务线选项列表
// 问题照片列表
diff --git a/pages-sub/problem/regional-order-manage/add-patrol-order.vue b/pages-sub/problem/regional-order-manage/add-patrol-order.vue
index 1451e51..4ea38e0 100644
--- a/pages-sub/problem/regional-order-manage/add-patrol-order.vue
+++ b/pages-sub/problem/regional-order-manage/add-patrol-order.vue
@@ -1,78 +1,36 @@
-
+
-
-
+
+
-
-
+
+
-
- workOrderFormRef.validateField('problemDesc')"
- >
+
+ workOrderFormRef.validateField('problemDesc')">
-
+
@@ -80,21 +38,13 @@
-
+
-
+
@@ -103,7 +53,7 @@
import { ref, reactive } from 'vue'
import { onReady, onShow, onLoad, onBackPress } from '@dcloudio/uni-app';
import { useUploadImgs } from '@/common/utils/useUploadImgs'
-import { qyUniversalApproval, qyWorkorderCreate } from '@/api/regional-order-manage/regional-order-manage'
+import { qyUniversalApproval, qyWorkorderCreate } from '@/api/regional-order-manage/regional-order-manage'
import { timeFormat } from '@/uni_modules/uview-plus'
import { nextStepMap } from '@/common/utils/common'
import { useUserStore } from '@/pinia/user';
@@ -114,16 +64,18 @@ const userStore = useUserStore();
// ========== 业务线相关状态 ==========
// 业务线映射表
const busiLineMap = ref({
- 'yl': '园林',
- 'sz': '市政',
- 'wy': '物业',
- 'zx': '秩序管理',
- 'hj': '环境卫生',
- '园林': 'yl',
- '市政': 'sz',
- '物业': 'wy',
- '秩序管理': 'zx',
- '环境卫生': 'hj',
+ 'yl': '园林',
+ 'sz': '市政',
+ 'wy': '物业',
+ 'zx': '秩序管理',
+ 'hj': '环境卫生',
+ 'yw': '常规运维',
+ '园林': 'yl',
+ '市政': 'sz',
+ '物业': 'wy',
+ '秩序管理': 'zx',
+ '环境卫生': 'hj',
+ '常规运维': 'yw'
});
// 业务线选项列表
@@ -360,7 +312,7 @@ const submitWorkOrder = async () => {
taskId: renewOrderData.value.taskId,
operateType: nextStepMap[renewOrderData.value.taskKey]?.operateTypeRenew || '',
agree: 0,
- reason: workOrderForm.problemDesc.trim(),
+ reason: workOrderForm.problemDesc.trim(),
...commonSubmitData
}
if (userStore.userInfo?.roles.includes('patrol_global')) { // 全域巡查员
@@ -407,6 +359,4 @@ const submitWorkOrder = async () => {
.work-order-form-content {
background: #fff;
}
-
-
\ No newline at end of file
diff --git a/pages-sub/problem/regional-order-manage/distribution-order.vue b/pages-sub/problem/regional-order-manage/distribution-order.vue
index 41f9088..f502c87 100644
--- a/pages-sub/problem/regional-order-manage/distribution-order.vue
+++ b/pages-sub/problem/regional-order-manage/distribution-order.vue
@@ -1,73 +1,28 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -75,61 +30,28 @@
派单情况
-
-
-
+
+
+
-
-
+
+
-
+
-
-
+
+
@@ -137,24 +59,11 @@
-
-
+
+
-
+
@@ -164,31 +73,17 @@
-
+
-
+
-
+
@@ -197,7 +92,7 @@ import { ref, reactive } from 'vue'
import { onReady, onShow, onLoad, onBackPress } from '@dcloudio/uni-app';
import { useUploadImgs } from '@/common/utils/useUploadImgs'
import { getRoadListByLatLng } from '@/api/common'
-import { daquUniversalApproval, daquWorkorderCreate, qyUniversalApproval } from '@/api/regional-order-manage/regional-order-manage'
+import { daquUniversalApproval, daquWorkorderCreate, qyUniversalApproval } from '@/api/regional-order-manage/regional-order-manage'
import { timeFormat } from '@/uni_modules/uview-plus'
import { nextStepMap } from '@/common/utils/common'
import { useUserStore } from '@/pinia/user';
@@ -209,15 +104,17 @@ const userStore = useUserStore();
// 业务线映射表
const busiLineMap = ref({
'yl': '园林',
- 'sz': '市政',
- 'wy': '物业',
- 'zx': '秩序管理',
- 'hj': '环境卫生',
- '园林': 'yl',
- '市政': 'sz',
- '物业': 'wy',
- '秩序管理': 'zx',
- '环境卫生': 'hj',
+ 'sz': '市政',
+ 'wy': '物业',
+ 'zx': '秩序管理',
+ 'hj': '环境卫生',
+ 'yw': '常规运维',
+ '园林': 'yl',
+ '市政': 'sz',
+ '物业': 'wy',
+ '秩序管理': 'zx',
+ '环境卫生': 'hj',
+ '常规运维': 'yw'
});
// 业务线选项列表
@@ -386,7 +283,7 @@ const echoOrderData = (orderItem) => {
workOrderForm.problemDesc = orderItem.remark || '';
workOrderForm.lat = orderItem.lat || 0;
workOrderForm.lon = orderItem.lon || 0;
- workOrderForm.expectedFinishDate = orderItem.expectedFinishDate? timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss'):'' ;
+ workOrderForm.expectedFinishDate = orderItem.expectedFinishDate ? timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss') : '';
// 回显图片【核心:问题照片赋值】
if (orderItem.problemsImgs && Array.isArray(orderItem.problemsImgs) && orderItem.problemsImgs.length > 0) {
@@ -518,12 +415,12 @@ const navigateBack = () => {
}
// 清除希望完成时间
-const clearExpectedFinishDate = ()=> {
+const clearExpectedFinishDate = () => {
workOrderForm.expectedFinishDate = ''
}
// 【注释无用方法:原选择工单位置方法,因为禁止修改,不需要点击触发】
-const chooseWorkLocation = () => {}
+const chooseWorkLocation = () => { }
// 完成时间确认
const expectedFinishDateConfirm = (e) => {
@@ -558,7 +455,7 @@ const submitWorkOrder = async () => {
lonLatAddress: workOrderForm.workLocation,
pressingType: workOrderForm.pressingType,
orderName: workOrderForm.orderName,
- expectedFinishDate: workOrderForm.expectedFinishDate==""?"":new Date(workOrderForm.expectedFinishDate).getTime(),
+ expectedFinishDate: workOrderForm.expectedFinishDate == "" ? "" : new Date(workOrderForm.expectedFinishDate).getTime(),
sourceId: 1,
sourceName: workOrderForm.busiLineCn,
busiLine: busiLineEn,
@@ -568,7 +465,7 @@ const submitWorkOrder = async () => {
taskId: renewOrderData.value.taskId,
operateType: nextStepMap[renewOrderData.value.taskKey]?.operateTypePass || '',
agree: 0,
- reason: workOrderForm.problemDesc.trim(),
+ reason: workOrderForm.problemDesc.trim(),
}
uni.showLoading({ title: '提交中...' })
@@ -581,7 +478,7 @@ const submitWorkOrder = async () => {
taskId: renewOrderData.value.taskId,
operateType: nextStepMap[renewOrderData.value.taskKey]?.operateTypeRenew || '',
agree: 0,
- reason: workOrderForm.problemDesc.trim(),
+ reason: workOrderForm.problemDesc.trim(),
...commonSubmitData
}
res = await qyUniversalApproval(renewSubmitData)
@@ -637,7 +534,7 @@ const submitWorkOrder = async () => {
.dispatch-title {
font-size: 32rpx;
font-weight: 600;
- color:$u-primary;
+ color: $u-primary;
margin-bottom: 20rpx;
padding-left: 10rpx;
}
diff --git a/pages-sub/problem/work-order-manage/add-order.vue b/pages-sub/problem/work-order-manage/add-order.vue
index 4a3db84..0e6fb1a 100644
--- a/pages-sub/problem/work-order-manage/add-order.vue
+++ b/pages-sub/problem/work-order-manage/add-order.vue
@@ -1,163 +1,73 @@
-
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
- workOrderFormRef.validateField('problemDesc')"
- >
+
+ workOrderFormRef.validateField('problemDesc')">
-
+
-
-
+
+
-
+
@@ -167,31 +77,17 @@
-
+
-
+
-
+
@@ -212,15 +108,17 @@ const userStore = useUserStore();
// 业务线映射表(键:英文标识,值:中文名称;新增反向映射:中文->英文)
const busiLineMap = ref({
'yl': '园林',
- 'sz': '市政',
- 'wy': '物业',
- 'zx': '秩序管理',
- 'hj': '环境卫生',
- '园林': 'yl',
- '市政': 'sz',
- '物业': 'wy',
- '秩序管理': 'zx',
- '环境卫生': 'hj',
+ 'sz': '市政',
+ 'wy': '物业',
+ 'zx': '秩序管理',
+ 'hj': '环境卫生',
+ 'yw': '常规运维',
+ '园林': 'yl',
+ '市政': 'sz',
+ '物业': 'wy',
+ '秩序管理': 'zx',
+ '环境卫生': 'hj',
+ '常规运维': 'yw'
});
// 业务线选项列表(仅保留name字段=中文名称,适配单选框配置)
@@ -405,7 +303,7 @@ const echoOrderData = (orderItem) => {
workOrderForm.problemDesc = orderItem.remark || '';
workOrderForm.lat = orderItem.lat || 0;
workOrderForm.lon = orderItem.lon || 0;
- workOrderForm.expectedFinishDate = orderItem.expectedFinishDate?timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss') :'';
+ workOrderForm.expectedFinishDate = orderItem.expectedFinishDate ? timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss') : '';
// 3. 上传图片回显(兼容useUploadImgs格式)
if (orderItem.problemsImgs && Array.isArray(orderItem.problemsImgs) && orderItem.problemsImgs.length > 0) {
@@ -566,7 +464,7 @@ const navigateBack = () => {
}
// 新增:清除希望完成时间的方法
-const clearExpectedFinishDate = ()=> {
+const clearExpectedFinishDate = () => {
workOrderForm.expectedFinishDate = ''
// 清除后触发一次字段校验,确保校验状态更新
// this.$refs.inspectFormRef.validateField('expectedFinishDate')
@@ -629,7 +527,7 @@ const submitWorkOrder = async () => {
uni.showToast({ title: '业务线选择异常,请重新选择', icon: 'none' });
return;
}
- console.log('完成时间:'+workOrderForm.expectedFinishDate)
+ console.log('完成时间:' + workOrderForm.expectedFinishDate)
// 构建公共提交数据
const commonSubmitData = {
roadId: workOrderForm.roadId,
@@ -642,13 +540,13 @@ const submitWorkOrder = async () => {
lonLatAddress: workOrderForm.workLocation,
pressingType: workOrderForm.pressingType,
orderName: workOrderForm.orderName,
- expectedFinishDate:workOrderForm.expectedFinishDate=="" ?"": new Date(workOrderForm.expectedFinishDate).getTime(),
+ expectedFinishDate: workOrderForm.expectedFinishDate == "" ? "" : new Date(workOrderForm.expectedFinishDate).getTime(),
sourceId: 1,
sourceName: workOrderForm.busiLineCn, // 从form字段获取业务线中文名称
busiLine: busiLineEn // 传递英文标识(yl/sz/wy),接口正常使用
}
console.log('工单数据')
- console.log('完成时间:'+workOrderForm.expectedFinishDate)
+ console.log('完成时间:' + workOrderForm.expectedFinishDate)
console.log(commonSubmitData)
// 显示加载中
uni.showLoading({ title: '提交中...' })
@@ -717,5 +615,4 @@ const submitWorkOrder = async () => {
.work-order-form-content {
background: #fff;
}
-
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
index f54192b..6034a70 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -56,9 +56,9 @@
-
+
@@ -124,28 +124,58 @@ import {
const userStore = useUserStore();
const deptId = computed(() => String(userStore.userInfo?.user?.deptId ?? ''));
-// ====================== 只需要在这里统一维护分组配置 ======================
+// ====================== 分组配置(多部门归属同一组) ======================
type GroupItem = {
- deptId: string;
+ deptIds: string[]; // 多个部门ID数组
label: string;
showTipHeader: boolean; // 是否展示顶部进度条
useWalkText: boolean; // 是否展示步行距离文案
};
const groupConfig: GroupItem[] = [
- { deptId: '364', label: '[组2 A1B2 纯效率·有提醒]', showTipHeader: true, useWalkText: true },
- { deptId: '337', label: '[组3 A2B1 个性化·无提醒]', showTipHeader: false, useWalkText: false },
- { deptId: '338', label: '[组4 A2B2 个性化·有提醒]', showTipHeader: true, useWalkText: false },
+ // 组2 A1B2 纯效率·有提醒
+ {
+ deptIds: ['361', '363', '279', '277', '270'],
+ label: '[组2 A1B2 纯效率·有提醒]',
+ showTipHeader: true,
+ useWalkText: true
+ },
+ // 组3 A2B1 个性化·无提醒
+ {
+ deptIds: ['252', '273', '274', '337', '359', '360'],
+ label: '[组3 A2B1 个性化·无提醒]',
+ showTipHeader: false,
+ useWalkText: false
+ },
+ // 组4 A2B2 个性化·有提醒
+ {
+ deptIds: ['281', '272', '271', '338', '280'],
+ label: '[组4 A2B2 个性化·有提醒]',
+ showTipHeader: true,
+ useWalkText: false
+ },
];
-// 默认组1配置
-const defaultGroup: GroupItem = { deptId: '', label: '[组1 A1B1 纯效率·无提醒]', showTipHeader: false, useWalkText: true };
+// 默认组1:未匹配到的所有部门
+const defaultGroup: GroupItem = {
+ deptIds: [],
+ label: '[组1 A1B1 纯效率·无提醒]',
+ showTipHeader: false,
+ useWalkText: true
+};
-// 获取当前部门配置对象
+// 获取当前部门所属分组
const currentGroup = computed(() => {
- const target = groupConfig.find(item => item.deptId === deptId.value);
- return target ?? defaultGroup;
+ const targetDept = deptId.value;
+ // 遍历匹配部门ID
+ for (const group of groupConfig) {
+ if (group.deptIds.includes(targetDept)) {
+ return group;
+ }
+ }
+ // 无匹配返回默认组1
+ return defaultGroup;
});
-// 下面全部自动读取配置,无需写if/switch
+// 自动读取分组配置,无需修改其他业务代码
const tipText = computed(() => currentGroup.value.label);
const showTipHeader = computed(() => currentGroup.value.showTipHeader);
const isWalkTextMode = computed(() => currentGroup.value.useWalkText);
@@ -308,6 +338,8 @@ const getCurrentLocation = (): Promise<{ lon: string; lat: string }> => {
uni.getLocation({
type: 'gcj02',
success: (loc) => {
+ console.log(loc.longitude)
+ console.log(loc.latitude)
resolve({
lon: loc.longitude.toFixed(6),
lat: loc.latitude.toFixed(6)
@@ -337,6 +369,8 @@ const getCurrentLocation = (): Promise<{ lon: string; lat: string }> => {
uni.getLocation({
type: 'gcj02',
success: (loc) => {
+ console.log(loc.longitude)
+ console.log(loc.latitude)
resolve({
lon: loc.longitude.toFixed(6),
lat: loc.latitude.toFixed(6)
@@ -694,14 +728,16 @@ $border-color: #e5e5e5;
.task-item__name {
width: 60px;
}
- .task-name-text {
- flex: 1;
- font-size: 14px;
- color: $text-color;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
+ .task-name-text {
+ flex: 1;
+ font-size: 14px;
+ color: $text-color;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
&__name {
font-size: 15px;
color: $text-color;
--
libgit2 0.21.4