yxh
2026-10-12 0e10e10157b90002b99996914eaf1e5574924ddf
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -3,19 +3,37 @@
    <div class="boxdiv">
      <div class="top-text">{{ title }}</div>
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-row><el-col :span="5">
        <el-row
          ><el-col :span="5">
            <el-form-item label="申请日期" prop="applyTime">
              <el-date-picker style="width: 100%" v-model="form.applyTime" type="date"
                value-format="yyyy-MM-dd HH:mm:ss" placeholder="申请日期" :disabled="true">
              <el-date-picker
                style="width: 100%"
                v-model="form.applyTime"
                type="date" format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                placeholder="申请日期"
                :disabled="true"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="经办人" prop="username">
              <el-select v-model="form.username" clearable filterable allow-create ref="getReportname"
                default-first-option placeholder="请选择">
                <el-option v-for="item in personsList" :key="item.reportNo" :label="item.reportName"
                  :value="item.reportName">
              <el-select
                v-model="form.username"
                clearable
                filterable
                allow-create
                ref="getReportname"
                default-first-option
                placeholder="请选择"
              >
                <el-option
                  v-for="item in personsList"
                  :key="item.reportNo"
                  :label="item.reportName"
                  :value="item.reportName"
                >
                </el-option>
              </el-select>
            </el-form-item>
@@ -40,38 +58,87 @@
          </el-col>
          <el-col :span="5">
            <el-form-item label="报销类别" prop="costtype">
              <el-select v-model="form.costtype" value-key="value" placeholder="请选择报销人员类别">
                <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label"
                  :value="dict.value"></el-option>
              <el-select
                v-model="form.costtype"
                value-key="value"
                placeholder="请选择报销人员类别"
              >
                <el-option
                  v-for="dict in dict.type.sys_travelexpensebelong"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="捐献者" prop="infoid" v-show="form.costtype == 3||form.costtype == 4">
              <el-select v-model="form.infoid" @change="selectbaseinfo" clearable filterable placeholder="请选择捐献者">
                <el-option v-for="item in baselist" :key="item.index" :label="item.name" :value="item.infoid">
            <el-form-item
              label="捐献者"
              prop="infoid"
              v-show="form.costtype == 3 || form.costtype == 4"
            >
              <el-select
                v-model="form.infoid"
                @change="selectbaseinfo"
                clearable
                filterable
                placeholder="请选择捐献者"
              >
                <el-option
                  v-for="item in baselist"
                  :key="item.index"
                  :label="item.name"
                  :value="item.infoid"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <div style="margin-left: 10px;">
              <dict-tag
                :options="dict.type.sys_DonationStatus"
                :value="form.invoicecount"
              />
            </div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px">
          <el-col :span="5">
            <el-form-item label="审核状态" prop="flowlevel">
              <el-select v-model="form.recordstatus" placeholder="请选择审核状态" clearable :disabled="true" size="small">
                <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label"
                  :value="dict.value" />
              <el-select
                v-model="form.recordstatus"
                placeholder="请选择审核状态"
                clearable
                :disabled="true"
                size="small"
              >
                <el-option
                  v-for="dict in dict.type.sys_recordstatus"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="报销金额" prop="amountrequested">
              <el-input :disabled="true" v-model="form.amountrequested" placeholder="报销合计金额" />
              <el-input
                :disabled="true"
                v-model="form.amountrequested"
                placeholder="报销合计金额"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="大写金额" prop="bigstrmoney">
              <el-input :disabled="true" v-model="form.bigstrmoney" placeholder="报销大写金额" />
              <el-input
                :disabled="true"
                v-model="form.bigstrmoney"
                placeholder="报销大写金额"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -86,7 +153,7 @@
            <el-form-item label="出差人" prop="travelers">
              <el-select v-model="form.travelers" clearable filterable allow-create ref="getReportname"
                default-first-option placeholder="请选择" @change="getAccountinfo()">
                <el-option v-for="item in travelers" :key="item.reportNo" :label="item.reportName"
                <el-option v-for="item in travelers"  :label="item.reportName"
                  :value="item.reportName">
                </el-option>
              </el-select>
