巡检任务新加设备搜索框

test
zhangdi 1 year ago
parent 3d16c6cff2
commit 89880d5675
  1. 4
      api/api.js
  2. 15
      pages/inspection/questDetails.vue
  3. 137
      pages/inspection/questOrder.vue

@ -359,7 +359,7 @@ const install = (Vue, vm) => {
isparams: false
})
// 巡检 新加签名和备注字段接口
let updateSign = (params) => http.post('/task-serviceman-update-sign', params, {
let updateSign = (params) => http.post('/lab-ops/maintenance/task-serviceman-update-sign', params, {
authorizations: true,
isparams: false
})
@ -380,7 +380,7 @@ const install = (Vue, vm) => {
isparams: false
})
// 更改消息状态
let getMesseageTotal = (params) => http.get('//messeage/total', params, {
let getMesseageTotal = (params) => http.get('/messeage/total', params, {
authorizations: true,
isparams: false
})

@ -58,7 +58,7 @@
<image class="item_right_img" :src="s.picUrl"></image>
</text>
</view>
<view class="info_item" v-if="s.signUrl != ''">
<!-- <view class="info_item" v-if="s.signUrl != ''">
<text class="item_left_txt">签字</text>
<text class="item_right_txt">
{{ s.signUrl }}
@ -69,7 +69,7 @@
<text class="item_right_txt">
{{ s.remark }}
</text>
</view>
</view> -->
<view class="info_item" v-if="s.price >= 0">
<text class="item_left_txt">价格</text>
<text class="item_right_txt">
@ -87,7 +87,16 @@
</u-collapse-item>
</u-collapse>
</view>
<view class="info">
<view class="info_item">
<text class="item_left_txt">签字</text>
<text class="item_right_txt">{{ detailForm.signUrl }}</text>
</view>
<view class="info_item">
<text class="item_left_txt">备注</text>
<text class="item_right_txt">{{ detailForm.remark }}</text>
</view>
</view>
</view>
</template>
<script>

@ -91,7 +91,12 @@
<!-- 填写内容 -->
<view class="info" v-if="!reservationDisabled">
<view class="info_title">巡检任务</view>
<u-collapse :accordion="false" ref="collapseTask">
<view class="info_search">
<u-search placeholder="请输入设备名称" v-model="deviceNameSearch" :clearabled="true"
@change="deviceNameSearchFn" :show-action="false"></u-search>
</view>
<u-collapse :accordion="false" ref="collapseTask"
v-if="detailForm.details && detailForm.details.length > 0">
<u-collapse-item v-for="(item, index) in detailForm.details" :key="index">
<view slot="title">
<text class="collapse-title">实验室楼层{{ item.floorName }}</text>
@ -149,6 +154,7 @@
</view>
</u-collapse-item>
</u-collapse>
<u-empty text="设备为空" mode="list" v-else></u-empty>
</view>
<view class="info">
<u-form labelPosition="left" ref="sendOrderForm" :model="detailForm" :label-width="120" class="repair_form">
@ -338,7 +344,9 @@ export default {
approveResult: null,//1 0
approveText: '',//
approveTime: '',//
}
},
deviceNameSearch: '',//
deviceList: [],//
}
},
onLoad(options) {
@ -357,16 +365,24 @@ export default {
if (this.detailsType == 'task') {
this.$u.api.getTaskDetail(query).then(res => {
if (res.code == 200) {
this.detailForm = res.data
this.updateData(res.data.details)
this.detailForm = res.data
this.deviceList = this.detailForm.details
this.signUrl = res.data.signUrl
this.remark = res.data.remark
this.collapseData = JSON.parse(JSON.stringify(res.data.details))
}
})
} else {
this.$u.api.getRepairDetail(query).then(res => {
if (res.code == 200) {
this.detailForm = res.data
this.updateData(res.data.details)
this.detailForm = res.data
this.deviceList = this.detailForm.details
this.signUrl = res.data.signUrl
this.remark = res.data.remark
this.collapseData = JSON.parse(JSON.stringify(res.data.details))
}
})
@ -456,7 +472,7 @@ export default {
},
//
submitQuest() {
let newArr = this.handleData(this.detailForm.details)
let newArr = this.handleData(this.deviceList)
let status = newArr.every((item) => {
return item.status != null
})
@ -480,33 +496,34 @@ export default {
taskId: this.detailForm.id
})
})
this.$u.api.updateDetaile(queryData).then(res => {
if (res.code == 200) {
let signInfo={
id:this.detailForm.id,
signUrl:this.signUrl,
remark:this.remark
}
this.$u.api.updateSign(signInfo).then(res => {
if (res.code == 200) {
let query = {
id: this.detailForm.id,
}
// this.$u.api.taskServicemanSubmit(query).then(res => {
// if (res.code == 200) {
// uni.showToast({ title: "", icon: "none" });
// setTimeout(() => {
// uni.navigateBack({
// delta: 1 // 1退
// })
// }, 500)
// }
// })
}
})
}
})
console.log(11111111, newArr)
// this.$u.api.updateDetaile(queryData).then(res => {
// if (res.code == 200) {
// let signInfo = {
// id: this.detailForm.id,
// signUrl: this.signUrl,
// remark: this.remark
// }
// this.$u.api.updateSign(signInfo).then(res => {
// if (res.code == 200) {
// let query = {
// id: this.detailForm.id,
// }
// this.$u.api.taskServicemanSubmit(query).then(res => {
// if (res.code == 200) {
// uni.showToast({ title: "", icon: "none" });
// setTimeout(() => {
// uni.navigateBack({
// delta: 1 // 1退
// })
// }, 500)
// }
// })
// }
// })
// }
// })
},
//
changeApproveResult(e) {
@ -743,14 +760,55 @@ export default {
},
calendarChange(e) {
this.reservationTime = e.result
},
//
itemCollapseChange() {
this.$nextTick(() => {
this.$refs.collapseTask.init()
})
},
deviceNameSearchFn(val) {
this.detailForm.details = []
let newArr = this.filterByDeviceName(this.deviceList, val)
this.detailForm.details = newArr.details
this.itemCollapseChange()
},
//
filterByDeviceName(data, targetDeviceName) {
//
const recursiveFilter = (details) => {
return details
.map(item => {
// item.details
const filteredDetails = item.details ? item.details.map(subItem => {
const matchingDetails = subItem.details
? subItem.details.filter(detail => detail.deviceName.includes(targetDeviceName))
: [];
console.log('matchingDetails', matchingDetails)
return {
...subItem,
details: matchingDetails.length > 0 ? matchingDetails : undefined, // details
};
}).filter(subItem => subItem.details) : []; // details
return {
...item,
details: filteredDetails.length > 0 ? filteredDetails : undefined, // details
};
})
.filter(item => item.details); // details
};
return {
...data,
details: recursiveFilter(data)
};
}
},
//
itemCollapseChange() {
this.$nextTick(() => {
this.$refs.collapseTask.init()
})
}
}
</script>
<style lang="scss" scoped>
@ -774,6 +832,9 @@ export default {
margin: 18rpx 0 0rpx 20rpx;
font-weight: bold;
}
.info_search{
padding:0 32rpx
}
.info_item {
padding: 4rpx 20rpx 0;

Loading…
Cancel
Save