Browse Source

巡检日报

ops-management-platform-frontend-dev
wbc 3 weeks ago
parent
commit
08de9dd43b
  1. 7
      src/views/IO/patrol/patroling/addModal.vue
  2. 2
      src/views/IO/patrol/patroling/index.vue
  3. 5
      src/views/IO/patrolReport/api.ts
  4. 32
      src/views/IO/patrolReport/index.vue
  5. 47
      src/views/IO/patrolReport/patrolReportdata.ts
  6. 183
      src/views/IO/patrolReport/reportModal.vue
  7. 2
      src/views/IO/workOrder/orderSearch/data.ts
  8. 44
      src/views/property/point/pointModal.vue

7
src/views/IO/patrol/patroling/addModal.vue

@ -26,8 +26,8 @@
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="频率" name="frequnency">
<a-input v-model:value="form.frequnency" placeholder="请输入" disabled />
<a-form-item label="频率" name="frequency">
<a-input v-model:value="form.frequency" placeholder="请输入" disabled />
</a-form-item>
</a-col>
</a-row>
@ -38,6 +38,7 @@
style="margin-left: 10px"
type="primary"
@click="createPlan"
:disabled="!form.dateRange||form.dateRange.length<2"
>生成</a-button
>
</a-form-item>
@ -102,7 +103,7 @@
projectName: '',
ioCompany: '',
dateRange: [],
frequnency: '',
frequency: '',
isWeekend: false,
description: '',
pointName: '',

2
src/views/IO/patrol/patroling/index.vue