@@ -167,145 +234,324 @@
        <el-row v-if="jurisdiction">
          <!-- <el-alert title="当前为查看状态,不支持修改存储。" type="warning">
          </el-alert> -->
          <el-alert title="当前为查看状态,不支持修改存储。" type="warning" show-icon>
          <el-alert
            title="当前为查看状态,不支持修改存储。"
            type="warning"
            show-icon
          >
          </el-alert>
        </el-row>
        <el-row style="margin-top: 25px; margin-bottom: 5px">
          <el-col :span="20">报销明细</el-col>
        </el-row>
        <el-row>
          <el-table :data="rbDetails" ref="table" border max-height="800" highlight-current-row
            :summary-method="getSummaries" show-summary>
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="88">
          <el-table
            :data="rbDetails"
            ref="table"
            border
            max-height="800"
            highlight-current-row
            :summary-method="getSummaries"
            show-summary
          >
            <el-table-column
              prop="orderno"
              slot=""
              label="序号"
              align="center"
              fixed
              width="88"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
              </template>
            </el-table-column>
            <!--主键、外不展示-->
            <el-table-column prop="id" slot="" label="主键" align="center" fixed width="95" v-if="false">
            <el-table-column
              prop="id"
              slot=""
              label="主键"
              align="center"
              fixed
              width="95"
              v-if="false"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.id" placeholder="id" />
              </template>
            </el-table-column>
            <el-table-column prop="rbid" slot="" label="外键" align="center" fixed width="95" v-if="false">
            <el-table-column
              prop="rbid"
              slot=""
              label="外键"
              align="center"
              fixed
              width="95"
              v-if="false"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.rbid" placeholder="rbid" />
              </template>
            </el-table-column>
            <el-table-column prop="persontype" slot="" label="人员类别" align="center" fixed width="130">
            <el-table-column
              prop="persontype"
              slot=""
              label="人员类别"
              align="center"
              fixed
              width="130"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.persontype" value-key="value" placeholder="人员类别"
                  @change="getPersons(scope.row)">
                  <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label"
                    :value="dict.label"></el-option>
                <el-select
                  v-model="scope.row.persontype"
                  value-key="value"
                  placeholder="人员类别"
                  @change="getPersons(scope.row)"
                >
                  <el-option
                    v-for="dict in dict.type.sys_travelexpensebelong"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.label"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="personname" slot="" label="费用人员" align="center" fixed width="110">
            <el-table-column
              prop="personname"
              slot=""
              label="费用人员"
              align="center"
              fixed
              width="110"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.personname" clearable filterable allow-create default-first-option
                  placeholder="请选择">
                  <el-option v-for="item in personsSel" :key="item.id" :label="item.reportNameDesc"
                    :value="item.reportName">
                <el-select
                  v-model="scope.row.personname"
                  clearable
                  filterable
                  allow-create
                  default-first-option
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in personsSel"
                    :key="item.id"
                    :label="item.reportNameDesc"
                    :value="item.reportName"
                  >
                  </el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="starttime" slot="" label="开始日期" fixed align="center" width="150">
            <el-table-column
              prop="starttime"
              slot=""
              label="开始日期"
              fixed
              align="center"
              width="150"
            >
              <template slot-scope="scope">
                <el-date-picker :picker-options="{
                  disabledDate: time => {
                    if (scope.row.endtime) {
                      return (
                        time.getTime() >
                        new Date(scope.row.endtime.replace(/-/g, '/'))
                      );
                <el-date-picker
                  :picker-options="{
                    disabledDate: time => {
                      if (scope.row.endtime) {
                        return (
                          time.getTime() >
                          new Date(scope.row.endtime.replace(/-/g, '/'))
                        );
                      }
                    }
                  }
                }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" @blur="getdays(scope.row)">
                  }"
                  clearable
                  size="small"
                  style="width: 100%"
                  v-model="scope.row.starttime"
                  type="date" format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd"
                  placeholder="开始日期"
                  @blur="getdays(scope.row)"
                >
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="endtime" slot="" label="结束日期" align="center" fixed width="150">
            <el-table-column
              prop="endtime"
              slot=""
              label="结束日期"
              align="center"
              fixed
              width="150"
            >
              <template slot-scope="scope">
                <el-date-picker :picker-options="{
                  disabledDate: time => {
                    if (scope.row.starttime) {
                      return (
                        time.getTime() <
                        new Date(scope.row.starttime.replace(/-/g, '/'))
                      );
                <el-date-picker
                  :picker-options="{
                    disabledDate: time => {
                      if (scope.row.starttime) {
                        return (
                          time.getTime() <
                          new Date(scope.row.starttime.replace(/-/g, '/'))
                        );
                      }
                    }
                  }
                }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="结束日期" @blur="getdays(scope.row)">
                  }"
                  clearable
                  size="small"
                  style="width: 100%"
                  v-model="scope.row.endtime"
                  type="date" format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd"
                  placeholder="结束日期"
                  @blur="getdays(scope.row)"
                >
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="departure" slot="" label="出发地" align="center" width="100">
            <el-table-column
              prop="departure"
              slot=""
              label="出发地"
              align="center"
              width="100"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.departure" placeholder="出发地" />
              </template>
            </el-table-column>
            <el-table-column label="到达地" prop="destination" align="center" width="140">
            <el-table-column
              label="到达地"
              prop="destination"
              align="center"
              width="140"
            >
              <template slot-scope="scope">
                <!--  <el-input v-model="scope.row.destination" placeholder="到达地" @blur="getallowance(scope.row)" /> -->
                <el-select filterable allow-create v-model="scope.row.destination" value-key="value" placeholder="到达地"
                  @change="getallowance(scope.row)">
                  <el-option v-for="dict in dict.type.sys_area_name" :key="dict.value" :label="dict.label"
                    :value="dict.label"></el-option>
                <el-select
                  filterable
                  allow-create
                  v-model="scope.row.destination"
                  value-key="value"
                  placeholder="到达地"
                  @change="getallowance(scope.row)"
                >
                  <el-option
                    v-for="dict in dict.type.sys_area_name"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.label"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="days" label="天数" width="100" align="center">
            <el-table-column
              prop="days"
              label="天数"
              width="100"
              align="center"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.days" @blur="getallowance(scope.row)" placeholder="天数" />
                <el-input
                  v-model="scope.row.days"
                  @blur="getallowance(scope.row)"
                  placeholder="天数"
                />
              </template>
            </el-table-column>
            <el-table-column prop="traffictype" label="出发交通工具" align="center" width="100">
            <el-table-column
              prop="traffictype"
              label="出发交通工具"
              align="center"
              width="100"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.traffictype" placeholder="出发交通工具">
                  <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label"
                    :value="dict.label"></el-option>
                <el-select
                  v-model="scope.row.traffictype"
                  placeholder="出发交通工具"
                >
                  <el-option
                    v-for="dict in dict.type.sys_traffictype"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.label"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="traffictype2" label="返回交通工具" align="center" width="100">
            <el-table-column
              prop="traffictype2"
              label="返回交通工具"
              align="center"
              width="100"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.traffictype2" placeholder="返回交通工具">
                  <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label"
                    :value="dict.label"></el-option>
                <el-select
                  v-model="scope.row.traffictype2"
                  placeholder="返回交通工具"
                >
                  <el-option
                    v-for="dict in dict.type.sys_traffictype"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.label"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="trafficexpense" label="交通费" align="center" width="120">
            <el-table-column
              prop="trafficexpense"
              label="交通费"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                " />
                <el-input
                  v-model="scope.row.trafficexpense"
                  placeholder="交通费"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                />
              </template>
            </el-table-column>
            <el-table-column prop="cityfee" label="市内交通费" align="center" width="120">
            <el-table-column
              prop="cityfee"
              label="市内交通费"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.cityfee" placeholder="市内交通费" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                ">{{ Number(scope.row.cityfee).toFixed(2) }}
                <el-input
                  v-model="scope.row.cityfee"
                  placeholder="市内交通费"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                  >{{ Number(scope.row.cityfee).toFixed(2) }}
                </el-input>
              </template>
            </el-table-column>
            <el-table-column prop="hotelexpense" label="住宿费" align="center" width="120">
            <el-table-column
              prop="hotelexpense"
              label="住宿费"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                " />
                <el-input
                  v-model="scope.row.hotelexpense"
                  placeholder="住宿费"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                />
              </template>
            </el-table-column>
