Browse Source

总部片区模块

miaofuhao 2 months ago
parent
commit
d06314777b

+ 193 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/districtInspect/districtInspect-data.tsx

@@ -0,0 +1,193 @@
1
+import type { VxeGridProps } from '#/adapter/vxe-table';
2
+import type { FormSchemaGetter } from '#/adapter/form';
3
+
4
+// 片区检查数据类型定义
5
+export interface DistrictInspectData {
6
+  id: number;
7
+  area: string; // 片区
8
+  meetingPlace: string; // 会议地点
9
+  meetingTime: string; // 会议时间
10
+  executor: string; // 执行人
11
+  comment: string; // 评论
12
+  deadline: string; // 截止时间
13
+  processingTime: string; // 处理时间
14
+  completionStatus: string; // 完成状态
15
+  creation: string; // 创建时间
16
+}
17
+
18
+// 片区检查表格配置
19
+export const tableColumns: VxeGridProps['columns'] = [
20
+  { title: '片区', field: 'area', minWidth: 120, align: 'center' },
21
+  { title: '会议地点', field: 'meetingPlace', minWidth: 150, align: 'center' },
22
+  { title: '会议时间', field: 'meetingTime', minWidth: 160, align: 'center' },
23
+  { title: '执行人', field: 'executor', minWidth: 120, align: 'center' },
24
+  { title: '评论', field: 'comment', minWidth: 150, align: 'center' },
25
+  { title: '截止时间', field: 'deadline', minWidth: 160, align: 'center' },
26
+  { title: '处理时间', field: 'processingTime', minWidth: 160, align: 'center' },
27
+  { title: '完成状态', field: 'completionStatus', minWidth: 120, align: 'center' },
28
+  { title: '创建时间', field: 'creation', minWidth: 160, align: 'center' },
29
+  { 
30
+    title: '操作', 
31
+    minWidth: 100, 
32
+    align: 'center', 
33
+    slots: { default: 'action' }
34
+  },
35
+];
36
+
37
+// 片区检查虚拟数据
38
+export const DISTRICT_INSPECT_MOCK_DATA: DistrictInspectData[] = [
39
+  { 
40
+    id: 1, 
41
+    area: '北京片区', 
42
+    meetingPlace: '北京东加油站会议室', 
43
+    meetingTime: '2025-12-18 10:00:00', 
44
+    executor: '张三', 
45
+    comment: '已审核通过', 
46
+    deadline: '2025-12-20 18:00:00', 
47
+    processingTime: '2025-12-18 14:30:00', 
48
+    completionStatus: '已完成', 
49
+    creation: '2025-12-15 09:00:00'
50
+  },
51
+  { 
52
+    id: 2, 
53
+    area: '上海片区', 
54
+    meetingPlace: '上海加油站会议室', 
55
+    meetingTime: '2025-12-19 13:00:00', 
56
+    executor: '李四', 
57
+    comment: '待审核', 
58
+    deadline: '2025-12-22 18:00:00', 
59
+    processingTime: '2025-12-19 10:15:00', 
60
+    completionStatus: '进行中', 
61
+    creation: '2025-12-16 10:30:00'
62
+  },
63
+  { 
64
+    id: 3, 
65
+    area: '广州片区', 
66
+    meetingPlace: '广州加油站会议室', 
67
+    meetingTime: '2025-12-20 09:30:00', 
68
+    executor: '王五', 
69
+    comment: '已评论', 
70
+    deadline: '2025-12-23 18:00:00', 
71
+    processingTime: '2025-12-20 11:45:00', 
72
+    completionStatus: '进行中', 
73
+    creation: '2025-12-17 14:00:00'
74
+  },
75
+  { 
76
+    id: 4, 
77
+    area: '深圳片区', 
78
+    meetingPlace: '深圳加油站会议室', 
79
+    meetingTime: '2025-12-17 14:00:00', 
80
+    executor: '赵六', 
81
+    comment: '已审核通过', 
82
+    deadline: '2025-12-19 18:00:00', 
83
+    processingTime: '2025-12-18 09:20:00', 
84
+    completionStatus: '已完成', 
85
+    creation: '2025-12-14 11:00:00'
86
+  },
87
+  { 
88
+    id: 5, 
89
+    area: '北京片区', 
90
+    meetingPlace: '北京西加油站会议室', 
91
+    meetingTime: '2025-12-21 14:30:00', 
92
+    executor: '孙七', 
93
+    comment: '未评论', 
94
+    deadline: '2025-12-24 18:00:00', 
95
+    processingTime: '2025-12-21 08:45:00', 
96
+    completionStatus: '进行中', 
97
+    creation: '2025-12-18 09:15:00'
98
+  },
99
+  { 
100
+    id: 6, 
101
+    area: '上海片区', 
102
+    meetingPlace: '上海南加油站会议室', 
103
+    meetingTime: '2025-12-16 11:00:00', 
104
+    executor: '周八', 
105
+    comment: '已审核通过', 
106
+    deadline: '2025-12-18 18:00:00', 
107
+    processingTime: '2025-12-17 15:30:00', 
108
+    completionStatus: '已完成', 
109
+    creation: '2025-12-13 10:45:00'
110
+  },
111
+];
112
+
113
+export const queryFormSchema: FormSchemaGetter = () => QUERY_FORM_SCHEMA;
114
+
115
+// 查询表单模式配置
116
+const QUERY_FORM_SCHEMA = [
117
+  {
118
+    component: 'Select',
119
+    fieldName: 'area',
120
+    label: '片区',
121
+    componentProps: {
122
+      placeholder: '请选择片区',
123
+      options: [
124
+        { label: '北京片区', value: '北京片区' },
125
+        { label: '上海片区', value: '上海片区' },
126
+        { label: '广州片区', value: '广州片区' },
127
+        { label: '深圳片区', value: '深圳片区' },
128
+      ],
129
+    },
130
+  },
131
+  {
132
+    component: 'Select',
133
+    fieldName: 'taskName',
134
+    label: '任务名称',
135
+    componentProps: {
136
+      placeholder: '请选择任务名称',
137
+      options: [
138
+        { label: '安全检查', value: '安全检查' },
139
+        { label: '设备巡检', value: '设备巡检' },
140
+        { label: '环境检查', value: '环境检查' },
141
+        { label: '服务检查', value: '服务检查' },
142
+      ],
143
+    },
144
+  },
145
+  {
146
+    component: 'Input',
147
+    fieldName: 'executor',
148
+    label: '执行人',
149
+    componentProps: {
150
+      placeholder: '请输入执行人',
151
+    },
152
+  },
153
+  {
154
+    component: 'Select',
155
+    fieldName: 'comment',
156
+    label: '评论',
157
+    componentProps: {
158
+      placeholder: '请选择评论',
159
+      options: [
160
+        { label: '已评论', value: '已评论' },
161
+        { label: '未评论', value: '未评论' },
162
+        { label: '待审核', value: '待审核' },
163
+      ],
164
+    },
165
+  },
166
+  {
167
+    component: 'DatePicker',
168
+    fieldName: 'processingTimeRange',
169
+    label: '处理时间',
170
+    componentProps: {
171
+      placeholder: '请选择处理时间范围',
172
+      type: 'daterange',
173
+      rangeSeparator: '至',
174
+      startPlaceholder: '开始时间',
175
+      endPlaceholder: '结束时间',
176
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
177
+    },
178
+  },
179
+  {
180
+    component: 'Select',
181
+    fieldName: 'completionStatus',
182
+    label: '完成状态',
183
+    componentProps: {
184
+      placeholder: '请选择完成状态',
185
+      options: [
186
+        { label: '已完成', value: '已完成' },
187
+        { label: '进行中', value: '进行中' },
188
+        { label: '已逾期', value: '已逾期' },
189
+        { label: '已取消', value: '已取消' },
190
+      ],
191
+    },
192
+  },
193
+];