@ -74,7 +74,7 @@
const getProjectOptions = async () => {
const res = await getProjectInfo();
res.forEach((i: any) => {
i.value = i.id;
i.value = i.projectName;
i.label = i.projectName;
});
projectOptions.value = res;

5
src/views/IO/patrolReport/api.ts

@ -4,6 +4,7 @@ enum Api {
root = '/platform/inspectionDailyReport',
list = '/platform/inspectionDailyReport/list',
export = '/workflow/leave/export',
getProjectInfo = '/platform/projectInfo/getNames',
}
export function list(params: any) {
@ -29,3 +30,7 @@ export function update(data: any) {
export function removeByIds(ids: any) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}
export function getProjectInfo() {
return defHttp.get({ url: Api.getProjectInfo });
}

32
src/views/IO/patrolReport/index.vue

@ -2,8 +2,9 @@
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleAdd()">新增前端日报</a-button>
<a-button type="primary" @click="handleAdd()">新增后端日报</a-button>
<a-button type="primary" @click="handleAdd()">新增</a-button>
<!-- <a-button type="primary" @click="handleAdd()">新增前端日报</a-button>
<a-button type="primary" @click="handleAdd()">新增后端日报</a-button> -->
<!-- <a-button type="primary" @click="handleAdd">同步日常巡检</a-button>
<a-button type="primary" @click="handleAdd">日报资料导出</a-button> -->
</template>
@ -30,13 +31,17 @@
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api';
import { list, removeByIds,getProjectInfo } from './api';
import { formSchemas, columns } from './patrolReportdata';
import reportModal from './reportModal.vue';
import { ref } from 'vue';
import { ref,computed,onMounted} from 'vue';
import detailDrawer from './detailDrawer.vue';
defineOptions({ name: 'PatrolReport' });
const newFormSchemas: any = computed(() => {
formSchemas[0].componentProps.options = projectOptions.value;
return formSchemas;
});
const [registerTable, { reload }] = useTable({
rowSelection: {
type: 'checkbox',
@ -47,7 +52,7 @@
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
schemas: newFormSchemas,
name: 'patrolReport',
baseColProps: {
xs: 24,
@ -81,6 +86,23 @@
const handleDetail = (id: any) => {
detailDrawerRef.value.showDrawer(id);
};
//
const projectOptions = ref([]);
const getProjectOptions = async () => {
const res = await getProjectInfo();
res.forEach((i: any) => {
i.value = i.projectName;
i.label = i.projectName;
});
projectOptions.value = res;
};
const getOptions = () => {
getProjectOptions();
};
onMounted(()=>{
getOptions()
})
</script>
<style scoped></style>

47
src/views/IO/patrolReport/patrolReportdata.ts

@ -1,6 +1,22 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {},
},
{
field: 'inspectionPeople',
label: '巡检人员',
component: 'Input',
componentProps: {
placeholder: '输入巡检人员',
},
},
];
export const columns: BasicColumn[] = [
{
title: '项目名称',
@ -24,34 +40,3 @@ export const columns: BasicColumn[] = [
},
];
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'inspectionPeople',
label: '巡检人员',
component: 'Input',
componentProps: {
placeholder: '输入巡检人员',
},
},
];

183
src/views/IO/patrolReport/reportModal.vue

@ -1,12 +1,12 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical">
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%" @cancel="closeModal">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="项目名称" name="projectName">
<a-select
v-model:value="form.projectName"
:options="projectNameOptions"
:options="projectOptions"
placeholder="请选择"
/>
</a-form-item>
@ -24,6 +24,7 @@
<a-form-item label="巡检时间" name="inspectionTime">
<a-date-picker
:show-time="{ format: 'HH:mm:ss' }"
valueFormat="YYYY-MM-DD HH:mm:ss"
v-model:value="form.inspectionTime"
placeholder="请选择"
/>
@ -69,7 +70,7 @@
<a-col :span="24">
<a-form-item label="巡检照片" name="inspectionPhoto">
<a-upload
v-model:file-list="inspectionPhotoList"
v-model:file-list="form.inspectionPhoto"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
>
<a-button type="primary"> 上传 </a-button>
@ -77,7 +78,7 @@
</a-form-item>
</a-col>
</a-row>
<div v-if="title == '新增后端巡查日报'">
<!-- <div v-if="title == '新增后端巡查日报'">
<a-table :dataSource="inspectionReportTable" :columns="inspectionReportColumns" bordered>
<template #bodyCell="{ column }">
<template v-if="column.key === 'action'">
@ -85,19 +86,21 @@
</template>
</template>
</a-table>
</div>
</div> -->
</a-form>
</a-modal>
</template>
<script>
import { reactive, ref } from 'vue';
import { reactive, ref, onMounted } from 'vue';
import { message } from 'ant-design-vue';
import { getInfo, add, update, getProjectInfo } from './api';
export default {
setup() {
const title = ref('新增前端巡检日报');
const attachmentList = ref([]);
const inspectionPhotoList = ref([]);
const title = ref('新增');
const formRef = ref();
// const attachmentList = ref([]);
// const inspectionPhotoList = ref([]);
const visible = ref(false);
const form = reactive({
projectName: '',
@ -106,85 +109,121 @@
platformOnlineRate: null,
problemHandleDesc: '',
inspectionStatus: null,
attachment: [],
inspectionPhoto: '',
attachment: null,
inspectionPhoto: null,
id: null,
});
//
const inspectionReportTable = ref([]);
const inspectionReportColumns = [
{
title: '设备地址',
dataIndex: 'deviceLocation',
key: 'deviceLocation',
},
{
title: '设备名称',
dataIndex: 'deviceName',
key: 'deviceName',
},
{
title: '型号',
dataIndex: 'type',
key: 'type',
},
{
title: 'IP地址',
dataIndex: 'ip',
key: 'ip',
},
{
title: '检查结果',
dataIndex: 'inspectionResult',
key: 'inspectionResult',
},
{
title: '详细记录',
dataIndex: 'detailLog',
key: 'detailLog',
},
];
// const inspectionReportTable = ref([]);
// const inspectionReportColumns = [
// {
// title: '',
// dataIndex: 'deviceLocation',
// key: 'deviceLocation',
// },
// {
// title: '',
// dataIndex: 'deviceName',
// key: 'deviceName',
// },
// {
// title: '',
// dataIndex: 'type',
// key: 'type',
// },
// {
// title: 'IP',
// dataIndex: 'ip',
// key: 'ip',
// },
// {
// title: '',
// dataIndex: 'inspectionResult',
// key: 'inspectionResult',
// },
// {
// title: '',
// dataIndex: 'detailLog',
// key: 'detailLog',
// },
// ];
//
const projectNameOptions = [
{
value: '1',
label: 'a',
},
{
value: '2',
label: 'b',
},
{
value: '3',
label: 'c',
},
];
const showModal = (type, id) => {
const projectOptions = ref([]);
const getProjectOptions = async () => {
const res = await getProjectInfo();
res.forEach((i) => {
i.value = i.projectName;
i.label = i.projectName;
});
projectOptions.value = res;
};
//
const showModal = async (type, id) => {
if (type == 1) {
title.value = '新增前端巡查日报';
title.value = '新增';
} else if (type == 2) {
title.value = '新增后端巡查日报';
console.log(id);
title.value = '编辑';
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
}
visible.value = true;
getProjectOptions()
};
const handleOk = () => {
console.log('Form Data:', form);
//
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
add(params).then((_) => {
message.success('新增成功');
visible.value = false;
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
visible.value = false;
});
}
}
});
};
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
//
const rules = {
projectName: [{ required: true, message: '请选择' }],
inspectionPart: [{ required: true, message: '请输入' }],
inspectionTime: [{ required: true, message: '请输入' }],
platformOnlineRate: [{ required: true, message: '请输入' }],
problemHandleDesc: [{ required: true, message: '请输入' }],
inspectionStatus: [{ required: true, message: '请输入' }],
};
return {
visible,
title,
form,
showModal,
handleOk,
attachmentList,
inspectionPhotoList,
projectNameOptions,
inspectionReportTable,
inspectionReportColumns,
// attachmentList,
// inspectionPhotoList,
projectOptions,
// inspectionReportTable,
// inspectionReportColumns,
formRef,
rules,
closeModal,
};
},
};