@@ -327,55 +573,118 @@
                />
              </template>
            </el-table-column> -->
            <el-table-column prop="foodallowance" label="伙食补助" align="center" width="120">
            <el-table-column
              prop="foodallowance"
              label="伙食补助"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                " />
                <el-input
                  v-model="scope.row.foodallowance"
                  placeholder="伙食费补助"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                />
              </template>
            </el-table-column>
            <el-table-column prop="otherexpense" label="公杂费补助" align="center" width="120">
            <el-table-column
              prop="otherexpense"
              label="公杂费补助"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.otherexpense" placeholder="杂费" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                " />
                <el-input
                  v-model="scope.row.otherexpense"
                  placeholder="杂费"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                />
              </template>
            </el-table-column>
            <el-table-column prop="otherfeeamount" label="其他费用" align="center" width="120">
            <el-table-column
              prop="otherfeeamount"
              label="其他费用"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur="
                  val => {
                    sumRowFee(scope.row);
                  }
                " />
                <el-input
                  v-model="scope.row.otherfeeamount"
                  placeholder="其他费用"
                  @blur="
                    val => {
                      sumRowFee(scope.row);
                    }
                  "
                />
              </template>
            </el-table-column>
            <el-table-column prop="departure" slot="" label="其他费用说明" align="center" width="120">
            <el-table-column
              prop="departure"
              slot=""
              label="其他费用说明"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.otherfeedesc" placeholder="其他费用说明" />
                <el-input
                  v-model="scope.row.otherfeedesc"
                  placeholder="其他费用说明"
                />
              </template>
            </el-table-column>
            <el-table-column prop="total" label="合计" align="center" width="110" fixed="right">
            <el-table-column
              prop="total"
              label="合计"
              align="center"
              width="110"
              fixed="right"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.total" placeholder="合计" />
              </template>
            </el-table-column>
            <el-table-column fixed="right" label="操作" align="center" width="120">
            <el-table-column
              fixed="right"
              label="操作"
              align="center"
              width="120"
            >
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="addDetailRow(scope.$index)"
                  v-if="operationType == 'edit'">新增</el-button>
                <el-button @click.native.prevent="
                  deleteDetailRow(scope.$index, rbDetails, scope.row)
                  " type="text" size="small" v-if="operationType == 'edit'">删除</el-button>
                <el-button @click.native.prevent="
                  Filepopup(scope.$index, rbDetails, scope.row)
                  " type="text" size="small">票据</el-button>
                <el-button
                  type="text"
                  size="mini"
                  @click="addDetailRow(scope.$index)"
                  v-if="operationType == 'edit'"
                  >新增</el-button
                >
                <el-button
                  @click.native.prevent="
                    deleteDetailRow(scope.$index, rbDetails, scope.row)
                  "
                  type="text"
                  size="small"
                  v-if="operationType == 'edit'"
                  >删除</el-button
                >
                <el-button
                  @click.native.prevent="
                    Filepopup(scope.$index, rbDetails, scope.row)
                  "
                  type="text"
                  size="small"
                  >票据</el-button
                >
              </template>
            </el-table-column>
          </el-table>
@@ -384,60 +693,154 @@
          <el-col :span="20">打款明细</el-col>
        </el-row>
        <el-row style="margin-top: 5px">
          <el-table :data="rbPayees" border max-height="400" highlight-current-row :summary-method="getSummaries"
            show-summary>
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="65">
          <el-table
            :data="rbPayees"
            border
            max-height="400"
            highlight-current-row
            :summary-method="getSummaries"
            show-summary
          >
            <el-table-column
              prop="orderno"
              slot=""
              label="序号"
              align="center"
              fixed
              width="65"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
              </template>
            </el-table-column>
            <!--主键、外键不展示-->
            <el-table-column prop="id" slot="" label="主键" align="center" fixed width="95" v-if="false">
            <el-table-column
              prop="id"
              slot=""
              label="主键"
              align="center"
              fixed
              width="95"
              v-if="false"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.id" placeholder="id" />
              </template>
            </el-table-column>
            <el-table-column prop="rbid" slot="" label="外键" align="center" fixed width="95" v-if="false">
            <el-table-column
              prop="rbid"
              slot=""
              label="外键"
              align="center"
              fixed
              width="95"
              v-if="false"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.rbid" placeholder="rbid" />
              </template>
            </el-table-column>
            <el-table-column prop="persontype" slot="" label="收款人类别" align="center" fixed width="150">
            <el-table-column
              prop="persontype"
              slot=""
              label="收款人类别"
              align="center"
              fixed
              width="150"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.persontype" value-key="value" placeholder="收款人类别"
                  @change="getPersons(scope.row)">
                  <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label"
                    :value="dict.label"></el-option>
                <el-select
                  v-model="scope.row.persontype"
                  value-key="value"
                  placeholder="收款人类别"
                  @change="getPersons(scope.row)"
                >
                  <el-option
                    v-for="dict in dict.type.sys_travelexpensebelong"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.label"
                  ></el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="personname" slot="" label="收款人" align="center" fixed width="200">
            <el-table-column
              prop="personname"
              slot=""
              label="收款人"
              align="center"
              fixed
              width="200"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.personname" clearable filterable allow-create ref="getReportname"
                  default-first-option placeholder="请选择" @change="getAccountinfo2(scope.row, scope.row.persontype)">
                  <el-option v-for="item in personsSel" :key="item.id" :label="item.reportNameDesc" :value="item.id">
                <el-select
                  v-model="scope.row.personname"
                  clearable
                  filterable
                  allow-create
                  ref="getReportname"
                  default-first-option
                  placeholder="请选择"
                  @change="getAccountinfo2(scope.row, scope.row.persontype)"
                >
                  <el-option
                    v-for="item in personsSel"
                    :key="item.id"
                    :label="item.reportNameDesc"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </template>
            </el-table-column>
            <el-table-column prop="bankname" slot="" label="收款银行" align="center" fixed width="250">
            <el-table-column
              prop="bankname"
              slot=""
              label="收款银行"
              align="center"
              fixed
              width="250"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.bankname" placeholder="收款银行" />
              </template>
            </el-table-column>
            <el-table-column prop="bankcardno" slot="" label="银行账号" align="center" fixed width="200">
            <el-table-column
              prop="bankcardno"
              slot=""
              label="银行账号"
              align="center"
              fixed
              width="200"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.bankcardno" placeholder="银行账号" />
                <el-input
                  v-model="scope.row.bankcardno"
                  placeholder="银行账号"
                />
              </template>
            </el-table-column>
            <el-table-column prop="amount" slot="" label="打款金额" align="center" fixed width="130">
            <el-table-column
              prop="amount"
              slot=""
              label="打款金额"
              align="center"
              fixed
              width="130"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="打款金额" />
              </template>
            </el-table-column>
            <el-table-column prop="remark" slot="" label="请款说明" align="center" fixed>
            <el-table-column
              prop="remark"
              slot=""
              label="请款说明"
              align="center"
              fixed
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.remark" placeholder="说明" />
              </template>
