Browse Source

online开发

aqm-ops-supervision-platform
wbc 2 weeks ago
parent
commit
1fcc378756
  1. 31
      src/views/checkManage/order/addModal.vue
  2. 8
      src/views/checkManage/order/api.ts
  3. 8
      src/views/checkManage/order/data.ts
  4. 4
      src/views/checkManage/plan/api.ts
  5. 209
      src/views/onlineAnalysis/arguments/addModal.vue
  6. 28
      src/views/onlineAnalysis/arguments/api.ts
  7. 39
      src/views/onlineAnalysis/arguments/data.ts
  8. 53
      src/views/onlineAnalysis/arguments/index.vue
  9. 218
      src/views/onlineAnalysis/io/addModal.vue
  10. 28
      src/views/onlineAnalysis/io/api.ts
  11. 52
      src/views/onlineAnalysis/io/data.ts
  12. 53
      src/views/onlineAnalysis/io/index.vue
  13. 32
      src/views/onlineAnalysis/net/api.ts
  14. 67
      src/views/onlineAnalysis/net/data.ts
  15. 69
      src/views/onlineAnalysis/net/index.vue
  16. 234
      src/views/onlineAnalysis/zero/addModal.vue
  17. 28
      src/views/onlineAnalysis/zero/api.ts
  18. 59
      src/views/onlineAnalysis/zero/data.ts
  19. 53
      src/views/onlineAnalysis/zero/index.vue
  20. 2
      src/views/station/device/data.ts
  21. 2
      src/views/station/info/data.ts
  22. 4
      src/views/station/info/detailDrawer.vue
  23. 2
      src/views/stationCheck/checkOrder/data.ts
  24. 6
      src/views/stationCheck/particulate/index.vue
  25. 4
      src/views/stationCheck/standby/addModal.vue
  26. 2
      src/views/stationCheck/standby/api.ts

31
src/views/checkManage/order/addModal.vue

