Browse Source

fix: 修改接口

ops-management-platform-frontend-dev
wbc 3 months ago
parent
commit
09c84f731f
  1. 2
      src/views/IO/patrolReport/reportModal.vue
  2. 1
      src/views/IO/workOrder/orderSend/faultModal.vue
  3. 1
      src/views/IO/workOrder/orderSend/index.vue
  4. 32
      src/views/analysis/complete/api.ts
  5. 54
      src/views/analysis/complete/data.ts
  6. 99
      src/views/analysis/complete/detailDrawer.vue
  7. 62
      src/views/analysis/complete/index.vue
  8. 32
      src/views/analysis/faultNum/api.ts
  9. 62
      src/views/analysis/faultNum/data.ts
  10. 87
      src/views/analysis/faultNum/detailDrawer.vue
  11. 62
      src/views/analysis/faultNum/index.vue
  12. 32
      src/views/analysis/online/api.ts
  13. 46
      src/views/analysis/online/data.ts
  14. 84
      src/views/analysis/online/detailDrawer.vue
  15. 62
      src/views/analysis/online/index.vue
  16. 32
      src/views/analysis/planComplete/api.ts
  17. 50
      src/views/analysis/planComplete/data.ts
  18. 42
      src/views/analysis/planComplete/index.vue
  19. 32
      src/views/analysis/reportSubmit/api.ts
  20. 21
      src/views/analysis/reportSubmit/data.ts
  21. 42
      src/views/analysis/reportSubmit/index.vue
  22. 32
      src/views/analysis/resAndFix/api.ts
  23. 62
      src/views/analysis/resAndFix/data.ts
  24. 93
      src/views/analysis/resAndFix/detailDrawer.vue
  25. 62
      src/views/analysis/resAndFix/index.vue
  26. 32
      src/views/analysis/resource/api.ts
  27. 79
      src/views/analysis/resource/data.ts
  28. 91
      src/views/analysis/resource/detailDrawer.vue
  29. 62
      src/views/analysis/resource/index.vue
  30. 165
      src/views/analysis/satisify/addModal.vue
  31. 32
      src/views/analysis/satisify/api.ts
  32. 45
      src/views/analysis/satisify/data.ts
  33. 147
      src/views/analysis/satisify/detailDrawer.vue
  34. 62
      src/views/analysis/satisify/index.vue
  35. 32
      src/views/analysis/type/api.ts
  36. 79
      src/views/analysis/type/data.ts
  37. 88
      src/views/analysis/type/detailDrawer.vue
  38. 62
      src/views/analysis/type/index.vue
  39. 36
      src/views/project/IOCheck/ratingSearch/api.ts
  40. 45
      src/views/project/serviceManage/api.ts
  41. 112
      src/views/project/serviceManage/index.vue
  42. 8
      src/views/property/meterial/index.vue
  43. 45
      src/views/property/point/api.ts
  44. 113
      src/views/property/point/index.vue
  45. 20
      src/views/property/propertyList/index.vue
  46. 0
      src/views/property/propertyList/property.api.ts
  47. 0
      src/views/property/propertyList/property.data.ts

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

@ -106,7 +106,7 @@
platformOnlineRate: null, platformOnlineRate: null,
problemHandleDesc: '', problemHandleDesc: '',
inspectionStatus: null, inspectionStatus: null,
attachment: '', attachment: [],
inspectionPhoto: '', inspectionPhoto: '',
}); });
// //

1
src/views/IO/workOrder/orderSend/faultModal.vue

@ -274,7 +274,6 @@
title: '新点位', title: '新点位',
}); });
map.value.add(newMarker); map.value.add(newMarker);
console.log(map.value);
}); });
} catch (error) { } catch (error) {
console.error('加载高德地图失败:', error); console.error('加载高德地图失败:', error);

1
src/views/IO/workOrder/orderSend/index.vue

@ -62,6 +62,7 @@
const showDrawer = (id: any) => { const showDrawer = (id: any) => {
detailDrawerRef.value.showDrawer(id); detailDrawerRef.value.showDrawer(id);
}; };
// //
</script> </script>

32
src/views/analysis/complete/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

54
src/views/analysis/complete/data.ts

@ -0,0 +1,54 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '分控中心',
dataIndex: 'unit',
},
{
title: '点位总数',
dataIndex: 'pointSum',
},
{
title: '正常点位数',
dataIndex: 'normalNum',
},
{
title: '辖区完好率',
dataIndex: 'areaCompleteRate',
},
{
title: '运维单位完好率',
dataIndex: 'ioUnitCompleteRate',
},
];

