<template>
  <div class="add-project-container">
    <div class="add-project-content" v-loading="loading">
      <routerBack />
      <div class="tabs-content">
        <div class="project-tab-content">
          <div class="tab-content">
            <el-form :model="formData" label-width="150" :disabled="isPreview">
              <el-collapse v-model="activeCollapse">
                <el-collapse-item title="项目基本信息" name="项目基本信息">
                  <el-row :gutter="24">
                    <el-col :span="6">
                      <el-form-item label="年度" required>
                        <el-date-picker
                          v-model="formData.nd"
                          type="year"
                          placeholder="请选择年度"
                          format="YYYY"
                          value-format="YYYY"
                          style="width: 100%"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="项目名称" required>
                        <el-select
                          v-model="formData.projectId"
                          placeholder="请选择项目名称"
                          no-data-text="暂无数据"
                          @change="changeProject"
                        >
                          <el-option
                            v-for="item in projectList"
                            :key="item.id"
                            :label="item.projectName"
                            :value="item.id"
                          ></el-option>
                        </el-select>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="所属行业">
                        <CommonSelector
                          v-model="formData.sshy"
                          dictName="participation_industry"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="项目公司名称">
                        <el-input
                          v-model="formData.xmgsmc"
                          placeholder="请输入项目公司名称"
                        />
                      </el-form-item>
                    </el-col>

                    <el-col :span="6">
                      <el-form-item label="填报单位名称">
                        <el-input
                          v-model="formData.sbdw"
                          placeholder="请输入填报单位名称"
                        />
                      </el-form-item>
                    </el-col>

                    <el-col :span="6">
                      <el-form-item label="所属二级企业">
                        <el-input
                          v-model="formData.ssejqy"
                          placeholder="请输入所属二级企业"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="项目阶段">
                        <CommonSelector
                          v-model="formData.xmjd"
                          dictName="xmjd"
                        />
                      </el-form-item>
                    </el-col>

                    <el-col :span="6">
                      <el-form-item label="项目类别">
                        <CommonSelector
                          v-model="formData.xmlx"
                          dictName="xmlx"
                        ></CommonSelector>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="投资模式分类">
                        <CommonSelector
                          v-model="formData.tzms"
                          dictName="tzms"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="投资回收方式">
                        <CommonSelector
                          v-model="formData.tzhsfs"
                          dictName="tzhsfs"
                        />
                      </el-form-item>
                    </el-col>

                    <el-col :span="6">
                      <el-form-item label="下年项目阶段">
                        <CommonSelector
                          v-model="formData.xnxmjd"
                          dictName="xmjd"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="6">
                      <el-form-item label="财务报表类型">
                        <CommonSelector
                          v-model="formData.cwbblx"
                          dictName="cwbblx"
                        />
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <DynamicTable
                    :columns="transferColumns"
                    :disabled="isPreview"
                    v-model="formData.projectGdxxs"
                  >
                  </DynamicTable>
                </el-collapse-item>

                <el-collapse-item
                  title="投资额完成情况（万元）"
                  name="投资额完成情况（万元）"
                  ><el-row gutter="20">
                    <el-col :span="12">
                      <el-form-item label="项目投资总额（决策值）（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.tzzejc"
                          placeholder="请输入项目投资总额（决策值）（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="我方资本金出资额-决策值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.wfzbjczejc"
                          placeholder="请输入我方资本金出资额-决策值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="投资总额-实际值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.tzzesj"
                          placeholder="请输入投资总额-实际值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="我方资本金出资额--实际值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.wfzbjczesj"
                          placeholder="请输入我方资本金出资额--实际值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="投资总额-计划值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.tzzejhz"
                          placeholder="请输入投资总额-计划值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-collapse-item>

                <el-collapse-item
                  :title="dynamicTitles.yearlyUpdateTitle"
                  :name="dynamicTitles.yearlyUpdateTitle"
                >
                  <el-row gutter="20">
                    <!-- 第一行：决策目标值相关数字项 -->
                    <el-col :span="12">
                      <el-form-item label="本年完成 投资回收决策目标值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.bnwc"
                          type="number"
                          placeholder="请输入本年完成 投资回收决策目标值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="截止本年累计（决策目标值）">
                        <el-input-number
                          precision="2"
                          v-model="formData.jzbnlj"
                          type="number"
                          placeholder="请输入截止本年累计（决策目标值）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="下一年完成数（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.xynwcs"
                          type="number"
                          placeholder="请输入下一年完成数（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="本年计划（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.bnjh"
                          type="number"
                          placeholder="请输入本年计划（万元）"
                        />
                      </el-form-item>
                    </el-col>

                    <!-- 第二行：实际值相关数字项 -->
                    <el-col :span="12">
                      <el-form-item label="本年完成--投资回收实际值（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.bnwcsjz"
                          type="number"
                          placeholder="请输入本年完成--投资回收实际值（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="截止本年累计--投资回收实际值">
                        <el-input-number
                          precision="2"
                          v-model="formData.jzbnljsjz"
                          type="number"
                          placeholder="请输入截止本年累计--投资回收实际值"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="累计欠收（万元）">
                        <el-input-number
                          precision="2"
                          v-model="formData.ljqs"
                          type="number"
                          placeholder="请输入累计欠收（万元）"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="完成率（%）">
                        <el-input-number
                          precision="2"
                          v-model="formData.wcl"
                          type="number"
                          placeholder="请输入完成率（%）"
                        />
                      </el-form-item>
                    </el-col>

                    <!-- 第三行及以后：长文本说明项（占满整行） -->
                    <el-col :span="24">
                      <el-form-item label="计划与决策目标值差异说明">
                        <el-input
                          v-model="formData.jhyjcmbcysm"
                          type="textarea"
                          rows="3"
                          placeholder="请输入计划与决策目标值差异说明"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="24">
                      <el-form-item label="实际与计划差异说明">
                        <el-input
                          v-model="formData.sjyjhcysm"
                          type="textarea"
                          rows="3"
                          placeholder="请输入实际与计划差异说明"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="24">
                      <el-form-item label="存在主要问题">
                        <el-input
                          v-model="formData.czdzywt"
                          type="textarea"
                          rows="3"
                          placeholder="请输入存在主要问题"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="24">
                      <el-form-item label="采取措施及开展情况">
                        <el-input
                          v-model="formData.cqcsjgzkzqk"
                          type="textarea"
                          rows="3"
                          placeholder="请输入采取措施及开展情况"
                        />
                      </el-form-item>
                    </el-col>
                    <el-col :span="24">
                      <el-form-item label="备注">
                        <el-input
                          v-model="formData.bz"
                          type="textarea"
                          rows="3"
                          placeholder="请输入备注"
                        />
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-collapse-item>

                <el-collapse-item
                  title="截止12月末累计应收"
                  name="截止12月末累计应收"
                >
                  <FinancialTable
                    v-model="formData.jzymljys"
                    :is-preview="isPreview"
                  />
                </el-collapse-item>

                <el-collapse-item
                  title="截止12月末累计实收"
                  name="截止12月末累计实收"
                >
                  <FinancialTable
                    v-model="formData.jzymljsh"
                    :is-preview="isPreview"
                  />
                </el-collapse-item>

                <el-collapse-item
                  title="投资回收（计划）"
                  name="投资回收（计划）"
                >
                  <FinancialTable
                    v-model="formData.tzhsjh"
                    :showSerialColumn="false"
                    :is-preview="isPreview"
                    :showNameColumn="false"
                    :showTotalColumn="false"
                  />
                </el-collapse-item>

                <el-collapse-item
                  :title="dynamicTitles.yearlyCompletionTitle"
                  :name="dynamicTitles.yearlyCompletionTitle"
                >
                  <InvestmentRecoveryTable
                    v-model="formData.tzhswcqkndgx"
                    :is-preview="isPreview"
                    table-type="year"
                    :table-title="dynamicTitles.yearlyCompletionTitle"
                  />
                </el-collapse-item>

                <el-collapse-item
                  :title="dynamicTitles.monthlyCompletionTitle"
                  :name="dynamicTitles.monthlyCompletionTitle"
                >
                  <InvestmentRecoveryTable
                    v-model="formData.tzhswcqkydgx"
                    :is-preview="isPreview"
                    table-type="month"
                    :table-title="dynamicTitles.monthlyCompletionTitle"
                    :plan-data="formData.tzhsjh"
                    :decision-data="formData.tzhsjc"
                    :last-year-plan-data="formData.lastyeartzhs"
                    :current-year="currentYear"
                  />
                </el-collapse-item>
              </el-collapse>
            </el-form>
          </div>
        </div>
      </div>
      <div class="add-project-header">
        <div class="header-left"></div>
        <div class="header-right">
          <el-button type="default" @click="backClick">返回</el-button>
          <template v-if="!loading && !isPreview">
            <el-button type="primary" @click="saveClick">保存</el-button>
          </template>
        </div>
      </div>

      <!-- 预览模式底部信息区域 -->
      <el-collapse
        v-model="activeCollapse"
        v-if="isPreview"
        style="margin-top: 20px"
      >
        <el-collapse-item title="相关信息" name="相关信息">
          <div style="padding: 20px; color: #909399; text-align: center">
            <p>此为预览模式，如需编辑请返回列表页点击"编辑"按钮</p>
          </div>
        </el-collapse-item>
      </el-collapse>
    </div>
  </div>
