Commit c64da17be716df2108e0fdf17834a588273f5828
1 parent
b88fbd00
新的业务线
Showing
17 changed files
with
125 additions
and
72 deletions
common/utils/common.js
| @@ -247,6 +247,14 @@ export const translateRoles = (roles = []) => { | @@ -247,6 +247,14 @@ export const translateRoles = (roles = []) => { | ||
| 247 | 'wy_worker': '物业养护员', | 247 | 'wy_worker': '物业养护员', |
| 248 | 'Inspector_global': '全域督察员', | 248 | 'Inspector_global': '全域督察员', |
| 249 | 'AI_dispatcher': 'AI工单派发人员', | 249 | 'AI_dispatcher': 'AI工单派发人员', |
| 250 | + 'zxgl_inspector': '秩序管理巡查员', | ||
| 251 | + 'zxgl_worker': '秩序管理养护员', | ||
| 252 | + 'team_leader_zxgl': '秩序管理组长', | ||
| 253 | + 'team_leader_hjws': '环境卫生养护组长', | ||
| 254 | + 'hjws_worker': '环境卫生养护员', | ||
| 255 | + 'hjws_inspector': '环境卫生巡查员', | ||
| 256 | + 'group_approver': '应急抢险集团审批人员', | ||
| 257 | + 'rescue_person': '抢险上报人员', | ||
| 250 | }; | 258 | }; |
| 251 | // 过滤有效角色 + 翻译 + 中文逗号拼接 | 259 | // 过滤有效角色 + 翻译 + 中文逗号拼接 |
| 252 | return roles | 260 | return roles |
pages-sub/daily/maintain-manage/finish-plan-detail.vue
| @@ -27,7 +27,7 @@ | @@ -27,7 +27,7 @@ | ||
| 27 | align="middle" | 27 | align="middle" |
| 28 | ></up-cell> | 28 | ></up-cell> |
| 29 | 29 | ||
| 30 | - <!-- 3. 工单名称 --> | 30 | + |
| 31 | <up-cell | 31 | <up-cell |
| 32 | title="养护周期" | 32 | title="养护周期" |
| 33 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" | 33 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" |
pages-sub/daily/maintain-manage/record-detail-list.vue
| @@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
| 31 | align="middle" | 31 | align="middle" |
| 32 | ></up-cell> | 32 | ></up-cell> |
| 33 | 33 | ||
| 34 | - <!-- 3. 工单名称 --> | 34 | + |
| 35 | <up-cell | 35 | <up-cell |
| 36 | title="养护周期" | 36 | title="养护周期" |
| 37 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" | 37 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" |
pages-sub/daily/patrol-manage/finish-plan-detail.vue
| @@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
| 14 | <view class="content-wrap" v-for="(i, index) in orderDetail" :key="index"> | 14 | <view class="content-wrap" v-for="(i, index) in orderDetail" :key="index"> |
| 15 | <!-- 工单详情内容 --> | 15 | <!-- 工单详情内容 --> |
| 16 | <up-cell-group :border="false" inset > | 16 | <up-cell-group :border="false" inset > |
| 17 | - <!-- 1. 工单名称 --> | 17 | + |
| 18 | <up-cell | 18 | <up-cell |
| 19 | align="middle" | 19 | align="middle" |
| 20 | > | 20 | > |
| @@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
| 33 | align="middle" | 33 | align="middle" |
| 34 | ></up-cell> | 34 | ></up-cell> |
| 35 | 35 | ||
| 36 | - <!-- 3. 工单名称 --> | 36 | + |
| 37 | <up-cell | 37 | <up-cell |
| 38 | title="养护周期" | 38 | title="养护周期" |
| 39 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" | 39 | :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`" |
pages-sub/daily/quick-order/add-order.vue
| @@ -66,9 +66,9 @@ | @@ -66,9 +66,9 @@ | ||
| 66 | </template> | 66 | </template> |
| 67 | </up-form-item> | 67 | </up-form-item> |
| 68 | 68 | ||
| 69 | - <!-- 3. 工单名称(下拉框) --> | 69 | + <!-- 3. 问题类型(下拉框) --> |
| 70 | <up-form-item | 70 | <up-form-item |
| 71 | - label="工单名称" | 71 | + label="问题类型" |
| 72 | prop="orderName" | 72 | prop="orderName" |
| 73 | border-bottom | 73 | border-bottom |
| 74 | required | 74 | required |
| @@ -78,7 +78,7 @@ | @@ -78,7 +78,7 @@ | ||
| 78 | v-model="workOrderForm.orderName" | 78 | v-model="workOrderForm.orderName" |
| 79 | disabled | 79 | disabled |
| 80 | disabled-color="#ffffff" | 80 | disabled-color="#ffffff" |
| 81 | - placeholder="请选择工单名称" | 81 | + placeholder="请选择问题类型" |
| 82 | border="none" | 82 | border="none" |
| 83 | ></up-input> | 83 | ></up-input> |
| 84 | <template #right> | 84 | <template #right> |
| @@ -164,11 +164,11 @@ | @@ -164,11 +164,11 @@ | ||
| 164 | @select="handleRoadNameSelect" | 164 | @select="handleRoadNameSelect" |
| 165 | ></up-action-sheet> | 165 | ></up-action-sheet> |
| 166 | 166 | ||
| 167 | - <!-- 工单名称下拉弹窗 --> | 167 | + <!-- 问题类型下拉弹窗 --> |
| 168 | <up-action-sheet | 168 | <up-action-sheet |
| 169 | :show="showOrderName" | 169 | :show="showOrderName" |
| 170 | :actions="orderNameList" | 170 | :actions="orderNameList" |
| 171 | - title="请选择工单名称" | 171 | + title="请选择问题类型" |
| 172 | @close="showOrderName = false" | 172 | @close="showOrderName = false" |
| 173 | @select="handleOrderNameSelect" | 173 | @select="handleOrderNameSelect" |
| 174 | ></up-action-sheet> | 174 | ></up-action-sheet> |
| @@ -189,9 +189,13 @@ export default { | @@ -189,9 +189,13 @@ export default { | ||
| 189 | 'yl': '园林', | 189 | 'yl': '园林', |
| 190 | 'sz': '市政', | 190 | 'sz': '市政', |
| 191 | 'wy': '物业', | 191 | 'wy': '物业', |
| 192 | + 'zx': '秩序管理', | ||
| 193 | + 'hj': '环境卫生', | ||
| 192 | '园林': 'yl', | 194 | '园林': 'yl', |
| 193 | '市政': 'sz', | 195 | '市政': 'sz', |
| 194 | - '物业': 'wy' | 196 | + '物业': 'wy', |
| 197 | + '秩序管理': 'zx', | ||
| 198 | + '环境卫生': 'hj', | ||
| 195 | }, | 199 | }, |
| 196 | busiLineOptions: [], // 业务线选项列表 | 200 | busiLineOptions: [], // 业务线选项列表 |
| 197 | // 问题照片列表 | 201 | // 问题照片列表 |
| @@ -210,7 +214,7 @@ export default { | @@ -210,7 +214,7 @@ export default { | ||
| 210 | roadId: 0, // 道路ID | 214 | roadId: 0, // 道路ID |
| 211 | roadName: '', // 道路名称 | 215 | roadName: '', // 道路名称 |
| 212 | workLocation: '', // 工单位置 | 216 | workLocation: '', // 工单位置 |
| 213 | - orderName: '', // 工单名称 | 217 | + orderName: '', // 问题类型 |
| 214 | problemDesc: '', // 情况描述 | 218 | problemDesc: '', // 情况描述 |
| 215 | handleResult: '', // 处理结果描述(不必填) | 219 | handleResult: '', // 处理结果描述(不必填) |
| 216 | lat: 0, // 纬度 | 220 | lat: 0, // 纬度 |
| @@ -228,7 +232,7 @@ export default { | @@ -228,7 +232,7 @@ export default { | ||
| 228 | { type: 'string', required: true, message: '请选择道路名称', trigger: ['change', 'blur'] } | 232 | { type: 'string', required: true, message: '请选择道路名称', trigger: ['change', 'blur'] } |
| 229 | ], | 233 | ], |
| 230 | orderName: [ | 234 | orderName: [ |
| 231 | - { type: 'string', required: true, message: '请选择工单名称', trigger: ['change', 'blur'] } | 235 | + { type: 'string', required: true, message: '请选择问题类型', trigger: ['change', 'blur'] } |
| 232 | ], | 236 | ], |
| 233 | problemDesc: [ | 237 | problemDesc: [ |
| 234 | { type: 'string', required: true, message: '请输入情况描述', trigger: ['change', 'blur'] }, | 238 | { type: 'string', required: true, message: '请输入情况描述', trigger: ['change', 'blur'] }, |
| @@ -275,7 +279,7 @@ export default { | @@ -275,7 +279,7 @@ export default { | ||
| 275 | }, | 279 | }, |
| 276 | onShow() { | 280 | onShow() { |
| 277 | this.orderNameList = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('work_name')); | 281 | this.orderNameList = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('work_name')); |
| 278 | - console.log('工单名称列表:', this.orderNameList); | 282 | + console.log('问题类型列表:', this.orderNameList); |
| 279 | }, | 283 | }, |
| 280 | methods: { | 284 | methods: { |
| 281 | // 初始化业务线选项 | 285 | // 初始化业务线选项 |
| @@ -483,7 +487,7 @@ export default { | @@ -483,7 +487,7 @@ export default { | ||
| 483 | this.$refs.workOrderFormRef.validateField('roadName'); | 487 | this.$refs.workOrderFormRef.validateField('roadName'); |
| 484 | }, | 488 | }, |
| 485 | /** | 489 | /** |
| 486 | - * 选择工单名称 | 490 | + * 选择问题类型 |
| 487 | */ | 491 | */ |
| 488 | handleOrderNameSelect(e) { | 492 | handleOrderNameSelect(e) { |
| 489 | console.log(e); | 493 | console.log(e); |
pages-sub/daily/quick-order/index.vue
| @@ -117,7 +117,7 @@ import { ref } from 'vue'; | @@ -117,7 +117,7 @@ import { ref } from 'vue'; | ||
| 117 | import { workorderPage } from "@/api/quick-order/quick-order"; | 117 | import { workorderPage } from "@/api/quick-order/quick-order"; |
| 118 | import { timeFormat } from '@/uni_modules/uview-plus'; | 118 | import { timeFormat } from '@/uni_modules/uview-plus'; |
| 119 | const selectedSortValue = ref(1); | 119 | const selectedSortValue = ref(1); |
| 120 | -// 1 位置 2 工单名称 3 情况描述 4 工单编号 | 120 | +// 1 位置 2 问题类型 3 情况描述 4 工单编号 |
| 121 | const sortOptions = ref([ | 121 | const sortOptions = ref([ |
| 122 | {name: '位置', id: 1}, | 122 | {name: '位置', id: 1}, |
| 123 | {name: '名称', id: 2}, | 123 | {name: '名称', id: 2}, |
| @@ -136,7 +136,7 @@ const queryList = async (pageNo, pageSize) => { | @@ -136,7 +136,7 @@ const queryList = async (pageNo, pageSize) => { | ||
| 136 | searchContent: searchValue.value.trim() || '', | 136 | searchContent: searchValue.value.trim() || '', |
| 137 | pageNo: pageNo, | 137 | pageNo: pageNo, |
| 138 | pageSize: pageSize, | 138 | pageSize: pageSize, |
| 139 | - type: selectedSortValue.value // 1 位置 2 工单名称 3 情况描述 4 工单编号 | 139 | + type: selectedSortValue.value // 1 位置 2 问题类型 3 情况描述 4 工单编号 |
| 140 | }; | 140 | }; |
| 141 | console.log('请求参数:', apiParams); | 141 | console.log('请求参数:', apiParams); |
| 142 | const res = await workorderPage(apiParams); | 142 | const res = await workorderPage(apiParams); |
pages-sub/daily/quick-order/order-detail.vue
| @@ -53,9 +53,9 @@ | @@ -53,9 +53,9 @@ | ||
| 53 | 53 | ||
| 54 | </up-cell> | 54 | </up-cell> |
| 55 | 55 | ||
| 56 | - <!-- 3. 工单名称 --> | 56 | + <!-- 3. 问题类型 --> |
| 57 | <up-cell | 57 | <up-cell |
| 58 | - title="工单名称" | 58 | + title="问题类型" |
| 59 | :value="orderDetail.orderName || '--'" | 59 | :value="orderDetail.orderName || '--'" |
| 60 | align="middle" | 60 | align="middle" |
| 61 | ></up-cell> | 61 | ></up-cell> |
pages-sub/problem/ai-manage/index.vue
| @@ -73,7 +73,7 @@ | @@ -73,7 +73,7 @@ | ||
| 73 | <view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view> | 73 | <view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view> |
| 74 | </view> | 74 | </view> |
| 75 | <view class="u-body-item u-flex"> | 75 | <view class="u-body-item u-flex"> |
| 76 | - <view class="u-body-item-title">工单名称:</view> | 76 | + <view class="u-body-item-title">问题类型:</view> |
| 77 | <view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view> | 77 | <view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view> |
| 78 | </view> | 78 | </view> |
| 79 | <view class="u-body-item u-flex"> | 79 | <view class="u-body-item u-flex"> |
pages-sub/problem/regional-order-manage/add-order.vue
| @@ -24,9 +24,9 @@ | @@ -24,9 +24,9 @@ | ||
| 24 | ></up-input> | 24 | ></up-input> |
| 25 | </up-form-item> | 25 | </up-form-item> |
| 26 | 26 | ||
| 27 | - <!-- 2. 工单名称(下拉框) --> | 27 | + <!-- 2. 问题类型(下拉框) --> |
| 28 | <up-form-item | 28 | <up-form-item |
| 29 | - label="工单名称" | 29 | + label="问题类型" |
| 30 | prop="orderName" | 30 | prop="orderName" |
| 31 | border-bottom | 31 | border-bottom |
| 32 | required | 32 | required |
| @@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
| 36 | v-model="workOrderForm.orderName" | 36 | v-model="workOrderForm.orderName" |
| 37 | disabled | 37 | disabled |
| 38 | disabled-color="#ffffff" | 38 | disabled-color="#ffffff" |
| 39 | - placeholder="请选择工单名称" | 39 | + placeholder="请选择问题类型" |
| 40 | border="none" | 40 | border="none" |
| 41 | ></up-input> | 41 | ></up-input> |
| 42 | <template #right> | 42 | <template #right> |
| @@ -211,7 +211,9 @@ const CONST = { | @@ -211,7 +211,9 @@ const CONST = { | ||
| 211 | // 路由地址 | 211 | // 路由地址 |
| 212 | PAGE_ORDER_LIST: '/pages-sub/problem/regional-order-manage/index', | 212 | PAGE_ORDER_LIST: '/pages-sub/problem/regional-order-manage/index', |
| 213 | // 业务线映射 | 213 | // 业务线映射 |
| 214 | - BUSI_LINE_MAP: { yl: '园林', sz: '市政', wy: '物业', '园林': 'yl', '市政': 'sz', '物业': 'wy' }, | 214 | + BUSI_LINE_MAP: { yl: '园林', sz: '市政', wy: '物业', '园林': 'yl', '市政': 'sz', '物业': 'wy', 'zx': '秩序管理', |
| 215 | + 'hj': '环境卫生', '秩序管理': 'zx', | ||
| 216 | + '环境卫生': 'hj', }, | ||
| 215 | // 角色标识 | 217 | // 角色标识 |
| 216 | ROLE: { MANAGER: 'regional_manager', INSPECTOR: 'Inspector_global', PATROL: 'patrol_global' } | 218 | ROLE: { MANAGER: 'regional_manager', INSPECTOR: 'Inspector_global', PATROL: 'patrol_global' } |
| 217 | } | 219 | } |
pages-sub/problem/regional-order-manage/add-patrol-order.vue
| @@ -24,9 +24,9 @@ | @@ -24,9 +24,9 @@ | ||
| 24 | ></up-input> | 24 | ></up-input> |
| 25 | </up-form-item> | 25 | </up-form-item> |
| 26 | 26 | ||
| 27 | - <!-- 2. 工单名称(下拉框) --> | 27 | + <!-- 2. 问题类型(下拉框) --> |
| 28 | <up-form-item | 28 | <up-form-item |
| 29 | - label="工单名称" | 29 | + label="问题类型" |
| 30 | prop="orderName" | 30 | prop="orderName" |
| 31 | border-bottom | 31 | border-bottom |
| 32 | required | 32 | required |
| @@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
| 36 | v-model="workOrderForm.orderName" | 36 | v-model="workOrderForm.orderName" |
| 37 | disabled | 37 | disabled |
| 38 | disabled-color="#ffffff" | 38 | disabled-color="#ffffff" |
| 39 | - placeholder="请选择工单名称" | 39 | + placeholder="请选择问题类型" |
| 40 | border="none" | 40 | border="none" |
| 41 | ></up-input> | 41 | ></up-input> |
| 42 | <template #right> | 42 | <template #right> |
| @@ -114,12 +114,16 @@ const userStore = useUserStore(); | @@ -114,12 +114,16 @@ const userStore = useUserStore(); | ||
| 114 | // ========== 业务线相关状态 ========== | 114 | // ========== 业务线相关状态 ========== |
| 115 | // 业务线映射表 | 115 | // 业务线映射表 |
| 116 | const busiLineMap = ref({ | 116 | const busiLineMap = ref({ |
| 117 | - 'yl': '园林', | ||
| 118 | - 'sz': '市政', | ||
| 119 | - 'wy': '物业', | ||
| 120 | - '园林': 'yl', | ||
| 121 | - '市政': 'sz', | ||
| 122 | - '物业': 'wy' | 117 | + 'yl': '园林', |
| 118 | + 'sz': '市政', | ||
| 119 | + 'wy': '物业', | ||
| 120 | + 'zx': '秩序管理', | ||
| 121 | + 'hj': '环境卫生', | ||
| 122 | + '园林': 'yl', | ||
| 123 | + '市政': 'sz', | ||
| 124 | + '物业': 'wy', | ||
| 125 | + '秩序管理': 'zx', | ||
| 126 | + '环境卫生': 'hj', | ||
| 123 | }); | 127 | }); |
| 124 | 128 | ||
| 125 | // 业务线选项列表 | 129 | // 业务线选项列表 |
pages-sub/problem/regional-order-manage/distribution-order.vue
| @@ -23,9 +23,9 @@ | @@ -23,9 +23,9 @@ | ||
| 23 | ></up-input> | 23 | ></up-input> |
| 24 | </up-form-item> | 24 | </up-form-item> |
| 25 | 25 | ||
| 26 | - <!-- 2. 工单名称(下拉框)【赋值回显 + 完全禁止修改】 --> | 26 | + <!-- 2. 问题类型(下拉框)【赋值回显 + 完全禁止修改】 --> |
| 27 | <up-form-item | 27 | <up-form-item |
| 28 | - label="工单名称" | 28 | + label="问题类型" |
| 29 | prop="orderName" | 29 | prop="orderName" |
| 30 | border-bottom | 30 | border-bottom |
| 31 | required | 31 | required |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | v-model="workOrderForm.orderName" | 34 | v-model="workOrderForm.orderName" |
| 35 | disabled | 35 | disabled |
| 36 | 36 | ||
| 37 | - placeholder="暂无工单名称" | 37 | + placeholder="暂无问题类型" |
| 38 | border="none" | 38 | border="none" |
| 39 | ></up-input> | 39 | ></up-input> |
| 40 | </up-form-item> | 40 | </up-form-item> |
| @@ -209,11 +209,15 @@ const userStore = useUserStore(); | @@ -209,11 +209,15 @@ const userStore = useUserStore(); | ||
| 209 | // 业务线映射表 | 209 | // 业务线映射表 |
| 210 | const busiLineMap = ref({ | 210 | const busiLineMap = ref({ |
| 211 | 'yl': '园林', | 211 | 'yl': '园林', |
| 212 | - 'sz': '市政', | ||
| 213 | - 'wy': '物业', | ||
| 214 | - '园林': 'yl', | ||
| 215 | - '市政': 'sz', | ||
| 216 | - '物业': 'wy' | 212 | + 'sz': '市政', |
| 213 | + 'wy': '物业', | ||
| 214 | + 'zx': '秩序管理', | ||
| 215 | + 'hj': '环境卫生', | ||
| 216 | + '园林': 'yl', | ||
| 217 | + '市政': 'sz', | ||
| 218 | + '物业': 'wy', | ||
| 219 | + '秩序管理': 'zx', | ||
| 220 | + '环境卫生': 'hj', | ||
| 217 | }); | 221 | }); |
| 218 | 222 | ||
| 219 | // 业务线选项列表 | 223 | // 业务线选项列表 |
| @@ -372,7 +376,7 @@ const echoOrderData = (orderItem) => { | @@ -372,7 +376,7 @@ const echoOrderData = (orderItem) => { | ||
| 372 | workOrderForm.busiLineCn = busiLineMap.value[orderItem.busiLine]; | 376 | workOrderForm.busiLineCn = busiLineMap.value[orderItem.busiLine]; |
| 373 | } | 377 | } |
| 374 | 378 | ||
| 375 | - // 回显基础字段【核心:工单位置/工单名称/情况描述 赋值】 | 379 | + // 回显基础字段【核心:工单位置/问题类型/情况描述 赋值】 |
| 376 | workOrderForm.roadId = orderItem.roadId || 0; | 380 | workOrderForm.roadId = orderItem.roadId || 0; |
| 377 | workOrderForm.roadName = orderItem.roadName || ''; | 381 | workOrderForm.roadName = orderItem.roadName || ''; |
| 378 | workOrderForm.workLocation = orderItem.lonLatAddress || orderItem.roadName || ''; | 382 | workOrderForm.workLocation = orderItem.lonLatAddress || orderItem.roadName || ''; |
pages-sub/problem/regional-order-manage/index.vue
| @@ -79,7 +79,7 @@ | @@ -79,7 +79,7 @@ | ||
| 79 | <view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view> | 79 | <view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view> |
| 80 | </view> | 80 | </view> |
| 81 | <view class="u-body-item u-flex"> | 81 | <view class="u-body-item u-flex"> |
| 82 | - <view class="u-body-item-title">工单名称:</view> | 82 | + <view class="u-body-item-title">问题类型:</view> |
| 83 | <view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view> | 83 | <view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view> |
| 84 | </view> | 84 | </view> |
| 85 | <view class="u-body-item u-flex"> | 85 | <view class="u-body-item u-flex"> |
pages-sub/problem/regional-order-manage/order-detail.vue
| @@ -42,10 +42,10 @@ | @@ -42,10 +42,10 @@ | ||
| 42 | </template> | 42 | </template> |
| 43 | </up-cell> | 43 | </up-cell> |
| 44 | 44 | ||
| 45 | - <!-- 工单名称 --> | 45 | + <!-- 问题类型 --> |
| 46 | <up-cell align="middle"> | 46 | <up-cell align="middle"> |
| 47 | <template #title> | 47 | <template #title> |
| 48 | - <view style="min-width: 200rpx">工单名称</view> | 48 | + <view style="min-width: 200rpx">问题类型</view> |
| 49 | </template> | 49 | </template> |
| 50 | <template #value> | 50 | <template #value> |
| 51 | <view class="common-text-color up-line-1">{{ orderDetail.orderName || '--' }}</view> | 51 | <view class="common-text-color up-line-1">{{ orderDetail.orderName || '--' }}</view> |
pages-sub/problem/work-order-manage/add-order.vue
| @@ -67,9 +67,9 @@ | @@ -67,9 +67,9 @@ | ||
| 67 | </template> | 67 | </template> |
| 68 | </up-form-item> | 68 | </up-form-item> |
| 69 | 69 | ||
| 70 | - <!-- 3. 工单名称(下拉框) --> | 70 | + <!-- 3. 问题类型(下拉框) --> |
| 71 | <up-form-item | 71 | <up-form-item |
| 72 | - label="工单名称" | 72 | + label="问题类型" |
| 73 | prop="orderName" | 73 | prop="orderName" |
| 74 | border-bottom | 74 | border-bottom |
| 75 | required | 75 | required |
| @@ -79,7 +79,7 @@ | @@ -79,7 +79,7 @@ | ||
| 79 | v-model="workOrderForm.orderName" | 79 | v-model="workOrderForm.orderName" |
| 80 | disabled | 80 | disabled |
| 81 | disabled-color="#ffffff" | 81 | disabled-color="#ffffff" |
| 82 | - placeholder="请选择工单名称" | 82 | + placeholder="请选择问题类型" |
| 83 | border="none" | 83 | border="none" |
| 84 | ></up-input> | 84 | ></up-input> |
| 85 | <template #right> | 85 | <template #right> |
| @@ -212,12 +212,15 @@ const userStore = useUserStore(); | @@ -212,12 +212,15 @@ const userStore = useUserStore(); | ||
| 212 | // 业务线映射表(键:英文标识,值:中文名称;新增反向映射:中文->英文) | 212 | // 业务线映射表(键:英文标识,值:中文名称;新增反向映射:中文->英文) |
| 213 | const busiLineMap = ref({ | 213 | const busiLineMap = ref({ |
| 214 | 'yl': '园林', | 214 | 'yl': '园林', |
| 215 | - 'sz': '市政', | ||
| 216 | - 'wy': '物业', | ||
| 217 | - // 反向映射:用于通过中文名称(workOrderForm.busiLineCn)获取对应的英文标识 | ||
| 218 | - '园林': 'yl', | ||
| 219 | - '市政': 'sz', | ||
| 220 | - '物业': 'wy' | 215 | + 'sz': '市政', |
| 216 | + 'wy': '物业', | ||
| 217 | + 'zx': '秩序管理', | ||
| 218 | + 'hj': '环境卫生', | ||
| 219 | + '园林': 'yl', | ||
| 220 | + '市政': 'sz', | ||
| 221 | + '物业': 'wy', | ||
| 222 | + '秩序管理': 'zx', | ||
| 223 | + '环境卫生': 'hj', | ||
| 221 | }); | 224 | }); |
| 222 | 225 | ||
| 223 | // 业务线选项列表(仅保留name字段=中文名称,适配单选框配置) | 226 | // 业务线选项列表(仅保留name字段=中文名称,适配单选框配置) |
| @@ -308,7 +311,7 @@ const workOrderFormRules = reactive({ | @@ -308,7 +311,7 @@ const workOrderFormRules = reactive({ | ||
| 308 | { type: 'string', required: true, message: '请选择道路名称', trigger: ['change', 'blur'] } | 311 | { type: 'string', required: true, message: '请选择道路名称', trigger: ['change', 'blur'] } |
| 309 | ], | 312 | ], |
| 310 | orderName: [ | 313 | orderName: [ |
| 311 | - { type: 'string', required: true, message: '请选择工单名称', trigger: ['change', 'blur'] } | 314 | + { type: 'string', required: true, message: '请选择问题类型', trigger: ['change', 'blur'] } |
| 312 | ], | 315 | ], |
| 313 | pressingTypeName: [ | 316 | pressingTypeName: [ |
| 314 | { type: 'string', required: true, message: '请选择紧急程度', trigger: ['change'] } | 317 | { type: 'string', required: true, message: '请选择紧急程度', trigger: ['change'] } |
| @@ -376,9 +379,9 @@ onShow(() => { | @@ -376,9 +379,9 @@ onShow(() => { | ||
| 376 | console.log(uni.$dict.getDictLabel('ai_image_status', 20)) | 379 | console.log(uni.$dict.getDictLabel('ai_image_status', 20)) |
| 377 | console.log(uni.$dict.getDictSimpleList('work_name')) | 380 | console.log(uni.$dict.getDictSimpleList('work_name')) |
| 378 | 381 | ||
| 379 | - // 初始化工单名称列表 | 382 | + // 初始化问题类型列表 |
| 380 | orderNameList.value = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('work_name')) | 383 | orderNameList.value = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('work_name')) |
| 381 | - console.log('工单名称列表:', orderNameList.value) | 384 | + console.log('问题类型列表:', orderNameList.value) |
| 382 | 385 | ||
| 383 | // 初始化紧急程度列表 | 386 | // 初始化紧急程度列表 |
| 384 | pressingTypeList.value = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('workorder_pressing_type')) | 387 | pressingTypeList.value = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('workorder_pressing_type')) |
| @@ -496,7 +499,7 @@ const handleActionSheetOpen = (type) => { | @@ -496,7 +499,7 @@ const handleActionSheetOpen = (type) => { | ||
| 496 | list: roadNameList.value | 499 | list: roadNameList.value |
| 497 | }, | 500 | }, |
| 498 | orderName: { | 501 | orderName: { |
| 499 | - title: '请选择工单名称', | 502 | + title: '请选择问题类型', |
| 500 | list: orderNameList.value | 503 | list: orderNameList.value |
| 501 | }, | 504 | }, |
| 502 | pressingType: { | 505 | pressingType: { |
pages-sub/problem/work-order-manage/index.vue
| @@ -319,7 +319,7 @@ const isInspector = computed(() => { | @@ -319,7 +319,7 @@ const isInspector = computed(() => { | ||
| 319 | // patrol_global 全域巡查员 | 319 | // patrol_global 全域巡查员 |
| 320 | // regional_manager 大区经理 | 320 | // regional_manager 大区经理 |
| 321 | 321 | ||
| 322 | - return userStore.userInfo?.roles?.includes('yl_inspector') || false; | 322 | + return ['yl_inspector', 'zxgl_inspector', 'hjws_inspector'].some(role => userStore.userInfo?.roles?.includes(role)) || false; |
| 323 | }); | 323 | }); |
| 324 | // 回退弹窗相关 | 324 | // 回退弹窗相关 |
| 325 | const rejectModalShow = ref(false); // 回退modal显示开关 | 325 | const rejectModalShow = ref(false); // 回退modal显示开关 |
| @@ -358,7 +358,7 @@ const queryList = async (pageNo, pageSize) => { | @@ -358,7 +358,7 @@ const queryList = async (pageNo, pageSize) => { | ||
| 358 | searchContent: searchValue.value.trim() || '', | 358 | searchContent: searchValue.value.trim() || '', |
| 359 | pageNo, | 359 | pageNo, |
| 360 | pageSize, | 360 | pageSize, |
| 361 | - type: selectedSortValue.value // 1-位置 2-工单名称 3-情况描述 4-工单编号 | 361 | + type: selectedSortValue.value // 1-位置 2-问题类型 3-情况描述 4-工单编号 |
| 362 | }; | 362 | }; |
| 363 | let res; | 363 | let res; |
| 364 | // 0-待办 1-已办 2-我发起的任务 | 364 | // 0-待办 1-已办 2-我发起的任务 |
pages-sub/problem/work-order-manage/order-detail.vue
| @@ -42,10 +42,10 @@ | @@ -42,10 +42,10 @@ | ||
| 42 | </template> | 42 | </template> |
| 43 | </up-cell> | 43 | </up-cell> |
| 44 | 44 | ||
| 45 | - <!-- 工单名称 --> | 45 | + <!-- 问题类型--> |
| 46 | <up-cell align="middle"> | 46 | <up-cell align="middle"> |
| 47 | <template #title> | 47 | <template #title> |
| 48 | - <view style="min-width: 200rpx">工单名称</view> | 48 | + <view style="min-width: 200rpx">问题类型</view> |
| 49 | </template> | 49 | </template> |
| 50 | <template #value> | 50 | <template #value> |
| 51 | <view class="common-text-color up-line-1">{{ orderDetail.orderName || '--' }}</view> | 51 | <view class="common-text-color up-line-1">{{ orderDetail.orderName || '--' }}</view> |
pages/workbench/index.vue
| @@ -9,11 +9,13 @@ | @@ -9,11 +9,13 @@ | ||
| 9 | ></up-loading-page> | 9 | ></up-loading-page> |
| 10 | 10 | ||
| 11 | <!-- 蓝色装饰块 --> | 11 | <!-- 蓝色装饰块 --> |
| 12 | - <view class="blue-decor-block" v-show="!loading"> | 12 | + <view class="blue-decor-block" v-if="!loading"> |
| 13 | <text class="welcome-text u-line-1">你好{{ userInfo?.user?.nickname || '' }}</text> | 13 | <text class="welcome-text u-line-1">你好{{ userInfo?.user?.nickname || '' }}</text> |
| 14 | <text class="platform-name">蓟城山水全域智能运营管理平台</text> | 14 | <text class="platform-name">蓟城山水全域智能运营管理平台</text> |
| 15 | </view> | 15 | </view> |
| 16 | 16 | ||
| 17 | + | ||
| 18 | + | ||
| 17 | <!-- 内容容器 --> | 19 | <!-- 内容容器 --> |
| 18 | <view class="content-wrap"> | 20 | <view class="content-wrap"> |
| 19 | <!-- 空状态:过滤后无数据且非加载中时显示 --> | 21 | <!-- 空状态:过滤后无数据且非加载中时显示 --> |
| @@ -22,6 +24,22 @@ | @@ -22,6 +24,22 @@ | ||
| 22 | mode="permission" | 24 | mode="permission" |
| 23 | ></u-empty> | 25 | ></u-empty> |
| 24 | 26 | ||
| 27 | + | ||
| 28 | + <view class="" v-if="!userInfo?.user?.nickname"> | ||
| 29 | + <text class="welcome-text u-line-1 " style="padding: 20px 0;text-align: center;">本小程序仅限特定服务人群使用,需验证账号后方可登录</text> | ||
| 30 | + | ||
| 31 | + <up-button | ||
| 32 | + class="login-btn" | ||
| 33 | + type="primary" | ||
| 34 | + size="large" | ||
| 35 | + | ||
| 36 | + @click="ToLoginPage" | ||
| 37 | + shape="circle" | ||
| 38 | + > | ||
| 39 | + 前往登录 | ||
| 40 | + </up-button> | ||
| 41 | + </view> | ||
| 42 | + | ||
| 25 | <!-- 菜单卡片列表:仅渲染有子节点的父模块 --> | 43 | <!-- 菜单卡片列表:仅渲染有子节点的父模块 --> |
| 26 | <view class="menu-card-wrap"> | 44 | <view class="menu-card-wrap"> |
| 27 | <up-card | 45 | <up-card |
| @@ -118,16 +136,16 @@ onShow(async () => { | @@ -118,16 +136,16 @@ onShow(async () => { | ||
| 118 | 136 | ||
| 119 | // 未登录处理:跳转登录页,阻止后续逻辑执行 | 137 | // 未登录处理:跳转登录页,阻止后续逻辑执行 |
| 120 | if (!isLogin()) { | 138 | if (!isLogin()) { |
| 121 | - uni.showToast({title: '请先登录', icon: 'none', duration: 1500}); | ||
| 122 | - setTimeout(() => { | ||
| 123 | - uni.reLaunch({ | ||
| 124 | - url: '/pages/login/index', | ||
| 125 | - fail: (err) => { | ||
| 126 | - console.error('跳转登录页失败:', err); | ||
| 127 | - uni.showToast({title: '跳转登录页异常', icon: 'none'}); | ||
| 128 | - } | ||
| 129 | - }); | ||
| 130 | - }, 1500); | 139 | + // uni.showToast({title: '请先登录', icon: 'none', duration: 1500}); |
| 140 | + // setTimeout(() => { | ||
| 141 | + // uni.reLaunch({ | ||
| 142 | + // url: '/pages/login/index', | ||
| 143 | + // fail: (err) => { | ||
| 144 | + // console.error('跳转登录页失败:', err); | ||
| 145 | + // uni.showToast({title: '跳转登录页异常', icon: 'none'}); | ||
| 146 | + // } | ||
| 147 | + // }); | ||
| 148 | + // }, 1500); | ||
| 131 | loading.value = false; | 149 | loading.value = false; |
| 132 | return; | 150 | return; |
| 133 | } | 151 | } |
| @@ -144,6 +162,16 @@ onShow(async () => { | @@ -144,6 +162,16 @@ onShow(async () => { | ||
| 144 | } | 162 | } |
| 145 | }); | 163 | }); |
| 146 | 164 | ||
| 165 | +const ToLoginPage = ()=> { | ||
| 166 | + uni.reLaunch({ | ||
| 167 | + url: '/pages/login/index', | ||
| 168 | + fail: (err) => { | ||
| 169 | + console.error('跳转登录页失败:', err); | ||
| 170 | + uni.showToast({title: '跳转登录页异常', icon: 'none'}); | ||
| 171 | + } | ||
| 172 | + }); | ||
| 173 | +} | ||
| 174 | + | ||
| 147 | const handleMenuClick = (item: MenuItem) => { | 175 | const handleMenuClick = (item: MenuItem) => { |
| 148 | if (!item.jumpUrl) { | 176 | if (!item.jumpUrl) { |
| 149 | uni.showToast({title: '暂无跳转链接', icon: 'none', duration: 2000}); | 177 | uni.showToast({title: '暂无跳转链接', icon: 'none', duration: 2000}); |