2
src/views/IO/workOrder/orderSearch/data.ts

@ -159,7 +159,7 @@ export const columns: BasicColumn[] = [
},
{
title: '报修时间',
dataIndex: 'fixTime',
dataIndex: 'repairTime',
},
{
title: '响应级别',

44
src/views/property/point/pointModal.vue

@ -70,6 +70,11 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div id="amapContainer" style="width: 100%; height: 500px"></div>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="故障描述" name="faultDescription">
@ -122,7 +127,7 @@
import { reactive, ref } from 'vue';
import { getInfo, getSubcategoryType, workOrderAdd } from './api';
import { message } from 'ant-design-vue';
import AMapLoader from '@amap/amap-jsapi-loader';
export default {
setup() {
const visible = ref(false);
@ -173,10 +178,12 @@
getOptions();
const showModal = async (id) => {
visible.value = true;
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
initMap(form.longitude,form.latitude,form.organizationName);
};
const handleOk = () => {
@ -190,7 +197,42 @@
});
//
};
//
const map = ref(null);
const initMap = async (longitude,latitude,organizationName) => {
try {
// JavaScript API
await AMapLoader.load({
key: '786a2e7cc6d4be5ba1d6174a0aa10f2b',
version: '2.0',
plugins: [],
});
//
map.value = new AMap.Map('amapContainer', {
zoom: 17,
center: [longitude, latitude],
});
//
const marker = new AMap.Marker({
position: new AMap.LngLat(longitude, latitude),
title: organizationName,
});
const markerList = [marker];
map.value.add(markerList);
// map.value.on('click', (e) => {
// const newMarker = new AMap.Marker({
// position: new AMap.LngLat(e.lnglat.lng, e.lnglat.lat),
// title: '',
// });
// map.value.add(newMarker);
// });
} catch (error) {
console.error('加载高德地图失败:', error);
}
};
return {
visible,
form,

Loading…
Cancel
Save