</template>

<script setup>
import {
  reactive,
  watch,
  ref,
  onMounted,
  getCurrentInstance,
  h,
  computed,
} from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue";
import FinancialTable from "@/components/FinancialTable.vue";
import InvestmentRecoveryTable from "@/components/InvestmentRecoveryTable.vue";
import routerBack from "@/components/common/routerBack.vue";
const transferColumns = ref([
  {
    prop: "njfcgbl",
    label: "能建方持股比例",
    type: "input",
    headerGroup: "能建内容",
    placeholder: "请填写能建方持股比例",
  },
  {
    prop: "njfcgblqk",
    label: "能建方持股比例情况",
    type: "input",
    headerGroup: "能建内容",
    placeholder: "请填写能建方持股比例情况",
  },

  {
    prop: "zwfcgbl",
    label: "政府方持股比例",
    type: "input",
    headerGroup: "能建以外",
    placeholder: "请填写政府方持股比例",
  },
  {
    prop: "jjcgbl",
    label: "基金持股比例",
    type: "input",
    headerGroup: "能建以外",
    placeholder: "请输入基金持股比例",
    min: 0,
  },
  {
    prop: "njfglmc",
    label: "能建方关联名称",
    headerGroup: "能建以外",
    type: "textarea",
    placeholder: "请输入能建方关联名称",
  },
]);
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();