+ 72 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/districtInspect/index.vue

@@ -0,0 +1,72 @@
1
+<script lang="ts" setup>
2
+// 导入部分
3
+import type { VbenFormProps } from '@vben/common-ui';
4
+import type { VxeGridProps } from '#/adapter/vxe-table';
5
+import { Page } from '@vben/common-ui';
6
+import { useVbenVxeGrid } from '#/adapter/vxe-table';
7
+import { ElButton, ElSpace } from 'element-plus';
8
+import { tableColumns, DISTRICT_INSPECT_MOCK_DATA, queryFormSchema } from './districtInspect-data';
9
+
10
+// 表单配置
11
+const formOptions: VbenFormProps = {
12
+  commonConfig: {
13
+    labelWidth: 80,
14
+    componentProps: { allowClear: true },
15
+  },
16
+  schema: queryFormSchema(),
17
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',
18
+};
19
+
20
+// 片区检查表格配置
21
+const districtInspectGridOptions: VxeGridProps = {
22
+  columns: tableColumns,
23
+  height: '800px',
24
+  proxyConfig: {
25
+    autoLoad: true,
26
+    ajax: {
27
+      query: async () => ({ items: DISTRICT_INSPECT_MOCK_DATA, total: DISTRICT_INSPECT_MOCK_DATA.length }),
28
+    },
29
+  },
30
+  rowConfig: { keyField: 'id' },
31
+  pagerConfig: { enabled: true, pageSize: 100, pageSizes: [10, 20, 50, 100] },
32
+};
33
+
34
+// 创建表格实例
35
+const [DistrictInspectTable] = useVbenVxeGrid({ formOptions, gridOptions: districtInspectGridOptions });
36
+
37
+// 导出按钮点击事件
38
+const handleExport = () => {
39
+  console.log('导出数据');
40
+  // TODO: 添加导出逻辑
41
+};
42
+</script>
43
+
44
+<template>
45
+  <Page :auto-content-height="true">
46
+    <div class="district-inspect-container">
47
+      <!-- 片区检查表格 -->
48
+      <div class="table-container">
49
+        <DistrictInspectTable table-title="片区检查列表">
50
+          <template #toolbar-tools>
51
+            <ElSpace>
52
+              <ElButton 
53
+                @click="handleExport"
54
+                v-access:code="['system:districtInspect:export']"
55
+              >
56
+                导出
57
+              </ElButton>
58
+            </ElSpace>
59
+          </template>
60
+          </DistrictInspectTable>
61
+      </div>
62
+    </div>
63
+  </Page>
64
+</template>
65
+
66
+<style scoped lang="scss">
67
+.district-inspect-container {
68
+  min-height: calc(100vh - 120px);
69
+  padding: 16px;
70
+  background-color: #fff;
71
+}
72
+</style>

+ 208 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/districtMeeting/districtMeeting-data.tsx