99
src/views/analysis/complete/detailDrawer.vue

@ -0,0 +1,99 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="600px"
>
<div ref="chartRef" style="width: 500px; height: 500px"></div>
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
import { useECharts } from '@/hooks/web/useECharts';
// import { getInfo } from './api';
export default {
setup() {
//
const chartRef = ref();
const { setOptions } = useECharts(chartRef);
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
setOptions(options);
};
//
const onClose = () => {
visible.value = false;
};
const options = {
legend: {
data: ['正常点位', '损坏点位'],
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
},
yAxis: {
type: 'value',
},
series: [
{
name: '正常点位',
data: [150, 230, 224, 218, 135, 147, 260],
type: 'bar',
},
{
name: '损坏点位',
data: [2, 3, 4, 5, 6, 7, 2],
type: 'bar',
},
],
};
return {
visible,
showDrawer,
onClose,
chartRef,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/complete/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'Complete' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '完好率',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'complete',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

32
src/views/analysis/faultNum/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

62
src/views/analysis/faultNum/data.ts

@ -0,0 +1,62 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '运维单位',
dataIndex: 'ioUnit',
},
{
title: '故障原因',
dataIndex: 'faultReason',
},
{
title: '故障数量',
dataIndex: 'faultNum',
},
{
title: '修复数量',
dataIndex: 'fixNum',
},
{
title: '未修复数量',
dataIndex: 'unfixNum',
},
{
title: '上月未修复数量',
dataIndex: 'lastMonthUnfixNum',
},
{
title: '累计未修复数量',
dataIndex: 'sumUnfixNum',
},
];

87
src/views/analysis/faultNum/detailDrawer.vue

@ -0,0 +1,87 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="600px"
>
<div ref="chartRef" style="width: 500px; height: 500px"></div>
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
import { useECharts } from '@/hooks/web/useECharts';
// import { getInfo } from './api';
export default {
setup() {
//
const chartRef = ref();
const { setOptions } = useECharts(chartRef);
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
setOptions(options);
};
//
const onClose = () => {
visible.value = false;
};
const options = {
title: {
text: '近十二月记录',
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
},
yAxis: {
type: 'value',
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
},
],
};
return {
visible,
showDrawer,
onClose,
chartRef,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/faultNum/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'FaultNum' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '故障数量',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'faultNum',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

32
src/views/analysis/online/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

46
src/views/analysis/online/data.ts

@ -0,0 +1,46 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '日期',
dataIndex: 'date',
},
{
title: '日在线率',
dataIndex: 'dailyOnlineRate',
},
{
title: '异常情况',
dataIndex: 'unusual',
},
];

84
src/views/analysis/online/detailDrawer.vue

@ -0,0 +1,84 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="600px"
>
<div ref="chartRef" style="width: 500px; height: 500px"></div>
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
import { useECharts } from '@/hooks/web/useECharts';
// import { getInfo } from './api';
export default {
setup() {
//
const chartRef = ref();
const { setOptions } = useECharts(chartRef);
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
setOptions(options);
};
//
const onClose = () => {
visible.value = false;
};
const options = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
},
yAxis: {
type: 'value',
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
},
],
};
return {
visible,
showDrawer,
onClose,
chartRef,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/online/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable" bordered>
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'Online' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '在线率',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'online',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

32
src/views/analysis/planComplete/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

50
src/views/analysis/planComplete/data.ts

@ -0,0 +1,50 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '巡检内容',
dataIndex: 'patrolContent',
},
{
title: '频率',
dataIndex: 'frequency',
},
{
title: '本月完成情况',
dataIndex: 'monthComplete',
},
{
title: '计划总况',
dataIndex: 'planComplete',
},
];

42
src/views/analysis/planComplete/index.vue

@ -0,0 +1,42 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary">导出</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
defineOptions({ name: 'PlanComplete' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '计划完整情况',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'planComplete',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
});
</script>
<style scoped></style>

32
src/views/analysis/reportSubmit/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

21
src/views/analysis/reportSubmit/data.ts

@ -0,0 +1,21 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '项目名称',
dataIndex: 'projectName',
},
{
title: '当月提交数量',
dataIndex: 'monthSubmit',
},
];

