|  |  |  | 
|---|
|  |  |  | const app = getApp(); | 
|---|
|  |  |  | const { get, post } = require('../../api/request'); | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | get, | 
|---|
|  |  |  | post | 
|---|
|  |  |  | } = require('../../api/request'); | 
|---|
|  |  |  | const dayjs = require('dayjs'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page({ | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 页面的初始数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | // 表单数据 | 
|---|
|  |  |  | planCode: '', // 计划编号 | 
|---|
|  |  |  | startTime: '', // 灌溉开始时间 | 
|---|
|  |  |  | pickerValue: '', // 时间选择器的值 | 
|---|
|  |  |  | timePickerVisible: false, // 时间选择器是否可见 | 
|---|
|  |  |  | timeInfoVisible: false, // 时间提示弹窗是否可见 | 
|---|
|  |  |  | // 项目选择器相关 | 
|---|
|  |  |  | projectPickerVisible: false, | 
|---|
|  |  |  | projectPickerValue: [], | 
|---|
|  |  |  | selectedProject: null, | 
|---|
|  |  |  | projectOptions: [], | 
|---|
|  |  |  | totalDuration: 0, // 添加总灌溉时间 | 
|---|
|  |  |  | // 项目列表 | 
|---|
|  |  |  | projectList: [], | 
|---|
|  |  |  | // 时间选择器选项 | 
|---|
|  |  |  | timeOptions: [], | 
|---|
|  |  |  | // 轮灌组列表刷新状态 | 
|---|
|  |  |  | isRefreshing: false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 页面的初始数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | // 表单数据 | 
|---|
|  |  |  | planCode: '', // 计划编号 | 
|---|
|  |  |  | startTime: '', // 灌溉开始时间 | 
|---|
|  |  |  | pickerValue: '', // 时间选择器的值 | 
|---|
|  |  |  | timePickerVisible: false, // 时间选择器是否可见 | 
|---|
|  |  |  | timeInfoVisible: false, // 时间提示弹窗是否可见 | 
|---|
|  |  |  | // 项目选择器相关 | 
|---|
|  |  |  | projectPickerVisible: false, | 
|---|
|  |  |  | projectPickerValue: [], | 
|---|
|  |  |  | selectedProject: null, | 
|---|
|  |  |  | projectOptions: [], | 
|---|
|  |  |  | totalDuration: 0, // 添加总灌溉时间 | 
|---|
|  |  |  | // 项目列表 | 
|---|
|  |  |  | projectList: [], | 
|---|
|  |  |  | // 时间选择器选项 | 
|---|
|  |  |  | timeOptions: [], | 
|---|
|  |  |  | // 轮灌组列表刷新状态 | 
|---|
|  |  |  | isRefreshing: false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生命周期函数--监听页面加载 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onLoad: function (options) { | 
|---|
|  |  |  | // 生成计划编号 | 
|---|
|  |  |  | this.generatePlanCode(); | 
|---|
|  |  |  | // 设置时间选择器的初始值 | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | pickerValue: now.add(8.5, 'hour').format('YYYY-MM-DD HH:mm') | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 获取项目列表 | 
|---|
|  |  |  | this.fetchProjects(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生命周期函数--监听页面加载 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onLoad: function (options) { | 
|---|
|  |  |  | // 生成计划编号 | 
|---|
|  |  |  | this.generatePlanCode(); | 
|---|
|  |  |  | // 设置时间选择器的初始值 | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | pickerValue: now.add(8.5, 'hour').format('YYYY-MM-DD HH:mm') | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 获取项目列表 | 
|---|
|  |  |  | this.fetchProjects(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生成计划编号 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | generatePlanCode: function () { | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | const dateStr = now.format('YYYYMMDD'); | 
|---|
|  |  |  | const randomNum = Math.floor(Math.random() * 10000).toString().padStart(4, '0'); | 
|---|
|  |  |  | const planCode = `${dateStr}${randomNum}`; | 
|---|
|  |  |  | this.setData({ planCode }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生成计划编号 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | generatePlanCode: function () { | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | const dateStr = now.format('YYYY-MM-DD'); | 
|---|
|  |  |  | const randomNum = Math.floor(Math.random() * 10000).toString().padStart(4, '0'); | 
|---|
|  |  |  | const planCode = `${dateStr}${-randomNum}`; | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | planCode | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取项目列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | fetchProjects: function () { | 
|---|
|  |  |  | return get({ | 
|---|
|  |  |  | url: '/wx/irrigation/getSimpleProjects', | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | const projectList = res.content.obj.map(project => ({ | 
|---|
|  |  |  | id: project.projectId, | 
|---|
|  |  |  | name: project.projectName, | 
|---|
|  |  |  | groupCount: project.groupCount, | 
|---|
|  |  |  | groups: [] | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const projectOptions = projectList.map(project => ({ | 
|---|
|  |  |  | label: project.name, | 
|---|
|  |  |  | value: project.id | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList, | 
|---|
|  |  |  | projectOptions | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '获取项目列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(new Error(res.msg || '获取项目列表失败')); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('获取项目列表失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '获取项目列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取轮灌组列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | fetchGroups: function (projectId) { | 
|---|
|  |  |  | return get({ | 
|---|
|  |  |  | url: '/wx/irrigation/getSimpleGroups', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | projectId: projectId, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | console.log('轮灌组数据:', res.content.obj); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新选中项目的轮灌组信息 | 
|---|
|  |  |  | const projectList = this.data.projectList.map(project => { | 
|---|
|  |  |  | if (project.id === projectId) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...project, | 
|---|
|  |  |  | groups: res.content.obj.map(group => ({ | 
|---|
|  |  |  | id: group.groupId, | 
|---|
|  |  |  | name: group.groupCode, | 
|---|
|  |  |  | duration: group.defaultDuration || 0, | 
|---|
|  |  |  | selected: false, | 
|---|
|  |  |  | intakeCount: group.intakeCount | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return project; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新选中的项目 | 
|---|
|  |  |  | const selectedProject = projectList.find(project => project.id === projectId); | 
|---|
|  |  |  | console.log('更新后的选中项目:', selectedProject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList, | 
|---|
|  |  |  | selectedProject | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 计算总时间 | 
|---|
|  |  |  | this.calculateTotalDuration(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '获取轮灌组列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(new Error(res.msg || '获取轮灌组列表失败')); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('获取轮灌组列表失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '获取轮灌组列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 显示时间选择器 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | showTimePicker: function () { | 
|---|
|  |  |  | // 如果没有选择时间,使用当前时间 | 
|---|
|  |  |  | if (!this.data.pickerValue) { | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | pickerValue: now.format('YYYY-MM-DD HH:mm') | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 时间选择器确认回调 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimePickerConfirm: function (e) { | 
|---|
|  |  |  | const { value } = e.detail; | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: false, | 
|---|
|  |  |  | startTime: value | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 时间选择器取消回调 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimePickerCancel: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 切换项目展开/折叠状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | toggleProject: function (e) { | 
|---|
|  |  |  | const index = e.currentTarget.dataset.index; | 
|---|
|  |  |  | const currentValue = this.data.projectList[index].expanded; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 创建新的项目列表,先将所有项目设为折叠状态 | 
|---|
|  |  |  | const newProjectList = this.data.projectList.map((item, idx) => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...item, | 
|---|
|  |  |  | expanded: false | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果当前点击的项目已经是展开状态,则保持所有项目折叠 | 
|---|
|  |  |  | // 否则,将当前点击的项目设为展开状态 | 
|---|
|  |  |  | if (!currentValue) { | 
|---|
|  |  |  | newProjectList[index].expanded = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList: newProjectList | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 切换轮灌组选中状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | toggleGroupSelection: function (e) { | 
|---|
|  |  |  | const projectIndex = e.currentTarget.dataset.projectIndex; | 
|---|
|  |  |  | const groupIndex = e.currentTarget.dataset.groupIndex; | 
|---|
|  |  |  | const key = `projectList[${projectIndex}].groups[${groupIndex}].selected`; | 
|---|
|  |  |  | const currentValue = this.data.projectList[projectIndex].groups[groupIndex].selected; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | [key]: !currentValue | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新项目总时长 | 
|---|
|  |  |  | this.updateProjectTotalDuration(projectIndex); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 处理时长输入 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onDurationInput: function (e) { | 
|---|
|  |  |  | const { groupIndex } = e.currentTarget.dataset; | 
|---|
|  |  |  | const duration = parseInt(e.detail.value) || 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const selectedProject = { ...this.data.selectedProject }; | 
|---|
|  |  |  | selectedProject.groups[groupIndex].duration = duration; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | selectedProject | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 输入时长后重新计算总时间 | 
|---|
|  |  |  | this.calculateTotalDuration(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算并更新项目总时长 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | updateProjectTotalDuration: function (projectIndex) { | 
|---|
|  |  |  | const project = this.data.projectList[projectIndex]; | 
|---|
|  |  |  | let totalDuration = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 计算所有选中的轮灌组的时长总和 | 
|---|
|  |  |  | project.groups.forEach(group => { | 
|---|
|  |  |  | if (group.selected) { | 
|---|
|  |  |  | totalDuration += parseInt(group.duration) || 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新项目总时长 | 
|---|
|  |  |  | const totalDurationKey = `projectList[${projectIndex}].totalDuration`; | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | [totalDurationKey]: totalDuration | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 阻止事件冒泡 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | stopPropagation: function (e) { | 
|---|
|  |  |  | if (e && e.stopPropagation) { | 
|---|
|  |  |  | e.stopPropagation(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转到轮灌组详情页 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | navigateToGroupDetail: function (e) { | 
|---|
|  |  |  | const { groupIndex } = e.currentTarget.dataset; | 
|---|
|  |  |  | // TODO: 实现跳转逻辑 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 确认按钮点击事件 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onConfirm: function () { | 
|---|
|  |  |  | const { planCode, startTime, selectedProject } = this.data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!planCode) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '请输入计划编号', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!selectedProject) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '请选择项目', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构建上报数据 | 
|---|
|  |  |  | const schedules = selectedProject.groups.map(group => ({ | 
|---|
|  |  |  | groupId: group.id, | 
|---|
|  |  |  | duration: parseInt(group.duration) || 0 | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取项目列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | fetchProjects: function (isShowDiaolog) { | 
|---|
|  |  |  | return get({ | 
|---|
|  |  |  | url: '/wx/irrigation/getSimpleProjects', | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | const projectList = res.content.map(project => ({ | 
|---|
|  |  |  | id: project.projectId, | 
|---|
|  |  |  | name: project.projectName, | 
|---|
|  |  |  | groupCount: project.groupCount, | 
|---|
|  |  |  | groups: [] | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const requestData = { | 
|---|
|  |  |  | projectId: selectedProject.id, | 
|---|
|  |  |  | planName: planCode, | 
|---|
|  |  |  | startupMode: startTime ? 2 : 1, | 
|---|
|  |  |  | operatorId: app.globalData.clientId, | 
|---|
|  |  |  | schedules: schedules | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const projectOptions = projectList.map(project => ({ | 
|---|
|  |  |  | label: project.name, | 
|---|
|  |  |  | value: project.id | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果有开始时间,添加到请求数据中 | 
|---|
|  |  |  | if (startTime) { | 
|---|
|  |  |  | requestData.planStartTime = startTime; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送请求 | 
|---|
|  |  |  | post({ | 
|---|
|  |  |  | url: '/wx/plan/createPlan', | 
|---|
|  |  |  | data: requestData, | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '创建成功', | 
|---|
|  |  |  | icon: 'success' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 返回上一页 | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | wx.navigateBack(); | 
|---|
|  |  |  | }, 1500); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '创建失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('创建计划失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '创建失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示项目选择器 | 
|---|
|  |  |  | showProjectPicker() { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList, | 
|---|
|  |  |  | projectOptions | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (isShowDiaolog) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectPickerVisible: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 项目选择器确认 | 
|---|
|  |  |  | onProjectPickerConfirm(e) { | 
|---|
|  |  |  | const { value } = e.detail; | 
|---|
|  |  |  | console.log('选择的项目ID:', value[0]); // 添加日志查看数据 | 
|---|
|  |  |  | const selectedProject = this.data.projectList.find(project => project.id === value[0]); | 
|---|
|  |  |  | console.log('找到的项目:', selectedProject); // 添加日志查看数据 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectPickerVisible: false, | 
|---|
|  |  |  | selectedProject: selectedProject, | 
|---|
|  |  |  | projectPickerValue: value | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 选择项目后获取轮灌组列表 | 
|---|
|  |  |  | if (selectedProject) { | 
|---|
|  |  |  | this.fetchGroups(selectedProject.id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 项目选择器取消 | 
|---|
|  |  |  | onProjectPickerCancel() { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectPickerVisible: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算总灌溉时间 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | calculateTotalDuration: function () { | 
|---|
|  |  |  | if (!this.data.selectedProject) return; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const totalDuration = this.data.selectedProject.groups.reduce((sum, group) => { | 
|---|
|  |  |  | return sum + (parseInt(group.duration) || 0); | 
|---|
|  |  |  | }, 0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | totalDuration | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 轮灌组列表下拉刷新 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onGroupListRefresh: function () { | 
|---|
|  |  |  | if (!this.data.selectedProject) { | 
|---|
|  |  |  | this.setData({ isRefreshing: false }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ isRefreshing: true }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.fetchGroups(this.data.selectedProject.id) | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.setData({ isRefreshing: false }); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { | 
|---|
|  |  |  | this.setData({ isRefreshing: false }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 显示时间提示弹窗 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | showTimeInfo: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timeInfoVisible: true | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '获取项目列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | return Promise.reject(new Error(res.msg || '获取项目列表失败')); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('获取项目列表失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '获取项目列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 关闭时间提示弹窗 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimeInfoConfirm: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timeInfoVisible: false | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取轮灌组列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | fetchGroups: function (projectId) { | 
|---|
|  |  |  | return get({ | 
|---|
|  |  |  | url: '/wx/irrigation/getSimpleGroups', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | projectId: projectId, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | console.log('轮灌组数据:', res.content); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新选中项目的轮灌组信息 | 
|---|
|  |  |  | const projectList = this.data.projectList.map(project => { | 
|---|
|  |  |  | if (project.id === projectId) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...project, | 
|---|
|  |  |  | groups: res.content.map(group => ({ | 
|---|
|  |  |  | id: group.groupId, | 
|---|
|  |  |  | name: group.groupCode, | 
|---|
|  |  |  | duration: group.defaultDuration || 0, | 
|---|
|  |  |  | selected: false, | 
|---|
|  |  |  | intakeCount: group.intakeCount | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return project; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新选中的项目 | 
|---|
|  |  |  | const selectedProject = projectList.find(project => project.id === projectId); | 
|---|
|  |  |  | console.log('更新后的选中项目:', selectedProject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList, | 
|---|
|  |  |  | selectedProject | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 计算总时间 | 
|---|
|  |  |  | this.calculateTotalDuration(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '获取轮灌组列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(new Error(res.msg || '获取轮灌组列表失败')); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('获取轮灌组列表失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '获取轮灌组列表失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return Promise.reject(err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 显示时间选择器 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | showTimePicker: function () { | 
|---|
|  |  |  | // 如果没有选择时间,使用当前时间 | 
|---|
|  |  |  | if (!this.data.pickerValue) { | 
|---|
|  |  |  | const now = dayjs(); | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | pickerValue: now.format('YYYY-MM-DD HH:mm') | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 时间选择器确认回调 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimePickerConfirm: function (e) { | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | value | 
|---|
|  |  |  | } = e.detail; | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: false, | 
|---|
|  |  |  | startTime: value | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 时间选择器取消回调 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimePickerCancel: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timePickerVisible: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 切换项目展开/折叠状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | toggleProject: function (e) { | 
|---|
|  |  |  | const index = e.currentTarget.dataset.index; | 
|---|
|  |  |  | const currentValue = this.data.projectList[index].expanded; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 创建新的项目列表,先将所有项目设为折叠状态 | 
|---|
|  |  |  | const newProjectList = this.data.projectList.map((item, idx) => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...item, | 
|---|
|  |  |  | expanded: false | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果当前点击的项目已经是展开状态,则保持所有项目折叠 | 
|---|
|  |  |  | // 否则,将当前点击的项目设为展开状态 | 
|---|
|  |  |  | if (!currentValue) { | 
|---|
|  |  |  | newProjectList[index].expanded = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectList: newProjectList | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 切换轮灌组选中状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | toggleGroupSelection: function (e) { | 
|---|
|  |  |  | const projectIndex = e.currentTarget.dataset.projectIndex; | 
|---|
|  |  |  | const groupIndex = e.currentTarget.dataset.groupIndex; | 
|---|
|  |  |  | const key = `projectList[${projectIndex}].groups[${groupIndex}].selected`; | 
|---|
|  |  |  | const currentValue = this.data.projectList[projectIndex].groups[groupIndex].selected; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | [key]: !currentValue | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新项目总时长 | 
|---|
|  |  |  | this.updateProjectTotalDuration(projectIndex); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 处理时长输入 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onDurationInput: function (e) { | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | groupIndex | 
|---|
|  |  |  | } = e.currentTarget.dataset; | 
|---|
|  |  |  | const duration = parseInt(e.detail.value) || 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const selectedProject = { | 
|---|
|  |  |  | ...this.data.selectedProject | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | selectedProject.groups[groupIndex].duration = duration; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | selectedProject | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 输入时长后重新计算总时间 | 
|---|
|  |  |  | this.calculateTotalDuration(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算并更新项目总时长 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | updateProjectTotalDuration: function (projectIndex) { | 
|---|
|  |  |  | const project = this.data.projectList[projectIndex]; | 
|---|
|  |  |  | let totalDuration = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 计算所有选中的轮灌组的时长总和 | 
|---|
|  |  |  | project.groups.forEach(group => { | 
|---|
|  |  |  | if (group.selected) { | 
|---|
|  |  |  | totalDuration += parseInt(group.duration) || 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新项目总时长 | 
|---|
|  |  |  | const totalDurationKey = `projectList[${projectIndex}].totalDuration`; | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | [totalDurationKey]: totalDuration | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 阻止事件冒泡 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | stopPropagation: function (e) { | 
|---|
|  |  |  | if (e && e.stopPropagation) { | 
|---|
|  |  |  | e.stopPropagation(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转到轮灌组详情页 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | navigateToGroupDetail: function (e) { | 
|---|
|  |  |  | const { groupIndex } = e.currentTarget.dataset; | 
|---|
|  |  |  | const group = this.data.selectedProject.groups[groupIndex]; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构建URL参数 | 
|---|
|  |  |  | const params = { | 
|---|
|  |  |  | projectName: this.data.selectedProject.name, | 
|---|
|  |  |  | groupName: group.name, | 
|---|
|  |  |  | groupId: group.id | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构建URL查询字符串 | 
|---|
|  |  |  | const queryString = Object.keys(params) | 
|---|
|  |  |  | .map(key => `${key}=${encodeURIComponent(params[key])}`) | 
|---|
|  |  |  | .join('&'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 跳转到轮灌组详情页 | 
|---|
|  |  |  | wx.navigateTo({ | 
|---|
|  |  |  | url: `/pages/groupDetail/groupDetail?${queryString}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 确认按钮点击事件 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onConfirm: function () { | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | planCode, | 
|---|
|  |  |  | startTime, | 
|---|
|  |  |  | selectedProject | 
|---|
|  |  |  | } = this.data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!planCode) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '请输入计划编号', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!selectedProject) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '请选择项目', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构建上报数据 | 
|---|
|  |  |  | const schedules = selectedProject.groups.map(group => ({ | 
|---|
|  |  |  | groupId: group.id, | 
|---|
|  |  |  | duration: parseInt(group.duration) || 0 | 
|---|
|  |  |  | })); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const requestData = { | 
|---|
|  |  |  | projectId: selectedProject.id, | 
|---|
|  |  |  | planName: planCode, | 
|---|
|  |  |  | startupMode: startTime ? 2 : 1, | 
|---|
|  |  |  | operatorId: app.globalData.clientId, | 
|---|
|  |  |  | schedules: schedules | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果有开始时间,添加到请求数据中 | 
|---|
|  |  |  | if (startTime) { | 
|---|
|  |  |  | requestData.planStartTime = startTime; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送请求 | 
|---|
|  |  |  | post({ | 
|---|
|  |  |  | url: '/wx/plan/createPlan', | 
|---|
|  |  |  | data: requestData, | 
|---|
|  |  |  | isShowLoding: true | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '创建成功', | 
|---|
|  |  |  | icon: 'success' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 返回上一页,并传递参数指示需要刷新列表并切换到当前计划列表 | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | // 使用全局变量标记需要刷新 | 
|---|
|  |  |  | const app = getApp(); | 
|---|
|  |  |  | app.globalData.needRefreshIrrigationList = true; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 直接返回上一页 | 
|---|
|  |  |  | wx.navigateBack({ | 
|---|
|  |  |  | delta: 1 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 1500); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '创建失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('创建计划失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '创建失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示项目选择器 | 
|---|
|  |  |  | showProjectPicker() { | 
|---|
|  |  |  | this.fetchProjects(true) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 项目选择器确认 | 
|---|
|  |  |  | onProjectPickerConfirm(e) { | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | value | 
|---|
|  |  |  | } = e.detail; | 
|---|
|  |  |  | console.log('选择的项目ID:', value[0]); // 添加日志查看数据 | 
|---|
|  |  |  | const selectedProject = this.data.projectList.find(project => project.id === value[0]); | 
|---|
|  |  |  | console.log('找到的项目:', selectedProject); // 添加日志查看数据 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectPickerVisible: false, | 
|---|
|  |  |  | selectedProject: selectedProject, | 
|---|
|  |  |  | projectPickerValue: value | 
|---|
|  |  |  | }, () => { | 
|---|
|  |  |  | // 选择项目后获取轮灌组列表 | 
|---|
|  |  |  | if (selectedProject) { | 
|---|
|  |  |  | this.fetchGroups(selectedProject.id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 项目选择器取消 | 
|---|
|  |  |  | onProjectPickerCancel() { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectPickerVisible: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算总灌溉时间 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | calculateTotalDuration: function () { | 
|---|
|  |  |  | if (!this.data.selectedProject) return; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const totalDuration = this.data.selectedProject.groups.reduce((sum, group) => { | 
|---|
|  |  |  | return sum + (parseInt(group.duration) || 0); | 
|---|
|  |  |  | }, 0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | totalDuration | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 轮灌组列表下拉刷新 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onGroupListRefresh: function () { | 
|---|
|  |  |  | if (!this.data.selectedProject) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isRefreshing: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isRefreshing: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.fetchGroups(this.data.selectedProject.id) | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isRefreshing: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isRefreshing: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 显示时间提示弹窗 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | showTimeInfo: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timeInfoVisible: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 关闭时间提示弹窗 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onTimeInfoConfirm: function () { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | timeInfoVisible: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|