|
@@ -356,7 +356,7 @@ import { IotProjectInfoApi, IotProjectInfoVO } from '@/api/pms/iotprojectinfo'
|
|
import {defaultProps,handleTree} from "@/utils/tree";
|
|
import {defaultProps,handleTree} from "@/utils/tree";
|
|
import * as DeptApi from "@/api/system/dept";
|
|
import * as DeptApi from "@/api/system/dept";
|
|
import CustomerList from '@/views/pms/device/CustomerList.vue'
|
|
import CustomerList from '@/views/pms/device/CustomerList.vue'
|
|
-import {ref, reactive, computed, onMounted} from "vue";
|
|
|
|
|
|
+import {ref, reactive, computed, onMounted, watch} from "vue";
|
|
import {useUserStore} from "@/store/modules/user";
|
|
import {useUserStore} from "@/store/modules/user";
|
|
import {IotProjectTaskApi, IotProjectTaskVO} from "@/api/pms/iotprojecttask";
|
|
import {IotProjectTaskApi, IotProjectTaskVO} from "@/api/pms/iotprojecttask";
|
|
import {ElMessageBox, ElMessage} from "element-plus";
|
|
import {ElMessageBox, ElMessage} from "element-plus";
|
|
@@ -366,9 +366,18 @@ import { IotDeviceApi, IotDeviceVO } from '@/api/pms/device'
|
|
import * as UserApi from "@/api/system/user";
|
|
import * as UserApi from "@/api/system/user";
|
|
import {UserVO} from "@/api/system/user";
|
|
import {UserVO} from "@/api/system/user";
|
|
|
|
|
|
-const { params, name } = useRoute() // 查询参数
|
|
|
|
|
|
+const { query, params, name } = useRoute() // 查询参数
|
|
const id = params.id
|
|
const id = params.id
|
|
-const projectId = params.projectId
|
|
|
|
|
|
+
|
|
|
|
+// 修改projectId获取逻辑:优先使用params.projectId,其次使用query.projectId
|
|
|
|
+const projectId = ref<string>('')
|
|
|
|
+// 获取projectId的逻辑
|
|
|
|
+if (params.projectId) {
|
|
|
|
+ projectId.value = Array.isArray(params.projectId) ? params.projectId[0] : params.projectId
|
|
|
|
+} else if (query.projectId) {
|
|
|
|
+ projectId.value = Array.isArray(query.projectId) ? query.projectId[0] : query.projectId as string
|
|
|
|
+}
|
|
|
|
+
|
|
const { delView } = useTagsViewStore() // 视图操作
|
|
const { delView } = useTagsViewStore() // 视图操作
|
|
const { currentRoute, push } = useRouter()
|
|
const { currentRoute, push } = useRouter()
|
|
const { t } = useI18n() // 国际化
|
|
const { t } = useI18n() // 国际化
|
|
@@ -735,18 +744,23 @@ const open = async () => {
|
|
formType.value = 'create';
|
|
formType.value = 'create';
|
|
}
|
|
}
|
|
// 如果有projectId参数,自动选中对应的合同
|
|
// 如果有projectId参数,自动选中对应的合同
|
|
- if (projectId) {
|
|
|
|
- await autoSelectContract(projectId);
|
|
|
|
|
|
+ if (projectId.value) {
|
|
|
|
+ autoSelectContract(projectId.value);
|
|
|
|
+
|
|
|
|
+ // 自动新增一行空记录
|
|
|
|
+ if (tableData.value.length === 0) {
|
|
|
|
+ addNewRow();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
|
|
|
|
/** 自动选择合同 */
|
|
/** 自动选择合同 */
|
|
-const autoSelectContract = async (projectId: number) => {
|
|
|
|
|
|
+const autoSelectContract = async (projectId: string) => {
|
|
// 等待项目列表加载完成
|
|
// 等待项目列表加载完成
|
|
- await waitForProjectList();
|
|
|
|
-
|
|
|
|
|
|
+ // await waitForProjectList();
|
|
|
|
+ console.log('项目id:' + projectId);
|
|
// 查找匹配的合同
|
|
// 查找匹配的合同
|
|
const project = projectList.value.find(item => item.id === Number(projectId));
|
|
const project = projectList.value.find(item => item.id === Number(projectId));
|
|
if (project) {
|
|
if (project) {
|
|
@@ -760,7 +774,7 @@ const autoSelectContract = async (projectId: number) => {
|
|
}
|
|
}
|
|
|
|
|
|
/** 等待项目列表加载完成 */
|
|
/** 等待项目列表加载完成 */
|
|
-const waitForProjectList = () => {
|
|
|
|
|
|
+/* const waitForProjectList = () => {
|
|
return new Promise(resolve => {
|
|
return new Promise(resolve => {
|
|
const checkInterval = setInterval(() => {
|
|
const checkInterval = setInterval(() => {
|
|
if (projectList.value.length > 0) {
|
|
if (projectList.value.length > 0) {
|
|
@@ -769,7 +783,7 @@ const waitForProjectList = () => {
|
|
}
|
|
}
|
|
}, 100);
|
|
}, 100);
|
|
});
|
|
});
|
|
-}
|
|
|
|
|
|
+} */
|
|
|
|
|
|
/** 提交表单 */
|
|
/** 提交表单 */
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
@@ -824,6 +838,22 @@ const resetForm = () => {
|
|
}
|
|
}
|
|
formRef.value?.resetFields()
|
|
formRef.value?.resetFields()
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// 监听项目列表变化,确保列表加载完成后才执行自动选择
|
|
|
|
+watch(projectList, (newVal) => {
|
|
|
|
+ if (newVal && newVal.length > 0) {
|
|
|
|
+ // 如果是编辑模式,使用任务数据中的合同ID
|
|
|
|
+ if (id && tableData.value.length > 0 && tableData.value[0].projectId) {
|
|
|
|
+ autoSelectContract(tableData.value[0].projectId.toString());
|
|
|
|
+ }
|
|
|
|
+ // 如果是新增模式且有传递的projectId,使用传递的projectId
|
|
|
|
+ else if (!id && projectId.value) {
|
|
|
|
+ console.log('watch-新增模式且有传递的projectId' + projectId.value + ' projectId not found');
|
|
|
|
+ autoSelectContract(projectId.value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+});
|
|
|
|
+
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
// deptList.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
// deptList.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
// 查询当前登录人所属公司下的所有部门
|
|
// 查询当前登录人所属公司下的所有部门
|
|
@@ -832,6 +862,11 @@ onMounted(async () => {
|
|
projectList.value = await IotProjectInfoApi.getIotProjectInfoUser(deptId);
|
|
projectList.value = await IotProjectInfoApi.getIotProjectInfoUser(deptId);
|
|
// 查询当前任务已经选中的设备信息
|
|
// 查询当前任务已经选中的设备信息
|
|
open();
|
|
open();
|
|
|
|
+
|
|
|
|
+ // 如果有项目 ID 但合同未选中,尝试再次选择
|
|
|
|
+ /* if (projectId && !formData.value.contractId) {
|
|
|
|
+ setTimeout(() => autoSelectContract(projectId), 500);
|
|
|
|
+ } */
|
|
})
|
|
})
|
|
|
|
|
|
// 计算正在编辑的行数
|
|
// 计算正在编辑的行数
|