From 4927ce371c725f55015c7996bcb781f1d79c5a60 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: Thu, 12 Jun 2025 00:14:07 +0800
Subject: [PATCH] 开发完成报修功能
---
src/api/work/myRepairDispatchManageApi.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/ownerRepairManageApi.js | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairDetailApi.js | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairDispatchManageApi.js | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairForceFinishManageApi.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairPoolManageApi.js | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairReturnVisitApi.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/api/work/repairTypeUserApi.js | 6 +++---
src/components/org/OrgTreeShow.vue | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/staff/SelectStaff.vue | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/AppraiseRepair.vue | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/DeleteRepairTypeUser.vue | 2 +-
src/components/work/EditRepairTypeUser.vue | 18 ++++++++----------
src/components/work/OrgTreeShow.vue | 59 -----------------------------------------------------------
src/components/work/SelectStaff.vue | 148 ----------------------------------------------------------------------------------------------------------------------------------------------------
src/components/work/StartRepair.vue | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/StopRepair.vue | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/addOwnerRepair.vue | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/chooseSingleResource.vue | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/closeOrder.vue | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/deleteOwnerRepair.vue | 46 ++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/dispatchRepair.vue | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/editOwnerRepair.vue | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/endRepair.vue | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/forceFinishRepair.vue | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/repairDetailEvent.vue | 38 ++++++++++++++++++++++++++++++++++++++
src/components/work/repairDetailPhotos.vue | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/repairDetailResource.vue | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/repairDetailUser.vue | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/work/visitOwnerRepair.vue | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/i18n/commonLang.js | 6 ++++--
src/i18n/index.js | 24 ++++++++++++++++++++++++
src/router/index.js | 41 ++++++++++++++++++++++++++++++++++++++---
src/views/work/myRepairDispatchManageLang.js | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/myRepairDispatchManageList.vue | 308 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/ownerRepairManageLang.js | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/ownerRepairManageList.vue | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairDetailLang.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairDetailList.vue | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairDispatchManageLang.js | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairDispatchManageList.vue | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairForceFinishManageLang.js | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairForceFinishManageList.vue | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairPoolManageLang.js | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairPoolManageList.vue | 412 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairReturnVisitLang.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairReturnVisitList.vue | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/work/repairSettingList.vue | 9 ++-------
src/views/work/repairTypeUserList.vue | 13 ++++++-------
49 files changed, 5675 insertions(+), 240 deletions(-)
create mode 100644 src/api/work/myRepairDispatchManageApi.js
create mode 100644 src/api/work/ownerRepairManageApi.js
create mode 100644 src/api/work/repairDetailApi.js
create mode 100644 src/api/work/repairDispatchManageApi.js
create mode 100644 src/api/work/repairForceFinishManageApi.js
create mode 100644 src/api/work/repairPoolManageApi.js
create mode 100644 src/api/work/repairReturnVisitApi.js
create mode 100644 src/components/org/OrgTreeShow.vue
create mode 100644 src/components/staff/SelectStaff.vue
create mode 100644 src/components/work/AppraiseRepair.vue
delete mode 100644 src/components/work/OrgTreeShow.vue
delete mode 100644 src/components/work/SelectStaff.vue
create mode 100644 src/components/work/StartRepair.vue
create mode 100644 src/components/work/StopRepair.vue
create mode 100644 src/components/work/addOwnerRepair.vue
create mode 100644 src/components/work/chooseSingleResource.vue
create mode 100644 src/components/work/closeOrder.vue
create mode 100644 src/components/work/deleteOwnerRepair.vue
create mode 100644 src/components/work/dispatchRepair.vue
create mode 100644 src/components/work/editOwnerRepair.vue
create mode 100644 src/components/work/endRepair.vue
create mode 100644 src/components/work/forceFinishRepair.vue
create mode 100644 src/components/work/repairDetailEvent.vue
create mode 100644 src/components/work/repairDetailPhotos.vue
create mode 100644 src/components/work/repairDetailResource.vue
create mode 100644 src/components/work/repairDetailUser.vue
create mode 100644 src/components/work/visitOwnerRepair.vue
create mode 100644 src/views/work/myRepairDispatchManageLang.js
create mode 100644 src/views/work/myRepairDispatchManageList.vue
create mode 100644 src/views/work/ownerRepairManageLang.js
create mode 100644 src/views/work/ownerRepairManageList.vue
create mode 100644 src/views/work/repairDetailLang.js
create mode 100644 src/views/work/repairDetailList.vue
create mode 100644 src/views/work/repairDispatchManageLang.js
create mode 100644 src/views/work/repairDispatchManageList.vue
create mode 100644 src/views/work/repairForceFinishManageLang.js
create mode 100644 src/views/work/repairForceFinishManageList.vue
create mode 100644 src/views/work/repairPoolManageLang.js
create mode 100644 src/views/work/repairPoolManageList.vue
create mode 100644 src/views/work/repairReturnVisitLang.js
create mode 100644 src/views/work/repairReturnVisitList.vue
diff --git a/src/api/work/myRepairDispatchManageApi.js b/src/api/work/myRepairDispatchManageApi.js
new file mode 100644
index 0000000..4bc375b
--- /dev/null
+++ b/src/api/work/myRepairDispatchManageApi.js
@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 获取维修已办列表
+export function listStaffFinishRepairs(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.listStaffFinishRepairs',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取维修已办列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取报修类型列表
+export function listRepairSettings(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: 'repair.listRepairSettings',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取报修类型失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 结单操作
+export function closeRepairDispatch(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.closeRepairDispatch',
+ method: 'post',
+ data
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '结单操作失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/ownerRepairManageApi.js b/src/api/work/ownerRepairManageApi.js
new file mode 100644
index 0000000..d7e7ce3
--- /dev/null
+++ b/src/api/work/ownerRepairManageApi.js
@@ -0,0 +1,161 @@
+import request from '@/utils/request'
+
+// 查询业主报修列表
+export function listOwnerRepairs(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.listOwnerRepairs',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取业主报修列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 添加业主报修
+export function saveOwnerRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.saveOwnerRepair',
+ method: 'post',
+ data
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '添加业主报修失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 更新业主报修
+export function updateOwnerRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.updateOwnerRepair',
+ method: 'post',
+ data
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '更新业主报修失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 删除业主报修
+export function deleteOwnerRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.deleteOwnerRepair',
+ method: 'post',
+ data
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '删除业主报修失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 查询报修类型列表
+export function listRepairSettings(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair.listRepairSettings',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取报修类型列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 查询楼栋列表
+export function queryFloors(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/floor.queryFloors',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取楼栋列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 查询单元列表
+export function queryUnits(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/unit.queryUnits',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取单元列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 查询房屋列表
+export function queryRooms(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/room.queryRooms',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取房屋列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairDetailApi.js b/src/api/work/repairDetailApi.js
new file mode 100644
index 0000000..2b77940
--- /dev/null
+++ b/src/api/work/repairDetailApi.js
@@ -0,0 +1,166 @@
+import request from '@/utils/request'
+import { getCommunityId } from '@/api/community/communityApi'
+
+// 获取工单详情
+export function getRepairDetail(repairId) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/ownerRepair.listOwnerRepairs',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 1,
+ communityId,
+ repairId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res.data[0])
+ } else {
+ reject(new Error(res.msg || '获取工单详情失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取工单图片
+export function getRepairPhotos(repairId) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/ownerRepair.listOwnerRepairs',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 1,
+ communityId,
+ repairId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve({
+ photos: res.data[0].repairPhotos || [],
+ beforePhotos: res.data[0].beforePhotos || [],
+ afterPhotos: res.data[0].afterPhotos || []
+ })
+ } else {
+ reject(new Error(res.msg || '获取工单图片失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取维修物品
+export function getRepairResources(repairId) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/resourceStore.listResourceStoreUseRecords',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 100,
+ communityId,
+ repairId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ const resources = res.data.map(item => {
+ if (item.resId === '666666') {
+ return { ...item, rstName: '自定义', specName: '自定义' }
+ }
+ return item
+ })
+ resolve(resources)
+ } else {
+ reject(new Error(res.msg || '获取维修物品失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取工单流转
+export function getRepairFlow(repairId) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/ownerRepair.listRepairStaffs',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 100,
+ communityId,
+ repairId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取工单流转失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取工单事件
+export function getRepairEvents(repairId) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/repair.listRepairEvent',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 100,
+ communityId,
+ repairId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取工单事件失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 回复评价
+export function replyAppraise(data) {
+ return new Promise((resolve, reject) => {
+ const communityId = getCommunityId()
+ request({
+ url: '/repair.replyRepairAppraise',
+ method: 'post',
+ data: {
+ ...data,
+ communityId
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve()
+ } else {
+ reject(new Error(res.msg || '回复评价失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairDispatchManageApi.js b/src/api/work/repairDispatchManageApi.js
new file mode 100644
index 0000000..d875a01
--- /dev/null
+++ b/src/api/work/repairDispatchManageApi.js
@@ -0,0 +1,163 @@
+import request from '@/utils/request'
+import { getCommunityId } from '@/api/community/communityApi'
+
+// 获取报修单列表
+export function listStaffRepairs(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.listStaffRepairs',
+ method: 'get',
+ params: {
+ ...params,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取报修单列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取报修类型
+export function listRepairSettings(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair.listRepairSettings',
+ method: 'get',
+ params: {
+ ...params,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取报修类型失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取维修师傅列表
+export function listRepairTypeUsers(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair.listRepairTypeUsers',
+ method: 'get',
+ params: {
+ ...params,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '获取维修师傅列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 报修派单
+export function repairDispatch(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairDispatch',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '报修派单失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 回访工单
+export function appraiseRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.appraiseRepair',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '回访工单失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 暂停报修
+export function repairStop(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairStop',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '暂停报修失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 启动报修
+export function repairStart(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairStart',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '启动报修失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairForceFinishManageApi.js b/src/api/work/repairForceFinishManageApi.js
new file mode 100644
index 0000000..2e140a9
--- /dev/null
+++ b/src/api/work/repairForceFinishManageApi.js
@@ -0,0 +1,154 @@
+import request from '@/utils/request'
+import { getCommunityId } from '@/api/community/communityApi'
+
+// 获取报修设置列表
+export function listRepairSettings() {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair.listRepairSettings',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 50,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取报修设置失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取报修池列表
+export function listOwnerRepairs(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.listOwnerRepairs',
+ method: 'get',
+ params: {
+ ...params,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve({
+ data: res.data,
+ total: res.total,
+ records: res.records
+ })
+ } else {
+ reject(new Error(res.msg || '获取报修列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取资源物品类型
+export function listResourceStoreTypes(parentId = '0') {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/resourceStoreType.listResourceStoreTypes',
+ method: 'get',
+ params: {
+ page: 1,
+ row: 100,
+ communityId: getCommunityId(),
+ parentId,
+ giveType: 1
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取资源物品类型失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取用户仓库物品
+export function listUserStorehouses(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/resourceStore.listUserStorehouses',
+ method: 'get',
+ params: {
+ ...params,
+ communityId: getCommunityId(),
+ chooseType: "repair",
+ flag: 1,
+ sign: 1,
+ giveType: 1
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取仓库物品失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 强制回单
+export function repairForceFinish(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairForceFinish',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '强制回单失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 获取字典数据
+export function getDict(dictType, statusCd) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/dict.listDict',
+ method: 'get',
+ params: {
+ dictType,
+ statusCd,
+ page: 1,
+ row: 100
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code == 0) {
+ resolve(res.data)
+ } else {
+ reject(new Error(res.msg || '获取字典失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairPoolManageApi.js b/src/api/work/repairPoolManageApi.js
new file mode 100644
index 0000000..761abdc
--- /dev/null
+++ b/src/api/work/repairPoolManageApi.js
@@ -0,0 +1,150 @@
+import request from '@/utils/request'
+import { getCommunityId } from '@/api/community/communityApi'
+
+// 查询报修工单池
+export function listRepairPools(params) {
+ return new Promise((resolve, reject) => {
+ const baseParams = {
+ communityId: getCommunityId(),
+ page: params.page || 1,
+ row: params.row || 10
+ }
+
+ const queryParams = { ...baseParams, ...params }
+
+ if (queryParams.state === 'TIMEOUT') {
+ queryParams.state = ''
+ queryParams.timeoutFlag = 'Y'
+ }
+
+ request({
+ url: '/ownerRepair.listOwnerRepairs',
+ method: 'get',
+ params: queryParams
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'Failed to fetch repair pools'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 派单
+export function dispatchRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairDispatch',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'Dispatch failed'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 结束工单
+export function endRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.repairEnd',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'End repair failed'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 更新业主报修
+export function updateOwnerRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.updateOwnerRepair',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'Update failed'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 删除业主报修
+export function deleteOwnerRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.deleteOwnerRepair',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'Delete failed'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 抢单
+export function grabbingRepair(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/ownerRepair.grabbingRepair',
+ method: 'post',
+ data: {
+ ...data,
+ communityId: getCommunityId()
+ }
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || 'Grab order failed'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairReturnVisitApi.js b/src/api/work/repairReturnVisitApi.js
new file mode 100644
index 0000000..09519df
--- /dev/null
+++ b/src/api/work/repairReturnVisitApi.js
@@ -0,0 +1,66 @@
+import request from '@/utils/request'
+
+// 查询报修回访列表
+export function getRepairReturnVisitList(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair/queryRepairReturnVisit',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve({
+ data: res.data,
+ total: res.total
+ })
+ } else {
+ reject(new Error(res.msg || '查询报修回访列表失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 保存报修回访记录
+export function saveRepairReturnVisit(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair/saveRepairReturnVisit',
+ method: 'post',
+ data
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve(res)
+ } else {
+ reject(new Error(res.msg || '保存回访记录失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
+
+// 查询报修类型设置
+export function listRepairSettings(params) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: '/repair.listRepairSettings',
+ method: 'get',
+ params
+ }).then(response => {
+ const res = response.data
+ if (res.code === 0) {
+ resolve({
+ data: res.data
+ })
+ } else {
+ reject(new Error(res.msg || '查询报修类型设置失败'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/api/work/repairTypeUserApi.js b/src/api/work/repairTypeUserApi.js
index 10648cc..b010b8c 100644
--- a/src/api/work/repairTypeUserApi.js
+++ b/src/api/work/repairTypeUserApi.js
@@ -38,7 +38,7 @@ export function updateRepairTypeUser(data) {
return new Promise((resolve, reject) => {
request({
- url: '/repair/updateRepairTypeUser',
+ url: '/repair.updateRepairTypeUser',
method: 'post',
data
}).then(response => {
@@ -55,7 +55,7 @@ export function deleteRepairTypeUser(data) {
return new Promise((resolve, reject) => {
request({
- url: '/repair/deleteRepairTypeUser',
+ url: '/repair.deleteRepairTypeUser',
method: 'post',
data
}).then(response => {
@@ -71,7 +71,7 @@ export function listOrgTree(params) {
return new Promise((resolve, reject) => {
request({
- url: '/org/listOrgTree',
+ url: '/org.listOrgTree',
method: 'get',
params
}).then(response => {
diff --git a/src/components/org/OrgTreeShow.vue b/src/components/org/OrgTreeShow.vue
new file mode 100644
index 0000000..b2be779
--- /dev/null
+++ b/src/components/org/OrgTreeShow.vue
@@ -0,0 +1,52 @@
+
+ {{ $t('selectStaff.orgInfo') }}
+ {{ $t('selectStaff.staffInfo') }}
+
{{ $t('repairDispatchManage.confirmStartRepair') }}
+{{ $t('common.deleteConfirm') }}
+ + +{{ $t('repairSetting.dispatchExplanation') }}
@@ -276,14 +276,9 @@ export default { } .explanation-section { - background-color: #f8f9fa; - padding: 15px; - border-radius: 4px; font-size: 14px; - line-height: 1.6; - p { - margin-bottom: 8px; + margin-bottom: 2px; } } } diff --git a/src/views/work/repairTypeUserList.vue b/src/views/work/repairTypeUserList.vue index a3194c8..7287d95 100644 --- a/src/views/work/repairTypeUserList.vue +++ b/src/views/work/repairTypeUserList.vue @@ -43,7 +43,7 @@ -