|
|
@@ -29,18 +29,31 @@
|
|
29
|
29
|
|
|
30
|
30
|
<!-- 第二行:查询条件 -->
|
|
31
|
31
|
<el-form :model="queryParams" ref="queryFormRef" :inline="true" class="search-form">
|
|
|
32
|
+ <!-- 大队下拉框 -->
|
|
|
33
|
+ <el-form-item label="大队" prop="brigadeId" v-if="queryType === '3' || queryType === '2' || queryType === '1'">
|
|
|
34
|
+ <el-select v-model="queryParams.brigadeId" placeholder="请选择大队" clearable style="width: 200px"
|
|
|
35
|
+ @change="handleBrigadeChange">
|
|
|
36
|
+ <el-option v-for="item in brigadeOptions" :key="item.value" :label="item.text" :value="item.value" />
|
|
|
37
|
+ </el-select>
|
|
|
38
|
+ </el-form-item>
|
|
|
39
|
+
|
|
|
40
|
+ <!-- 主管下拉框 -->
|
|
32
|
41
|
<el-form-item label="主管" prop="deptId" v-if="queryType === '2' || queryType === '1'">
|
|
33
|
42
|
<el-select v-model="queryParams.deptId" placeholder="请选择主管" clearable style="width: 200px"
|
|
34
|
43
|
@change="handleQuery">
|
|
35
|
44
|
<el-option v-for="item in departmentOptions" :key="item.value" :label="item.text" :value="item.value" />
|
|
36
|
45
|
</el-select>
|
|
37
|
46
|
</el-form-item>
|
|
38
|
|
- <el-form-item label="班组" prop="teamId" v-if="queryType === '2' || queryType === '1'">
|
|
|
47
|
+
|
|
|
48
|
+ <!-- 班组下拉框 -->
|
|
|
49
|
+ <el-form-item label="班组" prop="teamId" v-if="queryType === '1'">
|
|
39
|
50
|
<el-select v-model="queryParams.teamId" placeholder="请选择班组" clearable style="width: 200px"
|
|
40
|
51
|
@change="handleQuery">
|
|
41
|
52
|
<el-option v-for="item in teamOptions" :key="item.value" :label="item.text" :value="item.value" />
|
|
42
|
53
|
</el-select>
|
|
43
|
54
|
</el-form-item>
|
|
|
55
|
+
|
|
|
56
|
+ <!-- 姓名输入框 -->
|
|
44
|
57
|
<el-form-item label="姓名" prop="userName" v-if="queryType === '1'">
|
|
45
|
58
|
<el-input v-model="queryParams.userName" placeholder="请输入姓名" clearable style="width: 200px"
|
|
46
|
59
|
@input="handleQuery" />
|
|
|
@@ -59,7 +72,9 @@
|
|
59
|
72
|
<!-- 表格 -->
|
|
60
|
73
|
<el-table v-loading="loading" :data="performanceList" border fit highlight-current-row
|
|
61
|
74
|
style="width: 100%; margin-top: 20px;">
|
|
62
|
|
-
|
|
|
75
|
+ <!-- 动态列 -->
|
|
|
76
|
+ <el-table-column v-if="queryType === '4'" label="主管"
|
|
|
77
|
+ prop="name" align="center" min-width="120" />
|
|
63
|
78
|
<!-- 动态列 -->
|
|
64
|
79
|
<el-table-column v-if="queryType === '3' || queryType === '2' || queryType === '1'" label="主管"
|
|
65
|
80
|
:prop="queryType === '3' ? 'name' : 'deptName'" align="center" min-width="120" />
|
|
|
@@ -99,6 +114,7 @@ import { getDownload } from '@/utils/request.js'
|
|
99
|
114
|
|
|
100
|
115
|
// 查询类型选项
|
|
101
|
116
|
const queryTypeOptions = [
|
|
|
117
|
+ { label: '大队', value: '4' },
|
|
102
|
118
|
{ label: '主管', value: '3' },
|
|
103
|
119
|
{ label: '班组', value: '2' },
|
|
104
|
120
|
{ label: '个人', value: '1' }
|
|
|
@@ -112,7 +128,7 @@ const timeRangeOptions = [
|
|
112
|
128
|
]
|
|
113
|
129
|
|
|
114
|
130
|
// 响应式数据
|
|
115
|
|
-const queryType = ref('3') // 默认查询科室
|
|
|
131
|
+const queryType = ref('4') // 默认查询科室
|
|
116
|
132
|
const timeRange = ref('threeMonths') // 默认近三个月
|
|
117
|
133
|
const customDateRange = ref([])
|
|
118
|
134
|
const loading = ref(false)
|
|
|
@@ -123,6 +139,7 @@ const queryFormRef = ref()
|
|
123
|
139
|
const queryParams = reactive({
|
|
124
|
140
|
pageNum: 1,
|
|
125
|
141
|
pageSize: 10,
|
|
|
142
|
+ brigadeId: '',
|
|
126
|
143
|
deptId: '',
|
|
127
|
144
|
teamId: '',
|
|
128
|
145
|
userName: '',
|
|
|
@@ -135,9 +152,36 @@ const performanceList = ref([])
|
|
135
|
152
|
|
|
136
|
153
|
// 部门数据
|
|
137
|
154
|
const deptList = ref([])
|
|
|
155
|
+const brigadeOptions = ref([])
|
|
138
|
156
|
const departmentOptions = ref([])
|
|
139
|
157
|
const teamOptions = ref([])
|
|
140
|
158
|
|
|
|
159
|
+// 大队变化处理函数
|
|
|
160
|
+const handleBrigadeChange = (brigadeId) => {
|
|
|
161
|
+ // 清空主管和班组选项
|
|
|
162
|
+ queryParams.deptId = null
|
|
|
163
|
+ queryParams.teamId = null
|
|
|
164
|
+ teamOptions.value = []
|
|
|
165
|
+
|
|
|
166
|
+ if (brigadeId) {
|
|
|
167
|
+ // 根据大队ID获取主管列表
|
|
|
168
|
+ departmentOptions.value = deptList.value.filter(item =>
|
|
|
169
|
+ item.deptType === 'MANAGER' && item.parentId === brigadeId
|
|
|
170
|
+ ).map(item => ({
|
|
|
171
|
+ value: item.deptId,
|
|
|
172
|
+ text: item.deptName
|
|
|
173
|
+ }))
|
|
|
174
|
+ } else {
|
|
|
175
|
+ // 如果没有选择大队,显示所有主管
|
|
|
176
|
+ departmentOptions.value = deptList.value.filter(item => item.deptType === 'MANAGER').map(item => ({
|
|
|
177
|
+ value: item.deptId,
|
|
|
178
|
+ text: item.deptName
|
|
|
179
|
+ }))
|
|
|
180
|
+ }
|
|
|
181
|
+
|
|
|
182
|
+ handleQuery()
|
|
|
183
|
+}
|
|
|
184
|
+
|
|
141
|
185
|
// 监听科室变化,获取对应班组
|
|
142
|
186
|
watch(() => queryParams.deptId, async (newDeptId) => {
|
|
143
|
187
|
if (newDeptId) {
|
|
|
@@ -159,7 +203,12 @@ const fetchDeptData = async () => {
|
|
159
|
203
|
if (response.code === 200) {
|
|
160
|
204
|
|
|
161
|
205
|
deptList.value = response.data || []
|
|
162
|
|
- // 生成科室选项
|
|
|
206
|
+ // 生成大队选项
|
|
|
207
|
+ brigadeOptions.value = deptList.value.filter(item => item.deptType === 'BRIGADE').map(item => ({
|
|
|
208
|
+ value: item.deptId,
|
|
|
209
|
+ text: item.deptName
|
|
|
210
|
+ }))
|
|
|
211
|
+ // 生成主管选项
|
|
163
|
212
|
departmentOptions.value = deptList.value.filter(item => item.deptType === 'MANAGER').map(item => ({
|
|
164
|
213
|
value: item.deptId,
|
|
165
|
214
|
text: item.deptName
|
|
|
@@ -300,15 +349,22 @@ const getList = async () => {
|
|
300
|
349
|
|
|
301
|
350
|
// 根据查询类型清理不必要的参数
|
|
302
|
351
|
if (queryType.value === '3') {
|
|
303
|
|
- // 科室查询:不需要班组参数
|
|
304
|
|
- params.teamId = ''
|
|
|
352
|
+ // 主管查询:只传递大队参数
|
|
305
|
353
|
params.deptId = ''
|
|
|
354
|
+ params.teamId = ''
|
|
|
355
|
+ params.userName = ''
|
|
306
|
356
|
} else if (queryType.value === '2') {
|
|
307
|
|
- // 班组查询:需要科室参数
|
|
308
|
|
- // params.deptId = ''
|
|
309
|
|
- // 班组查询:不需要个人参数
|
|
|
357
|
+ // 班组查询:传递大队和主管参数
|
|
|
358
|
+ params.teamId = ''
|
|
|
359
|
+ params.userName = ''
|
|
310
|
360
|
} else if (queryType.value === '1') {
|
|
311
|
|
- // 个人查询:需要所有参数
|
|
|
361
|
+ // 个人查询:传递所有参数
|
|
|
362
|
+ } else if (queryType.value === '4') {
|
|
|
363
|
+ // 大队查询:不传递任何部门参数
|
|
|
364
|
+ params.brigadeId = ''
|
|
|
365
|
+ params.deptId = ''
|
|
|
366
|
+ params.teamId = ''
|
|
|
367
|
+ params.userName = ''
|
|
312
|
368
|
}
|
|
313
|
369
|
|
|
314
|
370
|
// 调用API
|
|
|
@@ -350,12 +406,22 @@ const handleExport = () => {
|
|
350
|
406
|
|
|
351
|
407
|
// 根据查询类型清理不必要的参数
|
|
352
|
408
|
if (queryType.value === '3') {
|
|
353
|
|
- // 科室查询:不需要班组参数
|
|
|
409
|
+ // 主管查询:只传递大队参数
|
|
|
410
|
+ params.deptId = ''
|
|
354
|
411
|
params.teamId = ''
|
|
|
412
|
+ params.userName = ''
|
|
355
|
413
|
} else if (queryType.value === '2') {
|
|
356
|
|
- // 班组查询:不需要个人参数
|
|
|
414
|
+ // 班组查询:传递大队和主管参数
|
|
|
415
|
+ params.teamId = ''
|
|
|
416
|
+ params.userName = ''
|
|
357
|
417
|
} else if (queryType.value === '1') {
|
|
358
|
|
- // 个人查询:需要所有参数
|
|
|
418
|
+ // 个人查询:传递所有参数
|
|
|
419
|
+ } else if (queryType.value === '4') {
|
|
|
420
|
+ // 大队查询:不传递任何部门参数
|
|
|
421
|
+ params.brigadeId = ''
|
|
|
422
|
+ params.deptId = ''
|
|
|
423
|
+ params.teamId = ''
|
|
|
424
|
+ params.userName = ''
|
|
359
|
425
|
}
|
|
360
|
426
|
|
|
361
|
427
|
// 使用proxy.getDownload下载文件(GET请求)
|