学习进度条
今日学习时间:1小时
今日代码量:100行
今日博客:1篇
了解到的知识点:继续完成团队项目 了解到动态存储的相关知识
设备维修相关部分
实体类代码
package com.example.littlebabydemo0425.pojo;
import lombok.Data;
import java.util.Date;
@Data
public class RepairManager {
private Integer planId; // 工单编号
private String name; // 设备名称
private String code; // 设备编号
private String type; // 设备类型
private String static2; // 工单状态(注意:static是Java关键字,添加了下划线)
private String description; // 故障描述
private String location; // 位置
private String repairer; // 报修人
private String repairTime; // 报修时间
private String image; // 图片
private String faultCode; // 故障编号
private String faultType; // 故障类型
private Integer reportType; // 报修方式(1-自主报修,2-电话报修)
private Date reportTime; // 报修时间
private Integer status; // 状态(0-待处理,1-处理中,2-已完成,3-已关闭)
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private String reporterName; // 报修人姓名
private String contactPhone;
public Integer getPlanId() {
return planId;
}
public void setPlanId(Integer planId) {
this.planId = planId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getStatic2() {
return static2;
}
public void setStatic2(String static2) {
this.static2 = static2;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getRepairer() {
return repairer;
}
public void setRepairer(String repairer) {
this.repairer = repairer;
}
public String getRepairTime() {
return repairTime;
}
public void setRepairTime(String repairTime) {
this.repairTime = repairTime;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getFaultCode() {
return faultCode;
}
public void setFaultCode(String faultCode) {
this.faultCode = faultCode;
}
public String getFaultType() {
return faultType;
}
public void setFaultType(String faultType) {
this.faultType = faultType;
}
public Integer getReportType() {
return reportType;
}
public void setReportType(Integer reportType) {
this.reportType = reportType;
}
public Date getReportTime() {
return reportTime;
}
public void setReportTime(Date reportTime) {
this.reportTime = reportTime;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getReporterName() {
return reporterName;
}
public void setReporterName(String reporterName) {
this.reporterName = reporterName;
}
public String getContactPhone() {
return contactPhone;
}
public void setContactPhone(String contactPhone) {
this.contactPhone = contactPhone;
}
// 联系电话
}
controller层代码
package com.example.littlebabydemo0425.controller;
import com.example.littlebabydemo0425.mapper.RepairManagerMapper;
import com.example.littlebabydemo0425.pojo.Device;
import com.example.littlebabydemo0425.pojo.PageBean;
import com.example.littlebabydemo0425.pojo.RepairManager;
import com.example.littlebabydemo0425.pojo.Result;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@CrossOrigin(origins = "http://localhost:5173")
@RestController
@RequestMapping("/api/repair")
public class RepairController {
@Autowired
private RepairManagerMapper repairManagerMapper;
@PostMapping("/submit")
public Map<String, Object> submitRepair(@RequestBody Map<String, Object> repairData) {
Map<String, Object> response = new HashMap<>();
try {
// 创建 RepairManager 对象并设置属性
RepairManager repairManager = new RepairManager();
// 设置前端传过来的字段
repairManager.setName((String) repairData.get("deviceName"));
repairManager.setCode((String) repairData.get("deviceCode"));
repairManager.setFaultCode((String) repairData.get("faultCode"));
repairManager.setFaultType((String) repairData.get("faultType"));
repairManager.setDescription((String) repairData.get("faultDesc"));
repairManager.setReportType((Integer) repairData.get("reportType"));
repairManager.setReporterName((String) repairData.get("reporterName"));
repairManager.setContactPhone((String) repairData.get("contactPhone"));
// 设置其他字段的值
repairManager.setLocation((String) repairData.get("location")); // 位置
repairManager.setRepairer((String) repairData.get("repairer")); // 报修人
repairManager.setRepairTime((String) repairData.get("repairTime")); // 报修时间
// 设置默认值或空值
repairManager.setStatic2(null); // 工单状态
repairManager.setType(null); // 设备类型
repairManager.setRepairer(null); // 报修人
repairManager.setImage(null); // 图片
repairManager.setStatus(0); // 状态: 0-待处理
repairManager.setReportTime(null); // 报修时间
repairManager.setCreateTime(null); // 创建时间
repairManager.setUpdateTime(null); // 更新时间
// 插入数据库
int result = repairManagerMapper.insertRepair(repairManager);
if (result > 0) {
response.put("success", true);
response.put("message", "报修提交成功");
response.put("planId", repairManager.getPlanId()); // 返回生成的工单编号
} else {
response.put("success", false);
response.put("message", "报修提交失败");
}
} catch (Exception e) {
response.put("success", false);
response.put("message", "报修提交失败: " + e.getMessage());
}
return response;
}
// @GetMapping("/list")
// public List<RepairManager> getRepairList() {
// return repairManagerMapper.selectAll();
// }
@GetMapping
public Result<PageBean<RepairManager>> getRepairList(Integer pageNum, Integer pageSize,
@RequestParam (required = false)String deviceType,
@RequestParam (required = false)String deviceName,
@RequestParam (required = false)String status) {
PageBean <RepairManager> b = repairManagerMapper.list(pageNum, pageSize, deviceType, deviceName, status);
return Result.success(b);
}
@PutMapping("/update")
public Result<String> updateRepair(@RequestBody RepairManager repairManager) {
try {
// 设置更新时间
repairManager.setUpdateTime(new Date());
// 更新数据库
int result = repairManagerMapper.updateRepair(repairManager);
if (result > 0) {
return Result.success("维修信息更新成功");
} else {
return Result.error("维修信息更新失败");
}
} catch (Exception e) {
return Result.error("维修信息更新失败: " + e.getMessage());
}
}
}
mapper层代码
package com.example.littlebabydemo0425.mapper;
import com.example.littlebabydemo0425.pojo.PageBean;
import com.example.littlebabydemo0425.pojo.RepairManager;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.jdbc.SQL;
import java.util.List;
@Mapper
public interface RepairManagerMapper {
@Insert("INSERT INTO repairmanager " +
"(name, code, type, static2, description, location, repairer, repairTime, image, " +
"fault_code, fault_type, report_type, report_time, status, create_time, update_time, " +
"reporter_name, contact_phone) " +
"VALUES " +
"(#{name}, #{code}, #{type}, #{static2}, #{description}, #{location}, #{repairer}, " +
"#{repairTime}, #{image}, #{faultCode}, #{faultType}, #{reportType}, #{reportTime}, " +
"#{status}, #{createTime}, #{updateTime}, #{reporterName}, #{contactPhone})")
@Options(useGeneratedKeys = true, keyProperty = "planId", keyColumn = "planId")
int insertRepair(RepairManager repairManager);
@Select("SELECT " +
"planId, name, code, type, static2, description, location, " +
"repairer, repairTime, image, fault_code as faultCode, fault_type as faultType, " +
"report_type as reportType, report_time as reportTime, status, " +
"create_time as createTime, update_time as updateTime, " +
"reporter_name as reporterName, contact_phone as contactPhone " +
"FROM repairmanager")
List<RepairManager> selectAll();
/**
* 分页查询维修工单列表
* @param pageNum 页码
* @param pageSize 每页大小
* @param deviceType 设备类型(可选)
* @param deviceName 设备名称(可选)
* @param status 工单状态(可选)
* @return 分页结果
*/
default PageBean<RepairManager> list(Integer pageNum, Integer pageSize,
String deviceType, String deviceName, String status) {
PageBean<RepairManager> pb = new PageBean<>();
// 计算偏移量
int offset = (pageNum - 1) * pageSize;
// 查询数据
List<RepairManager> items = selectByCondition(deviceType, deviceName, status, offset, pageSize);
pb.setItems(items);
// 查询总数
long total = countByCondition(deviceType, deviceName, status);
pb.setTotal(total);
return pb;
}
@SelectProvider(type = RepairManagerSqlProvider.class, method = "selectByCondition")
List<RepairManager> selectByCondition(
@Param("deviceType") String deviceType,
@Param("deviceName") String deviceName,
@Param("status") String status,
@Param("offset") int offset,
@Param("pageSize") int pageSize);
@SelectProvider(type = RepairManagerSqlProvider.class, method = "countByCondition")
long countByCondition(
@Param("deviceType") String deviceType,
@Param("deviceName") String deviceName,
@Param("status") String status);
@Update("UPDATE repairmanager SET " +
"name = #{name}, code = #{code}, type = #{type}, static2 = #{static2}, " +
"description = #{description}, location = #{location}, repairer = #{repairer}, " +
"repairTime = #{repairTime}, image = #{image}, fault_code = #{faultCode}, " +
"fault_type = #{faultType}, report_type = #{reportType}, report_time = #{reportTime}, " +
"status = #{status}, update_time = #{updateTime}, " +
"reporter_name = #{reporterName}, contact_phone = #{contactPhone} " +
"WHERE planId = #{planId}")
int updateRepair(RepairManager repairManager);
// SQL提供类
class RepairManagerSqlProvider {
public String selectByCondition(
@Param("deviceType") String deviceType,
@Param("deviceName") String deviceName,
@Param("status") String status,
@Param("offset") int offset,
@Param("pageSize") int pageSize) {
return new SQL() {{
SELECT("planId, name, code, type, static2, description, location, " +
"repairer, repairTime, image, fault_code as faultCode, fault_type as faultType, " +
"report_type as reportType, report_time as reportTime, status, " +
"create_time as createTime, update_time as updateTime, " +
"reporter_name as reporterName, contact_phone as contactPhone");
FROM("repairmanager");
if (deviceType != null && !deviceType.isEmpty()) {
WHERE("type LIKE CONCAT('%', #{deviceType}, '%')");
}
if (deviceName != null && !deviceName.isEmpty()) {
WHERE("name LIKE CONCAT('%', #{deviceName}, '%')");
}
if (status != null && !status.isEmpty()) {
WHERE("status = #{status}");
}
ORDER_BY("create_time DESC");
}}.toString() + " LIMIT #{offset}, #{pageSize}";
}
public String countByCondition(
@Param("deviceType") String deviceType,
@Param("deviceName") String deviceName,
@Param("status") String status) {
return new SQL() {{
SELECT("COUNT(*)");
FROM("repairmanager");
if (deviceType != null && !deviceType.isEmpty()) {
WHERE("type LIKE CONCAT('%', #{deviceType}, '%')");
}
if (deviceName != null && !deviceName.isEmpty()) {
WHERE("name LIKE CONCAT('%', #{deviceName}, '%')");
}
if (status != null && !status.isEmpty()) {
WHERE("status = #{status}");
}
}}.toString();
}
}
}
前端代码
<script setup>
import { Picture, Check } from '@element-plus/icons-vue'
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getRepairListService, uploadRepairImageService, updateRepairService } from '@/api/repair.js'
import { useTokenStore } from '@/stores/token'
import request from '@/utils/request'
// 获取token store
const tokenStore = useTokenStore()
// 工单状态选项
const workOrderStatusOptions = ref('')
//设备名称
const deviceName = ref('')
// 设备类型
const deviceType = ref('')
// 故障工单列表数据模型
const workOrders = ref([])
const pageNum = ref(1)
const pageSize = ref(5)
const total = ref(20)
// 分页大小变化
const onSizeChange = (size) => {
pageSize.value = size
getWorkOrders();
}
// 当前页变化
const onCurrentChange = (num) => {
pageNum.value = num
getWorkOrders();
}
// 获取工单列表
const getWorkOrders = async () => {
try {
let params = {
pageNum: pageNum.value,
pageSize: pageSize.value,
deviceType: deviceType.value ? deviceType.value : null,
deviceName: deviceName.value ? deviceName.value : null,
status: workOrderStatusOptions.value ? workOrderStatusOptions.value : null
}
console.log('请求参数:', params);
const result = await getRepairListService(params);
console.log('API响应:', result);
if (result && result.data) {
total.value = result.data.total;
workOrders.value = result.data.items.map(item => ({
id: item.planId,
name: item.name,
code: item.code,
type: item.type,
status: item.status,
description: item.description,
location: item.location,
reporter: item.reporterName,
contactPhone: item.contactPhone,
repairTime: item.repairTime,
faultCode: item.faultCode,
faultType: item.faultType,
reportType: item.reportType,
static2: item.static2,
image: item.image
}));
} else {
throw new Error('获取数据失败');
}
} catch (error) {
console.error('获取工单列表失败:', error);
ElMessage.error('获取工单列表失败: ' + (error.response?.data?.message || error.message));
}
};
getWorkOrders();
// 控制照片上传对话框显示
const photoDialogVisible = ref(false)
const currentOrder = ref(null)
// 上传的照片列表
const uploadPhotos = ref([])
// 表单数据模型
const formData = ref({
faultCode: '',
faultType: '',
reportType: '',
description: '',
image: ''
})
// 故障类型选项
const faultTypeOptions = [
{ label: '机械故障', value: '机械故障' },
{ label: '电气故障', value: '电气故障' },
{ label: '软件故障', value: '软件故障' },
{ label: '其他故障', value: '其他故障' }
]
// 报修方式选项
const reportTypeOptions = [
{ label: '自主报修', value: 1 },
{ label: '电话报修', value: 2 }
]
// 打开上传照片对话框
const openUploadDialog = (order) => {
currentOrder.value = order
uploadPhotos.value = []
// 初始化表单数据
formData.value = {
faultCode: order.faultCode || '',
faultType: order.faultType || '',
reportType: order.reportType || '',
description: order.description || '',
image: order.image || ''
}
photoDialogVisible.value = true
}
// 自定义上传方法
const customUpload = async (options) => {
const { file, onProgress, onSuccess, onError } = options
try {
console.log('开始上传文件:', file.name);
const uploadFormData = new FormData();
uploadFormData.append('file', file);
// 使用统一的request工具上传
const response = await uploadRepairImageService(uploadFormData);
console.log('上传响应:', response);
// 根据您的API响应格式调整
if (response && response.code === 1) {
const url = response.data;
if (!url) {
throw new Error('上传成功但未返回有效的URL');
}
// 将URL添加到uploadPhotos数组
if (!uploadPhotos.value.includes(url)) {
uploadPhotos.value.push(url);
}
// 更新表单中的图片字段
if (!formData.value) {
formData.value = { image: url };
} else if (!formData.value.image) {
formData.value.image = url;
} else {
formData.value.image += ',' + url;
}
// 调用成功回调
onSuccess({
data: url,
url: url,
status: 'success'
});
ElMessage.success('照片上传成功');
} else {
throw new Error(response?.message || '上传失败');
}
} catch (error) {
console.error('上传失败:', error);
ElMessage.error(`上传失败: ${error.message}`);
onError(error);
}
}
// 上传照片成功
const handleUploadSuccess = (response, file, fileList) => {
console.log('上传成功回调:', response);
// 这个函数现在只用于更新UI,实际的数据处理已经在customUpload中完成
}
// 删除照片
const handleRemove = (file) => {
const url = file.response?.data || file.url
const index = uploadPhotos.value.indexOf(url)
if (index !== -1) {
uploadPhotos.value.splice(index, 1)
formData.value.image = uploadPhotos.value.join(',')
}
}
// 预览照片
const handlePictureCardPreview = (file) => {
const url = file.response?.data || file.url
window.open(url, '_blank')
}
// 上传前检查
const beforeUpload = (file) => {
console.log('上传前检查文件:', file)
const isImage = file.type.startsWith('image/')
const isLt5M = file.size / 1024 / 1024 < 5
if (!isImage) {
ElMessage.error('只能上传图片文件!')
return false
}
if (!isLt5M) {
ElMessage.error('图片大小不能超过 5MB!')
return false
}
return true
}
// 提交维修信息
const submitRepairInfo = async () => {
try {
if (!formData.value.faultType) {
ElMessage.warning('请选择故障类型')
return
}
if (!formData.value.description) {
ElMessage.warning('请输入故障描述')
return
}
if (uploadPhotos.value.length === 0) {
ElMessage.warning('请至少上传一张照片')
return
}
const params = {
deviceName: currentOrder.value.name,
deviceCode: currentOrder.value.code,
faultCode: formData.value.faultCode,
faultType: formData.value.faultType,
faultDesc: formData.value.description,
reportType: formData.value.reportType,
image: formData.value.image,
location: currentOrder.value.location,
reporterName: currentOrder.value.reporter,
contactPhone: currentOrder.value.contactPhone
}
console.log('提交参数:', params)
// 使用submit接口
const response = await request.post('/api/repair/submit', params)
console.log('提交响应:', response)
if (!response) {
throw new Error('服务器未返回响应')
}
if (response.success) {
ElMessage.success(response.message || '维修信息提交成功')
photoDialogVisible.value = false
getWorkOrders()
} else {
throw new Error(response.message || '提交失败')
}
} catch (error) {
console.error('提交维修信息失败:', error)
ElMessage.error('提交维修信息失败: ' + (error.message || '未知错误'))
}
}
// 标记为已修好
const markAsRepaired = async (order) => {
try {
await ElMessageBox.confirm('确定该设备已修好吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
const params = {
planId: order.id,
status: 2 // 标记为已完成
}
const result = await updateRepairService(params)
if (result.code === 200) {
ElMessage.success('状态更新成功')
getWorkOrders()
} else {
throw new Error(result.message || '更新失败')
}
} catch (error) {
if (error !== 'cancel') {
ElMessage.error('操作失败: ' + error.message)
}
}
}
// 格式化日期时间
const formatDateTime = (dateTime) => {
if (!dateTime) return '-'
const date = new Date(dateTime)
return date.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
}).replace(/\//g, '-')
}
</script>
<template>
<el-card class="page-container">
<template #header>
<div class="header">
<span>维修管理</span>
<div class="extra">
<el-button type="primary" @click="getWorkOrders">刷新</el-button>
</div>
</div>
</template>
<!-- 搜索表单 -->
<el-form inline>
<!-- <el-form-item label="设备类型:">
<el-select v-model="deviceType" placeholder="请选择设备类型" clearable>
<el-option label="客服" value="客服"></el-option>
<el-option label="机电" value="机电"></el-option>
<el-option label="电梯" value="电梯"></el-option>
<el-option label="消防" value="消防"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="设备名称:">
<el-input v-model="deviceName" placeholder="请输入设备名称" clearable />
</el-form-item>
<el-form-item label="工单状态:">
<el-select v-model="workOrderStatusOptions" placeholder="请选择状态" clearable>
<el-option label="待处理" value="0"></el-option>
<el-option label="处理中" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getWorkOrders">搜索</el-button>
</el-form-item>
</el-form>
<!-- 工单列表 -->
<el-table :data="workOrders" style="width: 100%" border>
<el-table-column prop="name" label="设备名称" width="150" />
<el-table-column prop="code" label="设备编号" width="150" />
<el-table-column prop="description" label="故障描述" width="200" />
<el-table-column prop="location" label="位置" width="120" />
<el-table-column prop="reporter" label="报修人" width="100" />
<el-table-column prop="repairTime" label="报修时间" width="180">
<template #default="{ row }">
{{ formatDateTime(row.repairTime) }}
</template>
</el-table-column>
<el-table-column prop="contactPhone" label="联系电话" width="120" />
<el-table-column label="状态" width="100">
<template #default="{ row }">
<el-tag :type="row.status === 0 ? 'warning' : row.status === 1 ? 'primary' : 'success'">
{{ row.status === 0 ? '待处理' : row.status === 1 ? '处理中' : '已完成' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template #default="{ row }">
<el-button :icon="Picture" type="primary" size="small" @click="openUploadDialog(row)"
:disabled="row.status === 2">
维修处理
</el-button>
<!-- <el-button
:icon="Check"
type="success"
size="small"
@click="markAsRepaired(row)"
:disabled="row.status === 2"
>
已修好
</el-button> -->
</template>
</el-table-column>
<template #empty>
<el-empty description="暂无工单数据" />
</template>
</el-table>
<!-- 分页条 -->
<el-pagination v-model:current-page="pageNum" v-model:page-size="pageSize" :page-sizes="[3, 5, 10, 15]"
layout="jumper, total, sizes, prev, pager, next" background :total="total" @size-change="onSizeChange"
@current-change="onCurrentChange" style="margin-top: 20px; justify-content: flex-end" />
<!-- 维修信息填写对话框 -->
<el-dialog v-model="photoDialogVisible" title="维修处理" width="60%">
<el-form :model="formData" label-width="100px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备名称">
<el-input v-model="currentOrder.name" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备编号">
<el-input v-model="currentOrder.code" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="故障编号" prop="faultCode">
<el-input v-model="formData.faultCode" placeholder="请输入故障编号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="故障类型" prop="faultType" required>
<el-select v-model="formData.faultType" placeholder="请选择故障类型" style="width: 100%">
<el-option v-for="item in faultTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="报修方式" prop="reportType">
<el-select v-model="formData.reportType" placeholder="请选择报修方式" style="width: 100%">
<el-option v-for="item in reportTypeOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="位置">
<el-input v-model="currentOrder.location" disabled />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="故障描述" prop="description" required>
<el-input v-model="formData.description" type="textarea" :rows="3" placeholder="请输入详细的故障描述" />
</el-form-item>
<el-form-item label="维修照片" required>
<el-upload :http-request="customUpload" list-type="picture-card" :on-success="handleUploadSuccess"
:on-remove="handleRemove" :on-preview="handlePictureCardPreview" :before-upload="beforeUpload"
:file-list="uploadPhotos" :limit="9" :auto-upload="true" :show-file-list="true" multiple accept="image/*">
<el-icon>
<Plus />
</el-icon>
<template #tip>
<div class="el-upload__tip">
请上传维修过程中的照片,支持jpg、png格式,单张图片不超过5MB,最多9张
</div>
</template>
</el-upload>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="photoDialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitRepairInfo">提交维修信息</el-button>
</template>
</el-dialog>
</el-card>
</template>
<style lang="scss" scoped>
.page-container {
min-height: 100%;
box-sizing: border-box;
.header {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.el-table {
margin-top: 20px;
}
.el-pagination {
margin-top: 20px;
justify-content: flex-end;
}
:deep(.el-upload-list__item-thumbnail) {
width: 100%;
height: 100%;
object-fit: cover;
}
.el-form-item {
margin-bottom: 20px;
}
.el-dialog {
.el-form {
padding: 0 20px;
}
}
.el-upload__tip {
color: #909399;
font-size: 12px;
margin-top: 7px;
line-height: 1.5;
}
</style>
以上代码基本完成了设备的维修功能,同时能够根据不同的要求对工单进行查询,该部分功能仍然有待优化