@@ -0,0 +1,208 @@
1
+import type { VxeGridProps } from '#/adapter/vxe-table';
2
+import type { FormSchemaGetter } from '#/adapter/form';
3
+
4
+// 片区会议数据类型定义
5
+export interface DistrictMeetingData {
6
+  id: number;
7
+  taskName: string; // 任务名称
8
+  areaName: string; // 片区名称
9
+  anomalyTotal: number; // 异常总数
10
+  noPhotoCount: number; // 无拍照数
11
+  executor: string; // 执行人
12
+  position: string; // 岗位
13
+  comment: string; // 评论
14
+  deadline: string; // 截止时间
15
+  processingTime: string; // 处理时间
16
+  completionStatus: string; // 完成状态
17
+  creation: string; // 创建时间
18
+}
19
+
20
+// 片区会议表格配置
21
+export const tableColumns: VxeGridProps['columns'] = [
22
+  { title: '任务名称', field: 'taskName', minWidth: 150, align: 'center' },
23
+  { title: '片区名称', field: 'areaName', minWidth: 120, align: 'center' },
24
+  { title: '异常总数', field: 'anomalyTotal', minWidth: 100, align: 'center' },
25
+  { title: '无拍照数', field: 'noPhotoCount', minWidth: 100, align: 'center' },
26
+  { title: '执行人', field: 'executor', minWidth: 120, align: 'center' },
27
+  { title: '岗位', field: 'position', minWidth: 120, align: 'center' },
28
+  { title: '评论', field: 'comment', minWidth: 150, align: 'center' },
29
+  { title: '截止时间', field: 'deadline', minWidth: 160, align: 'center' },
30
+  { title: '处理时间', field: 'processingTime', minWidth: 160, align: 'center' },
31
+  { title: '完成状态', field: 'completionStatus', minWidth: 120, align: 'center' },
32
+  { title: '创建时间', field: 'creation', minWidth: 160, align: 'center' },
33
+  { 
34
+    title: '操作', 
35
+    minWidth: 100, 
36
+    align: 'center', 
37
+    slots: { default: 'action' }
38
+  },
39
+];
40
+
41
+// 片区会议虚拟数据
42
+export const DISTRICT_MEETING_MOCK_DATA: DistrictMeetingData[] = [
43
+  { 
44
+    id: 1, 
45
+    taskName: '安全检查会议', 
46
+    areaName: '北京片区', 
47
+    anomalyTotal: 5, 
48
+    noPhotoCount: 1, 
49
+    executor: '张三', 
50
+    position: '站长', 
51
+    comment: '已审核通过', 
52
+    deadline: '2025-12-20 18:00:00', 
53
+    processingTime: '2025-12-18 14:30:00', 
54
+    completionStatus: '已完成', 
55
+    creation: '2025-12-15 09:00:00'
56
+  },
57
+  { 
58
+    id: 2, 
59
+    taskName: '设备巡检会议', 
60
+    areaName: '上海片区', 
61
+    anomalyTotal: 3, 
62
+    noPhotoCount: 0, 
63
+    executor: '李四', 
64
+    position: '设备管理员', 
65
+    comment: '待审核', 
66
+    deadline: '2025-12-22 18:00:00', 
67
+    processingTime: '2025-12-19 10:15:00', 
68
+    completionStatus: '进行中', 
69
+    creation: '2025-12-16 10:30:00'
70
+  },
71
+  { 
72
+    id: 3, 
73
+    taskName: '环境检查会议', 
74
+    areaName: '广州片区', 
75
+    anomalyTotal: 2, 
76
+    noPhotoCount: 0, 
77
+    executor: '王五', 
78
+    position: '安全员', 
79
+    comment: '已评论', 
80
+    deadline: '2025-12-23 18:00:00', 
81
+    processingTime: '2025-12-20 11:45:00', 
82
+    completionStatus: '进行中', 
83
+    creation: '2025-12-17 14:00:00'
84
+  },
85
+  { 
86
+    id: 4, 
87
+    taskName: '服务检查会议', 
88
+    areaName: '深圳片区', 
89
+    anomalyTotal: 4, 
90
+    noPhotoCount: 2, 
91
+    executor: '赵六', 
92
+    position: '服务专员', 
93
+    comment: '已审核通过', 
94
+    deadline: '2025-12-19 18:00:00', 
95
+    processingTime: '2025-12-18 09:20:00', 
96
+    completionStatus: '已完成', 
97
+    creation: '2025-12-14 11:00:00'
98
+  },
99
+  { 
100
+    id: 5, 
101
+    taskName: '安全检查会议', 
102
+    areaName: '北京片区', 
103
+    anomalyTotal: 1, 
104
+    noPhotoCount: 0, 
105
+    executor: '孙七', 
106
+    position: '安全员', 
107
+    comment: '未评论', 
108
+    deadline: '2025-12-24 18:00:00', 
109
+    processingTime: '2025-12-21 08:45:00', 
110
+    completionStatus: '进行中', 
111
+    creation: '2025-12-18 09:15:00'
112
+  },
113
+  { 
114
+    id: 6, 
115
+    taskName: '设备巡检会议', 
116
+    areaName: '上海片区', 
117
+    anomalyTotal: 6, 
118
+    noPhotoCount: 1, 
119
+    executor: '周八', 
120
+    position: '设备管理员', 
121
+    comment: '已审核通过', 
122
+    deadline: '2025-12-18 18:00:00', 
123
+    processingTime: '2025-12-17 15:30:00', 
124
+    completionStatus: '已完成', 
125
+    creation: '2025-12-13 10:45:00'
126
+  },
127
+];
128
+
129
+export const queryFormSchema: FormSchemaGetter = () => QUERY_FORM_SCHEMA;
130
+
131
+// 查询表单模式配置
132
+const QUERY_FORM_SCHEMA = [
133
+  {
134
+    component: 'Select',
135
+    fieldName: 'area',
136
+    label: '片区',
137
+    componentProps: {
138
+      placeholder: '请选择片区',
139
+      options: [
140
+        { label: '北京片区', value: '北京片区' },
141
+        { label: '上海片区', value: '上海片区' },
142
+        { label: '广州片区', value: '广州片区' },
143
+        { label: '深圳片区', value: '深圳片区' },
144
+      ],
145
+    },
146
+  },
147
+  {
148
+    component: 'Input',
149
+    fieldName: 'meetingPlace',
150
+    label: '会议地点',
151
+    componentProps: {
152
+      placeholder: '请输入会议地点',
153
+    },
154
+  },
155
+  {
156
+    component: 'Select',
157
+    fieldName: 'comment',
158
+    label: '评论',
159
+    componentProps: {
160
+      placeholder: '请选择评论',
161
+      options: [
162
+        { label: '已评论', value: '已评论' },
163
+        { label: '未评论', value: '未评论' },
164
+        { label: '待审核', value: '待审核' },
165
+      ],
166
+    },
167
+  },
168
+  {
169
+    component: 'DatePicker',
170
+    fieldName: 'meetingTimeRange',
171
+    label: '会议时间',
172
+    componentProps: {
173
+      placeholder: '请选择会议时间范围',
174
+      type: 'daterange',
175
+      rangeSeparator: '至',
176
+      startPlaceholder: '开始时间',
177
+      endPlaceholder: '结束时间',
178
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
179
+    },
180
+  },
181
+  {
182
+    component: 'DatePicker',
183
+    fieldName: 'processingTimeRange',
184
+    label: '处理时间',
185
+    componentProps: {
186
+      placeholder: '请选择处理时间范围',
187
+      type: 'daterange',
188
+      rangeSeparator: '至',
189
+      startPlaceholder: '开始时间',
190
+      endPlaceholder: '结束时间',
191
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
192
+    },
193
+  },
194
+  {
195
+    component: 'Select',
196
+    fieldName: 'completionStatus',
197
+    label: '完成状态',
198
+    componentProps: {
199
+      placeholder: '请选择完成状态',
200
+      options: [
201
+        { label: '已完成', value: '已完成' },
202
+        { label: '进行中', value: '进行中' },
203
+        { label: '已逾期', value: '已逾期' },
204
+        { label: '已取消', value: '已取消' },
205
+      ],
206
+    },
207
+  },
208
+];