// 表单数据
let initTableData = () => {
  // 使用 Object.assign 直接替换整个对象，而不是合并
  formData.jzymljys = {
    indicatorList: [
      { name: "一月", isTextRow: false, noTotal: false },
      { name: "二月", isTextRow: false, noTotal: false },
      { name: "三月", isTextRow: false, noTotal: false },
      { name: "四月", isTextRow: false, noTotal: false },
      { name: "五月", isTextRow: false, noTotal: false },
      { name: "六月", isTextRow: false, noTotal: false },
      { name: "七月", isTextRow: false, noTotal: false },
      { name: "八月", isTextRow: false, noTotal: false },
      { name: "九月", isTextRow: false, noTotal: false },
      { name: "十月", isTextRow: false, noTotal: false },
      { name: "十一月", isTextRow: false, noTotal: false },
      { name: "十二月", isTextRow: false, noTotal: false },
    ],

    dynamicTimeList: [
      { label: "政府付费", prop: "a1" },
      { label: "政府补贴", prop: "a2" },
      { label: "使用者付费", prop: "a3" },
      { label: "使用者欠付", prop: "a4" },
      { label: "补贴收入", prop: "a5" },
      {
        label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
        prop: "a6",
      },
      { label: "资产盘活", prop: "a7" },
      { label: "股权分红", prop: "a8" },
      { label: "其他", prop: "a9" },
      {
        label: "目标（决策）与计划差异说明",
        prop: "a10",

        isTextRow: true,
      },
    ],

    // 表格数据（子组件自动初始化，无需手动赋值）
    tableData: [],
  };

  formData.jzymljsh = {
    indicatorList: [
      { name: "一月", isTextRow: false, noTotal: false },
      { name: "二月", isTextRow: false, noTotal: false },
      { name: "三月", isTextRow: false, noTotal: false },
      { name: "四月", isTextRow: false, noTotal: false },
      { name: "五月", isTextRow: false, noTotal: false },
      { name: "六月", isTextRow: false, noTotal: false },
      { name: "七月", isTextRow: false, noTotal: false },
      { name: "八月", isTextRow: false, noTotal: false },
      { name: "九月", isTextRow: false, noTotal: false },
      { name: "十月", isTextRow: false, noTotal: false },
      { name: "十一月", isTextRow: false, noTotal: false },
      {
        name: "十二月",
        isTextRow: false,
        noTotal: false,
      },
    ],

    dynamicTimeList: [
      { label: "政府付费", prop: "a1" },
      { label: "政府补贴", prop: "a2" },
      { label: "使用者付费", prop: "a3" },
      { label: "使用者欠付", prop: "a4" },
      { label: "补贴收入", prop: "a5" },
      {
        label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
        prop: "a6",
      },
      { label: "资产盘活", prop: "a7" },
      { label: "股权分红", prop: "a8" },
      { label: "其他", prop: "a9" },
      {
        label: "目标（决策）与计划差异说明",
        prop: "a10",

        isTextRow: true,
      },
    ],

    // 表格数据（子组件自动初始化，无需手动赋值）
    tableData: [],
  };

  formData.tzhsjc = {
    // 指标列表
    indicatorList: [
      { name: "建设期政府付费", isTextRow: false, noTotal: false },
      { name: "运营期政府付费", isTextRow: false, noTotal: false },
      { name: "投资价差收取", isTextRow: false, noTotal: false },
      { name: "参股项目投资回收", isTextRow: false, noTotal: false },
      { name: "代建工程款回收", isTextRow: false, noTotal: false },
      { name: "政府付费", isTextRow: false, noTotal: false },
      { name: "政府补贴", isTextRow: false, noTotal: false },
      { name: "使用者付费", isTextRow: false, noTotal: false },
      { name: "使用者欠付", isTextRow: false, noTotal: false },
      { name: "补贴收入", isTextRow: false, noTotal: false },
      {
        name: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
        isTextRow: false,
        noTotal: false,
      },
      { name: "资产盘活", isTextRow: false, noTotal: false },
      { name: "股权分红", isTextRow: false, noTotal: false },
      { name: "其他", isTextRow: false, noTotal: false },
      // 关键：标记为文本行+不需要合计
      { name: "目标（决策）与计划差异说明", isTextRow: true, noTotal: true },
    ],

    // 时间列表（月度）
    dynamicTimeList: ["一季度", "二季度", "三季度", "四季度"],
    // 表格数据（子组件会自动初始化，父组件可传初始值）
    tableData: [],
  };

  formData.tzhsjh = {
    // 指标列表
    indicatorList: [
      {
        name: " ",
      },
    ],

    // 时间列表（月度）- 使用动态年度
    get dynamicTimeList() {
      const year = formData.nd;
      const yearStr = `${year}年`;
      const q1Str = `${year}年（一季度）`;
      const q2Str = `${year}年（二季度）`;
      const q3Str = `${year}年（三季度）`;
      const q4Str = `${year}年（四季度）`;

      return [
        // 第一组：投资回收（决策） -> 动态年度
        {
          label: "合计",
          prop: "a1",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "政府付费",
          prop: "a2",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "政府补助",
          prop: "a3",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "使用者付费",
          prop: "a4",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "使用者欠付",
          prop: "a5",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "补贴收入",
          prop: "a6",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a7",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "资产盘活",
          prop: "a8",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "股权分红",
          prop: "a9",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "其他",
          prop: "a10",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a11",
          headerGroup: "投资回收（决策）",
          subGroup: yearStr,
        },
        // 第二组：动态年度
        { label: "合计", prop: "a12", headerGroup: yearStr },
        { label: "政府付费", prop: "a13", headerGroup: yearStr },
        { label: "政府补助", prop: "a14", headerGroup: yearStr },
        { label: "使用者付费", prop: "a15", headerGroup: yearStr },
        { label: "使用者欠付", prop: "a16", headerGroup: yearStr },
        { label: "补贴收入", prop: "a17", headerGroup: yearStr },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a18",
          headerGroup: yearStr,
        },
        { label: "资产盘活", prop: "a19", headerGroup: yearStr },
        { label: "股权分红", prop: "a20", headerGroup: yearStr },
        { label: "其他", prop: "a21", headerGroup: yearStr },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a22",
          headerGroup: yearStr,
        },
        // 第三组：动态年度（一季度）
        { label: "合计", prop: "a23", headerGroup: q1Str },
        { label: "政府付费", prop: "a24", headerGroup: q1Str },
        { label: "政府补助", prop: "a25", headerGroup: q1Str },
        { label: "使用者付费", prop: "a26", headerGroup: q1Str },
        { label: "使用者欠付", prop: "a27", headerGroup: q1Str },
        { label: "补贴收入", prop: "a28", headerGroup: q1Str },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a29",
          headerGroup: q1Str,
        },
        { label: "资产盘活", prop: "a30", headerGroup: q1Str },
        { label: "股权分红", prop: "a31", headerGroup: q1Str },
        { label: "其他", prop: "a32", headerGroup: q1Str },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a33",
          headerGroup: q1Str,
        },
        // 第四组：投资回收（计划） -> 动态年度
        {
          label: "合计",
          prop: "a34",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "政府付费",
          prop: "a35",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "政府补助",
          prop: "a36",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "使用者付费",
          prop: "a37",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "使用者欠付",
          prop: "a38",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "补贴收入",
          prop: "a39",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a40",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "资产盘活",
          prop: "a41",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "股权分红",
          prop: "a42",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "其他",
          prop: "a43",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a44",
          headerGroup: "投资回收（计划）",
          subGroup: yearStr,
        },
        // 第五组：动态年度（三季度）
        { label: "合计", prop: "a45", headerGroup: q3Str },
        { label: "政府付费", prop: "a46", headerGroup: q3Str },
        { label: "政府补助", prop: "a47", headerGroup: q3Str },
        { label: "使用者付费", prop: "a48", headerGroup: q3Str },
        { label: "使用者欠付", prop: "a49", headerGroup: q3Str },
        { label: "补贴收入", prop: "a50", headerGroup: q3Str },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a51",
          headerGroup: q3Str,
        },
        { label: "资产盘活", prop: "a52", headerGroup: q3Str },
        { label: "股权分红", prop: "a53", headerGroup: q3Str },
        { label: "其他", prop: "a54", headerGroup: q3Str },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a55",
          headerGroup: q3Str,
        },
        // 第六组：动态年度（四季度）
        { label: "合计", prop: "a56", headerGroup: q4Str },
        { label: "政府付费", prop: "a57", headerGroup: q4Str },
        { label: "政府补助", prop: "a58", headerGroup: q4Str },
        { label: "使用者付费", prop: "a59", headerGroup: q4Str },
        { label: "使用者欠付", prop: "a60", headerGroup: q4Str },
        { label: "补贴收入", prop: "a61", headerGroup: q4Str },
        {
          label: "销售回款（含房地产、水泥、新能源售电、其他生产制造收入等）",
          prop: "a62",
          headerGroup: q4Str,
        },
        { label: "资产盘活", prop: "a63", headerGroup: q4Str },
        { label: "股权分红", prop: "a64", headerGroup: q4Str },
        { label: "其他", prop: "a65", headerGroup: q4Str },
        {
          label: "目标（决策）与计划差异说明",
          isTextRow: true,
          prop: "a66",
          headerGroup: q4Str,
        },
      ];
    },
    // 表格数据（子组件会自动初始化，父组件可传初始值）
    tableData: [],
  };

  formData.tzhswcqkndgx = {
    tableData: [],
  };

  formData.tzhswcqkydgx = {
    tableData: [],
  };
};
const formData = reactive({
  nd: new Date().getFullYear().toString(), // 年度，默认当前年份
  jzymljys: {},
  jzymljsh: {},
  tzhsjc: {},
  tzhsjh: {},
  tzhswcqkndgx: {},
  tzhswcqkydgx: {},
  lastyeartzhs: null, // 去年投资回收计划数据
  projectGdxxs: [],
});