@ -3,15 +3,15 @@
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属计划" name="plan">
<a-select v-model:value="form.plan" :options="planOptions" placeholder="请选择" />
<a-form-item label="所属计划" name="planId">
<a-select v-model:value="form.planId" :options="planOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理人员" name="ioPerson">
<a-select v-model:value="form.ioPerson" :options="ioPersonOptions" placeholder="请选择" />
<a-form-item label="监理人员" name="monitorPerson">
<a-select v-model:value="form.monitorPerson" :options="monitorPersonOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
@ -22,21 +22,30 @@
<script>
import { reactive, ref } from 'vue';
import { message } from 'ant-design-vue';
import { getInfo, add, update } from './api';
import { getInfo, add, update,getPlans } from './api';
import { getStationList } from '@/api/common/index';
export default {
setup(props, { emit }) {
const title = ref('新增');
const visible = ref(false);
const form = reactive({
plan: null,
ioPerson: null,
planId: null,
monitorPerson: null,
});
//
const planOptions = ref([])
const ioPersonOptions = ref([]);
const monitorPersonOptions = ref([
{
value:'吴昊'
},
{
value:'梁涛'
}
]);
const showModal = async (type, id, projectId) => {
visible.value = true;
const res = await getPlans()
planOptions.value = res
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
@ -82,8 +91,8 @@
};
const formRef = ref();
const rules = {
plan: [{ required: true, message: '请选择' }],
ioPerson: [{ required: true, message: '请选择' }],
planId: [{ required: true, message: '请选择' }],
monitorPerson: [{ required: true, message: '请选择' }],
};
return {
visible,
@ -92,7 +101,7 @@
showModal,
handleOk,
planOptions,
ioPersonOptions,
monitorPersonOptions,
closeModal,
formRef,
rules,

8
src/views/checkManage/order/api.ts

@ -2,8 +2,9 @@ import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = 'air/stationInfo',
list = 'air/stationInfo/list',
root = '/air/orderInfo',
list = '/air/orderInfo/list',
getPlans='/air/planInfo/getPlans'
}
export function list(params: any) {
@ -25,4 +26,7 @@ export function update(data: any) {
export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}
export function getPlans() {
return defHttp.get({ url: Api.getPlans });
}

8
src/views/checkManage/order/data.ts

@ -20,16 +20,12 @@ export const columns: BasicColumn[] = [
title: '子站状态',
dataIndex: 'status',
},
{
title: '所属区域',
dataIndex: 'area',
},
{
title: '监理类型',
dataIndex: 'monitorType',
},
{
title: '监理公司',
dataIndex: 'monitorCompany',
title: '监理人员',
dataIndex: 'monitorPerson',
},
];

4
src/views/checkManage/plan/api.ts

@ -2,8 +2,8 @@ import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/stationInfo',
list = '/air/stationInfo/list',
root = '/air/planInfo',
list = '/air/planInfo/list',
}
export function list(params: any) {

209
src/views/onlineAnalysis/arguments/addModal.vue

@ -0,0 +1,209 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="站点名称" name="station">
<a-select v-model:value="form.station" :options="stationOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监测项目" name="monitorProject">
<a-select
v-model:value="form.monitorProject"
:options="monitorProjectOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="参数名称" name="arguments">
<a-input v-model:value="form.arguments" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="发现时间" name="foundDate">
<a-date-picker v-model:value="form.foundDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理人员" name="monitorPerson">
<a-select
v-model:value="form.monitorPerson"
:options="monitorPersonOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属公司" name="ioCompany">
<a-select
v-model:value="form.ioCompany"
:options="ioCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理公司" name="monitorCompany">
<a-select
v-model:value="form.monitorCompany"
:options="monitorCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="form.remark" :rows="4" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import { reactive, ref } from 'vue';
import { message } from 'ant-design-vue';
import { getInfo, add, update } from './api';
import { getStationList } from '@/api/common/index';
export default {
setup(props, { emit }) {
const title = ref('新增');
const visible = ref(false);
const form = reactive({
station: null,
monitorProject: null,
arguments: '',
foundDate: '',
monitorPerson: null,
ioCompany: null,
monitorCompany: null,
remark: '',
id: null,
});
//
const ioCompanyOptions = [
{
value: '杭州聚光',
},
];
const monitorProjectOptions = [
{
value: 'PM2.5',
},
{
value: 'O3',
},
];
const monitorCompanyOptions = [
{
value: '宁波国研信息科技有限公司',
},
];
const stationOptions = ref([]);
const monitorPersonOptions = ref([
{
value:'吴昊'
},
{
value:'梁涛'
}
]);
const showModal = async (type, id, projectId) => {
visible.value = true;
const res = await getStationList();
stationOptions.value = res;
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
title.value = '编辑';
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
}
};
const handleOk = () => {
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
delete params.id;
add(params).then((_) => {
message.success('新增成功');
emit('success');
closeModal();
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
emit('success');
closeModal();
});
}
}
});
};
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
const formRef = ref();
const rules = {
station: [{ required: true, message: '请选择' }],
monitorProject: [{ required: true, message: '请选择' }],
arguments: [{ required: true, message: '请输入' }],
foundDate: [{ required: true, message: '请选择' }],
monitorCompany: [{ required: true, message: '请选择' }],
ioCompany: [{ required: true, message: '请选择' }],
};
return {
visible,
title,
form,
showModal,
handleOk,
stationOptions,
monitorProjectOptions,
monitorCompanyOptions,
ioCompanyOptions,
monitorPersonOptions,
closeModal,
formRef,
rules,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-modal-body {
max-width: 600px;
margin: 0 auto;
}
</style>

28
src/views/onlineAnalysis/arguments/api.ts

@ -0,0 +1,28 @@
import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/partsInfo',
list = '/air/partsInfo/list',
}
export function list(params: any) {
return defHttp.get({ url: Api.list, params });
}
export function getInfo(id: ID) {
return defHttp.get({ url: `${Api.root}/${id}` });
}
export function add(data: any) {
return defHttp.post({ url: Api.root, data });
}
export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}

39
src/views/onlineAnalysis/arguments/data.ts