+ 79 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/districtMeeting/index.vue

@@ -0,0 +1,79 @@
1
+<script lang="ts" setup>
2
+// 导入部分
3
+import type { VbenFormProps } from '@vben/common-ui';
4
+import type { VxeGridProps } from '#/adapter/vxe-table';
5
+import { Page } from '@vben/common-ui';
6
+import { useVbenVxeGrid } from '#/adapter/vxe-table';
7
+import { ElButton, ElSpace } from 'element-plus';
8
+import { tableColumns, DISTRICT_MEETING_MOCK_DATA, queryFormSchema } from './districtMeeting-data';
9
+
10
+// 表单配置
11
+const formOptions: VbenFormProps = {
12
+  commonConfig: {
13
+    labelWidth: 80,
14
+    componentProps: { allowClear: true },
15
+  },
16
+  schema: queryFormSchema(),
17
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',
18
+};
19
+
20
+// 片区会议表格配置
21
+const districtMeetingGridOptions: VxeGridProps = {
22
+  columns: tableColumns,
23
+  height: '800px',
24
+  proxyConfig: {
25
+    autoLoad: true,
26
+    ajax: {
27
+      query: async () => ({ items: DISTRICT_MEETING_MOCK_DATA, total: DISTRICT_MEETING_MOCK_DATA.length }),
28
+    },
29
+  },
30
+  rowConfig: { keyField: 'id' },
31
+  pagerConfig: { enabled: true, pageSize: 100, pageSizes: [10, 20, 50, 100] },
32
+};
33
+
34
+// 创建表格实例
35
+const [DistrictMeetingTable] = useVbenVxeGrid({ formOptions, gridOptions: districtMeetingGridOptions });
36
+
37
+// 导出按钮点击事件
38
+const handleExport = () => {
39
+  console.log('导出数据');
40
+  // TODO: 添加导出逻辑
41
+};
42
+</script>
43
+
44
+<template>
45
+  <Page :auto-content-height="true">
46
+    <div class="district-meeting-container">
47
+      <!-- 片区会议表格 -->
48
+      <div class="table-container">
49
+        <DistrictMeetingTable table-title="片区会议列表">
50
+          <template #toolbar-tools>
51
+            <ElSpace>
52
+              <ElButton 
53
+                @click="handleExport"
54
+                v-access:code="['system:districtMeeting:export']"
55
+              >
56
+                导出
57
+              </ElButton>
58
+            </ElSpace>
59
+          </template>
60
+          <template #action="{ row }">
61
+            <ElSpace>
62
+              <ElButton type="primary" size="small">
63
+                查看
64
+              </ElButton>
65
+            </ElSpace>
66
+          </template>
67
+          </DistrictMeetingTable>
68
+      </div>
69
+    </div>
70
+  </Page>
71
+</template>
72
+
73
+<style scoped lang="scss">
74
+.district-meeting-container {
75
+  min-height: calc(100vh - 120px);
76
+  padding: 16px;
77
+  background-color: #fff;
78
+}
79
+</style>

+ 201 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/headInspect/headInspect-data.tsx

