From e0cfcb8487f5f502b9e42a0c508fae71b6b56c55 Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期一, 02 十二月 2024 17:25:59 +0800 Subject: [PATCH] 修改设备巡检、设备维护 --- pages/infoBreakdown/index.vue | 9 + pagesAdmin/adminPlatform/inspect.vue | 87 +++++++++++++++- pagesAdmin/adminPlatform/maintain.vue | 91 ++++++++++++++++-- pages/login/index.vue | 2 pagesAdmin/adminPlatform/breakdown.vue | 66 ++++++++++++- unpackage/dist/dev/mp-weixin/api/index.js | 4 api/index.js | 4 7 files changed, 234 insertions(+), 29 deletions(-) diff --git a/api/index.js b/api/index.js index 6e8f765..c14572e 100644 --- a/api/index.js +++ b/api/index.js @@ -201,6 +201,10 @@ export function searchExamineApi(data){ return request('/facilityExamineRecord/search',data,'POST') } +//设备故障编辑 +export function editExamineApi(data){ + return request('/waterFacilityMalfunction/modify',data,'POST') +} diff --git a/pages/infoBreakdown/index.vue b/pages/infoBreakdown/index.vue index 67a83dd..94912e0 100644 --- a/pages/infoBreakdown/index.vue +++ b/pages/infoBreakdown/index.vue @@ -42,6 +42,7 @@ {text:'其他',value:6}, ]) const uploadList = ref(['','','']) + const uploadListForm = ref(['','','']) function uploadImg(val){ uni.chooseImage({ success: async(res) =>{ @@ -58,8 +59,8 @@ success: (success) => { console.log('success',success); let dataObj = JSON.parse(success.data) - // uploadList.value[val]= BASE_URL + '/upload' + dataObj.data.newFileName - uploadList.value[val]= dataObj.data.newFileName + uploadList.value[val]= BASE_URL + '/upload' + dataObj.data.newFileName + uploadListForm.value[val]= dataObj.data.newFileName console.log('uploadList.value',uploadList.value) }, fail: (err) => { @@ -87,7 +88,7 @@ } async function submit(){ formRef.value.validate().then(async() =>{ - form.value.url = uploadList.value + form.value.url = uploadListForm.value //去掉数组中空字符串,数组转字符串 form.value.url = form.value.url.filter(str => str !== '').join() await infoBreakdownApi(form.value).then((res) =>{ @@ -142,7 +143,7 @@ <view class="upload-img"> <block v-for="(item,index) in uploadList"> <view @click="uploadImg(index)" class="upload-img-item"> - <image v-if="item" :src="item"></image> + <image v-if="item" :src="item" mode="aspectFit"></image> <image v-else class="default-img" src="../../static/images/other/img-add.png" alt=""></image> </view> </block> diff --git a/pages/login/index.vue b/pages/login/index.vue index 3156d15..80a0138 100644 --- a/pages/login/index.vue +++ b/pages/login/index.vue @@ -56,7 +56,7 @@ } } //管理员登录 - const form = ref({userName:'admin',password:'lunhan123456'}) + const form = ref({userName:'',password:''}) const pwdType = ref('password') function changePwdType(str){ pwdType.value = str == 'pwd' ? 'text' : ( str == 'text' ? 'password' : 'text') diff --git a/pagesAdmin/adminPlatform/breakdown.vue b/pagesAdmin/adminPlatform/breakdown.vue index bc4e51c..b5ee743 100644 --- a/pagesAdmin/adminPlatform/breakdown.vue +++ b/pagesAdmin/adminPlatform/breakdown.vue @@ -1,9 +1,9 @@ <script setup> import { ref ,onMounted } from 'vue'; - import { searchBreakdownApi } from '../../api/index.js' + import { searchBreakdownApi,editExamineApi } from '../../api/index.js' import { BASE_URL } from '../../config/baseUrl.js'; - const baesUrl = ref(BASE_URL) + const baseUrl = ref(BASE_URL) const breakdownList = ref([]) async function searchBreakdown(){ await searchBreakdownApi({limit:10000,page:1}).then((res) =>{ @@ -17,6 +17,49 @@ } }) } + async function handleBreakdown(item){ + uni.showModal({ + title:'提示', + content:'确定已处理完成该上报问题', + success:async(res) =>{ + if(res.confirm){ + await setBreakdown(item) + } + }, + fail:() =>{} + }) + } + async function setBreakdown(item){ + let postParams = JSON.parse(JSON.stringify(item)) + postParams.isSolve = 1 + await editExamineApi(postParams).then(async(res) =>{ + if(res.code == 200){ + console.log(13,postParams) + await searchBreakdown() + } + }) + } + //图片预览 + function clickImg(imgList,imgItem){ + console.log(333,imgList) + let imgUrl = baseUrl.value + '/upload' + imgItem + let imgUrlList = [] + imgList.forEach((item) =>{ + imgUrlList.push(baseUrl.value + '/upload' + item) + }) + console.log(123,imgUrlList) + uni.previewImage({ + urls:imgUrlList, //需要预览的图片http链接列表 + current: imgUrl, // 当前显示图片的http链接,默认是第一个 + indicator:'default', + loop:true, + success: function(res) {}, + fail: function(res) { + console.log('error',res) + }, + complete: function(res) {}, + }) + } onMounted(async() =>{ await searchBreakdown() }) @@ -48,13 +91,14 @@ <text class="text">处理状态:</text> <text class="value">{{item.isSolveView}}</text> </view> - <view v-if="item.isSolve == 0" class="handle-btn">去处理</view> + <view v-if ="item.isSolve == 0" class="handle-btn" @click="handleBreakdown(item)">核实处理</view> + <view v-else class="handle-status">已处理</view> </view> <view class="item-child-image"> <view class="text">故障图片:</view> <view class="imgList"> - <view class="child-img" v-for="(itemChild,index) in item.imageList"> - <image class="img" :src="baesUrl + '/upload' + itemChild" mode="aspectFit"></image> + <view class="child-img" v-for="(itemChild,index) in item.imageList" :key="index" @click="clickImg(item.imageList,itemChild)"> + <image class="img" :src="baseUrl + '/upload' + itemChild" mode="aspectFit"></image> </view> </view> </view> @@ -83,7 +127,7 @@ width:100%; height: 550rpx; box-shadow: 0 0 3rpx 1rpx #bac1c8; - margin-top:15rpx; + margin-top:30rpx; display: flex; flex-direction: column; padding:10rpx 20rpx; @@ -110,6 +154,16 @@ text-align: center; line-height:60rpx; color: #fff; + font-size:28rpx; + } + .handle-status{ + width:120rpx; + height:60rpx; + background: rgba(110, 151, 245, 0.4); + border-radius:15rpx; + text-align: center; + line-height:60rpx; + color: #fff; font-size: 30rpx; } } diff --git a/pagesAdmin/adminPlatform/inspect.vue b/pagesAdmin/adminPlatform/inspect.vue index bb3fb72..71168a7 100644 --- a/pagesAdmin/adminPlatform/inspect.vue +++ b/pagesAdmin/adminPlatform/inspect.vue @@ -1,12 +1,17 @@ <script setup> import { ref ,onMounted} from 'vue'; import { searchExamineApi } from '../../api/index.js' + import { BASE_URL } from '../../config/baseUrl.js'; + const baseUrl = ref(BASE_URL) const examineList = ref([]) async function searchExamine(){ await searchExamineApi({limit:10000,page:1}).then((res) =>{ if(res.code == 200){ examineList.value = res.data.list + examineList.value.forEach((item) =>{ + item.resultTypeView = item.resultType == 1 ? '正常' : ( item.resultType == 2 ? '异常' : '') + }) } }) } @@ -16,25 +21,35 @@ </script> <template> <view class="container"> - <navbar title = '巡检管理'></navbar> + <navbar title = '巡检记录'></navbar> <view class="content"> <view v-if="examineList.length > 0" class="main"> <view v-for="(item,index) in examineList" class="item"> <view class="item-child"> <text>巡检人:</text> - <text></text> + <text class="value">{{item.inspectUser}}</text> + </view> + <view class="item-child-area"> + <view>巡检内容:</view> + <textarea class="text-area value">{{item.content}}</textarea> </view> <view class="item-child"> - <view>巡检内容</view> - <textarea :maxlength="1000"></textarea> + <text>巡检结果:</text> + <text class="value">{{item.resultTypeView}}</text> </view> <view class="item-child"> - <text>巡检图片:</text> - <!-- <image src=""></image> --> + <text>巡检时间:</text> + <text class="value">{{item.createTimeView}}</text> </view> <view class="item-child"> <text>备注:</text> - <text></text> + <text class="value remark">{{item.remark}}</text> + </view> + <view class="item-child-area"> + <text>上传图片:</text> + <view class="item-img-box"> + <image class="item-img" :src="baseUrl + '/upload' + item.inspectUrl" mode="aspectFit"></image> + </view> </view> </view> </view> @@ -59,9 +74,65 @@ height:100%; padding:20rpx; box-sizing: border-box; - background: #f3f3f5; + background:rgba(255, 255, 255, 0.6); border-radius:10rpx; overflow: scroll; + .item{ + width:100%; + // height:500rpx; + border:1rpx solid rgba(77,173,225,0.3); + border-radius:10rpx; + background: rgba(255, 255, 255, 0.6); + margin-bottom:40rpx; + display: flex; + flex-direction: column; + padding:20rpx 30rpx; + justify-content: space-between; + box-sizing: border-box; + color: rgba(48,102,218,0.6); + box-shadow: 0 3rpx 5rpx 1rpx rgba(197, 199, 203, 0.6); + .value{ + color: rgba(86, 86, 90, 1.0); + } + .item-child{ + width:100%; + margin-bottom:20rpx; + .remark{ + margin-left:5%; + font-size:28rpx; + } + } + .item-child-area{ + width:100%; + display: flex; + flex-direction: column; + margin-bottom:20rpx; + .text-area{ + width:90%; + margin-top:20rpx; + margin-left:5%; + border:1rpx solid rgba(116, 160, 255, 0.3); + font-size:28rpx; + padding:20rpx; + box-sizing: border-box; + border-radius:10rpx; + } + .item-img-box{ + width:220rpx; + height:220rpx; + display: flex; + align-items: center; + justify-content: center; + border: 1rpx dashed #8BC1FC; + margin-top:20rpx; + margin-left:10%; + .item-img{ + width:200rpx; + height:200rpx; + } + } + } + } } .nodata{ width:100%; diff --git a/pagesAdmin/adminPlatform/maintain.vue b/pagesAdmin/adminPlatform/maintain.vue index db1e87e..9f34178 100644 --- a/pagesAdmin/adminPlatform/maintain.vue +++ b/pagesAdmin/adminPlatform/maintain.vue @@ -1,12 +1,17 @@ <script setup> import { ref ,onMounted} from 'vue'; import { searchMaintainApi } from '../../api/index.js' + import { BASE_URL } from '../../config/baseUrl.js'; + const baseUrl = ref(BASE_URL) const maintainList = ref([]) async function searchMaintain(){ await searchMaintainApi({limit:10000,page:1}).then((res) =>{ if(res.code == 200){ maintainList.value = res.data.list + maintainList.value.forEach((item) =>{ + item.resultTypeView = item.resultType == 1 ? '正常' : ( item.resultType == 2 ? '异常' : '') + }) } }) } @@ -16,25 +21,35 @@ </script> <template> <view class="container"> - <navbar title = '维护管理'></navbar> + <navbar title = '维护记录'></navbar> <view class="content"> <view v-if="maintainList.length > 0" class="main"> <view v-for="(item,index) in maintainList" class="item"> <view class="item-child"> - <text>维护人员:</text> - <text></text> + <text>维修人:</text> + <text class="value">{{item.inspectUser}}</text> + </view> + <view class="item-child-area"> + <view>维修内容:</view> + <textarea class="text-area value">{{item.content}}</textarea> </view> <view class="item-child"> - <view>维修内容</view> - <textarea :maxlength="1000"></textarea> + <text>维修状态:</text> + <text class="value">{{item.resultTypeView}}</text> </view> <view class="item-child"> - <text>维修图片:</text> - <!-- <image src=""></image> --> + <text>维修时间:</text> + <text class="value">{{item.createTimeView}}</text> </view> <view class="item-child"> <text>备注:</text> - <text></text> + <text class="value remark">{{item.remark}}</text> + </view> + <view class="item-child-area"> + <text>上传图片:</text> + <view class="item-img-box"> + <image class="item-img" :src="baseUrl + '/upload' + item.inspectUrl" mode="aspectFit"></image> + </view> </view> </view> </view> @@ -59,9 +74,65 @@ height:100%; padding:20rpx; box-sizing: border-box; - background: #f3f3f5; - overflow: scroll; + background:rgba(255, 255, 255, 0.6); border-radius:10rpx; + overflow: scroll; + .item{ + width:100%; + // height:500rpx; + border:1rpx solid rgba(77,173,225,0.3); + border-radius:10rpx; + background: rgba(255, 255, 255, 0.6); + margin-bottom:40rpx; + display: flex; + flex-direction: column; + padding:20rpx 30rpx; + justify-content: space-between; + box-sizing: border-box; + color: rgba(48,102,218,0.6); + box-shadow: 0 3rpx 5rpx 1rpx rgba(197, 199, 203, 0.6); + .value{ + color: rgba(86, 86, 90, 1.0); + } + .item-child{ + width:100%; + margin-bottom:20rpx; + .remark{ + margin-left:5%; + font-size:28rpx; + } + } + .item-child-area{ + width:100%; + display: flex; + flex-direction: column; + margin-bottom:20rpx; + .text-area{ + width:90%; + margin-top:20rpx; + margin-left:5%; + border:1rpx solid rgba(116, 160, 255, 0.3); + font-size:28rpx; + padding:20rpx; + box-sizing: border-box; + border-radius:10rpx; + } + .item-img-box{ + width:220rpx; + height:220rpx; + display: flex; + align-items: center; + justify-content: center; + border: 1rpx dashed #8BC1FC; + margin-top:20rpx; + margin-left:10%; + .item-img{ + width:200rpx; + height:200rpx; + } + } + } + } } .nodata{ width:100%; diff --git a/unpackage/dist/dev/mp-weixin/api/index.js b/unpackage/dist/dev/mp-weixin/api/index.js index 90e4033..c949921 100644 --- a/unpackage/dist/dev/mp-weixin/api/index.js +++ b/unpackage/dist/dev/mp-weixin/api/index.js @@ -147,6 +147,9 @@ function searchExamineApi(data) { return util_request.request("/facilityExamineRecord/search", data, "POST"); } +function editExamineApi(data) { + return util_request.request("/waterFacilityMalfunction/modify", data, "POST"); +} exports.adminDetailApi = adminDetailApi; exports.adminLoginApi = adminLoginApi; exports.askShareApi = askShareApi; @@ -158,6 +161,7 @@ exports.creatUserArchive = creatUserArchive; exports.deleteAddressApi = deleteAddressApi; exports.editAddressApi = editAddressApi; +exports.editExamineApi = editExamineApi; exports.editParameterApi = editParameterApi; exports.editShareTypeApi = editShareTypeApi; exports.editUserInfoApi = editUserInfoApi; -- Gitblit v1.9.3