@ -0,0 +1,39 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [];
export const columns: BasicColumn[] = [
{
title: '站点',
dataIndex: 'station',
},
{
title: '监测项目',
dataIndex: 'monitorProject',
},
{
title: '参数名称',
dataIndex: 'arguments',
},
{
title: '发现时间',
dataIndex: 'foundDate',
},
{
title: '监理人员',
dataIndex: 'monitorPerson',
},
{
title: '监理单位',
dataIndex: 'monitorCompany',
},
{
title: '运维单位',
dataIndex: 'ioCompany',
},
{
title: '备注',
dataIndex: 'remark',
},
];

53
src/views/onlineAnalysis/arguments/index.vue

@ -0,0 +1,53 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="showModal(1)">新增</a-button>
</template>
</BasicTable>
<addModal ref="addModalRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api';
import { formSchemas, columns } from './data';
import addModal from './addModal.vue';
import { ref } from 'vue';
defineOptions({ name: 'arguments' });
const [registerTable, { reload }] = useTable({
title: '站点参数变更分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'arguments',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
immediate: true,
columns: columns,
actionColumn: {
width: 300,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
//
const addModalRef = ref();
const showModal = (type: any) => {
addModalRef.value.showModal(type);
};
</script>
<style scoped></style>

218
src/views/onlineAnalysis/io/addModal.vue

@ -0,0 +1,218 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="站点名称" name="station">
<a-select v-model:value="form.station" :options="stationOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监测项目" name="monitorProject">
<a-select
v-model:value="form.monitorProject"
:options="monitorProjectOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="故障开始时间" name="faultStartDate">
<a-date-picker v-model:value="form.faultStartDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="运维响应时间" name="ioResponseDate">
<a-date-picker v-model:value="form.ioResponseDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="故障结束时间" name="faultEndDate">
<a-date-picker v-model:value="form.faultEndDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理人员" name="monitorPerson">
<a-select
v-model:value="form.monitorPerson"
:options="monitorPersonOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属公司" name="ioCompany">
<a-select
v-model:value="form.ioCompany"
:options="ioCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理公司" name="monitorCompany">
<a-select
v-model:value="form.monitorCompany"
:options="monitorCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="form.remark" :rows="4" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import { reactive, ref } from 'vue';
import { message } from 'ant-design-vue';
import { getInfo, add, update } from './api';
import { getStationList } from '@/api/common/index';
export default {
setup(props, { emit }) {
const title = ref('新增');
const visible = ref(false);
const form = reactive({
station: null,
monitorProject: null,
faultStartDate: '',
ioResponseDate: '',
faultEndDate: '',
monitorPerson:null,
ioCompany: null,
monitorCompany: null,
remark:'',
id: null,
});
//
const ioCompanyOptions = [
{
value: '杭州聚光',
},
];
const monitorProjectOptions = [
{
value: 'PM2.5',
},
{
value: 'O3',
},
];
const monitorCompanyOptions = [
{
value: '宁波国研信息科技有限公司',
},
];
const stationOptions = ref([]);
const monitorPersonOptions = ref([
{
value:'吴昊'
},
{
value:'梁涛'
}
]);
const showModal = async (type, id, projectId) => {
visible.value = true;
const res = await getStationList();
stationOptions.value = res;
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
title.value = '编辑';
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
}
};
const handleOk = () => {
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
delete params.id;
add(params).then((_) => {
message.success('新增成功');
emit('success');
closeModal();
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
emit('success');
closeModal();
});
}
}
});
};
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
const formRef = ref();
const rules = {
station: [{ required: true, message: '请选择' }],
monitorProject: [{ required: true, message: '请选择' }],
faultStartDate: [{ required: true, message: '请选择' }],
ioResponseDate: [{ required: true, message: '请选择' }],
faultEndDate: [{ required: true, message: '请选择' }],
ioCompany: [{ required: true, message: '请选择' }],
monitorCompany: [{ required: true, message: '请选择' }],
};
return {
visible,
title,
form,
showModal,
handleOk,
stationOptions,
monitorProjectOptions,
monitorCompanyOptions,
ioCompanyOptions,
monitorPersonOptions,
closeModal,
formRef,
rules,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-modal-body {
max-width: 600px;
margin: 0 auto;
}
</style>

28
src/views/onlineAnalysis/io/api.ts

@ -0,0 +1,28 @@
import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/partsInfo',
list = '/air/partsInfo/list',
}
export function list(params: any) {
return defHttp.get({ url: Api.list, params });
}
export function getInfo(id: ID) {
return defHttp.get({ url: `${Api.root}/${id}` });
}
export function add(data: any) {
return defHttp.post({ url: Api.root, data });
}
export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}