@@ -0,0 +1,201 @@
1
+import type { VxeGridProps } from '#/adapter/vxe-table';
2
+import type { FormSchemaGetter } from '#/adapter/form';
3
+
4
+// 总部检查数据类型定义
5
+export interface HeadquartersInspectData {
6
+  id: number;
7
+  taskName: string; // 任务名称
8
+  anomalyTotal: number; // 异常总数
9
+  noPhotoCount: number; // 无拍照数
10
+  executor: string; // 执行人
11
+  position: string; // 岗位
12
+  comment: string; // 评论
13
+  deadline: string; // 截止时间
14
+  processingTime: string; // 处理时间
15
+  completionStatus: string; // 完成状态
16
+  creation: string; // 创建时间
17
+}
18
+
19
+// 总部检查表格配置
20
+export const tableColumns: VxeGridProps['columns'] = [
21
+  { title: '任务名称', field: 'taskName', minWidth: 150, align: 'center' },
22
+  { title: '异常总数', field: 'anomalyTotal', minWidth: 100, align: 'center' },
23
+  { title: '无拍照数', field: 'noPhotoCount', minWidth: 100, align: 'center' },
24
+  { title: '执行人', field: 'executor', minWidth: 120, align: 'center' },
25
+  { title: '岗位', field: 'position', minWidth: 120, align: 'center' },
26
+  { title: '评论', field: 'comment', minWidth: 150, align: 'center' },
27
+  { title: '截止时间', field: 'deadline', minWidth: 160, align: 'center' },
28
+  { title: '处理时间', field: 'processingTime', minWidth: 160, align: 'center' },
29
+  { title: '完成状态', field: 'completionStatus', minWidth: 120, align: 'center' },
30
+  { title: '创建', field: 'creation', minWidth: 160, align: 'center' },
31
+  { 
32
+    title: '操作', 
33
+    minWidth: 100, 
34
+    align: 'center', 
35
+    slots: { default: 'action' }
36
+  },
37
+];
38
+
39
+// 总部检查虚拟数据
40
+export const HEADQUARTERS_INSPECT_MOCK_DATA: HeadquartersInspectData[] = [
41
+  { 
42
+    id: 1, 
43
+    taskName: '安全检查', 
44
+    anomalyTotal: 5, 
45
+    noPhotoCount: 1, 
46
+    executor: '张三', 
47
+    position: '站长', 
48
+    comment: '已审核通过', 
49
+    deadline: '2025-12-20 18:00:00', 
50
+    processingTime: '2025-12-18 10:30:00', 
51
+    completionStatus: '已完成', 
52
+    creation: '2025-12-15 09:00:00'
53
+  },
54
+  { 
55
+    id: 2, 
56
+    taskName: '设备巡检', 
57
+    anomalyTotal: 3, 
58
+    noPhotoCount: 0, 
59
+    executor: '李四', 
60
+    position: '设备管理员', 
61
+    comment: '待审核', 
62
+    deadline: '2025-12-21 18:00:00', 
63
+    processingTime: '2025-12-18 14:20:00', 
64
+    completionStatus: '进行中', 
65
+    creation: '2025-12-16 08:30:00'
66
+  },
67
+  { 
68
+    id: 3, 
69
+    taskName: '环境检查', 
70
+    anomalyTotal: 2, 
71
+    noPhotoCount: 0, 
72
+    executor: '王五', 
73
+    position: '安全员', 
74
+    comment: '已评论', 
75
+    deadline: '2025-12-19 18:00:00', 
76
+    processingTime: '2025-12-18 09:15:00', 
77
+    completionStatus: '已完成', 
78
+    creation: '2025-12-17 10:00:00'
79
+  },
80
+  { 
81
+    id: 4, 
82
+    taskName: '服务检查', 
83
+    anomalyTotal: 4, 
84
+    noPhotoCount: 2, 
85
+    executor: '赵六', 
86
+    position: '服务专员', 
87
+    comment: '未评论', 
88
+    deadline: '2025-12-22 18:00:00', 
89
+    processingTime: '2025-12-18 11:45:00', 
90
+    completionStatus: '进行中', 
91
+    creation: '2025-12-18 09:30:00'
92
+  },
93
+  { 
94
+    id: 5, 
95
+    taskName: '安全检查', 
96
+    anomalyTotal: 1, 
97
+    noPhotoCount: 0, 
98
+    executor: '孙七', 
99
+    position: '安全员', 
100
+    comment: '已审核通过', 
101
+    deadline: '2025-12-18 18:00:00', 
102
+    processingTime: '2025-12-17 16:30:00', 
103
+    completionStatus: '已完成', 
104
+    creation: '2025-12-14 14:00:00'
105
+  },
106
+  { 
107
+    id: 6, 
108
+    taskName: '设备巡检', 
109
+    anomalyTotal: 6, 
110
+    noPhotoCount: 1, 
111
+    executor: '周八', 
112
+    position: '设备管理员', 
113
+    comment: '待审核', 
114
+    deadline: '2025-12-23 18:00:00', 
115
+    processingTime: '2025-12-18 15:20:00', 
116
+    completionStatus: '进行中', 
117
+    creation: '2025-12-18 10:15:00'
118
+  },
119
+];
120
+
121
+export const queryFormSchema: FormSchemaGetter = () => QUERY_FORM_SCHEMA;
122
+
123
+// 查询表单模式配置
124
+const QUERY_FORM_SCHEMA = [
125
+  {
126
+    component: 'Select',
127
+    fieldName: 'taskName',
128
+    label: '任务名称',
129
+    componentProps: {
130
+      placeholder: '请选择任务名称',
131
+      options: [
132
+        { label: '安全检查', value: '安全检查' },
133
+        { label: '设备巡检', value: '设备巡检' },
134
+        { label: '环境检查', value: '环境检查' },
135
+        { label: '服务检查', value: '服务检查' },
136
+      ],
137
+    },
138
+  },
139
+  {
140
+    component: 'Input',
141
+    fieldName: 'executor',
142
+    label: '执行人',
143
+    componentProps: {
144
+      placeholder: '请输入执行人',
145
+    },
146
+  },
147
+  {
148
+    component: 'Select',
149
+    fieldName: 'position',
150
+    label: '岗位',
151
+    componentProps: {
152
+      placeholder: '请选择岗位',
153
+      options: [
154
+        { label: '站长', value: '站长' },
155
+        { label: '安全员', value: '安全员' },
156
+        { label: '设备管理员', value: '设备管理员' },
157
+        { label: '服务专员', value: '服务专员' },
158
+      ],
159
+    },
160
+  },
161
+  {
162
+    component: 'Select',
163
+    fieldName: 'comment',
164
+    label: '评论',
165
+    componentProps: {
166
+      placeholder: '请选择评论',
167
+      options: [
168
+        { label: '已评论', value: '已评论' },
169
+        { label: '未评论', value: '未评论' },
170
+        { label: '待审核', value: '待审核' },
171
+      ],
172
+    },
173
+  },
174
+  {
175
+    component: 'DatePicker',
176
+    fieldName: 'processingTimeRange',
177
+    label: '处理时间',
178
+    componentProps: {
179
+      placeholder: '请选择处理时间范围',
180
+      type: 'daterange',
181
+      rangeSeparator: '至',
182
+      startPlaceholder: '开始时间',
183
+      endPlaceholder: '结束时间',
184
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
185
+    },
186
+  },
187
+  {
188
+    component: 'Select',
189
+    fieldName: 'completionStatus',
190
+    label: '完成状态',
191
+    componentProps: {
192
+      placeholder: '请选择完成状态',
193
+      options: [
194
+        { label: '已完成', value: '已完成' },
195
+        { label: '进行中', value: '进行中' },
196
+        { label: '已逾期', value: '已逾期' },
197
+        { label: '已取消', value: '已取消' },
198
+      ],
199
+    },
200
+  },
201
+];

