Browse Source

巡检日报

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

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

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

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

@ -4,6 +4,7 @@ enum Api {
root = '/platform/inspectionDailyReport', root = '/platform/inspectionDailyReport',
list = '/platform/inspectionDailyReport/list', list = '/platform/inspectionDailyReport/list',
export = '/workflow/leave/export', export = '/workflow/leave/export',
getProjectInfo = '/platform/projectInfo/getNames',
} }
export function list(params: any) { export function list(params: any) {
@ -29,3 +30,7 @@ export function update(data: any) {
export function removeByIds(ids: any) { export function removeByIds(ids: any) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); 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> <PageWrapper dense>
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
<template #toolbar> <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>
<a-button type="primary" @click="handleAdd">日报资料导出</a-button> --> <a-button type="primary" @click="handleAdd">日报资料导出</a-button> -->
</template> </template>
@ -30,13 +31,17 @@
<script setup lang="ts"> <script setup lang="ts">
import { PageWrapper } from '@/components/Page'; import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table'; import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api'; import { list, removeByIds,getProjectInfo } from './api';
import { formSchemas, columns } from './patrolReportdata'; import { formSchemas, columns } from './patrolReportdata';
import reportModal from './reportModal.vue'; import reportModal from './reportModal.vue';
import { ref } from 'vue'; import { ref,computed,onMounted} from 'vue';
import detailDrawer from './detailDrawer.vue'; import detailDrawer from './detailDrawer.vue';
defineOptions({ name: 'PatrolReport' }); defineOptions({ name: 'PatrolReport' });
const newFormSchemas: any = computed(() => {
formSchemas[0].componentProps.options = projectOptions.value;
return formSchemas;
});
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
rowSelection: { rowSelection: {
type: 'checkbox', type: 'checkbox',
@ -47,7 +52,7 @@
rowKey: 'id', rowKey: 'id',
useSearchForm: true, useSearchForm: true,
formConfig: { formConfig: {
schemas: formSchemas, schemas: newFormSchemas,
name: 'patrolReport', name: 'patrolReport',
baseColProps: { baseColProps: {
xs: 24, xs: 24,
@ -81,6 +86,23 @@
const handleDetail = (id: any) => { const handleDetail = (id: any) => {
detailDrawerRef.value.showDrawer(id); 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> </script>
<style scoped></style> <style scoped></style>

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

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

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

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

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

@ -70,6 +70,11 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </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-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<a-form-item label="故障描述" name="faultDescription"> <a-form-item label="故障描述" name="faultDescription">
@ -122,7 +127,7 @@
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { getInfo, getSubcategoryType, workOrderAdd } from './api'; import { getInfo, getSubcategoryType, workOrderAdd } from './api';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import AMapLoader from '@amap/amap-jsapi-loader';
export default { export default {
setup() { setup() {
const visible = ref(false); const visible = ref(false);
@ -173,10 +178,12 @@
getOptions(); getOptions();
const showModal = async (id) => { const showModal = async (id) => {
visible.value = true; visible.value = true;
const data = await getInfo(id); const data = await getInfo(id);
for (let i in form) { for (let i in form) {
form[i] = data[i]; form[i] = data[i];
} }
initMap(form.longitude,form.latitude,form.organizationName);
}; };
const handleOk = () => { 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 { return {
visible, visible,
form, form,

Loading…
Cancel
Save