52
src/views/onlineAnalysis/io/data.ts

@ -0,0 +1,52 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [];
export const columns: BasicColumn[] = [
{
title: '站点',
dataIndex: 'station',
},
{
title: '监测项目',
dataIndex: 'monitorProject',
},
{
title: '故障开始时间',
dataIndex: 'faultStartDate',
},
{
title: '故障结束时间',
dataIndex: 'faulteEndDate',
},
{
title: '运维响应时间',
dataIndex: 'ioResponseDate',
},
{
title: '响应时间跨度',
dataIndex: 'responseDuration',
},
{
title: '故障时间跨度',
dataIndex: 'faultDuration',
},
{
title: '监理人员',
dataIndex: 'monitorPerson',
},
{
title: '监理单位',
dataIndex: 'monitorCompany',
},
{
title: '运维单位',
dataIndex: 'ioCompany',
},
{
title: '备注',
dataIndex: 'remark',
},
];

53
src/views/onlineAnalysis/io/index.vue

@ -0,0 +1,53 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="showModal(1)">新增</a-button>
</template>
</BasicTable>
<addModal ref="addModalRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api';
import { formSchemas, columns } from './data';
import addModal from './addModal.vue';
import { ref } from 'vue';
defineOptions({ name: 'io' });
const [registerTable, { reload }] = useTable({
title: '站点运维故障分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'io',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
immediate: true,
columns: columns,
actionColumn: {
width: 300,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
//
const addModalRef = ref();
const showModal = (type: any) => {
addModalRef.value.showModal(type);
};
</script>
<style scoped></style>

32
src/views/onlineAnalysis/net/api.ts

@ -0,0 +1,32 @@
import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/deviceInfo',
list = '/air/deviceInfo/list',
getStationList = '/air/deviceInfo/getStationList',
}
export function list(params: any) {
return defHttp.get({ url: Api.list, params });
}
export function getInfo(id: ID) {
return defHttp.get({ url: `${Api.root}/${id}` });
}
export function add(data: any) {
return defHttp.post({ url: Api.root, data });
}
export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}
export function getStationList() {
return defHttp.get({ url: Api.getStationList });
}

67
src/views/onlineAnalysis/net/data.ts

@ -0,0 +1,67 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'area',
label: '所在区域',
component: 'Select',
componentProps: {
options: [],
},
},
{
field: 'monitorCompany',
label: '监理公司',
component: 'Select',
componentProps: {
options: [
{
value: '宁波国研信息科技有限公司',
},
],
},
},
];
export const columns: BasicColumn[] = [
{
title: '站点',
dataIndex: 'station',
},
{
title: '所属区域',
dataIndex: 'area',
},
{
title: '状态',
dataIndex: 'status',
},
{
title: '运维单位',
dataIndex: 'ioCompany',
},
{
title: '本月应收数据',
dataIndex: 'planIncome',
},
{
title: '本月实收数据',
dataIndex: 'actualIncome',
},
{
title: '数据完整率',
dataIndex: 'completionRate',
customRender({ record }) {
if(record.actualIncome){
return record.actualIncome/record.planIncome;
}
return null;
},
},
{
title: '监理单位',
dataIndex: 'monitorCompany',
},
];

69
src/views/onlineAnalysis/net/index.vue