+ 72 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/headInspect/index.vue

@@ -0,0 +1,72 @@
1
+<script lang="ts" setup>
2
+// 导入部分
3
+import type { VbenFormProps } from '@vben/common-ui';
4
+import type { VxeGridProps } from '#/adapter/vxe-table';
5
+import { Page } from '@vben/common-ui';
6
+import { useVbenVxeGrid } from '#/adapter/vxe-table';
7
+import { ElButton, ElSpace } from 'element-plus';
8
+import { tableColumns, HEADQUARTERS_INSPECT_MOCK_DATA, queryFormSchema } from './headInspect-data';
9
+
10
+// 表单配置
11
+const formOptions: VbenFormProps = {
12
+  commonConfig: {
13
+    labelWidth: 80,
14
+    componentProps: { allowClear: true },
15
+  },
16
+  schema: queryFormSchema(),
17
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',
18
+};
19
+
20
+// 总部检查表格配置
21
+const headquartersInspectGridOptions: VxeGridProps = {
22
+  columns: tableColumns,
23
+  height: '800px',
24
+  proxyConfig: {
25
+    autoLoad: true,
26
+    ajax: {
27
+      query: async () => ({ items: HEADQUARTERS_INSPECT_MOCK_DATA, total: HEADQUARTERS_INSPECT_MOCK_DATA.length }),
28
+    },
29
+  },
30
+  rowConfig: { keyField: 'id' },
31
+  pagerConfig: { enabled: true, pageSize: 100, pageSizes: [10, 20, 50, 100] },
32
+};
33
+
34
+// 创建表格实例
35
+const [HeadquartersInspectTable] = useVbenVxeGrid({ formOptions, gridOptions: headquartersInspectGridOptions });
36
+
37
+// 导出按钮点击事件
38
+const handleExport = () => {
39
+  console.log('导出数据');
40
+  // TODO: 添加导出逻辑
41
+};
42
+</script>
43
+
44
+<template>
45
+  <Page :auto-content-height="true">
46
+    <div class="headquarters-inspect-container">
47
+      <!-- 总部检查表格 -->
48
+      <div class="table-container">
49
+        <HeadquartersInspectTable table-title="总部检查列表">
50
+          <template #toolbar-tools>
51
+            <ElSpace>
52
+              <ElButton 
53
+                @click="handleExport"
54
+                v-access:code="['system:workDataStatistics:export']"
55
+              >
56
+                导出
57
+              </ElButton>
58
+            </ElSpace>
59
+          </template>
60
+        </HeadquartersInspectTable>
61
+      </div>
62
+    </div>
63
+  </Page>
64
+</template>
65
+
66
+<style scoped lang="scss">
67
+.headquarters-inspect-container {
68
+  min-height: calc(100vh - 120px);
69
+  padding: 16px;
70
+  background-color: #fff;
71
+}
72
+</style>

+ 77 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/tankerInspect/index.vue

@@ -0,0 +1,77 @@
1
+<script lang="ts" setup>
2
+// 导入部分
3
+import type { VbenFormProps } from '@vben/common-ui';
4
+import type { VxeGridProps } from '#/adapter/vxe-table';
5
+import { Page } from '@vben/common-ui';
6
+import { useVbenVxeGrid } from '#/adapter/vxe-table';
7
+import { ElButton, ElSpace } from 'element-plus';
8
+import { tableColumns, TANKER_INSPECT_MOCK_DATA, queryFormSchema } from './tankerInspect-data';
9
+
10
+// 表单配置
11
+const formOptions: VbenFormProps = {
12
+  commonConfig: {
13
+    labelWidth: 80,
14
+    componentProps: { allowClear: true },
15
+  },
16
+  schema: queryFormSchema(),
17
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',
18
+};
19
+
20
+// 油轮检查表格配置
21
+const tankerInspectGridOptions: VxeGridProps = {
22
+  columns: tableColumns,
23
+  height: '800px',
24
+  proxyConfig: {
25
+    autoLoad: true,
26
+    ajax: {
27
+      query: async () => ({ items: TANKER_INSPECT_MOCK_DATA, total: TANKER_INSPECT_MOCK_DATA.length }),
28
+    },
29
+  },
30
+  rowConfig: { keyField: 'id' },
31
+  pagerConfig: { enabled: true, pageSize: 100, pageSizes: [10, 20, 50, 100] },
32
+};
33
+
34
+// 创建表格实例
35
+const [TankerInspectTable] = useVbenVxeGrid({ formOptions, gridOptions: tankerInspectGridOptions });
36
+
37
+// 导出按钮点击事件
38
+const handleExport = () => {
39
+  console.log('导出数据');
40
+  // TODO: 添加导出逻辑
41
+};
42
+</script>
43
+
44
+<template>
45
+  <Page :auto-content-height="true">
46
+    <div class="tanker-inspect-container">
47
+      <!-- 油轮检查表格 -->
48
+      <div class="table-container">
49
+        <TankerInspectTable table-title="油轮检查列表">
50
+          <template #toolbar-tools>
51
+            <ElSpace>
52
+              <ElButton 
53
+                @click="handleExport"
54
+                v-access:code="['system:tankerInspect:export']"
55
+              >
56
+                导出
57
+              </ElButton>
58
+            </ElSpace>
59
+          </template>
60
+          <template #action="{ row }">
61
+            <ElSpace>
62
+              <ElButton type="primary" size="small">查看</ElButton>
63
+            </ElSpace>
64
+          </template>
65
+        </TankerInspectTable>
66
+      </div>
67
+    </div>
68
+  </Page>
69
+</template>
70
+
71
+<style scoped lang="scss">
72
+.tanker-inspect-container {
73
+  min-height: calc(100vh - 120px);
74
+  padding: 16px;
75
+  background-color: #fff;
76
+}
77
+</style>

