<route lang="json5" type="page">
|
{
|
layout: 'default',
|
needLogin: true,
|
style: {
|
navigationBarTitleText: '维修明细',
|
'app-plus': {
|
titleNView: {
|
buttons: [
|
{
|
text: '提交',
|
fontSize: '14px',
|
color: '#FFFFFF',
|
},
|
{
|
text: '保存',
|
fontSize: '14px',
|
color: '#FFFFFF',
|
},
|
],
|
},
|
},
|
},
|
}
|
</route>
|
<template>
|
<view class="bg-base container" safeAreaInsetTopBottom>
|
<wd-form ref="form" :model="repairRes" :rules="rules">
|
<wd-cell-group custom-class="group" title="报修信息" border>
|
<wd-cell title="故障类型" title-width="200rpx" is-link>
|
<text>{{ reqType?.dictLabel }}</text>
|
</wd-cell>
|
<wd-cell title="报修描述" :label="repairRes?.reqDesc" is-link />
|
</wd-cell-group>
|
|
<wd-cell-group
|
v-if="repairRes?.reqType === '1'"
|
custom-class="mt-2"
|
title="设备信息"
|
use-slot
|
border
|
>
|
<wd-cell title="设备名称" title-width="200rpx" is-link>
|
<text>{{ repairRes?.equName }}</text>
|
</wd-cell>
|
<wd-cell title="资产编号" title-width="200rpx" is-link>
|
<text>{{ repairRes?.assetNo }}</text>
|
</wd-cell>
|
</wd-cell-group>
|
|
<wd-cell-group
|
v-if="repairRes?.reqType === '2'"
|
custom-class="mt-2"
|
title="工具信息"
|
use-slot
|
border
|
>
|
<wd-cell title="工具名称" title-width="200rpx" is-link>
|
<text>{{ repairRes?.fixtureName }}</text>
|
</wd-cell>
|
<wd-cell title="资产编号" title-width="200rpx" is-link>
|
<text>{{ repairRes?.assetNo }}</text>
|
</wd-cell>
|
</wd-cell-group>
|
|
<wd-cell-group custom-class="mt-2" title="维修信息" use-slot border>
|
<wd-textarea
|
label="原因分析"
|
label-width="200rpx"
|
type="textarea"
|
v-model="repairRes.resReason"
|
auto-height
|
:maxlength="200"
|
show-word-limit
|
placeholder="请输入原因分析"
|
clearable
|
/>
|
|
<wd-textarea
|
label="处理措施"
|
label-width="200rpx"
|
type="textarea"
|
v-model="repairRes.resHandle"
|
auto-height
|
:maxlength="200"
|
show-word-limit
|
placeholder="请输入处理措施"
|
clearable
|
/>
|
|
<wd-textarea
|
label="预防措施"
|
label-width="200rpx"
|
type="textarea"
|
v-model="repairRes.resPrevent"
|
auto-height
|
:maxlength="200"
|
show-word-limit
|
placeholder="请输入预防措施"
|
clearable
|
/>
|
|
<wd-textarea
|
label="备注"
|
label-width="200rpx"
|
type="textarea"
|
v-model="repairRes.remark"
|
auto-height
|
:maxlength="200"
|
show-word-limit
|
placeholder="请输入备注"
|
clearable
|
/>
|
</wd-cell-group>
|
<view class="h-[2px] w-full bg-base"></view>
|
</wd-form>
|
</view>
|
</template>
|
|
<script setup lang="ts">
|
import { getRepairRes, updateRepairRes } from '@/service/repair'
|
import { RepairResVO } from '@/service/repair.d'
|
import { reactive, onMounted, ref } from 'vue'
|
import { FormRules } from 'wot-design-uni/components/wd-form/types'
|
import { useToast, useMessage } from 'wot-design-uni'
|
import { isLeader, isOperatorOrRepair } from '@/utils/RoleUtils'
|
import { DICT_REPAIR_REQ_TYPE, getDictInfo } from '@/service/dict'
|
import { formatDate } from '@/utils/DateUtils'
|
const toast = useToast()
|
const message = useMessage()
|
|
const fileList = ref<[]>()
|
|
// 报修单类型
|
const reqTypeList = ref<any>([])
|
|
const repairRes = reactive<RepairResVO>({
|
id: '',
|
resCode: '',
|
reqType: '',
|
reqDesc: '',
|
equName: '',
|
assetNo: '',
|
fixtureName: '',
|
resReason: '',
|
status: '',
|
resHandle: '',
|
resPrevent: '',
|
remark: '',
|
})
|
|
const rules: FormRules = {
|
startTime: [
|
{
|
required: true,
|
message: '请选择保养开始时间',
|
},
|
],
|
}
|
|
function handleFileChange({ fileList }) {}
|
|
function initRepairRes(id: any) {
|
getRepairRes(id)
|
.then((res: any) => {
|
Object.assign(repairRes, res)
|
})
|
.catch((res) => {})
|
}
|
|
async function initData(options: any) {
|
initRepairRes(options.id)
|
const reqList = await getDictInfo(DICT_REPAIR_REQ_TYPE)
|
reqTypeList.value = reqList
|
}
|
|
function hanldeUpdateRepairRes(data: any, resolve: any) {
|
updateRepairRes(data)
|
.then((res: any) => {
|
resolve(true)
|
toastSucces()
|
uni.$emit('res-list-refresh')
|
})
|
.catch((res) => {
|
console.error(res)
|
})
|
}
|
function toastSucces() {
|
toast.success('操作成功')
|
}
|
|
function handleClickRight(data: any) {
|
message
|
.confirm({
|
msg: '确定提交?',
|
title: '提示',
|
beforeConfirm: ({ resolve }) => {
|
hanldeUpdateRepairRes(data, resolve)
|
},
|
})
|
.then(() => {})
|
.catch((error) => {
|
console.log(error)
|
})
|
}
|
|
onNavigationBarButtonTap((e) => {
|
if (e.index === 0) {
|
// 管理员角色
|
if (isLeader()) {
|
toast.warning('当前登录角色不可操作')
|
} else if (isOperatorOrRepair()) {
|
switch (repairRes.status) {
|
// 已接单
|
case '1':
|
break
|
// 维修中
|
case '2':
|
{
|
const data = Object.assign({}, repairRes)
|
// 提交修改状态为完成
|
data.status = '3'
|
// 设置维修完成时间
|
data.endTime = formatDate(new Date())
|
handleClickRight(data)
|
}
|
break
|
// 已完成
|
case '3':
|
toast.warning('当前维修工单完成状态,不可操作')
|
break
|
}
|
}
|
} else if (e.index === 1) {
|
if (isLeader()) {
|
toast.warning('当前登录角色不可操作')
|
} else if (isOperatorOrRepair()) {
|
switch (repairRes.status) {
|
// 已接单
|
case '1':
|
break
|
// 维修中
|
case '2':
|
{
|
const data = Object.assign({}, repairRes)
|
data.status = '2'
|
// 仅保存不修改状态
|
handleClickRight(data)
|
}
|
break
|
// 已完成
|
case '3':
|
toast.warning('当前维修工单完成状态,不可操作')
|
break
|
}
|
}
|
}
|
})
|
|
const reqType = computed(() =>
|
reqTypeList.value.find((item) => item.dictValue === repairRes.reqType),
|
)
|
|
onMounted(() => {})
|
onLoad((options) => {
|
initData(options)
|
})
|
</script>
|
|
<style scoped lang="scss">
|
.container {
|
}
|
</style>
|