@@ -445,47 +848,85 @@
            <!--
            <el-table-column prop="paiddate" slot="" label="打款日期" fixed align="center" width="150">
              <template slot-scope="scope">
                <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="打款日期" :disabled="true">
                <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd" placeholder="打款日期" :disabled="true">
                </el-date-picker>
              </template>
            </el-table-column>-->
            <el-table-column label="操作" align="center" width="100" v-if="operationType == 'edit'">
            <el-table-column
              label="操作"
              align="center"
              width="100"
              v-if="operationType == 'edit'"
            >
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="addPayeeRow(scope.$index)">新增</el-button>
                <el-button @click.native.prevent="
                  deletePayeeRow(scope.$index, rbPayees, scope.row)
                  " type="text" size="small">
                <el-button
                  type="text"
                  size="mini"
                  @click="addPayeeRow(scope.$index)"
                  >新增</el-button
                >
                <el-button
                  @click.native.prevent="
                    deletePayeeRow(scope.$index, rbPayees, scope.row)
                  "
                  type="text"
                  size="small"
                >
                  删除
                </el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-row>
        <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType != 'edit'">
        <el-row
          style="margin-top: 25px; margin-bottom: 5px"
          v-if="operationType != 'edit'"
        >
          <el-col :span="20">审核记录</el-col>
        </el-row>
        <el-row v-if="operationType != 'add'">
          <el-table :data="fundflowList" border>
            <el-table-column label="审核日期" align="center" width="200" prop="createTime" />
            <el-table-column label="审核人" align="center" width="150" prop="checkusername" />
            <el-table-column label="审核结果" align="center" width="200" prop="flowconclusion">
            <el-table-column
              label="审核日期"
              align="center"
              width="200"
              prop="createTime"
            />
            <el-table-column
              label="审核人"
              align="center"
              width="150"
              prop="checkusername"
            />
            <el-table-column
              label="审核结果"
              align="center"
              width="200"
              prop="flowconclusion"
            >
              <template slot-scope="scope">
                <span v-if="scope.row.flowconclusion == 1">通过</span>
                <span v-if="scope.row.flowconclusion == 2">不通过</span>
              </template>
            </el-table-column>
            <el-table-column label="审核备注" align="center" prop="flowcontent" />
            <el-table-column
              label="审核备注"
              align="center"
              prop="flowcontent"
            />
          </el-table>
        </el-row>
        <el-row style="margin-top: 25px; margin-bottom: 5px"
          v-if="operationType == 'check' && userprofile.nickName == '陈慕华'">
        <el-row
          style="margin-top: 25px; margin-bottom: 5px"
          v-if="operationType == 'check' && userprofile.nickName == '陈慕华'"
        >
          <el-col :span="12">
            <el-form-item label="预审材料" prop="infoid">
              <el-radio-group v-model="form.checkstatus" align="left">
                <el-radio label="1">待申请材料</el-radio>
                <el-radio label="2">审核通过等待邮寄纸质材料</el-radio>
                <el-radio label="3">已收到报销材料</el-radio>
                <el-radio label="1">待申请</el-radio>
                <el-radio label="2">审核通过等待纸质材料</el-radio>
                <el-radio label="3">已收到纸质材料</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
@@ -500,7 +941,10 @@
          </el-col>
        </el-row>
        <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType == 'check'">
        <el-row
          style="margin-top: 25px; margin-bottom: 5px"
          v-if="operationType == 'check'"
        >
          <el-col :span="7">
            <el-form-item label="审核结果" align="left">
              <el-radio-group v-model="checkObj.flowlevelone" align="left">