+ 240 - 0
apps/web-ele/src/views/Archive/headquartersDistrict/tankerInspect/tankerInspect-data.tsx

@@ -0,0 +1,240 @@
1
+import type { VxeGridProps } from '#/adapter/vxe-table';
2
+import type { FormSchemaGetter } from '#/adapter/form';
3
+
4
+// 油轮检查类型定义
5
+export interface TankerInspectData {
6
+  id: number;
7
+  taskName: string; // 任务名称
8
+  area: string; // 片区
9
+  station: string; // 油站
10
+  participateTime: string; // 参与时间
11
+  executor: string; // 执行人
12
+  comment: string; // 评论
13
+  deadline: string; // 截止时间
14
+  processingTime: string; // 处理时间
15
+  completionStatus: string; // 完成状态
16
+  creation: string; // 创建
17
+}
18
+
19
+// 油轮检查表格配置
20
+export const tableColumns: VxeGridProps['columns'] = [
21
+  { title: '任务名称', field: 'taskName', minWidth: 180, align: 'center' },
22
+  { title: '片区', field: 'area', minWidth: 120, align: 'center' },
23
+  { title: '油站', field: 'station', minWidth: 150, align: 'center' },
24
+  { title: '参与时间', field: 'participateTime', minWidth: 200, align: 'center' },
25
+  { title: '执行人', field: 'executor', minWidth: 120, align: 'center' },
26
+  { title: '评论', field: 'comment', minWidth: 120, align: 'center' },
27
+  { title: '截止时间', field: 'deadline', minWidth: 200, align: 'center' },
28
+  { title: '处理时间', field: 'processingTime', minWidth: 200, align: 'center' },
29
+  { title: '完成状态', field: 'completionStatus', minWidth: 120, align: 'center' },
30
+  { title: '创建', field: 'creation', minWidth: 200, align: 'center' },
31
+  { title: '操作', minWidth: 100, align: 'center', slots: { default: 'action' } },
32
+];
33
+
34
+// 油轮检查模拟数据
35
+export const TANKER_INSPECT_MOCK_DATA: TankerInspectData[] = [
36
+  {
37
+    id: 1,
38
+    taskName: '油轮安全检查',
39
+    area: '华北片区',
40
+    station: '北京东加油站',
41
+    participateTime: '2025-01-15 09:00:00',
42
+    executor: '张三',
43
+    comment: '正常',
44
+    deadline: '2025-01-20 18:00:00',
45
+    processingTime: '2025-01-15 10:30:00',
46
+    completionStatus: '已完成',
47
+    creation: '2025-01-10 14:20:00'
48
+  },
49
+  {
50
+    id: 2,
51
+    taskName: '油轮设备检修',
52
+    area: '华北片区',
53
+    station: '北京西加油站',
54
+    participateTime: '2025-01-16 10:00:00',
55
+    executor: '李四',
56
+    comment: '需要更换零件',
57
+    deadline: '2025-01-22 18:00:00',
58
+    processingTime: '2025-01-16 11:45:00',
59
+    completionStatus: '处理中',
60
+    creation: '2025-01-11 09:15:00'
61
+  },
62
+  {
63
+    id: 3,
64
+    taskName: '油轮防漏检查',
65
+    area: '华东片区',
66
+    station: '上海南加油站',
67
+    participateTime: '2025-01-17 13:30:00',
68
+    executor: '王五',
69
+    comment: '发现轻微泄漏',
70
+    deadline: '2025-01-23 18:00:00',
71
+    processingTime: '2025-01-17 14:50:00',
72
+    completionStatus: '待处理',
73
+    creation: '2025-01-12 16:30:00'
74
+  },
75
+  {
76
+    id: 4,
77
+    taskName: '油轮安全检查',
78
+    area: '华东片区',
79
+    station: '上海北加油站',
80
+    participateTime: '2025-01-18 08:45:00',
81
+    executor: '赵六',
82
+    comment: '正常',
83
+    deadline: '2025-01-24 18:00:00',
84
+    processingTime: '2025-01-18 10:15:00',
85
+    completionStatus: '已完成',
86
+    creation: '2025-01-13 11:25:00'
87
+  },
88
+  {
89
+    id: 5,
90
+    taskName: '油轮设备检修',
91
+    area: '华南片区',
92
+    station: '广州东加油站',
93
+    participateTime: '2025-01-19 09:30:00',
94
+    executor: '钱七',
95
+    comment: '设备运行正常',
96
+    deadline: '2025-01-25 18:00:00',
97
+    processingTime: '2025-01-19 11:00:00',
98
+    completionStatus: '已完成',
99
+    creation: '2025-01-14 10:40:00'
100
+  },
101
+  {
102
+    id: 6,
103
+    taskName: '油轮防漏检查',
104
+    area: '华南片区',
105
+    station: '广州西加油站',
106
+    participateTime: '2025-01-20 14:15:00',
107
+    executor: '孙八',
108
+    comment: '正常',
109
+    deadline: '2025-01-26 18:00:00',
110
+    processingTime: '2025-01-20 15:30:00',
111
+    completionStatus: '已完成',
112
+    creation: '2025-01-15 13:50:00'
113
+  },
114
+  {
115
+    id: 7,
116
+    taskName: '油轮安全检查',
117
+    area: '华北片区',
118
+    station: '天津加油站',
119
+    participateTime: '2025-01-21 10:00:00',
120
+    executor: '周九',
121
+    comment: '需要加强管理',
122
+    deadline: '2025-01-27 18:00:00',
123
+    processingTime: '2025-01-21 11:20:00',
124
+    completionStatus: '处理中',
125
+    creation: '2025-01-16 09:10:00'
126
+  },
127
+  {
128
+    id: 8,
129
+    taskName: '油轮设备检修',
130
+    area: '华东片区',
131
+    station: '南京加油站',
132
+    participateTime: '2025-01-22 13:30:00',
133
+    executor: '吴十',
134
+    comment: '设备老化',
135
+    deadline: '2025-01-28 18:00:00',
136
+    processingTime: '2025-01-22 14:45:00',
137
+    completionStatus: '待处理',
138
+    creation: '2025-01-17 14:20:00'
139
+  },
140
+];
141
+
142
+export const queryFormSchema: FormSchemaGetter = () => QUERY_FORM_SCHEMA;
143
+
144
+// 查询表单模式配置
145
+const QUERY_FORM_SCHEMA = [
146
+  {
147
+    component: 'Select',
148
+    fieldName: 'area',
149
+    label: '片区',
150
+    componentProps: {
151
+      placeholder: '请选择片区',
152
+      options: [
153
+        { label: '华北片区', value: '华北片区' },
154
+        { label: '华东片区', value: '华东片区' },
155
+        { label: '华南片区', value: '华南片区' },
156
+      ],
157
+    },
158
+  },
159
+  {
160
+    component: 'Select',
161
+    fieldName: 'station',
162
+    label: '油站',
163
+    componentProps: {
164
+      placeholder: '请选择油站',
165
+      options: [
166
+        { label: '北京东加油站', value: '北京东加油站' },
167
+        { label: '北京西加油站', value: '北京西加油站' },
168
+        { label: '上海南加油站', value: '上海南加油站' },
169
+        { label: '上海北加油站', value: '上海北加油站' },
170
+        { label: '广州东加油站', value: '广州东加油站' },
171
+        { label: '广州西加油站', value: '广州西加油站' },
172
+        { label: '天津加油站', value: '天津加油站' },
173
+        { label: '南京加油站', value: '南京加油站' },
174
+      ],
175
+    },
176
+  },
177
+  {
178
+    component: 'Input',
179
+    fieldName: 'taskName',
180
+    label: '任务名称',
181
+    componentProps: {
182
+      placeholder: '请输入任务名称',
183
+    },
184
+  },
185
+  {
186
+    component: 'DatePicker',
187
+    fieldName: 'participateTimeRange',
188
+    label: '参与时间',
189
+    componentProps: {
190
+      placeholder: '请选择参与时间范围',
191
+      type: 'daterange',
192
+      rangeSeparator: '至',
193
+      startPlaceholder: '开始时间',
194
+      endPlaceholder: '结束时间',
195
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
196
+    },
197
+  },
198
+  {
199
+    component: 'DatePicker',
200
+    fieldName: 'processingTimeRange',
201
+    label: '处理时间',
202
+    componentProps: {
203
+      placeholder: '请选择处理时间范围',
204
+      type: 'daterange',
205
+      rangeSeparator: '至',
206
+      startPlaceholder: '开始时间',
207
+      endPlaceholder: '结束时间',
208
+      valueFormat: 'YYYY-MM-DD HH:mm:ss'
209
+    },
210
+  },
211
+  {
212
+    component: 'Select',
213
+    fieldName: 'comment',
214
+    label: '评论',
215
+    componentProps: {
216
+      placeholder: '请选择评论',
217
+      options: [
218
+        { label: '正常', value: '正常' },
219
+        { label: '需要更换零件', value: '需要更换零件' },
220
+        { label: '发现轻微泄漏', value: '发现轻微泄漏' },
221
+        { label: '需要加强管理', value: '需要加强管理' },
222
+        { label: '设备老化', value: '设备老化' },
223
+        { label: '设备运行正常', value: '设备运行正常' },
224
+      ],
225
+    },
226
+  },
227
+  {
228
+    component: 'Select',
229
+    fieldName: 'completionStatus',
230
+    label: '状态',
231
+    componentProps: {
232
+      placeholder: '请选择状态',
233
+      options: [
234
+        { label: '已完成', value: '已完成' },
235
+        { label: '处理中', value: '处理中' },
236
+        { label: '待处理', value: '待处理' },
237
+      ],
238
+    },
239
+  },
240
+];

+ 2 - 2
apps/web-ele/src/views/system/infoEntry/gainSetting/index.vue

@@ -12,7 +12,7 @@ import { ElMessageBox } from 'element-plus';
12 12
 import { useVbenVxeGrid } from '#/adapter/vxe-table';
13 13
 
14 14
 import { tableColumns } from './gainSetting-data';
15
-import LabelManageDrawerComp from './gainSetting-drawer.vue';
15
+import GainSettingDrawerComp from './gainSetting-drawer.vue';
16 16
 
17 17
 const formOptions: VbenFormProps = {
18 18
   commonConfig: {
@@ -104,7 +104,7 @@ const [BasicTable, basicTableApi] = useVbenVxeGrid({
104 104
 });
105 105
 
106 106
 const [GainSettingDrawer, drawerApi] = useVbenDrawer({
107
-  connectedComponent: LabelManageDrawerComp,
107
+  connectedComponent: GainSettingDrawerComp,
108 108
 });
109 109
 
110 110
 // 新增标签