-
-
{ searchKeyword = ''; handleSearch(); }">重置
-
新增班组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+ 新增班组
+
@@ -178,13 +197,35 @@
diff --git a/src/views/zhinengxunjian/qiangxiujilu.vue b/src/views/zhinengxunjian/qiangxiujilu.vue
index f0d84df..af1f822 100644
--- a/src/views/zhinengxunjian/qiangxiujilu.vue
+++ b/src/views/zhinengxunjian/qiangxiujilu.vue
@@ -39,10 +39,9 @@
@@ -426,13 +425,52 @@ const getTaskList = async () => {
try {
isLoading.value = true;
- // 构建查询参数
+ // 构建查询参数,严格匹配JSON数据结构
const params = {
projectId: 1,
pageNum: currentPage.value,
pageSize: pageSize.value
};
+ // 添加任务状态筛选条件 - 严格匹配JSON数据中的status字段
+ if (taskStatus.value && taskStatus.value !== 'all') {
+ // 状态映射:pending -> 1(待处理), processing -> 2(处理中), completed -> 3(已完成)
+ const statusMap = {
+ 'pending': '1',
+ 'processing': '2',
+ 'completed': '3'
+ };
+ params.status = statusMap[taskStatus.value] || taskStatus.value;
+ }
+
+ // 添加紧急程度筛选条件 - 严格匹配JSON数据中的level字段
+ if (priority.value && priority.value !== 'all') {
+ // 优先级映射:normal -> 1(常规), urgent -> 2(紧急), fatal -> 3(致命)
+ const priorityMap = {
+ 'normal': '1',
+ 'urgent': '2',
+ 'fatal': '3'
+ };
+ params.level = priorityMap[priority.value] || priority.value;
+ }
+
+ // 添加维修人员筛选条件 - 严格匹配JSON数据中的sendPerson字段
+ if (executor.value && executor.value !== 'all') {
+ // 直接使用用户ID作为sendPerson参数
+ params.sendPerson = executor.value;
+ }
+
+ // 添加时间范围筛选条件
+ if (dateRange.value && dateRange.value.length === 2) {
+ params.startTime = dateRange.value[0];
+ params.endTime = dateRange.value[1];
+ }
+
+ // 添加关键词搜索条件
+ if (keyword.value && keyword.value.trim()) {
+ params.keyword = keyword.value.trim();
+ }
+
// 调用接口获取数据
const res = await qiangxiulist(params);
@@ -470,9 +508,7 @@ const getTaskList = async () => {
const kw = keyword.value.trim().toLowerCase();
const filtered = kw
? mapped.filter((r) =>
- [r.reportNo, r.content, r.reporter, r.handler, r.status]
- .filter(Boolean)
- .some((v) => String(v).toLowerCase().includes(kw))
+ [r.reportNo, r.content, r.reporter, r.handler, r.status].filter(Boolean).some((v) => String(v).toLowerCase().includes(kw))
)
: mapped;
@@ -650,7 +686,7 @@ const getStatisticsData = async () => {
// 初始化数据
const initData = async () => {
- await Promise.all([getTaskList(), getStatisticsData()]);
+ await Promise.all([getTaskList(), getStatisticsData(), getUsersList()]);
};
// 组件挂载时初始化数据
@@ -690,6 +726,27 @@ const selectedExecutor = ref('');
const executors = ref([]);
const assignLoading = ref(false);
+// 获取用户列表函数
+const getUsersList = async () => {
+ try {
+ loadingUsers.value = true;
+ const res = await xunjianUserlist();
+ if (res && res.code === 200) {
+ // 过滤无效数据+统一userId为字符串
+ executors.value = (res.rows || [])
+ .filter((item) => item.userId && item.userName)
+ .map((item) => ({
+ userId: item.userId.toString(), // 使用userId字段
+ userName: item.userName || '未知用户'
+ }));
+ }
+ } catch (error) {
+ console.error('获取用户列表失败:', error);
+ } finally {
+ loadingUsers.value = false;
+ }
+};
+
// 跟进弹窗相关
const followDialogVisible = ref(false);
const reportFinal = ref('');
@@ -773,16 +830,8 @@ const handleAction = (record) => {
const handleAssign = async (record) => {
currentRecord.value = { ...record };
try {
- const res = await xunjianUserlist();
- if (res && res.code === 200) {
- // 过滤无效数据+统一userId为字符串
- executors.value = (res.rows || [])
- .filter((item) => item.userId && item.userName)
- .map((item) => ({
- userId: item.userId.toString(), // 使用userId字段
- userName: item.userName || '未知用户'
- }));
- }
+ // 重新获取用户列表以确保最新数据
+ await getUsersList();
} catch (error) {
console.error('获取人员列表失败:', error);
ElMessage.error('获取人员列表失败,请稍后重试');
diff --git a/src/views/zhinengxunjian/shiyanguanli.vue b/src/views/zhinengxunjian/shiyanguanli.vue
index 7d692c8..14043ce 100644
--- a/src/views/zhinengxunjian/shiyanguanli.vue
+++ b/src/views/zhinengxunjian/shiyanguanli.vue
@@ -24,19 +24,26 @@
-
-
+
+
-
-
-
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
搜索
- 重置
+ 重置
新增实验记录
@@ -586,6 +593,7 @@ const timeRange = ref('month'); // 统计时间范围:月/周/日
const keyword = ref('');
const filterStatus = ref('all');
const filterType = ref('all');
+const filterManager = ref('all');
const dateRange = ref([]);
// 分页参数
@@ -603,8 +611,14 @@ const fetchExperimentData = async () => {
const queryParams = {
projectId: 1,
pageSize: pageSize.value,
- pageNum: currentPage.value
- // 其他参数...
+ pageNum: currentPage.value,
+ // 根据筛选条件构建查询参数
+ keyword: keyword.value || undefined,
+ testStatus: filterStatus.value === 'all' ? undefined : filterStatus.value,
+ testObject: filterType.value === 'all' ? undefined : filterType.value,
+ personCharge: filterManager.value === 'all' ? undefined : filterManager.value,
+ beginTime: dateRange.value.length > 0 ? dateRange.value[0] : undefined,
+ endTime: dateRange.value.length > 0 ? dateRange.value[1] : undefined
};
const response = await shiyanlist(queryParams);
@@ -642,6 +656,7 @@ const resetFilters = () => {
keyword.value = '';
filterStatus.value = 'all';
filterType.value = 'all';
+ filterManager.value = 'all';
dateRange.value = [];
currentPage.value = 1;
fetchExperimentData();
diff --git a/src/views/zhinengxunjian/shiyanjilu.vue b/src/views/zhinengxunjian/shiyanjilu.vue
index ad2012a..90f091b 100644
--- a/src/views/zhinengxunjian/shiyanjilu.vue
+++ b/src/views/zhinengxunjian/shiyanjilu.vue
@@ -23,19 +23,21 @@
-
-
+
+
-
-
-
+
+
+
+
-
+
-
-
-
+
+
+
+