42
src/views/analysis/reportSubmit/index.vue

@ -0,0 +1,42 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary">导出</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
defineOptions({ name: 'ReportSubmit' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '报告提交情况',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'reportSubmit',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
});
</script>
<style scoped></style>

32
src/views/analysis/resAndFix/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

62
src/views/analysis/resAndFix/data.ts

@ -0,0 +1,62 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'time',
label: '时间',
component: 'DatePicker',
},
];
export const columns: BasicColumn[] = [
{
title: '类型',
dataIndex: 'type',
},
{
title: '运维单位',
dataIndex: 'ioUnit',
},
{
title: '故障总数量',
dataIndex: 'faultSum',
},
{
title: '响应超时数',
dataIndex: 'responseOvertimeNum',
},
{
title: '响应超时总时长',
dataIndex: 'responseOverTimeSum',
},
{
title: '修复超时数',
dataIndex: 'fixOvertimeNum',
},
{
title: '修复超时总时长',
dataIndex: 'fixOvertimeSum',
},
];

93
src/views/analysis/resAndFix/detailDrawer.vue

@ -0,0 +1,93 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="1000px"
>
<a-table :dataSource="dataSource" :columns="columns" bordered />
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
// import { getInfo } from './api';
export default {
setup() {
//
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
};
//
const onClose = () => {
visible.value = false;
};
//table
const dataSource = ref([]);
const columns = [
{
title: '编号',
dataIndex: 'code',
key: 'code',
},
{
title: '报修时间',
dataIndex: 'repairTime',
key: 'repairTime',
},
{
title: '响应级别',
dataIndex: 'responseLevel',
key: 'responseLevel',
},
{
title: '故障描述',
dataIndex: 'faultDescription',
key: 'faultDescription',
},
{
title: '故障地点',
dataIndex: 'faultLocation',
key: 'faultLocation',
},
{
title: '响应超时',
dataIndex: 'responseOverTime',
key: 'responseOverTime',
},
{
title: '处理超时',
dataIndex: 'handleOverTime',
key: 'handleOverTime',
},
];
return {
visible,
showDrawer,
onClose,
dataSource,
columns,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
div {
margin-bottom: 10px;
}
</style>

62
src/views/analysis/resAndFix/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'ResAndFix' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '响应/修复',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'resAndFix',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

32
src/views/analysis/resource/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

79
src/views/analysis/resource/data.ts

@ -0,0 +1,79 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'repairTimeRange',
label: '报修范围',
component: 'RangePicker',
},
{
field: 'repairer',
label: '报修人名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
];
export const columns: BasicColumn[] = [
{
title: '编号',
dataIndex: 'code',
},
{
title: '报修时间',
dataIndex: 'repairTime',
},
{
title: '响应级别',
dataIndex: 'responseLevel',
},
{
title: '故障描述',
dataIndex: 'faultDescription',
},
{
title: '故障地点',
dataIndex: 'faultLocation',
},
{
title: '当前状态',
dataIndex: 'status',
},
];

91
src/views/analysis/resource/detailDrawer.vue

@ -0,0 +1,91 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="600px"
>
<div ref="chartRef" style="width: 500px; height: 500px"></div>
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
import { useECharts } from '@/hooks/web/useECharts';
// import { getInfo } from './api';
export default {
setup() {
//
const chartRef = ref();
const { setOptions } = useECharts(chartRef);
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
setOptions(options);
};
//
const onClose = () => {
visible.value = false;
};
const options = {
title: {
text: '故障类型分析 ',
left: 'center',
},
tooltip: {
trigger: 'item',
},
legend: {
orient: 'vertical',
left: 'left',
},
series: [
{
type: 'pie',
data: [
{ value: 1048, name: '监理', id: 1 },
{ value: 2555, name: '相关', id: 2 },
],
},
],
};
return {
visible,
showDrawer,
onClose,
chartRef,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/resource/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'Type' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '类型分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'type',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

165
src/views/analysis/satisify/addModal.vue

@ -0,0 +1,165 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="辖区" name="area">
<a-input v-model:value="form.area" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="视频平台运营情况" name="vedioOperation">
<a-select
v-model:value="form.vedioOperation"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="视频设备故障率" name="vedioFault">
<a-select
v-model:value="form.vedioFault"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="存储可用率" name="save">
<a-select v-model:value="form.save" :options="satisifyOptions" placeholder="请选择" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="运维修复率" name="ioFix">
<a-select v-model:value="form.ioFix" :options="satisifyOptions" placeholder="请选择" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="系统总体运行情况" name="systemRun">
<a-select
v-model:value="form.systemRun"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="运维人月素质" name="ioPeopleQuality">
<a-select
v-model:value="form.ioPeopleQuality"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="整体服务水平" name="serviceLevel">
<a-select
v-model:value="form.serviceLevel"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="综合评价" name="assess">
<a-select v-model:value="form.assess" :options="satisifyOptions" placeholder="请选择" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="意见反馈" name="opinion">
<a-select
v-model:value="form.opinion"
:options="satisifyOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import { reactive, ref } from 'vue';
export default {
setup() {
const title = ref('新增');
const visible = ref(false);
const form = reactive({
area: '',
vedioOperation: '',
vedioFault: '',
save: '',
ioFix: '',
systemRun: '',
ioPeopleQuality: '',
serviceLevel: '',
assess: '',
opinion: '',
});
//
const satisifyOptions = [
{
value: '很满意',
},
{
value: '满意',
},
{
value: '一般',
},
{
value: '不满意',
},
{
value: '很不满意',
},
];
const showModal = (type, id) => {
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
title.value = '编辑';
console.log(id);
}
visible.value = true;
};
const handleOk = () => {
console.log('Form Data:', form);
//
visible.value = false;
};
return {
visible,
title,
form,
showModal,
handleOk,
satisifyOptions,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-modal-body {
max-width: 600px;
margin: 0 auto;
}
</style>

32
src/views/analysis/satisify/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

45
src/views/analysis/satisify/data.ts

@ -0,0 +1,45 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
];
export const columns: BasicColumn[] = [
{
title: '项目名称',
dataIndex: 'projectName',
},
{
title: '时间',
dataIndex: 'time',
},
{
title: '备注',
dataIndex: 'remark',
},
{
title: '辖区数量',
dataIndex: 'areaNum',
},
];

147
src/views/analysis/satisify/detailDrawer.vue

@ -0,0 +1,147 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="1000px"
>
<div style="margin-bottom: 20px">附件{{ attachment }}</div>
<a-button type="primary" @click="handleAdd">新增</a-button>
<a-table :dataSource="dataSource" :columns="columns" bordered>
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'action'">
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
</template>
</template>
</a-table>
</a-drawer>
<add-modal ref="addModalRef" />
</div>
</template>
<script>
import { ref } from 'vue';
import addModal from './addModal.vue';
// import { getInfo } from './api';
export default {
components: {
addModal,
},
setup() {
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
};
//
const onClose = () => {
visible.value = false;
};
const attachment = ref([]);
const dataSource = ref([]);
const columns = [
{
title: '辖区',
dataIndex: 'area',
key: 'area',
},
{
title: '视频平台运营情况',
dataIndex: 'videoOperation',
key: 'videoOperation',
},
{
title: '视频设备故障率',
dataIndex: 'vedioFault',
key: 'vedioFault',
},
{
title: '存储可用率',
dataIndex: 'save',
key: 'save',
},
{
title: '运维修复率',
dataIndex: 'ioFix',
key: 'ioFix',
},
{
title: '系统总体运行情状况',
dataIndex: 'systemRun',
key: 'systemRun',
},
{
title: '运维人月素质',
dataIndex: 'ioPeopleQuality',
key: 'ioPeopleQuality',
},
{
title: '整体服务水平',
dataIndex: 'serviceLevel',
key: 'serviceLevel',
},
{
title: '综合评价',
dataIndex: 'assess',
key: 'assess',
},
{
title: '意见反馈',
dataIndex: 'opinion',
key: 'opinion',
},
{
title: '操作',
dataIndex: 'action',
key: 'action',
},
];
//
const addModalRef = ref();
const handleAdd = () => {
addModalRef.value.showModal(1);
};
const handleEdit = (id) => {
addModalRef.value.showModal(2, id);
};
return {
visible,
showDrawer,
onClose,
dataSource,
columns,
attachment,
addModalRef,
handleAdd,
handleEdit,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/satisify/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable" bordered>
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'Satisify' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '满意度分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'satisify',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

32
src/views/analysis/type/api.ts

@ -0,0 +1,32 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
}
export function list(params?: PageQuery) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
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(',')}` });
}

79
src/views/analysis/type/data.ts

@ -0,0 +1,79 @@
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'projectName',
label: '项目名称',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
{
field: 'repairTimeRange',
label: '报修范围',
component: 'RangePicker',
},
{
field: 'faultSubcategory',
label: '故障小类',
component: 'Select',
componentProps: {
options: [
{
value: '1',
label: '2323',
},
{
value: '2',
label: '2323',
},
{
value: '3',
label: '2323',
},
],
},
},
];
export const columns: BasicColumn[] = [
{
title: '编号',
dataIndex: 'code',
},
{
title: '报修时间',
dataIndex: 'repairTime',
},
{
title: '响应级别',
dataIndex: 'responseLevel',
},
{
title: '故障描述',
dataIndex: 'faultDescription',
},
{
title: '故障地点',
dataIndex: 'faultLocation',
},
{
title: '当前状态',
dataIndex: 'status',
},
];

88
src/views/analysis/type/detailDrawer.vue

@ -0,0 +1,88 @@
<template>
<div>
<!-- 抽屉组件 -->
<a-drawer
title="详情"
placement="right"
:closable="true"
:open="visible"
@close="onClose"
width="600px"
>
<div ref="chartRef" style="width: 500px; height: 500px"></div>
</a-drawer>
</div>
</template>
<script>
import { ref } from 'vue';
import { useECharts } from '@/hooks/web/useECharts';
// import { getInfo } from './api';
export default {
setup() {
//
const chartRef = ref();
const { setOptions } = useECharts(chartRef);
const visible = ref(false);
const showDrawer = () => {
visible.value = true;
setOptions(options);
};
//
const onClose = () => {
visible.value = false;
};
const options = {
title: {
text: '故障类型分析 ',
left: 'center',
},
tooltip: {
trigger: 'item',
},
legend: {
orient: 'vertical',
left: 'left',
},
series: [
{
type: 'pie',
data: [{ value: 1048, name: '无图像/前端', id: 1 }],
},
],
};
return {
visible,
showDrawer,
onClose,
chartRef,
};
},
};
</script>
<style scoped>
/* 可选样式调整 */
.ant-btn {
margin: 20px;
}
/* .singerDetail{
margin-bottom: 10px;
} */
div {
margin-bottom: 10px;
}
.timeText {
margin: 0 0 40px 20px;
color: red;
}
.titleLabel {
color: gray;
}
</style>

62
src/views/analysis/type/index.vue

@ -0,0 +1,62 @@
<template>
<PageWrapper dense>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleDetail">导出</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
</template>
</BasicTable>
<detailDrawer ref="detailDrawerRef" />
</PageWrapper>
</template>
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
defineOptions({ name: 'Type' });
const [registerTable] = useTable({
rowSelection: {
type: 'checkbox',
},
title: '类型分析',
api: list,
showIndexColumn: true,
rowKey: 'id',
useSearchForm: true,
formConfig: {
schemas: formSchemas,
name: 'type',
baseColProps: {
xs: 24,
sm: 24,
md: 24,
lg: 6,
},
},
columns: columns,
actionColumn: {
width: 200,
title: '操作',
key: 'action',
fixed: 'right',
},
});
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
};
</script>
<style scoped></style>

36
src/views/project/IOCheck/ratingSearch/api.ts

@ -1,6 +1,5 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base'; import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
import { Dayjs } from 'dayjs';
enum Api { enum Api {
root = '/workflow/leave', root = '/workflow/leave',
@ -8,33 +7,8 @@ enum Api {
export = '/workflow/leave/export', export = '/workflow/leave/export',
} }
export interface Leave {
id: string;
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark: string;
processInstanceVo?: any;
dateTime?: [string, string] | [Dayjs, Dayjs];
}
export interface Resp {
createDept: number;
createBy: number;
createTime: string;
updateBy: number;
updateTime: string;
id: string;
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark?: any;
}
export function list(params?: PageQuery) { export function list(params?: PageQuery) {
return defHttp.get<Leave[]>({ url: Api.list, params }); return defHttp.get({ url: Api.list, params });
} }
export function exportExcel(data: any) { export function exportExcel(data: any) {
@ -42,17 +16,17 @@ export function exportExcel(data: any) {
} }
export function getInfo(id: ID) { export function getInfo(id: ID) {
return defHttp.get<Leave>({ url: `${Api.root}/${id}` }); return defHttp.get({ url: `${Api.root}/${id}` });
} }
export function add(data: any) { export function add(data: any) {
return defHttp.post<Resp>({ url: Api.root, data }); return defHttp.post({ url: Api.root, data });
} }
export function update(data: any) { export function update(data: any) {
return defHttp.put<Resp>({ url: Api.root, data }); return defHttp.put({ url: Api.root, data });
} }
export function removeByIds(ids: IDS) { export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg<void>({ url: `${Api.root}/${ids.join(',')}` }); return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
} }

45
src/views/project/serviceManage/api.ts

@ -1,58 +1,35 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base'; import { ID, IDS, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
import { Dayjs } from 'dayjs';
enum Api { enum Api {
root = '/workflow/leave', root = '/workflow/leave',
list = '/workflow/leave/list', list = '/platform/agreementInfo/list',
tree = '/platform/catalogCategory/queryAll',
export = '/workflow/leave/export', export = '/workflow/leave/export',
} }
export interface Leave { export function list(params: any) {
id: string; return defHttp.get({ url: Api.list, params });
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark: string;
processInstanceVo?: any;
dateTime?: [string, string] | [Dayjs, Dayjs];
} }
export function tree() {
export interface Resp { return defHttp.get({ url: Api.tree });
createDept: number;
createBy: number;
createTime: string;
updateBy: number;
updateTime: string;
id: string;
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark?: any;
}
export function list(params?: PageQuery) {
return defHttp.get<Leave[]>({ url: Api.list, params });
} }
export function exportExcel(data: any) { export function exportExcel(data: any) {
return commonExport(Api.export, data); return commonExport(Api.export, data);
} }
export function getInfo(id: ID) { export function getInfo(id: ID) {
return defHttp.get<Leave>({ url: `${Api.root}/${id}` }); return defHttp.get({ url: `${Api.root}/${id}` });
} }
export function add(data: any) { export function add(data: any) {
return defHttp.post<Resp>({ url: Api.root, data }); return defHttp.post({ url: Api.root, data });
} }
export function update(data: any) { export function update(data: any) {
return defHttp.put<Resp>({ url: Api.root, data }); return defHttp.put({ url: Api.root, data });
} }
export function removeByIds(ids: IDS) { export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg<void>({ url: `${Api.root}/${ids.join(',')}` }); return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
} }

112
src/views/project/serviceManage/index.vue

@ -19,18 +19,16 @@
<a-tree <a-tree
:show-line="true" :show-line="true"
:show-icon="true" :show-icon="true"
:depoint-expanded-keys="['0-0-0']"
:tree-data="treeData" :tree-data="treeData"
v-model:selectedKeys="checkedTree"
@select="onSelect" @select="onSelect"
> :fieldNames="{
<template #title="{ dataRef }"> children: 'children',
<template v-if="dataRef.key === '0-0-0-1'"> title: 'projectName',
<div>multiple line title</div> key: 'id',
<div>multiple line title</div> disabled: 'disabled',
</template> }"
<template v-else>{{ dataRef.title }}</template> />
</template>
</a-tree>
</a-col> </a-col>
<a-col :span="16"> <a-col :span="16">
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
@ -57,10 +55,10 @@
<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 } from './api'; import { list, tree } from './api';
import { formSchemas, columns } from './data'; import { formSchemas, columns } from './data';
import addModal from './addModal.vue'; import addModal from './addModal.vue';
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import AddTypeModal from './addTypeModal.vue'; import AddTypeModal from './addTypeModal.vue';
defineOptions({ name: 'ServiceManage' }); defineOptions({ name: 'ServiceManage' });
@ -85,6 +83,13 @@
}, },
}, },
columns: columns, columns: columns,
beforeFetch(params: any) {
if (checkedTree.value.length === 1) {
params.serviceCategoryId = checkedTree.value[0];
}
return params;
},
immediate: false,
actionColumn: { actionColumn: {
width: 200, width: 200,
title: '操作', title: '操作',
@ -109,79 +114,24 @@
addTypeModalRef.value.showModal(1); addTypeModalRef.value.showModal(1);
}; };
//tree //tree
const treeData = ref([ const checkedTree = ref([]);
{ const treeData = ref([]);
title: 'parent 1', const getTree = async () => {
key: '0-0', const res = await tree();
children: [ treeData.value = res;
{ treeData.value.forEach((i: any) => {
title: 'parent 1-0', i.disabled = true;
key: '0-0-0', });
children: [ console.log(res);
{ };
title: 'leaf',
key: '0-0-0-0',
},
{
key: '0-0-0-1',
},
{
title: 'leaf',
key: '0-0-0-2',
},
],
},
{
title: 'parent 1-1',
key: '0-0-1',
children: [
{
title: 'leaf',
key: '0-0-1-0',
},
],
},
{
title: 'parent 1-2',
key: '0-0-2',
children: [
{
title: 'leaf 1',
key: '0-0-2-0',
},
{
title: 'leaf 2',
key: '0-0-2-1',
},
],
},
],
},
{
title: 'parent 2',
key: '0-1',
children: [
{
title: 'parent 2-0',
key: '0-1-0',
children: [
{
title: 'leaf',
key: '0-1-0-0',
},
{
title: 'leaf',
key: '0-1-0-1',
},
],
},
],
},
]);
const onSelect = (selectedKeys: any, info: any) => { const onSelect = (selectedKeys: any, info: any) => {
console.log('selected', selectedKeys, info); console.log('selected', selectedKeys, info);
console.log(checkedTree.value);
reload(); reload();
}; };
onMounted(() => {
getTree();
});
</script> </script>
<style scoped> <style scoped>

8
src/views/property/meterial/index.vue

@ -2,13 +2,7 @@
<PageWrapper dense> <PageWrapper dense>
<a-row> <a-row>
<a-col :span="4" style="margin-top: 1%"> <a-col :span="4" style="margin-top: 1%">
<a-tree <a-tree :show-line="true" :show-icon="true" :tree-data="treeData" @select="onSelect">
:show-line="true"
:show-icon="true"
:depoint-expanded-keys="['0-0-0']"
:tree-data="treeData"
@select="onSelect"
>
<template #title="{ dataRef }"> <template #title="{ dataRef }">
<template v-if="dataRef.key === '0-0-0-1'"> <template v-if="dataRef.key === '0-0-0-1'">
<div>multiple line title</div> <div>multiple line title</div>

45
src/views/property/point/api.ts

@ -1,58 +1,35 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base'; import { ID, IDS, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
import { Dayjs } from 'dayjs';
enum Api { enum Api {
root = '/workflow/leave', root = '/workflow/leave',
list = '/workflow/leave/list', list = '/platform/pointInfo/list',
tree = '/platform/projectCategoryPoint/queryAll',
export = '/workflow/leave/export', export = '/workflow/leave/export',
} }
export interface Leave { export function list(params: any) {
id: string; return defHttp.get({ url: Api.list, params });
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark: string;
processInstanceVo?: any;
dateTime?: [string, string] | [Dayjs, Dayjs];
} }
export function tree() {
export interface Resp { return defHttp.get({ url: Api.tree });
createDept: number;
createBy: number;
createTime: string;
updateBy: number;
updateTime: string;
id: string;
leaveType: string;
startDate: string;
endDate: string;
leaveDays: number;
remark?: any;
}
export function list(params?: PageQuery) {
return defHttp.get<Leave[]>({ url: Api.list, params });
} }
export function exportExcel(data: any) { export function exportExcel(data: any) {
return commonExport(Api.export, data); return commonExport(Api.export, data);
} }
export function getInfo(id: ID) { export function getInfo(id: ID) {
return defHttp.get<Leave>({ url: `${Api.root}/${id}` }); return defHttp.get({ url: `${Api.root}/${id}` });
} }
export function add(data: any) { export function add(data: any) {
return defHttp.post<Resp>({ url: Api.root, data }); return defHttp.post({ url: Api.root, data });
} }
export function update(data: any) { export function update(data: any) {
return defHttp.put<Resp>({ url: Api.root, data }); return defHttp.put({ url: Api.root, data });
} }
export function removeByIds(ids: IDS) { export function removeByIds(ids: IDS) {
return defHttp.deleteWithMsg<void>({ url: `${Api.root}/${ids.join(',')}` }); return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
} }

113
src/views/property/point/index.vue

@ -3,20 +3,17 @@
<a-row> <a-row>
<a-col :span="4" style="margin-top: 1%"> <a-col :span="4" style="margin-top: 1%">
<a-tree <a-tree
:show-line="true"
:show-icon="true" :show-icon="true"
:depoint-expanded-keys="['0-0-0']"
:tree-data="treeData" :tree-data="treeData"
v-model:selectedKeys="checkedTree"
@select="onSelect" @select="onSelect"
> :fieldNames="{
<template #title="{ dataRef }"> children: 'children',
<template v-if="dataRef.key === '0-0-0-1'"> title: 'projectName',
<div>multiple line title</div> key: 'projectId',
<div>multiple line title</div> disabled: 'disabled',
</template> }"
<template v-else>{{ dataRef.title }}</template> />
</template>
</a-tree>
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
@ -45,11 +42,11 @@
<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 } from './api'; import { list, tree } from './api';
import { formSchemas, columns } from './data'; import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue'; import detailDrawer from './detailDrawer.vue';
import addModal from './addModal.vue'; import addModal from './addModal.vue';
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import pointModal from './pointModal.vue'; import pointModal from './pointModal.vue';
defineOptions({ name: 'Point' }); defineOptions({ name: 'Point' });
@ -73,6 +70,13 @@
lg: 6, lg: 6,
}, },
}, },
beforeFetch(params: any) {
if (checkedTree.value.length === 1) {
params.projectId = checkedTree.value[0];
}
return params;
},
immediate: false,
columns: columns, columns: columns,
actionColumn: { actionColumn: {
width: 200, width: 200,
@ -99,79 +103,24 @@
pointModalRef.value.showModal(); pointModalRef.value.showModal();
}; };
//tree //tree
const treeData = ref([ const checkedTree = ref([]);
{ const treeData = ref([]);
title: 'parent 1', const getTree = async () => {
key: '0-0', const res = await tree();
children: [ treeData.value = res;
{ treeData.value.forEach((i: any) => {
title: 'parent 1-0', i.disabled = true;
key: '0-0-0', });
children: [ console.log(res);
{ };
title: 'leaf',
key: '0-0-0-0',
},
{
key: '0-0-0-1',
},
{
title: 'leaf',
key: '0-0-0-2',
},
],
},
{
title: 'parent 1-1',
key: '0-0-1',
children: [
{
title: 'leaf',
key: '0-0-1-0',
},
],
},
{
title: 'parent 1-2',
key: '0-0-2',
children: [
{
title: 'leaf 1',
key: '0-0-2-0',
},
{
title: 'leaf 2',
key: '0-0-2-1',
},
],
},
],
},
{
title: 'parent 2',
key: '0-1',
children: [
{
title: 'parent 2-0',
key: '0-1-0',
children: [
{
title: 'leaf',
key: '0-1-0-0',
},
{
title: 'leaf',
key: '0-1-0-1',
},
],
},
],
},
]);
const onSelect = (selectedKeys: any, info: any) => { const onSelect = (selectedKeys: any, info: any) => {
console.log('selected', selectedKeys, info); console.log('selected', selectedKeys, info);
console.log(checkedTree.value);
reload(); reload();
}; };
onMounted(() => {
getTree();
});
// //
const detailDrawerRef = ref(); const detailDrawerRef = ref();
const handleDetail = () => { const handleDetail = () => {

20
src/views/property/propertyList/index.vue

@ -2,21 +2,7 @@
<PageWrapper dense> <PageWrapper dense>
<a-row> <a-row>
<a-col :span="4" style="margin-top: 1%"> <a-col :span="4" style="margin-top: 1%">
<a-tree <a-tree :show-line="true" :show-icon="true" :tree-data="treeData" @select="onSelect" />
:show-line="true"
:show-icon="true"
:depoint-expanded-keys="['0-0-0']"
:tree-data="treeData"
@select="onSelect"
>
<template #title="{ dataRef }">
<template v-if="dataRef.key === '0-0-0-1'">
<div>multiple line title</div>
<div>multiple line title</div>
</template>
<template v-else>{{ dataRef.title }}</template>
</template>
</a-tree>
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<BasicTable @register="registerTable"> <BasicTable @register="registerTable">
@ -46,8 +32,8 @@
<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 } from './api'; import { formSchemas, columns } from './property.data';
import { formSchemas, columns } from './data'; import { list } from './property.api';
import addModal from './addModal.vue'; import addModal from './addModal.vue';
import { ref } from 'vue'; import { ref } from 'vue';

0
src/views/property/propertyList/api.ts → src/views/property/propertyList/property.api.ts

0
src/views/property/propertyList/data.ts → src/views/property/propertyList/property.data.ts

Loading…
Cancel
Save