Page({
    data: {
      // 表单数据（与需求字段对应）
      form: {
        title: "", // 文章标题
        vote_type: "single", // 投票类型：single-单选，multiple-多选
        end_time: "", // 结束时间（ISO格式，如：2025-10-22T00:59:59+08:00）
        end_time_format: "", // 结束时间（展示用，如：2025-10-22 00:59）
        options: [
          { content: "", sort_order: 1 }, // 默认1个选项，sort_order自动生成
        ],
      },
      showTimePicker: false, // 时间选择器弹窗显隐
      currentTime: new Date().getTime(), // 当前选择的时间
      minDate: new Date().getTime(), // 最小可选时间（当前时间）
      isSubmitting: false, // 提交状态
      style: 'border: 2rpx solid var(--td-component-border);border-radius: 12rpx;',
      value: 0,
      value1: 0,

      mode: '',
        datetimeVisible: false,
        datetime: new Date().getTime(),
        datetimeText: '',
        cityText: '',
    cityValue: [],
    citys: [
        { label: '用户邀请码', value: '用户邀请码' },
      ],
   
    },
  
    // 1. 输入框通用处理（标题）
    handleInput(e) {
      const { key } = e.currentTarget.dataset;
      this.setData({
        [`form.${key}`]: e.detail.value,
      });
    },
  
    // 2. 投票类型切换（单选/多选）
    handleVoteTypeChange(e) {
      this.setData({
        "form.vote_type": e.detail,
      });
    },

    showPicker(e) {
        console.log("截止")
        const { mode } = e?.currentTarget?.dataset;
        this.setData({
          mode,
          [`${mode}Visible`]: true,
        });
        console.log("截止2",mo)
      },
      hidePicker() {
        const { mode } = this.data;
        this.setData({
          [`${mode}Visible`]: false,
        });
      },
      onConfirm(e) {
        const { value } = e?.detail;
        const { mode } = this.data;
    
        console.log('confirm', value);
    
        this.setData({
          [mode]: value,
          [`${mode}Text`]: value,
        });
    
        this.hidePicker();
      },
    
      onColumnChange(e) {
        console.log('pick', e?.detail?.value);
      },
  
    
  
    // 6. 投票选项输入
    handleOptionInput(e) {
      const { index, key } = e.currentTarget.dataset;
      this.setData({
        [`form.options[${index}].${key}`]: e.detail.value,
      });
    },

  
    // 8. 删除投票选项（至少保留1个）
    deleteOption(e) {
      const { index } = e.currentTarget.dataset;
      const { options } = this.data.form;
      if (options.length <= 1) return;
  
      // 删除后重新排序sort_order
      const newOptions = options.filter((_, i) => i !== index);
      newOptions.forEach((item, i) => {
        item.sort_order = i + 1;
      });
  
      this.setData({
        "form.options": newOptions,
      });
    },
  
    // 9. 表单校验
    validateForm() {
      const { title, end_time, options } = this.data.form;
  
      // 校验标题
      if (!title.trim()) {
        wx.showToast({ title: "请输入文章标题", icon: "none" });
        return false;
      }
  
      // 校验结束时间
      if (!end_time) {
        wx.showToast({ title: "请选择投票结束时间", icon: "none" });
        return false;
      }
  
      // 校验选项（至少1个，且内容不为空）
      const hasEmptyOption = options.some(
        (item) => !item.content.trim()
      );
      if (hasEmptyOption) {
        wx.showToast({ title: "请完善所有选项内容", icon: "none" });
        return false;
      }
  
      return true;
    },
  
    // 10. 提交发布
    handleSubmit() {
      // 1. 表单校验
      if (!this.validateForm()) return;
  
      // 2. 整理提交数据（过滤空值，只保留需求字段）
      const { title, vote_type, end_time, options } = this.data.form;
      const submitData = {
        title: title.trim(),
        vote_type,
        end_time,
        options: options.map((item) => ({
          content: item.content.trim(),
          sort_order: item.sort_order,
        })),
      };
  
      // 3. 模拟提交（替换为实际接口请求）
      this.setData({ isSubmitting: true });
      console.log("发布投票文章数据：", submitData);
  
      // 模拟接口请求（2秒后返回成功）
      setTimeout(() => {
        wx.showToast({ title: "发布成功" });
        this.setData({ isSubmitting: false });
        // 发布成功后返回上一页
        wx.navigateBack({ delta: 1 });
      }, 2000);
    },
    onChange(e) {
        this.setData({ value: e.detail.value });
      },
      onChange1(e) {
        this.setData({ value1: e.detail.value });
      },

      addOption1() {
        const { form } = this.data;
        // 最多3个选项
        if (form.options.length < 5) {
          // 创建新数组并添加新选项（保持原有选项数据）
          const newOptions = [...form.options];
          newOptions.push({ 
            content: "", 
            sort_order: newOptions.length + 1 
          });
          this.setData({
            'form.options': newOptions
          });
        }
      },
    
      // 删除选项
      removeOption(e) {
        const { index } = e.currentTarget.dataset;
        const { form } = this.data;
        
        if (form.options.length > 1) {
          // 过滤掉要删除的选项，保留其他选项数据
          let newOptions = form.options.filter((_, i) => i !== index);
          
          // 重新排序（不影响内容，只更新序号）
          newOptions = newOptions.map((item, i) => ({
            ...item, // 保留原有内容
            sort_order: i + 1
          }));
          
          this.setData({
            'form.options': newOptions
          });
        }
      },
    
      // 选项内容输入
      onOptionInput(e) {
        const { index } = e.currentTarget.dataset;
        const { form } = this.data;

       
        // 创建新数组避免直接修改原数据
        const newOptions = [...form.options];
        // 只更新当前输入的选项内容
        newOptions[index].content = e.detail.value;
        console.log("输入：",newOptions[index].content)
        this.setData({
          'form.options': newOptions
        });
      },
      onColumnChange(e) {
        console.log('picker pick:', e);
      },
  
      onPickerChange(e) {
        const { key } = e.currentTarget.dataset;
        const { value } = e.detail;
  
        console.log('picker change:', e.detail);
        this.setData({
          [`${key}Visible`]: false,
          [`${key}Value`]: value,
          [`${key}Text`]: value.join(' '),
        });
      },
  
      onPickerCancel(e) {
        const { key } = e.currentTarget.dataset;
        console.log(e, '取消');
        console.log('picker1 cancel:');
        this.setData({
          [`${key}Visible`]: false,
        });
      },
  
      onCityPicker() {
        this.setData({ cityVisible: true });
      },
  
      onSeasonPicker() {
        this.setData({ dateVisible: true });
      },



  
      

    

  });