@@ -519,15 +963,30 @@
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm" v-if="operationType == 'edit' || userprofile.nickName == '陈慕华'">保
          存</el-button>
        <el-button type="primary" @click="checksubmit" v-if="operationType == 'check'">提交审核</el-button>
        <el-button
          type="primary"
          @click="submitForm"
          v-if="operationType == 'edit' || userprofile.nickName == '陈慕华'"
          >保 存</el-button
        >
        <el-button
          type="primary"
          @click="checksubmit"
          v-if="operationType == 'check'"
          >提交审核</el-button
        >
        <!--<el-button @click="cancel">退 出</el-button>-->
      </div>
    </div>
    <el-dialog v-dialogDrags :modal="false" :close-on-click-modal="false" :title="pdftitle" :visible.sync="pdfVisible"
      width="60%">
    <el-dialog
      v-dialogDrags
      :modal="false"
      :close-on-click-modal="false"
      :title="pdftitle"
      :visible.sync="pdfVisible"
      width="60%"
    >
      <div style="margin-bottom: 10px;">
        <el-table :data="tableDatatop" style="width: 100%">
          <el-table-column prop="orderno" label="序号"> </el-table-column>
@@ -557,27 +1016,66 @@
          </el-table-column>
        </el-table>
      </div>
      <el-alert title="新上传文件需在提交保存后才可进行案例关联,否则视为放弃" type="error" show-icon close-text="知道了">
      <el-alert
        title="新上传文件需在提交保存后才可进行案例关联,否则视为放弃"
        type="error"
        show-icon
        close-text="知道了"
      >
      </el-alert>
      <el-tabs style="margin-top: 20px;" v-model="activeName" type="border-card" @tab-click="handleClick">
      <el-tabs
        style="margin-top: 20px;"
        v-model="activeName"
        type="border-card"
        @tab-click="handleClick"
      >
        <el-tab-pane label="普通附件" :name="1">
          <div class="pdfimg">
            <div class="box-pdf">
              <div>
                <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto"
                  :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                    uploadSccess(response, file, fileList)
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
                  :on-remove="remove" accept="image/*,.pdf">
                <el-upload
                  size="mini"
                  class="upload-demo"
                  :action="uploadFileUrl"
                  :file-list="fileListto"
                  :show-file-list="false"
                  multiple
                  drag
                  :headers="headers"
                  :on-success="
                    (response, file, fileList) =>
                      uploadSccess(response, file, fileList)
                  "
                  :on-preview="downFile"
                  :disabled="operationType == 'detail'"
                  :on-error="handleUploadError"
                  :on-remove="remove"
                  accept="image/*,.pdf"
                >
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">
                    将票据拖到此处,或
                    <em><el-button :disabled="operationType == 'detail'" size="small"
                        type="primary">点击上传</el-button></em>
                    <em
                      ><el-button
                        :disabled="operationType == 'detail'"
                        size="small"
                        type="primary"
                        >点击上传</el-button
                      ></em
                    >
                  </div>
                </el-upload>
                <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
                  <el-table-column prop="name" :show-overflow-tooltip="true" label="名称">
                <el-table
                  :data="fileListto"
                  @row-click="downFile"
                  style="width: 100%"
                  height="400"
                >
                  <el-table-column
                    prop="name"
                    :show-overflow-tooltip="true"
                    label="名称"
                  >
                    <template slot-scope="scope">
                      <i style="color:#409EFF" class=" el-icon-s-order" />{{
                        scope.row.name
@@ -585,30 +1083,55 @@
                    </template>
                  </el-table-column>
                  <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="功能">
                  <el-table-column
                    prop="name"
                    width="180"
                    :show-overflow-tooltip="true"
                    label="功能"
                  >
                    <template slot-scope="scope">
                      <el-button type="danger" size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)">删除</el-button>
                      <el-button type="primary" size="mini"
                        @click.native.prevent.stop="moveupdowfile(scope.row)">上移</el-button>
                      <el-button
                        type="danger"
                        size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)"
                        >删除</el-button
                      >
                      <el-button
                        type="primary"
                        size="mini"
                        @click.native.prevent.stop="moveupdowfile(scope.row)"
                        >上移</el-button
                      >
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </div>
            <div v-if="this.previewpdf && pdfimgsrcList.length" class="pdfimgmin">
            <div
              v-if="this.previewpdf && pdfimgsrcList.length"
              class="pdfimgmin"
            >
              <!-- <img :src="pdfimg" /> -->
              <!-- <el-image
                style="width: 95%; height: 90%"
                :src="pdfimg"
                :preview-src-list="pdfimgsrcList" -->
                :preview-src-list="pdfimgsrcList"
              > -->
              <el-image
                ref="imagePreview"
                style="width: 95%; height: 90%"
                :src="pdfimg"
                @click="handleImageClick(initialIndex)"
              >
              <el-image ref="imagePreview" style="width: 95%; height: 90%" :src="pdfimg"
                @click="handleImageClick(initialIndex)">
              </el-image>
              <custom-image-viewer :url-list="pdfimgsrcList" :initial-index="currentIndex" :visible="viewerVisible"
                @update:visible="viewerVisible = $event" @close="handleViewerClose" />
              <custom-image-viewer
                :url-list="pdfimgsrcList"
                :initial-index="currentIndex"
                :visible="viewerVisible"
                @update:visible="viewerVisible = $event"
                @close="handleViewerClose"
              />
              <!-- <div slot="error" class="image-slot">
              <i class="el-icon-picture-outline"></i>
            </div> -->