@ -0,0 +1,69 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-popconfirm
title="确定要删除吗?"
ok-text="是"
cancel-text="否"
@confirm="handleDelete(record.id)"
>
<a-button type="link">删除</a-button>
</a-popconfirm>
</template>
</template>
</BasicTable>
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api';
import { formSchemas, columns } from './data';
import {getHangzhouRegions} from '@/api/common/index'
defineOptions({ name: 'net' });
const [registerTable, { reload }] = useTable({
title: '站点联网数据分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'net',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
immediate: true,
columns: columns,
actionColumn: {
width: 300,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const handleDelete = async (id: any) => {
await removeByIds([id]);
reload();
};
//
//
const getHangzhouOptions =async()=>{
const res = await getHangzhouRegions()
formSchemas[0].componentProps.options = res
}
getHangzhouOptions()
</script>
<style scoped></style>

234
src/views/onlineAnalysis/zero/addModal.vue

@ -0,0 +1,234 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="站点名称" name="station">
<a-select v-model:value="form.station" :options="stationOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监测项目" name="monitorProject">
<a-select
v-model:value="form.monitorProject"
:options="monitorProjectOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="上次校零校准时间" name="toZeroDate">
<a-date-picker v-model:value="form.toZeroDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="核查开始时间" name="checkStartDate">
<a-date-picker v-model:value="form.checkStartDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="核查结束时间" name="checkEndDate">
<a-date-picker v-model:value="form.checkEndDate" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="实际校零校准次数" name="actualTimes">
<a-input v-model:value="form.actualTimes" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="应校零校准次数" name="planTimes">
<a-input v-model:value="form.planTimes" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理人员" name="monitorPerson">
<a-select
v-model:value="form.monitorPerson"
:options="monitorPersonOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属公司" name="ioCompany">
<a-select
v-model:value="form.ioCompany"
:options="ioCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="监理公司" name="monitorCompany">
<a-select
v-model:value="form.monitorCompany"
:options="monitorCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="form.remark" :rows="4" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import { reactive, ref } from 'vue';
import { message } from 'ant-design-vue';
import { getInfo, add, update } from './api';
import { getStationList } from '@/api/common/index';
export default {
setup(props, { emit }) {
const title = ref('新增');
const visible = ref(false);
const form = reactive({
station: null,
monitorProject: null,
toZeroDate: '',
checkStartDate: '',
checkEndDate: '',
actualTimes:null,
planTimes:null,
monitorPerson:null,
ioCompany: null,
monitorCompany: null,
remark:'',
id: null,
});
//
const ioCompanyOptions = [
{
value: '杭州聚光',
},
];
const monitorProjectOptions = [
{
value: 'PM2.5',
},
{
value: 'O3',
},
];
const monitorCompanyOptions = [
{
value: '宁波国研信息科技有限公司',
},
];
const stationOptions = ref([]);
const monitorPersonOptions = ref([
{
value:'吴昊'
},
{
value:'梁涛'
}
]);
const showModal = async (type, id, projectId) => {
visible.value = true;
const res = await getStationList();
stationOptions.value = res;
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
title.value = '编辑';
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
}
};
const handleOk = () => {
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
delete params.id;
add(params).then((_) => {
message.success('新增成功');
emit('success');
closeModal();
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
emit('success');
closeModal();
});
}
}
});
};
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
const formRef = ref();
const rules = {
station: [{ required: true, message: '请选择' }],
monitorProject: [{ required: true, message: '请选择' }],
toZeroDate: [{ required: true, message: '请选择' }],
checkStartDate: [{ required: true, message: '请选择' }],
checkEndDate: [{ required: true, message: '请选择' }],
planTimes: [{ required: true, message: '请输入' }],
actualTimes: [{ required: true, message: '请输入' }],
};
return {
visible,
title,
form,
showModal,
handleOk,
stationOptions,
monitorProjectOptions,
monitorCompanyOptions,
ioCompanyOptions,
monitorPersonOptions,
closeModal,
formRef,
rules,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-modal-body {
max-width: 600px;
margin: 0 auto;
}
</style>

28
src/views/onlineAnalysis/zero/api.ts

@ -0,0 +1,28 @@
import { ID, IDS } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/partsInfo',
list = '/air/partsInfo/list',
}
export function list(params: any) {
return defHttp.get({ url: Api.list, params });
}
export function getInfo(id: ID) {
return defHttp.get({ url: `${Api.root}/${id}` });
}
export function add(data: any) {
return defHttp.post({ url: Api.root, data });
}
export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}

59
src/views/onlineAnalysis/zero/data.ts