// 计算属性：动态生成年份相关的标题
const currentYear = computed(
  () => formData.nd || new Date().getFullYear().toString(),
);
const lastYear = computed(() => {
  const year = parseInt(currentYear.value);
  return (year - 1).toString();
});

// 动态标题
const dynamicTitles = computed(() => ({
  // 投资回收累计完成情况-年度更新
  yearlyUpdateTitle: `${currentYear.value}年投资回收累计完成情况-年度更新`,
  // 投资回收完成情况-年度更新
  yearlyCompletionTitle: `${currentYear.value}年投资回收完成情况（年度更新）`,
  // 投资回收完成情况-月度更新
  monthlyCompletionTitle: `${currentYear.value}年投资回收完成情况（月度更新）`,
}));

// 折叠面板默认展开项（动态计算）
const getActiveCollapseItems = () => [
  "项目基本信息",
  "出资情况",
  "合同约定权益获取",
  "分红情况",
  "投资额完成情况（万元）",
  "投资回收（决策）",
  "投资回收（计划）",
  dynamicTitles.value.yearlyUpdateTitle,
  "净现金流",
  "截止12月末累计应收",
  "截止12月末累计实收",
  "资金流出",
  "分红情况",
  dynamicTitles.value.yearlyCompletionTitle,
  dynamicTitles.value.monthlyCompletionTitle,
];