@@ -621,20 +1144,49 @@
          <div class="pdfimg">
            <div class="box-pdf">
              <div>
                <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="invoicefileList"
                  :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                    uploadSccess(response, file, fileList)
                    " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
                  :on-remove="remove" accept="image/*,.pdf">
                <el-upload
                  size="mini"
                  class="upload-demo"
                  :action="uploadFileUrl"
                  :file-list="invoicefileList"
                  :show-file-list="false"
                  multiple
                  drag
                  :headers="headers"
                  :on-success="
                    (response, file, fileList) =>
                      uploadSccess(response, file, fileList)
                  "
                  :on-preview="downFile"
                  :disabled="operationType == 'detail'"
                  :on-error="handleUploadError"
                  :on-remove="remove"
                  accept="image/*,.pdf"
                >
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">
                    将发票文件拖到此处,或
                    <em><el-button :disabled="operationType == 'detail'" size="small"
                        type="primary">点击上传</el-button></em>
                    <em
                      ><el-button
                        :disabled="operationType == 'detail'"
                        size="small"
                        type="primary"
                        >点击上传</el-button
                      ></em
                    >
                  </div>
                </el-upload>
                <el-table :data="invoicefileListto" @row-click="downFile" style="width: 100%" height="400">
                  <el-table-column prop="name" :show-overflow-tooltip="true" label="名称">
                <el-table
                  :data="invoicefileListto"
                  @row-click="downFile"
                  style="width: 100%"
                  height="400"
                >
                  <el-table-column
                    prop="name"
                    :show-overflow-tooltip="true"
                    label="名称"
                  >
                    <template slot-scope="scope">
                      <i style="color:#409EFF" class=" el-icon-s-order" />{{
                        scope.row.name
@@ -642,26 +1194,49 @@
                    </template>
                  </el-table-column>
                  <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="功能">
                  <el-table-column
                    prop="name"
                    width="180"
                    :show-overflow-tooltip="true"
                    label="功能"
                  >
                    <template slot-scope="scope">
                      <el-button type="primary" size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)">删除</el-button>
                      <el-button type="primary" size="mini"
                        @click.native.prevent.stop="moveupdowfile(scope.row)">上移</el-button>
                      <el-button
                        type="primary"
                        size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)"
                        >删除</el-button
                      >
                      <el-button
                        type="primary"
                        size="mini"
                        @click.native.prevent.stop="moveupdowfile(scope.row)"
                        >上移</el-button
                      >
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </div>
            <div v-if="this.previewpdf && invoicepdfimgsrcList.length" class="pdfimgmin">
            <div
              v-if="this.previewpdf && invoicepdfimgsrcList.length"
              class="pdfimgmin"
            >
              <!-- <img :src="pdfimg" /> -->
              <el-image style="width: 95%; height: 90%" :src="invoicepdfimg"
                @click="invoicehandleImageClick(initialIndex)">
              <el-image
                style="width: 95%; height: 90%"
                :src="invoicepdfimg"
                @click="invoicehandleImageClick(initialIndex)"
              >
              </el-image>
              <custom-image-viewer :url-list="invoicepdfimgsrcList" :initial-index="invoicecurrentIndex"
                :visible="invoiceviewerVisible" @update:visible="invoiceviewerVisible = $event"
                @close="invoicehandleViewerClose" />
              <custom-image-viewer
                :url-list="invoicepdfimgsrcList"
                :initial-index="invoicecurrentIndex"
                :visible="invoiceviewerVisible"
                @update:visible="invoiceviewerVisible = $event"
                @close="invoicehandleViewerClose"
              />
            </div>
            <div v-else class="pdfimgmins">{{ hintitle }}</div>
          </div>
@@ -669,10 +1244,14 @@
      </el-tabs>
    </el-dialog>
    <el-dialog title="提示" :visible.sync="Savereminder" width="30%">
      <el-alert :title="'您已添加' +
        totalquantity +
        '条数据,为防止数据丢失是否提交保存再继续添加。'
        " type="warning">
      <el-alert
        :title="
          '您已添加' +
            totalquantity +
            '条数据,为防止数据丢失是否提交保存再继续添加。'
        "
        type="warning"
      >
      </el-alert>
      <span slot="footer" class="dialog-footer">
        <el-button @click="unsave">取 消</el-button>
@@ -703,7 +1282,8 @@
  exportReimbursement,
  getdownload,
  checkfund,
  fundSubmit
  fundSubmit,
  listbypowerone
} from "@/api/project/reimbursement";
import {
  addReimbursementdetail,
@@ -725,6 +1305,7 @@
import { listReportname, listUser } from "@/api/project/organization";
import { getToken } from "@/utils/auth";
import debounce from "lodash/debounce";
import { moneySum, moneyAdd, moneyRound } from "@/utils/money";
export default {
  components: {
    Treeselect,
@@ -741,7 +1322,8 @@
    "sys_recordstatus",
    "sys_travelexpensebelong",
    "sys_traffictype",
    "sys_area_name"
    "sys_area_name",
    "sys_DonationStatus"
  ],
  data() {
    return {
@@ -864,15 +1446,15 @@
      baselisttages: [
        {
          id: 1,
          name: "待申请材料"
          name: "待申请"
        },
        {
          id: 2,
          name: "审核通过等待邮寄纸质材料"
          name: "预审通过等待纸质材料"
        },
        {
          id: 3,
          name: "已收到报销材料"
          name: "已收到纸质材料"
        }
      ],
      baselist: [],
@@ -912,6 +1494,8 @@
        flowconclusion: null,
        fundid: null
      },
      //连续审批:待审批列表
      pendingList: [],
      jurisdiction: false,
      //保存按钮控制
@@ -1127,6 +1711,15 @@
                name: file.name,
                url: URL.createObjectURL(blob)
              });
              // console.log(file.response.url);
              // console.log(file);
              this.pdfimgsrcList.push(file.response.url);
              this.fileListto.push({
                name: file.response.fileName,
                url: file.response.url
              });
              console.log(URL.createObjectURL(blob), "ur转换");
            })
            .catch(error => {
              console.error("Error loading image", error);
@@ -1554,9 +2147,9 @@
          if (tempStr == "杭州") {
            row.otherexpense = "";
          } else if (
            tempStr == "杭州-桐庐" ||
            tempStr == "杭州-建德" ||
            tempStr == "杭州-淳安"
            tempStr.includes("桐庐") ||
          tempStr.includes("建德") ||
          tempStr.includes("淳安")
          ) {
            row.otherexpense = (parseInt(row.days) * 60).toString();
          } else {
@@ -1678,10 +2271,22 @@
        if (item.id == this.form.infoid) {
          this.form.donorno = item.donorno;
          this.form.donorname = item.name;
          // 新增:将捐献者的 recordstate 赋值到 invoicecount
          if (item.recordstate !== undefined && item.recordstate !== null) {
            this.form.invoicecount = item.recordstate.toString();
          } else {
            this.form.invoicecount = ""; // 如果 recordstate 为空,清空字段
          }
        }
      });
    },
    // 添加清除方法
    clearDonatorInfo() {
      this.form.donorno = "";
      this.form.donorname = "";
      this.form.invoicecount = ""; // 清空 invoicecount
    },
    onpick(e) {
      // console.log(e,this.value1)
    },
