update repair detail

This commit is contained in:
lb 2024-02-21 15:35:12 +08:00
parent f8c2889abc
commit 5b40c3972c
2 changed files with 148 additions and 196 deletions

View File

@ -21,37 +21,26 @@
label-position="top" label-position="top"
v-loading="formLoading"> v-loading="formLoading">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8">
<el-form-item label="维修单号" prop="repairOrderNumber">
<span>{{ dataForm.repairOrderNumber }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备大类" prop="equipmentCategory">
<span>
{{
['-', '安全设备', '消防设备', '特种设备'][
dataForm.equipmentCategory || 0
]
}}
</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备名称" prop="equipmentName">
<span>{{ dataForm.equipmentName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修工" prop="repairman">
<span>{{ dataForm.repairman }}</span>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="故障发生时间" prop="faultTime"> <el-form-item label="故障发生时间" prop="faultTime">
<span>{{ parseTime(dataForm.faultTime) }}</span> <span>{{ parseTime(dataForm.faultTime) }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="8">
<el-form-item label="故障级别" prop="faultLevel">
<span>
{{
dataForm.faultLevel
? getDictDatas(DICT_TYPE.FAULT_LEVEL).find(
(item) => item.value == dataForm.faultLevel
)?.label
: '---'
}}
</span>
</el-form-item>
</el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="故障级别" prop="faultLevel"> <el-form-item label="故障级别" prop="faultLevel">
<span> <span>
@ -59,163 +48,68 @@
</span> </span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="故障类型" prop="faultType">
<span>
{{ getDictDataLabel('fault-type', dataForm.faultType) }}
</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修工" prop="repairman">
<span>{{ dataForm.repairman }}</span>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="联系方式" prop="repairmanPhone"> <el-form-item label="联系方式" prop="repairmanPhone">
<span>{{ dataForm.repairmanPhone }}</span> <span>{{ dataForm.repairmanPhone }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-divider /> <el-col :span="8">
<el-form-item label="维修方式" prop="repairMode">
<span>
{{ getDictDataLabel('repair-mode', dataForm.repairMode) }}
</span>
</el-form-item>
</el-col>
<div <el-col :span="24">
v-if=" <el-form-item label="维修附件" prop="files">
disabled && dataForm.maintenanceStatus === 1 <div v-if="dataForm.files && dataForm.files.length > 0">
? true <uploadedFile
: !disabled class="file"
? true v-for="file in dataForm.files"
: false :file="file"
"> :key="file.fileUrl"
<small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
{{ '设备维修信息' }}
</small-title>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item
label="维修开始时间"
prop="maintenanceStartTime"
:rules="[
{
required: true,
message: '维修开始时间不能为空',
trigger: 'blur',
},
]">
<el-date-picker
v-model="dataForm.maintenanceStartTime"
type="datetime"
:disabled="disabled" :disabled="disabled"
placeholder="请选择维修开始时间" @delete="!disabled && handleDeleteFile(file, col.prop)" />
value-format="timestamp" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="维修结束时间"
prop="maintenanceFinishTime"
:rules="[
{
required: true,
message: '维修结束时间不能为空',
trigger: 'blur',
},
]">
<el-date-picker
v-model="dataForm.maintenanceFinishTime"
type="datetime"
:disabled="disabled"
placeholder="请选择维修开始时间"
value-format="timestamp" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="维修方式"
prop="repairMode"
:rules="[
{
required: true,
message: '维修方式不能为空',
trigger: 'blur',
},
]">
<el-select
:disabled="disabled"
v-model="dataForm.repairMode"
placeholder="请选择维修方式">
<el-option
v-for="opt in getDictDatas('repair-mode')"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="故障类型" prop="faultType">
<el-select
:disabled="disabled"
v-model="dataForm.faultType"
placeholder="请选择故障类型">
<el-option
v-for="opt in getDictDatas('fault-type')"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item
label="故障明细"
prop="faultDetail"
:rules="[
{
required: true,
message: '故障明细不能为空',
trigger: 'blur',
},
]">
<!-- // -->
<editor
v-model="dataForm.faultDetail"
:read-only="disabled"
:min-height="150" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item label="维修记录" prop="maintenanceDetail">
<!-- // -->
<editor
v-model="dataForm.maintenanceDetail"
:read-only="disabled"
:min-height="150" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item label="维修附件" prop="file">
<FileUpload
v-model="file"
:limit="1"
:f-name="fileName"
:disabled="disabled"
@name="setFileName" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col>
<el-form-item label="备注" prop="remark">
<el-input
v-model="dataForm.remark"
:placeholder="`请输入备注`"
:disabled="disabled" />
</el-form-item>
</el-col>
</el-row>
</div> </div>
<p v-else>暂无附件</p>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="创建时间" prop="createTime">
<span>{{ parseTime(dataForm.createTime) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="创建人" prop="creator">
<span>{{ dataForm.creator }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<span>{{ dataForm.remark }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<div v-if="!disabled" class="drawer-body__footer"> <div v-if="!disabled" class="drawer-body__footer">
@ -230,11 +124,74 @@
<script> <script>
import SmallTitle from './SmallTitle.vue'; import SmallTitle from './SmallTitle.vue';
import { getEqRepair, updateEqRepair } from '@/api/equipment/base/repair'; import { getEqRepair, updateEqRepair } from '@/api/equipment/base/repair';
import Editor from '@/components/Editor'; // import Editor from '@/components/Editor';
import FileUpload from '@/components/FileUpload'; // import FileUpload from '@/components/FileUpload';
import { getDictDatas } from '@/utils/dict'; import { getDictDatas } from '@/utils/dict';
import { parseTime } from '@/utils/ruoyi'; import { parseTime } from '@/utils/ruoyi';
import { getDictDataLabel } from '@/utils/dict'; import { getDictDataLabel } from '@/utils/dict';
import tupleImg from '@/assets/images/tuple.png';
const uploadedFile = {
name: 'UploadedFile',
props: ['file', 'disabled'],
data() {
return {};
},
methods: {
handleDelete() {
this.$emit('delete', this.file);
},
async handleDownload() {
const data = await this.$axios({
url: this.file.fileUrl,
method: 'get',
responseType: 'blob',
});
await this.$message.success('开始下载');
// create download link
const url = window.URL.createObjectURL(data);
const link = document.createElement('a');
link.href = url;
link.download = this.file.fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
},
mounted() {
},
render: function (h) {
return (
<div
title={this.file.fileName}
onClick={this.handleDownload}
style={{
background: `url(${tupleImg}) no-repeat`,
backgroundSize: '14px',
backgroundPosition: '0 55%',
paddingLeft: '20px',
paddingRight: '24px',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
overflow: 'hidden',
cursor: 'pointer',
display: 'inline-block',
}}>
{this.file.fileName}
{!this.disabled && (
<el-button
type="text"
icon="el-icon-close"
style="float: right; position: relative; top: 2px; left: 8px; z-index: 100"
class="dialog__upload_component__close"
onClick={this.handleDelete}
/>
)}
</div>
);
},
};
export default { export default {
name: 'DialogForm', name: 'DialogForm',
@ -243,7 +200,7 @@ export default {
event: 'update', event: 'update',
}, },
emits: ['update'], emits: ['update'],
components: { SmallTitle, Editor, FileUpload }, components: { SmallTitle, uploadedFile }, //, Editor, FileUpload },
props: { props: {
// dataForm: { // dataForm: {
// type: Object, // type: Object,
@ -283,12 +240,8 @@ export default {
resetFields(args) { resetFields(args) {
return this.$refs.form.resetFields(args); return this.$refs.form.resetFields(args);
}, },
initData() {
this.file = '';
this.fileName = '';
},
init(row, isdetail) { init(row, isdetail) {
this.initData();
this.disabled = isdetail || false; this.disabled = isdetail || false;
this.dataForm.id = row.id || undefined; this.dataForm.id = row.id || undefined;
this.visible = true; this.visible = true;
@ -301,21 +254,15 @@ export default {
getEqRepair(this.dataForm.id).then((response) => { getEqRepair(this.dataForm.id).then((response) => {
this.formLoading = false; this.formLoading = false;
this.dataForm = response.data; this.dataForm = response.data;
debugger; });
this.dataForm.maintenanceStatus =
this.dataForm.maintenanceStatus || 0;
if (this.dataForm.files.length > 0) {
this.file = this.dataForm.files[0].fileUrl;
this.fileName = this.dataForm.files[0].fileName;
}
});
} else {
// if (this.urlOptions.isGetCode) {
// this.getCode()
// }
} }
}); });
}, },
handleDeleteFile(file, prop) {
this.dataForm.files = this.dataForm.files.filter(
(item) => item.fileUrl != file.fileUrl
);
},
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {

View File

@ -734,6 +734,11 @@ export default {
handleFilesOpen() {}, handleFilesOpen() {},
handleUploadSuccess(response, file, prop) { handleUploadSuccess(response, file, prop) {
console.log('response', response);
if (response.code != 0) {
this.$modal.msgError('上传失败: ', response.msg || '-');
return;
}
this.form.files.push({ this.form.files.push({
fileName: file.name, fileName: file.name,
fileUrl: response.data, fileUrl: response.data,