const activeCollapse = ref(getActiveCollapseItems());

// 监听年度变化，更新 activeCollapse
watch(
  () => formData.nd,
  () => {
    activeCollapse.value = getActiveCollapseItems();
  },
  { immediate: false },
);

let options = ref();

// ========== 选择项目同步名称（通用） ==========
const changeProject = (val) => {
  proxy.$post({
    url: "/api/project/getProjectFinalInfo",
    data: { id: val },
    callback: (data) => {
      loading.value = false;
      // Object.assign(formData, data);
      loading.value = false;
      formData.projectName = data.projectName || "";
      formData.sbdw = data.sbdw || "";
      formData.xmgsmc = data.xmgsmc || "";
      formData.xmkgsjyj = data.xmkgsjyj || "";
      formData.xmjgsjyj = data.xmjgsjyj || "";
      formData.xmjd = data.xmjd || "";
      formData.yynxn = data.yynxn || "";
      formData.xmjsqy = data.xmjsqy || "";
    },
    error: () => {
      loading.value = false;
      ElMessage.error("获取项目详情失败");
    },
  });
  const selectItem = projectList.value.find((item) => item.id === val);
  if (selectItem) formData.projectName = selectItem.projectName;
};
// 加载状态
const loading = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
const projectList = ref([]);
// 当前编辑的记录ID
const rcCgqyglId = ref(route.query.id || "");