@@ -1933,7 +2538,7 @@
            .map(item => ({ url: item, name: item }))
          : [];
        //审核状态
        this.form.recordstatus = response.data.recordstatus + "";
        this.form.recordstatus = this.toStatusText(response.data.recordstatus, "-1");
        let ids = response.data.id;
        let listFundflowparams = {
          fundid: ids,
@@ -1944,14 +2549,19 @@
        });
        //报销明细
        getReimbursementdetaillist(ids).then(res => {
          this.rbDetails = res.data;
          //合计费用
          // if (this.rbDetails.length > 0) this.sumTotalFee();
          for (let i = 0; i < this.rbDetails.length; i++) {
            this.sumRowFee(this.rbDetails[i]);
          }
        });
        getReimbursementdetaillist(ids)
          .then(res => {
            this.rbDetails = this.normalizeDetailList(res);
            //合计费用
            // if (this.rbDetails.length > 0) this.sumTotalFee();
            for (let i = 0; i < this.rbDetails.length; i++) {
              this.sumRowFee(this.rbDetails[i]);
            }
          })
          .catch(err => {
            this.rbDetails = [];
            console.error("获取报销明细失败,id=" + ids, err);
          });
        //付款信息
        this.queryParamsPayee.rbid = ids;
@@ -1974,12 +2584,21 @@
      this.reset();
      this.open = true;
      const id = ids || this.ids;
      this.checkObj.fundid = id;
      // 重置审批信息,避免上一单的审批结果带入下一单
      this.checkObj = {
        flowlevelone: null,
        flowconclusion: null,
        fundid: id
      };
      // 连续审批:加载当前用户的待审批列表
      this.getPendingList();
      getReimbursement(id).then(response => {
        this.form = response.data;
        console.log(this.form.checkstatus, "checkstatus");
        this.form.checkstatus = this.form.checkstatus.toString();
        // checkstatus 在库中可为空(预审状态尚未产生时),直接 toString 会抛 TypeError 中断后续取数
        this.form.checkstatus = this.toStatusText(this.form.checkstatus, "-1");
        //票据
        this.fileListto = this.form.annexfiles
@@ -2006,16 +2625,22 @@
        });
        //报销明细
        getReimbursementdetaillist(ids).then(res => {
          this.rbDetails = res.data;
          console.log(this.rbDetails);
        getReimbursementdetaillist(ids)
          .then(res => {
            this.rbDetails = this.normalizeDetailList(res);
            console.log("报销明细行数:", this.rbDetails.length, this.rbDetails);
          //合计费用
          // if (this.rbDetails.length > 0) this.sumTotalFee();
          for (let i = 0; i < this.rbDetails.length; i++) {
            this.sumRowFee(this.rbDetails[i]);
          }
        });
            //合计费用
            // if (this.rbDetails.length > 0) this.sumTotalFee();
            for (let i = 0; i < this.rbDetails.length; i++) {
              this.sumRowFee(this.rbDetails[i]);
            }
          })
          .catch(err => {
            // 取数失败时不再静默:置空并打出原因,避免“接口有数据但页面空白”无从排查
            this.rbDetails = [];
            console.error("获取报销明细失败,id=" + ids, err);
          });
        //付款信息
        this.queryParamsPayee.rbid = ids;
@@ -2064,18 +2689,73 @@
        if (res.code == 200) {
          this.$modal.closeLoading();
          this.$modal.msgSuccess("提交审核成功!");
          // 关闭窗口
          this.$store.dispatch("tagsView/delView", this.$route);
          this.$router.go(-1);
          // 连续审批:询问是否继续审批下一单
          this.continueOrExit();
        } else {
          this.$modal.closeLoading();
          if (res.msg) {
            this.$modal.msgError("操作失误");
          } else {
            this.$modal.msgError(res.msg);
          }
          this.$modal.msgError(res.msg || "操作失败");
        }
      });
    },
    // 获取当前用户待审批列表(用于连续审批)
    getPendingList() {
      listbypowerone({
        pageNum: 1,
        pageSize: 1000,
        CHECKFLAG: 1
      })
        .then(res => {
          this.pendingList = res.rows || [];
        })
        .catch(() => {
          this.pendingList = [];
        });
    },
    // 审批完成后:询问是否继续审批下一单
    continueOrExit() {
      const list = this.pendingList || [];
      const curId = String(this.checkObj.fundid);
      const idx = list.findIndex(item => String(item.id) === curId);
      let next = null;
      if (idx > -1 && idx + 1 < list.length) {
        next = list[idx + 1];
      } else {
        // 当前已是末位(或从中间开始),取剩余列表中第一条非当前单据
        next = list.find(item => String(item.id) !== curId) || null;
      }
      if (next) {
        this.$confirm("审批已完成,是否继续审批下一张待审批单据?", "提示", {
          confirmButtonText: "继续审批",
          cancelButtonText: "返回列表",
          type: "info"
        })
          .then(() => {
            // 直接在当前页面加载下一张待审批单据
            this.handleCheck(next.id);
            // 同步更新地址栏,避免刷新后回到上一单
            this.$router
              .replace({
                path: this.$route.path,
                query: { id: next.id, pos: 4 }
              })
              .catch(() => {});
          })
          .catch(() => {
            this.exitToPage();
          });
      } else {
        this.$modal.msgSuccess("已无待审批单据,返回列表");
        this.exitToPage();
      }
    },
    // 返回列表页
    exitToPage() {
      this.$store.dispatch("tagsView/delView", this.$route);
      this.$router.go(-1);
    },
    /** 提交保存按钮 */
