You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
517 lines
11 KiB
517 lines
11 KiB
<template>
|
|
<!-- 详情 update用-->
|
|
<view class="detail-container" v-if="show1">
|
|
<view class="popup" >
|
|
<u-form :model="form1" label-width="160rpx">
|
|
<u-form-item label="工单编号" prop="number" required>
|
|
<u-input v-model="form1.number" :disabled=true/>
|
|
</u-form-item>
|
|
<u-form-item label="巡检项名称" prop="name" required>
|
|
<u-input v-model="form1.name" :disabled=true/>
|
|
</u-form-item>
|
|
<u-form-item label="巡检内容" prop="content" required>
|
|
<u-input v-model="form1.content" :disabled=true/>
|
|
</u-form-item>
|
|
<u-form-item label="结果" prop="resultStr" required>
|
|
<u-input v-model="form1.resultStr" placeholder="请选择" :disabled=true />
|
|
<u-select v-model="show" mode ='single-column' :list="list" @confirm="confirm"></u-select>
|
|
<u-button type="primary" @click="show = true">选择</u-button>
|
|
</u-form-item>
|
|
<u-form-item label="未完成原因" :required="causeFlag" >
|
|
<u-input v-model="form1.uncompletedCause" placeholder="请输入未完成原因" :disabled="causeDisabled" />
|
|
</u-form-item>
|
|
</u-form>
|
|
</view>
|
|
<div class="line"></div>
|
|
<view class="footer">
|
|
<view class="btns" >
|
|
<u-button type="primary" @click="submitForm1()" :loading='loading' :disabled='loading'>提交</u-button>
|
|
</view>
|
|
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
|
|
</view>
|
|
<!-- 验证完结-->
|
|
<u-popup v-model="isVerifyShowSuccess" mode="center" border-radius="14">
|
|
<view class="popup-title">意见</view>
|
|
<view class="popup">
|
|
<textarea v-model="data.applyContent" placeholder="请输入内容"></textarea>
|
|
</view>
|
|
<view class="popup-footer">
|
|
<view class="sure" @click="apply('APPROVEPASS')">通过</view>
|
|
<view class="reject" @click="apply('APPROVEREJECTED')" style="color: red;">驳回</view>
|
|
</view>
|
|
</u-popup>
|
|
|
|
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
|
|
</view>
|
|
<!-- 详情 create用-->
|
|
<view class="detail-container" v-if="show2">
|
|
<view class="popup" >
|
|
<!-- 表单 -->
|
|
<u-form :model="form2" label-width="160rpx">
|
|
<u-form-item label="工单编号" prop="number" required>
|
|
<u-input v-model="form2.number" :disabled=true/>
|
|
</u-form-item>
|
|
<u-form-item label="巡检项" prop="chargePeoples" required>
|
|
<view class="select" @click="addItem()">
|
|
<view class="input" v-if='form2.name'>
|
|
{{form2.name}}
|
|
</view>
|
|
<view class="placeholder" v-else>
|
|
请选择非必选巡检项
|
|
</view>
|
|
<u-icon name="arrow-right" color="#aaaaaa" size="28"></u-icon>
|
|
</view>
|
|
</u-form-item>
|
|
</u-form>
|
|
<!-- 弹出非必选巡检项 -->
|
|
<u-popup v-model="isShowItem" mode="center" border-radius="14">
|
|
<view class="popup-title">非必选巡检项</view>
|
|
<view class="popup">
|
|
<u-checkbox-group @change="checkboxItemChange">
|
|
<u-checkbox v-model="item.checked" v-for="(item, index) in itemList" :key="index"
|
|
:name="item.itemName">{{item.itemName}}</u-checkbox>
|
|
</u-checkbox-group>
|
|
</view>
|
|
<view class="popup-footer">
|
|
<view @click="isShowItem = false">取消</view>
|
|
<view class="sure" @click="chooseItem">确认</view>
|
|
</view>
|
|
</u-popup>
|
|
<view class="footer">
|
|
<view class="btns" >
|
|
<u-button type="primary" @click="submitForm2()" :loading='loading' :disabled='loading'>提交</u-button>
|
|
</view>
|
|
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import {
|
|
onLoad,
|
|
onShow
|
|
} from '@dcloudio/uni-app'
|
|
import {
|
|
ref,
|
|
getCurrentInstance
|
|
} from 'vue'
|
|
|
|
import * as inspectionOrderApi from "@/api/eam/inspection"
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
const subList = ref([])
|
|
const data = ref({})
|
|
const loading = ref(false)
|
|
const number = ref('')
|
|
const show = ref(false)
|
|
|
|
const show1 = ref(false)
|
|
const show2 = ref(false)
|
|
const isShowItem = ref(false)
|
|
const itemList = ref([])//查询非必选巡检项List
|
|
const chooseItemList = ref([])//选中非必选巡检项List
|
|
|
|
|
|
|
|
|
|
const current = ref(0)
|
|
const id = ref('')
|
|
const type = ref('')//设备类型 设备/工装
|
|
const causeFlag = ref(false)
|
|
const causeDisabled = ref(false)
|
|
|
|
const list = ref([{
|
|
label: '完成',
|
|
value: '0'
|
|
}, {
|
|
label: '未完成',
|
|
value: '1'
|
|
}])
|
|
|
|
const form1 = ref({
|
|
id:"",
|
|
masterId:"",
|
|
number: "",
|
|
result:"",
|
|
resultStr:"",
|
|
uncompletedCause: "",
|
|
content:"",
|
|
})
|
|
|
|
const form2 = ref({
|
|
id:"",
|
|
masterId:"",
|
|
number: "",
|
|
name:"",
|
|
})
|
|
|
|
function addItem(){
|
|
isShowItem.value = true
|
|
}
|
|
|
|
function checkboxItemChange(e) {
|
|
chooseItemList.value = e
|
|
}
|
|
|
|
function chooseItem() {
|
|
form2.value.name = chooseItemList.value.join(',')
|
|
isShowItem.value = false
|
|
}
|
|
|
|
|
|
function submitForm1(){
|
|
// 校验
|
|
if (form1.value.resultStr.length == 0) {
|
|
proxy.$modal.alert('请选择结果')
|
|
return;
|
|
}
|
|
if(form1.value.resultStr == '未完成' && form1.value.uncompletedCause.length == 0) {
|
|
proxy.$modal.alert('请输入未完成原因')
|
|
return;
|
|
}
|
|
|
|
proxy.$modal.confirm("是否确认提交").then(()=>{
|
|
proxy.$modal.loading('加载中')
|
|
inspectionOrderApi.inspectionOrderItemUpdate(form1.value).then((res) => {
|
|
proxy.$modal.closeLoading()
|
|
if(res.data){
|
|
proxy.$modal.showToast('成功')
|
|
setTimeout(() => {
|
|
proxy.$tab.navigateBack()
|
|
loading.value = false
|
|
proxy.$modal.closeLoading()
|
|
}, 1000)
|
|
}
|
|
}).catch(() => {
|
|
proxy.$modal.closeLoading()
|
|
loading.value = false
|
|
})
|
|
})
|
|
}
|
|
|
|
function submitForm2(){
|
|
// 校验
|
|
if (form2.value.name.length == 0) {
|
|
proxy.$modal.alert('请选择非必须巡检项')
|
|
return;
|
|
}
|
|
proxy.$modal.confirm("是否确认提交").then(()=>{
|
|
proxy.$modal.loading('加载中')
|
|
inspectionOrderApi.inspectionOrderItemCreate(form2.value).then((res) => {
|
|
proxy.$modal.closeLoading()
|
|
console.log(res)
|
|
if(res.code == 0){
|
|
proxy.$modal.showToast('成功')
|
|
setTimeout(() => {
|
|
proxy.$tab.navigateBack()
|
|
loading.value = false
|
|
proxy.$modal.closeLoading()
|
|
}, 1000)
|
|
}else{
|
|
proxy.$modal.showToast(res.msg)
|
|
}
|
|
}).catch(() => {
|
|
proxy.$modal.closeLoading()
|
|
loading.value = false
|
|
})
|
|
|
|
})
|
|
}
|
|
|
|
const confirm =(e)=>{
|
|
if(e[0].value == '0'){
|
|
form1.value.result = '0'
|
|
form1.value.resultStr = '完成'
|
|
form1.value.uncompletedCause = ''
|
|
causeFlag.value = false
|
|
causeDisabled.value = true
|
|
}
|
|
if(e[0].value == '1'){
|
|
form1.value.result = '1'
|
|
form1.value.resultStr = '未完成'
|
|
causeFlag.value = true
|
|
causeDisabled.value = false
|
|
}
|
|
}
|
|
onLoad(async (option) => {
|
|
if (option.data && option.type == 'update') {
|
|
show1.value = true
|
|
show2.value = false
|
|
data.value = JSON.parse(decodeURIComponent(option.data))
|
|
console.log(data.value)
|
|
form1.value.id = data.value.id
|
|
form1.value.masterId = data.value.masterId
|
|
form1.value.number = data.value.number
|
|
form1.value.name = data.value.name
|
|
form1.value.content = data.value.content
|
|
if(data.value.result == '0'){
|
|
form1.value.resultStr = '完成'
|
|
}else if(data.value.result == '1'){
|
|
form1.value.resultStr = '未完成'
|
|
}else{
|
|
form1.value.resultStr = ''
|
|
}
|
|
form1.value.uncompletedCause = data.value.uncompletedCause
|
|
}else if(option.data && option.type == 'create'){
|
|
show1.value = false
|
|
show2.value = true
|
|
data.value = JSON.parse(decodeURIComponent(option.data))
|
|
console.log(data.value)
|
|
form2.value.masterId = data.value.id
|
|
form2.value.number = data.value.number
|
|
//查询非必选巡检项
|
|
const paras1 = {
|
|
planNumber: data.value.planNumber,
|
|
available: 'TRUE',
|
|
isSelectd: 'false'
|
|
}
|
|
inspectionOrderApi.inspectionPlanItemList(paras1).then((res) => {
|
|
if (res.data) {
|
|
itemList.value = res.data
|
|
}
|
|
})
|
|
|
|
}
|
|
if (option.type) type.value = option.type;
|
|
})
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.detail-container {
|
|
min-height: 100vh;
|
|
background: white;
|
|
}
|
|
|
|
.line {
|
|
background: #f5f5f5;
|
|
height: 20rpx;
|
|
}
|
|
|
|
.info {
|
|
background: white;
|
|
}
|
|
|
|
.tab {
|
|
border-bottom: 1px solid #e4e4e4;
|
|
|
|
}
|
|
|
|
.title {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 20rpx 30rpx;
|
|
border-bottom: 1px solid #e4e4e4;
|
|
|
|
view {
|
|
&:nth-child(1) {
|
|
flex: 1;
|
|
border-left: 10rpx solid #409eff;
|
|
padding-left: 20rpx;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dec {
|
|
padding: 30rpx;
|
|
|
|
.dec-item {
|
|
padding-bottom: 30rpx;
|
|
display: flex;
|
|
|
|
view {
|
|
&:nth-child(1) {
|
|
width: 160rpx;
|
|
}
|
|
|
|
&:nth-child(2) {
|
|
color: #888888;
|
|
flex: 1;
|
|
width: 0px;
|
|
word-wrap: break-word;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.dec2 {
|
|
padding: 10rpx 30rpx;
|
|
display: flex;
|
|
|
|
view {
|
|
&:nth-child(1) {
|
|
width: 160rpx;
|
|
}
|
|
|
|
&:nth-child(2) {
|
|
color: #888888;
|
|
flex: 1;
|
|
width: 0px;
|
|
word-wrap: break-word;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
.items {
|
|
margin: 20rpx 30rpx;
|
|
border-radius: 12rpx;
|
|
background: #F5F5F5;
|
|
padding-bottom: 20rpx;
|
|
|
|
.items-name {
|
|
padding: 20rpx;
|
|
border-bottom: 1px solid #dedede;
|
|
}
|
|
|
|
.items-dec {
|
|
padding: 0px 20rpx;
|
|
margin-top: 20rpx;
|
|
}
|
|
}
|
|
|
|
.popup-title {
|
|
text-align: center;
|
|
font-size: 32rpx;
|
|
font-weight: bold;
|
|
color: #409eff;
|
|
padding: 30rpx
|
|
}
|
|
|
|
.popup {
|
|
width: 600rpx;
|
|
padding: 0rpx 60rpx 0rpx;
|
|
|
|
}
|
|
|
|
.popup-footer {
|
|
display: flex;
|
|
border-top: 1px solid #e4e4e4;
|
|
|
|
view {
|
|
line-height: 100rpx;
|
|
flex: 1;
|
|
text-align: center;
|
|
|
|
&.sure {
|
|
color: #409eff;
|
|
}
|
|
}
|
|
}
|
|
|
|
.footer {
|
|
position: fixed;
|
|
bottom: 0px;
|
|
left: 0px;
|
|
width: 100%;
|
|
background: white;
|
|
z-index: 22;
|
|
}
|
|
|
|
.btns {
|
|
display: flex;
|
|
|
|
padding: 20rpx;
|
|
box-shadow: 0px -2rpx 20rpx rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
button {
|
|
flex: 1;
|
|
margin: 0px 10rpx;
|
|
}
|
|
|
|
.sure {
|
|
background: #409eff;
|
|
color: white;
|
|
border-radius: 8rpx;
|
|
|
|
&::after {
|
|
border: 1px solid #409eff;
|
|
border-radius: 0px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.list {
|
|
padding: 20rpx;
|
|
|
|
.item {
|
|
display: flex;
|
|
margin-bottom: 20rpx;
|
|
|
|
.item-box {
|
|
border-radius: 12rpx;
|
|
border: 1px solid #dedede;
|
|
border-radius: 12rpx;
|
|
|
|
flex: 1;
|
|
width: 0rpx;
|
|
}
|
|
|
|
.spare-title {
|
|
padding: 20rpx 30rpx;
|
|
border-bottom: 1px solid #e4e4e4;
|
|
display: flex;
|
|
|
|
.title-txt {
|
|
color: #409eff;
|
|
font-size: 30rpx;
|
|
font-weight: bold;
|
|
flex: 1;
|
|
}
|
|
}
|
|
|
|
.dec {
|
|
color: #9c9c9c;
|
|
padding: 0rpx 30rpx 20rpx;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
.add-btn {
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
align-items: center;
|
|
}
|
|
|
|
::v-deep .u-radio-group {
|
|
display: grid !important;
|
|
padding-bottom: 20rpx;
|
|
}
|
|
|
|
.images {
|
|
display: flex;
|
|
width: 100%;
|
|
|
|
image {
|
|
width: 30%;
|
|
margin-right: 20rpx;
|
|
height: 200rpx;
|
|
border-radius: 10rpx;
|
|
}
|
|
}
|
|
|
|
.select {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 72rpx;
|
|
width: 100%;
|
|
|
|
.input {
|
|
flex: 1;
|
|
font-size: 28rpx;
|
|
color: #000000;
|
|
}
|
|
|
|
.placeholder {
|
|
flex: 1;
|
|
font-size: 28rpx;
|
|
color: rgb(192, 196, 204);
|
|
|
|
}
|
|
}
|
|
</style>
|