// 获取项目列表
const getProjectData = (params = {}) => {
  proxy.$post({
    url: "/api/project/listProject",
    data: {
      page: 1,
      pagesize: 1000,
      attributes: [],

      menuType: "xmjc",
      ...params,
    },
    callback: (data) => {
      projectList.value = data.rows || [];
    },
  });
};

// 获取单条记录详情（编辑/预览）
const getRcCgqyglDetail = () => {
  if (!rcCgqyglId.value) return;

  loading.value = true;
  proxy.$post({
    url: "/api/project/getJsqtzhsInfo",
    data: { id: rcCgqyglId.value },
    callback: (data) => {
      loading.value = false;
      console.log(data.jzymljys, "jzymljys详情数据");
      console.log(data.jzymljsh, "jzymljsh详情数据");
      console.log(data.lastyeartzhs, "lastyeartzhs");

      // 合并其他非表格字段
      Object.assign(formData, data);
    },
  });
};

const backClick = () => {
  router.back(-1);
};

// 保存/提交表单
const saveClick = () => {
  // 基础校验
  if (!formData.projectId) {
    ElMessage.warning("请选择项目信息");
    return;
  }

  loading.value = true;
  // 区分新增/编辑
  const url = rcCgqyglId.value
    ? "/api/project/updateJsqtzhs"
    : "/api/project/createJsqtzhs";

  // 处理空数字字段：空值转为null，避免提交空字符串
  const submitData = {
    ...formData,
    projectId: formData.projectId + "",
    id: route.query.id || null,
  };

  proxy.$post({
    url: url,
    data: submitData,
    callback: (res) => {
      loading.value = false;
      ElMessage.success(rcCgqyglId.value ? "编辑成功" : "新增成功");
      router.back(-1);
    },
  });
};

// 页面初始化
onMounted(() => {
  // 获取项目列表
  getProjectData();
  options.value = JSON.parse(sessionStorage.getItem("resourceData"));
  // 如果有ID则加载详情
  if (rcCgqyglId.value) {
    getRcCgqyglDetail();
  } else {
    initTableData();
  }
});
</script>

<style scoped lang="less">
.DynamicTable-slot {
  display: flex;
  div {
    text-align: center;
    line-height: 38px;
  }
  div:nth-child(1) {
    border: 1px solid #bbc0ca;
    flex: 2;
  }
  div:nth-child(2) {
    border: 1px solid #bbc0ca;
    flex: 4;
  }
  height: 40px;
  background-color: #f5f7fa;
}
.subtotal {
  background-color: #f5f7fa;
  height: 40px;
  display: flex;
  .label {
    width: 100px;
    height: 40px;
    text-align: center;
    line-height: 40px;
    border-right: 1px solid #ebeef5;
  }
  .value {
    padding-left: 16px;
    width: 100%;
    line-height: 40px;
  }
}
</style>