@@ -2083,7 +2763,7 @@
      this.$refs["form"].validate(valid => {
        if (valid) {
          //票据文件处理
          // const addnumber = new Decimal(this.rbPayees.reduce((amount, item) => amount + Number(item.amount), 0 ));
          // const addnumber = new Decimal(this.rbPayees.reduce((amount, item) => amount + Number(item.amount), 0 ));
          // console.log(this.form.amountrequested,addnumber);
          // //校验请款金额合计是否等于报销单金额
          // if (this.form.amountrequested != addnumber) {
@@ -2579,108 +3259,71 @@
        });
    },
    //计算一行合计
    //计算当前行报销内容费用合计
    sumRowFee(row) {
      let totalFee = 0;
      if (!isNaN(parseFloat(row.trafficexpense))) {
        totalFee += parseFloat(row.trafficexpense);
    /**
     * 状态类字段转字符串(接口可能返回 null)。
     *
     * 背景:checkstatus、recordstatus 等在库中可空,早期直接调用 .toString()
     * 会抛 TypeError 并中断其后的取数逻辑,表现为“接口已有数据但明细区空白”。
     *
     * @param {*} value 原始状态值
     * @param {string} fallback 为空时的兜底值
     * @returns {string}
     */
    toStatusText(value, fallback) {
      if (value === null || value === undefined || value === "") {
        return fallback;
      }
      if (!isNaN(parseFloat(row.cityfee))) {
        totalFee += parseFloat(row.cityfee);
      }
      if (!isNaN(parseFloat(row.hotelexpense))) {
        totalFee += parseFloat(row.hotelexpense);
      }
      if (!isNaN(parseFloat(row.otherexpense))) {
        totalFee += parseFloat(row.otherexpense);
      }
      if (!isNaN(parseFloat(row.foodexpenses))) {
        totalFee += parseFloat(row.foodexpenses);
      }
      if (!isNaN(parseFloat(row.foodallowance))) {
        totalFee += parseFloat(row.foodallowance);
      }
      if (!isNaN(parseFloat(row.otherfeeamount))) {
        totalFee += parseFloat(row.otherfeeamount);
      }
      row.total = totalFee.toFixed(2);
      return String(value);
    },
      /*
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].trafficexpense))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].trafficexpense);
    /**
     * 统一从明细接口响应中取出数组。
     *
     * 正常为 AjaxResult 的 data 数组;若后端改为分页结构(total + rows),
     * res.data 将不是数组,直接绑定到 el-table 会导致“有数据但不显示”。
     *
     * @param {Object} res 接口原始响应
     * @returns {Array} 明细数组(异常时为空数组,不会让表格拿到非数组)
     */
    normalizeDetailList(res) {
      if (!res) {
        return [];
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].cityfee))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].cityfee);
      if (Array.isArray(res.data)) {
        return res.data;
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].hotelexpense))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].hotelexpense);
      if (Array.isArray(res.rows)) {
        return res.rows;
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherexpense))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].otherexpense);
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodexpenses))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].foodexpenses);
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodallowance))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].foodallowance);
      }
      if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherfeeamount))) {
        totalFee += parseFloat(this.rbDetails[rowIndex].otherfeeamount);
      }
      this.rbDetails[rowIndex].total = parseFloat(totalFee).toFixed(2);
      this.$set(this.rbDetails, rowIndex, this.rbDetails[rowIndex]);
      */
      return [];
    },
    //计算一行合计
    //计算当前行报销内容费用合计(金额一律走精确运算)
    sumRowFee(row) {
      const totalFee = moneySum([
        row.trafficexpense,
        row.cityfee,
        row.hotelexpense,
        row.otherexpense,
        row.foodexpenses,
        row.foodallowance,
        row.otherfeeamount
      ]);
      row.total = moneyRound(totalFee).toFixed(2);
      //重新计算整个报销单的合计
      this.sumTotalFee();
    },
    //计算费用合计
    sumTotalFee() {
      let allSum = 0;
      //捐献者家属费用
      if (!isNaN(parseFloat(this.form.donoramount))) {
        allSum += parseFloat(this.form.donoramount);
      }
      //报销明细费用
      try {
        for (let i = 0; i < this.rbDetails.length; i++) {
          /*
          let totalFee = 0;
          //计算当前报销内容费用合计
          if (!isNaN(parseFloat(this.rbDetails[i].total))) {
            totalFee += parseFloat(this.rbDetails[i].total);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].cityfee))) {
            totalFee += parseFloat(this.rbDetails[i].cityfee);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].hotelexpense))) {
            totalFee += parseFloat(this.rbDetails[i].hotelexpense);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].otherexpense))) {
            totalFee += parseFloat(this.rbDetails[i].otherexpense);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].foodexpenses))) {
            totalFee += parseFloat(this.rbDetails[i].foodexpenses);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].foodallowance))) {
            totalFee += parseFloat(this.rbDetails[i].foodallowance);
          }
          if (!isNaN(parseFloat(this.rbDetails[i].otherfeeamount))) {
            totalFee += parseFloat(this.rbDetails[i].otherfeeamount);
          }
          this.rbDetails[i].total = parseFloat(totalFee).toFixed(2);
          this.$set(this.rbDetails, i, this.rbDetails[i]);
          */
          if (!isNaN(parseFloat(this.rbDetails[i].total))) {
            allSum += parseFloat(this.rbDetails[i].total);
          }
        }
        this.form.amountrequested = allSum.toFixed(2);
        this.form.amountrequested = moneyAdd(
          moneySum(this.rbDetails, "total"),
          this.form.donoramount
        ).toFixed(2);
        this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested);
      } catch { }
    },