@ -0,0 +1,59 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [];
export const columns: BasicColumn[] = [
{
title: '站点',
dataIndex: 'station',
},
{
title: '所属区域',
dataIndex: 'area',
},
{
title: '监测项目',
dataIndex: 'monitorProject',
},
{
title: '上次校零校准时间',
dataIndex: 'toZeroDate',
},
{
title: '时间跨度',
dataIndex: 'duration',
},
{
title: '核查开始日期',
dataIndex: 'checkStartDate',
},
{
title: '核查结束日期',
dataIndex: 'checkEndDate',
},
{
title: '实际校零校准次数',
dataIndex: 'actualTimes',
},
{
title: '应校零校准次数',
dataIndex: 'planTimes',
},
{
title: '监理人员',
dataIndex: 'monitorPerson',
},
{
title: '监理单位',
dataIndex: 'monitorCompany',
},
{
title: '环保知情人',
dataIndex: 'insider',
},
{
title: '备注',
dataIndex: 'remark',
},
];

53
src/views/onlineAnalysis/zero/index.vue

@ -0,0 +1,53 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="showModal(1)">新增</a-button>
</template>
</BasicTable>
<addModal ref="addModalRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list, removeByIds } from './api';
import { formSchemas, columns } from './data';
import addModal from './addModal.vue';
import { ref } from 'vue';
defineOptions({ name: 'zero' });
const [registerTable, { reload }] = useTable({
title: '站点校零校准分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'zero',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
immediate: true,
columns: columns,
actionColumn: {
width: 300,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
//
const addModalRef = ref();
const showModal = (type: any) => {
addModalRef.value.showModal(type);
};
</script>
<style scoped></style>

2
src/views/station/device/data.ts

@ -19,7 +19,7 @@ export const formSchemas: FormSchema[] = [
},
},
{
field: 'superviseCompany',
field: 'monitorCompany',
label: '监理公司',
component: 'Select',
componentProps: {

2
src/views/station/info/data.ts

@ -61,7 +61,7 @@ export const columns: BasicColumn[] = [
},
{
title: '监理公司',
dataIndex: 'superviseCompany',
dataIndex: 'monitorCompany',
},
{
title: '状态',

4
src/views/station/info/detailDrawer.vue

@ -42,7 +42,7 @@
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div><span class="titleLabel">监理公司</span>{{ detail.superviseCompany }}</div>
<div><span class="titleLabel">监理公司</span>{{ detail.monitorCompany }}</div>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
@ -68,7 +68,7 @@
latitude: '',
ioCompany: '',
ioPerson: '',
superviseCompany: '',
monitorCompany: '',
status: null,
});

2
src/views/stationCheck/checkOrder/data.ts

@ -40,7 +40,7 @@ export const columns: BasicColumn[] = [
},
{
title: '监理类型',
dataIndex: 'superviseType',
dataIndex: 'monitorType',
},
{
title: '核查人员',

6
src/views/stationCheck/particulate/index.vue

@ -4,6 +4,12 @@
<template #toolbar>
<a-button type="primary" @click="showModal(1)">新增</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'result'">
<div v-if='record.result=="不合格"' style="color:elsered">{{record.result}}</div>
<div v-else >{{record.result}}</div>
</template>
</template>
</BasicTable>
<addModal ref="addModalRef" />
</PageWrapper>

4
src/views/stationCheck/standby/addModal.vue

@ -41,7 +41,7 @@
<a-form-item label="所属公司" name="ioCompany">
<a-select
v-model:value="form.ioCompany"
:options="monitorCompanyOptions"
:options="ioCompanyOptions"
placeholder="请选择"
/>
</a-form-item>
@ -52,7 +52,7 @@
<a-form-item label="监理公司" name="monitorCompany">
<a-select
v-model:value="form.monitorCompany"
:options="ioCompanyOptions"
:options="monitorCompanyOptions"
placeholder="请选择"
/>
</a-form-item>

2
src/views/stationCheck/standby/api.ts

@ -3,7 +3,7 @@ import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/air/partsInfo',
list = '/air/partsInfo/lis',
list = '/air/partsInfo/list',
}
export function list(params: any) {

Loading…
Cancel
Save