Files
estate/src/views/system/equipment/Archive/main.vue
2026-06-01 18:12:58 +08:00

241 lines
7.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="AddBuildingBox">
<PageHeader></PageHeader>
<div class="AddBuildingBody">
<div class="title flex flex-items-center justify-between">
<div>
<span>基本信息</span>
<el-button class="ml-10px" link type="primary"> 编辑</el-button>
</div>
<el-button @click="cancelForm"> 返回</el-button>
</div>
<div class="addBuildingFormBody">
<div class="infobox">
<div class="info_item">
<div class="label">设备分类</div>
<span class="value">{{ form.categoryName }}</span>
</div>
<div class="info_item">
<div class="label">设备名称</div>
<span class="value">{{ form.deviceName }}</span>
</div>
<div class="info_item">
<div class="label">设备编号</div>
<span class="value">{{ form.deviceCode }}</span>
</div>
<div class="info_item">
<div class="label">品牌型号</div>
<span class="value">{{ form.deviceModel }}</span>
</div>
<div class="info_item">
<div class="label">所在区域</div>
<span class="value">{{ form.area }}</span>
</div>
<div class="info_item">
<div class="label">设备状态</div>
<span class="value">电梯</span>
</div>
<div class="info_item">
<div class="label">维护人员</div>
<span class="value">{{ form.maintainUserListName }}</span>
</div>
<div class="info_item">
<div class="label">添加时间</div>
<span class="value">{{ form.createTime }}</span>
</div>
<div></div>
<div class="info_item">
<div class="label">备注</div>
<span class="value">{{ form.remark }}</span>
</div>
</div>
</div>
</div>
<div class="AddBuildingBody">
<div class="title">维修记录</div>
<div class="addBuildingFormBody">
<el-table v-loading="loading" :data="deviceRepairList">
<el-table-column type="index" align="center" />
<el-table-column label="设备名称" align="center" prop="deviceName" />
<el-table-column label="设备编号" align="center" prop="deviceCode" />
<el-table-column label="维修人员" align="center" prop="maintainUserNames" />
<el-table-column label="故障描述" align="center" prop="faultDesc" />
<el-table-column label="维修结果" align="center" prop="repairResult">
<template #default="scope">
<dict-tag :options="com_equipment_repair_status" :value="scope.row.repairResult"></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" @click="handleMain(scope.row)">详情</el-button>
<el-button link type="primary" @click="handleEdit(scope.row)">编辑</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getlist" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import PageHeader from '@/components/Pageheader/index.vue';
import { getDevice } from '@/api/system/equipment/archive';
import { DeviceRepairVO } from '@/api/system/equipment/Repair/type';
import { delDeviceRepair, listDeviceRepair } from '@/api/system/equipment/Repair';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { com_equipment_repair_status } = toRefs<any>(proxy?.useDict('com_equipment_repair_status'));
const router = useRouter();
const route = useRoute();
const form = ref({
id: null,
categoryName: '', // 分类id、
deviceName: '', // 设备名称
deviceCode: '', // 编号
deviceModel: '', // 型号
area: '', // 区域
status: '0', // 区域
maintainUserIds: '', // 设备维护人员
maintainUserListName: '', // 设备维护人员
createTime: '', // 设备维护人员
remark: '' // 备注
});
const userid = ref(null);
const total = ref(0);
const loading = ref(false);
const deviceRepairList = ref([]);
const queryParams = ref({
pageNum: 1,
pageSize: 10
});
function init() {
if (route.query.id) {
userid.value = route.query.id;
getDevice(userid.value).then(async (res) => {
form.value = {
id: res.data.id,
categoryName: res.data.categoryName,
deviceName: res.data.deviceName,
deviceCode: res.data.deviceCode,
deviceModel: res.data.deviceModel,
area: res.data.area,
status: res.data.status,
maintainUserIds: res.data.maintainUserIds,
remark: res.data.remark,
createTime: res.data.createTime,
maintainUserListName: ''
};
if (res.data.maintainUserList && res.data.maintainUserList.length > 0) {
form.value.maintainUserListName = res.data.maintainUserList
.map((it) => (it.nickName ? it.nickName : null))
.filter((it) => it !== null)
.join(',');
}
getlist();
});
}
}
init();
async function getlist() {
loading.value = true;
listDeviceRepair()
.then((rows) => {
deviceRepairList.value = rows.rows;
deviceRepairList.value.forEach((item) => {
item.maintainUserNames = item.maintainUserList
.map((i) => i.nickName)
.filter((i) => i)
.join(',');
});
total.value = rows.total;
})
.finally(() => {
loading.value = false;
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: DeviceRepairVO) => {
const _ids = row?.id;
await proxy?.$modal.confirm('是否确认删除维修工单?');
await delDeviceRepair(_ids);
proxy?.$modal.msgSuccess('删除成功');
getlist();
};
const handleMain = (row) => {
router.push({
path: '/equipment/equipmentRepairMain',
query: {
id: row.id
}
});
};
const handleEdit = (row) => {
router.push({
path: '/equipment/editEquipmentRepair',
query: {
id: row.id
}
});
};
// 推出
const cancelForm = () => {
router.back();
};
</script>
<style scoped lang="scss">
.AddBuildingBox {
padding: 15px;
height: 100%;
width: 100%;
}
.AddBuildingBody {
margin-top: 20px;
display: flex;
flex-direction: column;
justify-content: center;
background-color: white;
padding: 15px;
.title {
height: 40px;
line-height: 40px;
padding-left: 20px;
background-color: rgba(255, 255, 255, 1);
color: rgba(16, 16, 16, 1);
border-bottom: 1px solid #bbbbbb;
margin-bottom: 30px;
}
.addBuildingFormBody {
padding-left: 20px;
.infobox {
display: grid;
gap: 20px;
grid-template-columns: repeat(3, 1fr);
.info_item {
display: flex;
align-items: center;
.label {
font-size: 15px;
width: 100px;
text-align: right;
}
.value {
font-weight: 450;
}
}
}
}
}
</style>