diff --git a/src/pages/WorkOrderEdit/compoents/BasicsInfo.vue b/src/pages/WorkOrderEdit/compoents/BasicsInfo.vue index 9433b79..bf78b37 100644 --- a/src/pages/WorkOrderEdit/compoents/BasicsInfo.vue +++ b/src/pages/WorkOrderEdit/compoents/BasicsInfo.vue @@ -22,7 +22,8 @@ + + 作业负责人 + + + + + + + 作业班成员 + 添加 + + + + + {{ member.name }} + + + + + @@ -71,12 +95,31 @@ const endDateMinTimestamp = computed(() => { return minTimestamp.value; }); +const showMemberPicker = ref(false); // 是否显示成员选择器 +//成员列表信息 +const MemberArr = ref([ + { + id: "123456", // 成员ID + name: "张三", // 成员姓名 + phone: "13800000000", // 成员手机号 + }, + { + id: "654321", // 成员ID + name: "李四", // 成员姓名 + phone: "13900000000", // 成员手机号 + } +]); // 作业班成员列表 + + + // 表单信息 const formData = ref({ ProjectName: "", // 项目名称 Location: "", // 作业地点(经纬度) SpecificAddress: "", // 具体楼层或区域 period: [], // 作业周期 [开始日期, 结束日期] + ResponsiblePerson: "", // 作业负责人 + MemberList: [], // 作业班成员列表 }); // 暴露方法给父组件调用 @@ -84,18 +127,20 @@ defineExpose({ getFormData: () => formData.value, }); -// 初始化地图 +// 生命周期钩子函数 onMounted(() => { initTiandituMap(); }); + + // 处理开始日期确认事件 const HandleStartDateConfirm = (e) => { console.log('选中的开始日期:', e); - + // 如果没有选择日期,使用默认值 const selectedDate = (e.value && dayjs(e.value).isValid()) ? e.value : minTimestamp.value; - + startDateText.value = dayjs(selectedDate).format('YYYY-MM-DD'); startDate.value = selectedDate; endDateText.value = ''; @@ -107,10 +152,10 @@ const HandleStartDateConfirm = (e) => { // 处理结束日期确认事件 const HandleEndDateConfirm = (e) => { console.log('选中的结束日期:', e); - + // 如果没有选择日期,使用默认值 const selectedDate = (e.value && dayjs(e.value).isValid()) ? e.value : minTimestamp.value; - + // 检查是否选择了开始日期 if (startDate.value && dayjs(selectedDate).isBefore(dayjs(startDate.value))) { uni.showToast({ @@ -120,7 +165,7 @@ const HandleEndDateConfirm = (e) => { }); return; } - + endDateText.value = dayjs(selectedDate).format('YYYY-MM-DD'); endDate.value = selectedDate; showEndDatePicker.value = false; @@ -141,6 +186,66 @@ const UpdatePeriod = () => { console.log('作业周期:', formData.value.period); }; +// 处理成员选择确认事件 +const HandleMemberConfirm = (e) => { + console.log('选中的成员完整信息:', e); + console.log('e.value:', e.value); + console.log('e.value[0]:', e.value ? e.value[0] : 'undefined'); + console.log('MemberArr:', MemberArr.value); + + if (e.value && e.value.length > 0) { + const selectedMember = e.value[0]; + console.log('选中的成员:', selectedMember); + console.log('selectedMember 的类型:', typeof selectedMember); + + let memberInfo; + + // 判断返回的是对象还是字符串 + if (typeof selectedMember === 'object' && selectedMember !== null) { + // 如果是对象,直接使用 + memberInfo = selectedMember; + console.log('返回的是对象,直接使用:', memberInfo); + } else { + // 如果是字符串,从 MemberArr 中根据id查找 + memberInfo = MemberArr.value.find(item => item.id === selectedMember); + console.log('返回的是字符串,从 MemberArr 根据id查找:', memberInfo); + } + + if (memberInfo && memberInfo.id) { + // 根据id检查成员是否已存在 + const isExist = formData.value.MemberList.some(item => item.id === memberInfo.id); + console.log('成员是否已存在:', isExist); + console.log('当前成员列表:', formData.value.MemberList); + + if (!isExist) { + formData.value.MemberList.push({ + id: memberInfo.id, + name: memberInfo.name + }); + console.log('添加成员成功:', memberInfo); + console.log('添加后的成员列表:', formData.value.MemberList); + } else { + uni.showToast({ + title: '该成员已存在', + icon: 'none', + duration: 2000 + }); + } + } else { + console.log('未找到成员信息或成员信息无效'); + } + } else { + console.log('e.value 为空或长度为0'); + } + showMemberPicker.value = false; +}; + +// 删除成员 +const RemoveMember = (index) => { + formData.value.MemberList.splice(index, 1); + console.log('删除成员成功'); +}; + // 初始化天地图 const initTiandituMap = () => { try { @@ -195,6 +300,21 @@ const initTiandituMap = () => { diff --git a/src/pages/WorkOrderEdit/index.vue b/src/pages/WorkOrderEdit/index.vue index 6c39978..fd0acac 100644 --- a/src/pages/WorkOrderEdit/index.vue +++ b/src/pages/WorkOrderEdit/index.vue @@ -4,18 +4,19 @@ - + - 工单编辑 + {{stepList[currentStep - 1].Title}} - + + @@ -26,9 +27,16 @@