From 97ad8a00dc5801fbb60866b3fb3805b894f1895c Mon Sep 17 00:00:00 2001 From: liyuanchao <438964165@qq.com> Date: Sun, 27 Jul 2025 15:52:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/http.api.js | 3 + pages.json | 6 + pages/sys/user/myRepair/addRepair.vue | 10 +- pages/sys/user/myRepair/myRepair.vue | 174 ++++++++++++--------- pages/sys/user/myRepair/selectLocation.vue | 148 ++++++++++++++++++ pages/sys/user/myVisitor/myVisitor.vue | 18 +-- pages/sys/workbench/oa/oaDetail.vue | 5 + 7 files changed, 276 insertions(+), 88 deletions(-) create mode 100644 pages/sys/user/myRepair/selectLocation.vue diff --git a/common/http.api.js b/common/http.api.js index e37901e..c87d55b 100644 --- a/common/http.api.js +++ b/common/http.api.js @@ -17,6 +17,9 @@ const install = (Vue, vm) => { getFunList:(params = {})=>vm.$u.get(config.adminPath+'/system/funList/list', params), //我的访客列表 getMyVisitor:(params = {})=>vm.$u.get(config.adminPath+'/property/visitorManagement/list',params), + //报事报修 + getOrderList:(params = {})=>vm.$u.get(config.adminPath+'/property/workOrders/list',params), + // 基础服务:登录登出、身份信息、菜单授权、切换系统、字典数据等 lang: (params = {}) => vm.$u.get('/lang/'+params.lang), index: (params = {}) => vm.$u.get(config.adminPath+'/mobile/index', params), diff --git a/pages.json b/pages.json index 32d5f3c..7098ad8 100644 --- a/pages.json +++ b/pages.json @@ -333,6 +333,12 @@ "style": { "navigationBarTitleText": "新增" } + }, + { + "path": "pages/sys/user/myRepair/selectLocation", + "style": { + "navigationBarTitleText": "选择服务地址" + } }, { "path": "pages/sys/user/myRepair/repaired", diff --git a/pages/sys/user/myRepair/addRepair.vue b/pages/sys/user/myRepair/addRepair.vue index e5f1cdd..3ff9797 100644 --- a/pages/sys/user/myRepair/addRepair.vue +++ b/pages/sys/user/myRepair/addRepair.vue @@ -4,7 +4,7 @@ - + 请选择房屋所在地址 @@ -92,8 +92,12 @@ export default { MediaSelector.preview(path, MediaType.IMAGE); }, goRepaired(){ - uni.navigateTo({ url: '/pages/mine/myRepair/repaired' }); - } + uni.navigateTo({ url: '/pages/sys/user/myRepair/repaired' }); + }, + goSelectLocation(){ + uni.navigateTo({ url: '/pages/sys/user/myRepair/selectLocation' }); + } + } } diff --git a/pages/sys/user/myRepair/myRepair.vue b/pages/sys/user/myRepair/myRepair.vue index 5dbbd87..7afd362 100644 --- a/pages/sys/user/myRepair/myRepair.vue +++ b/pages/sys/user/myRepair/myRepair.vue @@ -15,17 +15,19 @@ - 工单号:{{ item.no }} - {{ item.statusText }} + 工单号:{{ item.orderNo }} + + {{ getStatusLabel(item.status) }} - - 建立时间:{{ item.time }} - 报事内容:{{ item.content }} - 报事位置:{{ item.addr }} + + 建立时间:{{ item.createTime }} + 报事内容:{{ item.typeName }} + 报事位置:{{ item.location }} 服务评价 - + @@ -37,18 +39,23 @@ - - + + + - {{ step }} + {{ step }} + - 建立时间:{{ detailItem.time }} - 报事内容:{{ detailItem.content }} - 报事位置:{{ detailItem.addr }} - + 建立时间:{{ detailItem.createTime }} + 报事内容:{{ detailItem.typeName }} + 报事位置:{{ detailItem.location }} + @@ -59,56 +66,19 @@ data() { return { // 空数组可切换空状态 - records: [{ - no: '20250628147856687', - time: '2025-07-02 15:24:36', - content: '室内无气,未欠费', - addr: '68栋1单元8-9', - statusText: '待处理', - statusClass: 'pending' - }, - { - no: '20250628147856687', - time: '2025-07-02 15:24:36', - content: '室内无气,未欠费', - addr: '68栋1单元8-9', - statusText: '已结束', - statusClass: 'done' - }, - { - no: '20250628147856687', - time: '2025-07-02 15:24:36', - content: '室内无气,未欠费', - addr: '68栋1单元8-9', - statusText: '处理中', - statusClass: 'doing' - }, - { - no: '20250628147856687', - time: '2025-07-02 15:24:36', - content: '室内无气,未欠费', - addr: '68栋1单元8-9', - statusText: '已结束', - statusClass: 'done' - }, - { - no: '20250628147856687', - time: '2025-07-02 15:24:36', - content: '室内无气,未欠费', - addr: '68栋1单元8-9', - statusText: '已结束', - statusClass: 'done' - } - ], + records: [], showDetailDialog: false, detailItem: {}, detailStep: 0, detailStatus: '', - progressSteps: ['创建报事', '待处理', '处理中', '已结束'], + progressSteps: ['创建工单', '处理中', '已结束'], lastScrollTop: 0, isAddBtnHidden: false } }, + onLoad() { + this.getOrders() + }, methods: { goBack() { uni.navigateBack(); @@ -118,19 +88,51 @@ url: '/pages/sys/user/myRepair/addRepair' }); }, + async getOrders() { + let res = await this.$u.api.getOrderList(); + if (res.code == '200') { + this.records = res.rows + } + }, + getStatusColor(status) { + const statusMap = { + 0: 'orange', + 1: 'doing', + 2: 'doing', + 3: 'doing', + 4: 'done' + }; + return statusMap[status] || ''; + }, showDetail(item) { this.detailItem = item; // 进度映射 - if(item.statusText === '待处理') { this.detailStep = 1; this.detailStatus = '待处理'; } - else if(item.statusText === '处理中') { this.detailStep = 2; this.detailStatus = '处理中'; } - else if(item.statusText === '已结束') { this.detailStep = 3; this.detailStatus = '已结束'; } - else { this.detailStep = 0; this.detailStatus = '创建报事'; } + if (item.status === 0) { + this.detailStep = 0; + this.detailStatus = '创建报'; + } else if (item.status === 4) { + this.detailStep = 3; + this.detailStatus = '已结束'; + } else { + this.detailStep = 2; + this.detailStatus = '处理中'; + } this.showDetailDialog = true; }, closeDetail() { this.showDetailDialog = false; }, - goTEvaluate(){ + getStatusLabel(status) { + const statusMap = { + 0: '创建工单', + 1: '处理中', + 2: '处理中', + 3: '处理中', + 4: '已完成' + }; + return statusMap[status] || ''; + }, + goTEvaluate() { uni.navigateTo({ url: '/pages/sys/user/myRepair/repairEvaluate' }); @@ -171,7 +173,8 @@ justify-content: center; position: relative; background: #fff; - flex-shrink: 0; /* 防止被压缩 */ + flex-shrink: 0; + /* 防止被压缩 */ } .repair-back { @@ -267,23 +270,24 @@ font-size: 24rpx; font-weight: 500; } - .repair-line-image{ - margin: left 29rpx ; + + .repair-line-image { + margin: left 29rpx; margin-right: 39rpx; height: 2rpx; margin-bottom: 29rpx; } - .repair-status.pending { - color: #FF9800; + .repair-status.orange { + color: #F3AB44; } .repair-status.doing { - color: #05C58C; + color: #00C9AA; } .repair-status.done { - color: #BDBDBD; + color: #8A8A8A; } .repair-info { @@ -330,21 +334,26 @@ .repair-detail-mask { position: fixed; - left: 0; top: 0; right: 0; bottom: 0; - background: rgba(0,0,0,0.45); + left: 0; + top: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.45); z-index: 999; display: flex; align-items: flex-end; justify-content: center; } + .repair-detail-dialog { width: 100vw; background: #fff; border-radius: 18rpx 18rpx 0 0; - box-shadow: 0 -2rpx 24rpx rgba(0,0,0,0.10); + box-shadow: 0 -2rpx 24rpx rgba(0, 0, 0, 0.10); padding: 52rpx 56rpx 69rpx 56rpx; margin-bottom: 0; } + .repair-detail-title { font-size: 36rpx; color: #000; @@ -352,6 +361,7 @@ position: relative; margin-bottom: 48rpx; } + .repair-detail-close { width: 32rpx; height: 32rpx; @@ -359,6 +369,7 @@ right: 0; top: 0; } + .repair-detail-progress-box { height: 107rpx; margin-bottom: 41rpx; @@ -369,20 +380,23 @@ justify-content: center; align-items: stretch; } + .repair-detail-progress { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5rpx; - margin-left: 70rpx; + margin-left: 100rpx; width: 100%; } + .repair-detail-step { display: flex; align-items: center; flex: 1; position: relative; } + .repair-detail-dot { width: 22rpx; height: 22rpx; @@ -392,14 +406,17 @@ position: relative; z-index: 2; } + .repair-detail-dot.active { background: #2186FF; border-color: #2186FF; } + .repair-detail-dot.current { background: #EF8D00; border-color: #EF8D00; } + .repair-detail-line { flex: 1; height: 4rpx; @@ -407,15 +424,18 @@ margin: 0 2rpx; z-index: 1; } + .repair-detail-line.active { background: #2186FF; } + .repair-detail-progress-labels { display: flex; justify-content: space-between; margin-left: 0; width: 100%; } + .repair-detail-label { font-size: 22rpx; color: #888; @@ -424,13 +444,15 @@ position: relative; top: 8rpx; } + .repair-detail-info { font-size: 26rpx; color: #222; margin-bottom: 30rpx; } + .repair-detail-btn { - width:445rpx; + width: 445rpx; height: 73rpx; background: linear-gradient(90deg, #005DE9 0%, #4B9BFF 100%); color: #fff; @@ -445,7 +467,7 @@ /* 让服务评价按钮靠右 */ .eval-btn-right { - margin-left: auto; - display: block; - width: fit-content; +margin-left: auto; +display: block; +width: fit-content; } \ No newline at end of file diff --git a/pages/sys/user/myRepair/selectLocation.vue b/pages/sys/user/myRepair/selectLocation.vue new file mode 100644 index 0000000..017ed83 --- /dev/null +++ b/pages/sys/user/myRepair/selectLocation.vue @@ -0,0 +1,148 @@ + + + + + {{ region }} + + + + + + + + + + + + + {{ item.name }} + {{ item.detail }} + + + + + + + + + \ No newline at end of file diff --git a/pages/sys/user/myVisitor/myVisitor.vue b/pages/sys/user/myVisitor/myVisitor.vue index f31af21..dda5e7f 100644 --- a/pages/sys/user/myVisitor/myVisitor.vue +++ b/pages/sys/user/myVisitor/myVisitor.vue @@ -125,15 +125,15 @@ 3: '已完成' }; return statusMap[status] || ''; - }, - getStatusColor(status){ - const statusMap = { - 0: '待确认', - 1: 'orange', - 2: '已取消', - 3: '已完成' - }; - return statusMap[status] || ''; + }, + getStatusColor(status){ + const statusMap = { + 0: '待确认', + 1: 'orange', + 2: '已取消', + 3: '已完成' + }; + return statusMap[status] || ''; } } } diff --git a/pages/sys/workbench/oa/oaDetail.vue b/pages/sys/workbench/oa/oaDetail.vue index 0cd7a84..53454c2 100644 --- a/pages/sys/workbench/oa/oaDetail.vue +++ b/pages/sys/workbench/oa/oaDetail.vue @@ -228,12 +228,17 @@ width: 100%; height: 372rpx; margin-bottom: -180rpx; /* 减少负边距避免过度覆盖 */ + padding-top: 115rpx; display: flex; justify-content: space-between; position: relative; + z-index: 1; background: linear-gradient(180deg, #0A60ED 0%, #FFFFFF 100%); } + .card-wrapper{ + z-index: 100; + } .detail-back { margin-left: 37rpx; width: 15rpx;