机具定损完善

This commit is contained in:
hongchao 2025-06-13 18:15:27 +08:00
parent b95f54c00c
commit dc121fb045
8 changed files with 355 additions and 8 deletions

View File

@ -343,6 +343,13 @@
"navigationBarTitleText": "定损任务查看" "navigationBarTitleText": "定损任务查看"
} }
}, },
//
{
"path": "pages/repair/equipAssessment/view-detail",
"style": {
"navigationBarTitleText": "定损任务查看"
}
},
// 3. // 3.
{ {
"path": "pages/repair/equipAssessment/code-view", "path": "pages/repair/equipAssessment/code-view",

View File

@ -421,7 +421,7 @@ const saveCodeApi = async () => {
partType: partItems.value[j].partType, partType: partItems.value[j].partType,
partId: partItems.value[j].partId, partId: partItems.value[j].partId,
partNum: partItems.value[j].partNum, partNum: partItems.value[j].partNum,
storageNum: partItems.value[j].storageNum, partPrice: partItems.value[j].partPrice,
}) })
} }

View File

@ -38,7 +38,7 @@
<scroll-view scroll-y @scrolltolower="onScrollTolower" class="scroll-container"> <scroll-view scroll-y @scrolltolower="onScrollTolower" class="scroll-container">
<view class="table-list-item" :key="index" @click="handleItem(item)" v-for="(item, index) in tableList"> <view class="table-list-item" :key="index" @click="handleItem(item)" v-for="(item, index) in tableList">
<uni-swipe-action> <uni-swipe-action>
<uni-swipe-action-item @click="onClick($event, item)" :right-options="options"> <uni-swipe-action-item @click="onClick($event, item)" :right-options="active==1 ? options : []">
<div class="title"> <div class="title">
<div class="title-left"> <div class="title-left">
<span class="code">{{ item.repairCode }}</span> <span class="code">{{ item.repairCode }}</span>
@ -99,8 +99,8 @@
<script setup> <script setup>
import { ref, computed } from 'vue' import { ref, computed } from 'vue'
import { getRepairListAPI, repairSubmitAPI, repairRejectAPI } from '@/services/repair/repair.js' // import { getRepairListAPI, repairSubmitAPI, repairRejectAPI } from '@/services/repair/repair.js'
import { getLossAssessmentListAPI, } from '@/services/repair/equipAssessment.js' import { getLossAssessmentListAPI,repairSubmitAPI,repairRejectAPI } from '@/services/repair/equipAssessment.js'
import { onShow } from '@dcloudio/uni-app' import { onShow } from '@dcloudio/uni-app'
import { debounce } from 'lodash-es' import { debounce } from 'lodash-es'
@ -236,7 +236,20 @@ const changeTab = (index) => {
const handleItem = (item) => { const handleItem = (item) => {
console.log(item) console.log(item)
if(item.repairStatusCode=="0"){ if(item.repairStatusCode=="0"){
uni.navigateTo({ url: `/pages/repair/equipAssessment/details?taskId=${item.taskId}` }) //
uni.showModal({
title: '提示',
content: '是否确认进行定损?',
success: (res) => {
if (res.confirm) {
//
uni.navigateTo({ url: `/pages/repair/equipAssessment/details?taskId=${item.taskId}` })
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
// uni.navigateTo({ url: `/pages/repair/equipAssessment/details?taskId=${item.taskId}` })
}else{ }else{
uni.navigateTo({ url: `/pages/repair/equipAssessment/view?taskId=${item.taskId}` }) uni.navigateTo({ url: `/pages/repair/equipAssessment/view?taskId=${item.taskId}` })
} }

View File

@ -425,10 +425,11 @@ const saveNumAll = async () => {
partType: partItems.value[i].partType, partType: partItems.value[i].partType,
partId: partItems.value[i].partId, partId: partItems.value[i].partId,
partNum: partItems.value[i].partNum, partNum: partItems.value[i].partNum,
partPrice: partItems.value[i].partPrice,
dsNum:partItems.value[i].repairNum, dsNum:partItems.value[i].repairNum,
}) })
} }
console.log("yyyyyyyyyy",rowData.value)
saveLossAssessmentRow(rowData.value.repairDeviceList).then(async (response) => { saveLossAssessmentRow(rowData.value.repairDeviceList).then(async (response) => {
if (response.code == 200) { if (response.code == 200) {
uni.showToast({ title: '保存成功', icon: 'none' }) uni.showToast({ title: '保存成功', icon: 'none' })

View File

@ -0,0 +1,292 @@
<template>
<view class="page-container">
<uni-row :gutter="24" class="search-form">
<uni-col :span="12">
<view>
<uni-easyinput placeholder="请输入内容" />
</view>
</uni-col>
<uni-col :span="4">
<view class="search">查询</view>
</uni-col>
<!-- <uni-col :span="4">
<view class="search" style="background: #19be6b" @click="onQualified">合格</view>
</uni-col> -->
</uni-row>
<view class="table-list-item">
<uni-row :gutter="24">
<uni-col :span="6">物资名称</uni-col>
<uni-col :span="18"
><view class="cont">{{ queryParams.typeName }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">物资类型</uni-col>
<uni-col :span="18"
><view class="cont">{{ queryParams.type }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">待修数量</uni-col>
<uni-col :span="18"
><view class="cont">{{ Number(queryParams.typeRepairNum)-Number(queryParams.typeRepairedNum)-Number(queryParams.typeScrapNum)}}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">已修数量</uni-col>
<uni-col :span="18"><view class="cont">{{queryParams.typeRepairedNum}}</view>
</uni-col>
</uni-row>
<!-- <uni-row :gutter="24" v-if="queryParams.manageType==1">
<uni-col :span="6">维修人</uni-col>
<uni-col :span="18"><view class="cont">111</view>
</uni-col>
</uni-row>
<uni-row :gutter="24" v-if="queryParams.manageType==1">
<uni-col :span="6">维修时间</uni-col>
<uni-col :span="18"><view class="cont">222</view>
</uni-col>
</uni-row> -->
</view>
<scroll-view scroll-y @scrolltolower="onScrollTolower" style="padding-bottom: 90rpx">
<view class="table-list-item" v-for="item in repairDeviceList" :key="item.maId">
<uni-row :gutter="24" v-if="queryParams.manageType==0" >
<uni-col :span="6">设备编码</uni-col>
<uni-col :span="16">
<view class="cont">{{ item.maCode }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">维修人员</uni-col>
<uni-col :span="16">
<view class="cont">{{ item.repairer||"" }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">配件</uni-col>
<uni-col :span="16">
<view class="cont">{{ item.partName||"" }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">操作人</uni-col>
<uni-col :span="16">
<view class="cont">{{ item.createBy||"" }}</view>
</uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="6">操作时间</uni-col>
<uni-col :span="16">
<view class="cont">{{item.createTime||""}}</view>
</uni-col>
</uni-row>
</view>
</scroll-view>
<!-- <div v-for="(item, index) in repairDeviceList" :key="index">
<view class="code-list-item">
<uni-row :gutter="24">
<uni-col :span="2">{{ index + 1 }}.</uni-col>
<uni-col :span="16">{{ item.code }}</uni-col>
<uni-col :span="6">
<view class="cont" v-if="item.status == '1'" style="color: green">已完成</view>
<view class="cont" v-if="item.status == '0'" style="color: red">未完成</view>
</uni-col>
</uni-row>
</view>
</div> -->
</view>
</template>
<script setup>
import { computed, ref } from 'vue'
import { auditRepairPass } from '@/services/repair/repair.js'
import { getDetailsListApi } from '@/services/repair/equipAssessment.js'
import { onLoad } from '@dcloudio/uni-app'
// const query = defineProps() //
// const queryParams = JSON.parse(query.queryParams)
const queryParams = ref({})
// console.log(queryParams)
const allChecked = ref(false)
const repairDeviceList = ref([])
onLoad((options) => {
queryParams.value = JSON.parse(options.queryParams)
console.log(queryParams.value)
getDetailsList()
// repairDeviceList.value=queryParams.value.repairDeviceList;
// console.log(repairDeviceList.value)
})
//
const getDetailsList = async () => {
let param = {
typeId:queryParams.value.typeId,
taskId:queryParams.value.taskId
}
console.log("yyyyyyyy",param)
const res = await getDetailsListApi(param)
console.log(res)
repairDeviceList.value = res.rows
}
const onQualified = async () => {
console.log(queryParams.value.ids[1])
let id = [queryParams.value.ids[1]]
const res = await auditRepairPass(id)
if (res.code === 200) {
uni.showToast({
title: '操作成功!',
icon: 'none',
})
uni.navigateBack({
delta: 1, //
success() {
uni.$emit('onUpdate')
},
})
}
}
</script>
<style lang="scss" scoped>
.page-container {
display: flex;
height: 100vh;
padding: 24rpx;
flex-direction: column;
background-color: #f7f8fa;
//
.search-form {
margin-bottom: 24rpx;
:deep(.uni-easyinput__content) {
background-color: #fff;
border-radius: 12rpx;
height: 88rpx;
padding: 0 24rpx;
transition: all 0.3s ease;
&:focus-within {
border-color: #3784fb;
box-shadow: 0 0 0 2rpx rgba(55, 132, 251, 0.1);
}
}
.search {
height: 88rpx;
line-height: 88rpx;
text-align: center;
color: #fff;
font-size: 28rpx;
font-weight: 600;
border-radius: 12rpx;
transition: all 0.3s ease;
background: linear-gradient(135deg, #4b8eff 0%, #3784fb 100%);
box-shadow: 0 6rpx 20rpx rgba(55, 132, 251, 0.2);
&:active {
transform: scale(0.98);
opacity: 0.9;
}
}
}
//
.table-list-item {
background-color: #fff;
border-radius: 20rpx;
padding: 24rpx;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
//
.uni-row {
padding: 16rpx 0;
font-size: 28rpx;
border-bottom: 2rpx solid #f5f5f5;
&:last-child {
border-bottom: none;
}
.uni-col-6 {
color: #8c8c8c;
}
.cont {
color: #262626;
}
}
}
//
.code-list-item {
background-color: #fff;
border-radius: 20rpx;
padding: 24rpx;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
transition: all 0.3s ease;
cursor: pointer;
&:active {
transform: scale(0.99);
opacity: 0.9;
}
.uni-row {
display: flex;
align-items: center;
font-size: 28rpx;
.uni-col-2 {
color: #8c8c8c;
}
.uni-col-16 {
color: #262626;
font-weight: 500;
}
.uni-col-6 {
text-align: right;
.cont {
display: inline-block;
padding: 4rpx 16rpx;
border-radius: 8rpx;
font-size: 24rpx;
&[style*="color: green"] {
color: #52c41a !important;
background-color: rgba(82, 196, 26, 0.1);
}
&[style*="color: red"] {
color: #f5222d !important;
background-color: rgba(245, 34, 45, 0.1);
}
}
}
}
}
}
//
.loading-text {
text-align: center;
font-size: 28rpx;
color: #666;
padding: 20rpx 0;
}
.outbound-btn {
width: 70%;
margin: 25rpx auto;
height: 65rpx;
line-height: 65rpx;
text-align: center;
background-color: #19be6b;
border-radius: 12rpx;
color: #fff;
}
</style>

View File

@ -118,6 +118,7 @@
<script setup> <script setup>
import { ref, onUnmounted, computed } from 'vue' import { ref, onUnmounted, computed } from 'vue'
import { getRepairDetailsAPI, auditRepairPass } from '@/services/repair/repair.js' import { getRepairDetailsAPI, auditRepairPass } from '@/services/repair/repair.js'
import { getLossAssessmentDetailsAPI, } from '@/services/repair/equipAssessment.js'
import { onLoad, onShow } from '@dcloudio/uni-app' import { onLoad, onShow } from '@dcloudio/uni-app'
const detailsList = ref([]) const detailsList = ref([])
// const query = defineProps() // // const query = defineProps() //
@ -129,7 +130,8 @@ const search = () => {
} }
// //
const getRepairDetailsData = async () => { const getRepairDetailsData = async () => {
const res = await getRepairDetailsAPI({ taskId: taskId.value,keyword:keyWord.value }) const res = await getLossAssessmentDetailsAPI({ taskId: taskId.value,keyword:keyWord.value })
console.log("xxxxxxxxx",res)
detailsList.value = res.data detailsList.value = res.data
detailsList.value = detailsList.value.map((e) => { detailsList.value = detailsList.value.map((e) => {
return { ...e, isChecked: false } return { ...e, isChecked: false }
@ -193,7 +195,7 @@ const onQualified = async () => {
// //
const onRepairItem = (item) => { const onRepairItem = (item) => {
console.log(item) console.log(item)
let codingUrl = '/pages/repair/repairManage/view-detail' let codingUrl = '/pages/repair/equipAssessment/view-detail'
uni.navigateTo({ url: `${codingUrl}?queryParams=${JSON.stringify(item)}` }) uni.navigateTo({ url: `${codingUrl}?queryParams=${JSON.stringify(item)}` })
} }
onShow(() => { onShow(() => {

View File

@ -121,6 +121,7 @@ const getDetailsList = async () => {
typeId:queryParams.value.typeId, typeId:queryParams.value.typeId,
taskId:queryParams.value.taskId taskId:queryParams.value.taskId
} }
console.log("yyyyyyyyy",param)
const res = await getDetailsListApi(param) const res = await getDetailsListApi(param)
console.log(res) console.log(res)
repairDeviceList.value = res.rows repairDeviceList.value = res.rows

View File

@ -32,3 +32,34 @@ export const saveLossAssessmentRow = (data) => {
data data
}) })
} }
/**
* 定损 ---- 提交
*/
export const repairSubmitAPI = (data) => {
return http({
method: 'POST',
url: '/material/lossAssessment/endLossAssessmentTask',
data,
})
}
/**
* 定损 ---- 驳回
*/
export const repairRejectAPI = (id) => {
return http({
method: 'delete',
url: '/material/lossAssessment/' + id,
data: [id],
})
}
//获取查看明细
export const getDetailsListApi = (data) => {
return http({
method: 'GET',
url: '/material/lossAssessment/getDetailsListApp',
data,
})
}