·<template>
  <div class="eibs-tab">

    <c-col :span="24" class="col-left">
      <c-col :span="12">
        <el-form-item label="费用代码">
          <c-select v-model="model.codFee" clearable placeholder="请选择" dbCode="FEETXT" :isShowKeyAndLabel="true"
            filterable>
            <!--el-option
                v-for="item in feeCodList"
                :key="item.codFee"
                :label="item.codFee"
                :value="item.codFee">
                <span style="float: left">{{ item.codFee }}</span>
                <span style="float: right; color: #8492a6; font-size: 13px">{{ item.coddscFee }}</span>
              </el-option-->
          </c-select>
        </el-form-item>
      </c-col>

      <c-col :span="12">
        <el-form-item label="生效对象">
          <c-select v-model="model.feepri" style="width: 100%" placeholder="请选择生效对象" @change="changFeepri"
            dbCode="FEEPRI" :filterKey="['!','1','2','4']"  />
        </el-form-item>
      </c-col>
    </c-col>

    <c-col :span="24" class="col-left">

      <c-col :span="12" v-if="model.feepri != '!' && model.feepri !=''">
        <el-form-item :label="mapArea[model.feepri]" v-if="model.feepri != '4'">
          <c-select v-model="model.objcod" :placeholder="'请输入' + mapArea[model.feepri]" style="width: 100%"
            :dbCode="selectArea[model.feepri]" :isShowKeyAndLabel="true" :isCache="false" filterable>
          </c-select>
        </el-form-item>

        <el-form-item :label="mapArea[model.feepri]" v-if="model.feepri == '4'" prop="objcod">

          <c-fullbox>

            <c-input v-model="model.objcod" :placeholder="'请输入' + mapArea[model.feepri]" style="width: 100%">
            </c-input>
            <template slot="footer">
              <c-button style="margin: 0 0 0 10px; padding: 0 12px" size="small" type="primary"
                @click="getQueryPtyList()" :loading="loadingStatus">
                获取
              </c-button>
            </template>
          </c-fullbox>



        </el-form-item>
      </c-col>

      <c-col :span="12">
        <el-form-item label="客户名称" v-if="model.feepri == '4'" :rules="rulSel.objnam" prop="objnam">
          <c-input v-model="model.objnam" :disabled="true" placeholder="" style="width: 100%">
          </c-input>
        </el-form-item>

      </c-col>
    </c-col>
    <c-col :span="24">
      <span style="float: left">
        <el-button type="primary" size="small" ref="fecInsertBtn" v-if="showInsertBtn" @click="fecAdd">新增</el-button>
      </span>
      <span style="float: right">
        <el-button size="small" @click="handleReset">重置</el-button>
        <el-button type="primary" icon="el-icon-search" size="small" :loading="searchLoading" @click="onSearch()">查询
        </el-button>
      </span>
    </c-col>
    <c-col :span="24">
      <c-paging-table :data="fecData" :pageNumber="model.pageNum" :pageSize="model.pageSize" :total="model.total"
        v-on:queryFunc="queryFunc" :border="true">
        <el-table-column label="费用代码" prop="codFee" min-width="12%">
          <template slot-scope="scope">{{scope.row.codFee}}</template>
        </el-table-column>
        <el-table-column label="费用名称" prop="coddscFee" sortable min-width="15%">
          <template slot-scope="scope">{{scope.row.coddscFee}}</template>
        </el-table-column>
        <el-table-column label="生效对象" prop="feepritxt" min-width="12%">
          <template slot-scope="scope">{{scope.row.feepritxt}}</template>
        </el-table-column>
        <el-table-column label="对象编号" prop="objcod" sortable min-width="15%">
          <template slot-scope="scope">{{scope.row.objcod}}</template>
        </el-table-column>
        <el-table-column label="对象名称" prop="objnam" sortable min-width="15%">
          <template slot-scope="scope">{{scope.row.objnam}}</template>
        </el-table-column>
        <el-table-column label="费率币种" prop="ratcur" min-width="12%">
          <template slot-scope="scope">{{scope.row.ratcur}}</template>
        </el-table-column>
        <el-table-column label="计费区间最小值" prop="lowamt" sortable min-width="20%">
          <template slot-scope="scope">{{scope.row.lowamt}}</template>
        </el-table-column>
        <el-table-column label="计费区间最大值" prop="higamt" sortable min-width="20%">
          <template slot-scope="scope">{{scope.row.higamt}}</template>
        </el-table-column>
        <el-table-column label="起始日期" prop="begdat" sortable min-width="15%">
          <template slot-scope="scope">{{scope.row.begdat}}</template>
        </el-table-column>
        <el-table-column label="终止日期" prop="enddat" sortable min-width="15%">
          <template slot-scope="scope">{{scope.row.enddat}}</template>
        </el-table-column>
        <el-table-column label="计算规则" prop="calrul" min-width="12%">
          <template slot-scope="scope">{{scope.row.calrul}}</template>
        </el-table-column>
        <el-table-column label="每份的费用金额" prop="untamt" sortable min-width="20%">
          <template slot-scope="scope">{{scope.row.untamt}}</template>
        </el-table-column>
        <el-table-column label="计算费率" prop="ratcal" min-width="12%">
          <template slot-scope="scope">{{scope.row.ratcal}}</template>
        </el-table-column>
        <el-table-column label="操作" min-width="25%">
          <template slot-scope="scope">
            <el-button @click="fecDetail(scope.row)" type="" ref="fecDisplayBtn" size="mini">详情</el-button>
            <c-button style="margin-left: 5px" size="small" type="primary" v-if="showUpdateBtn" ref="fecUpdateBtn"
              @click="fecEdit(scope.row)" :disabled="(isZonghang && scope.row.feepri =='4')||(!isZonghang && scope.row.feepri !=='4')">修改</c-button>
            <c-button size="small" style="margin-left: 5px" v-if="showDeleteBtn" type="" ref="fecDeleteBtn"
              @click="fecDelete(scope.row)" :disabled="(isZonghang && scope.row.feepri =='4')||(!isZonghang && scope.row.feepri !=='4')">删除</c-button>
          </template>
        </el-table-column>
      </c-paging-table>
    </c-col>


    <!--弹窗-->
    <el-dialog :title="dialogNam[fectyp]" :visible.sync="dialogAdd" :modal-append-to-body="false" width="70%"
      :close-on-click-modal="false" center destroy-on-close>
      <el-form ref="form" :model="form" label-suffix=":" :rules="rules" :disabled="fectyp == 'info'">
        <el-row>
          <c-col :span="12">
            <el-form-item label="费用代码" :label-width="formLabelWidth" key="codFee" prop="codFee" >
            <c-fullbox>
              <c-select :disabled="fectyp == 'edit'" v-model="form.codFee" clearable placeholder="请选择" dbCode="FEETXT"
                :isShowKeyAndLabel="true" filterable  >
              </c-select>
            </c-fullbox>
            </el-form-item>
          </c-col>
          <c-col :span="12">
            <el-form-item label="费用备注" :label-width="formLabelWidth" style="position: relative;">
                <!-- <el-tooltip
                  class="box-item"
                  effect="dark"
                  :content="feeRemark"
                  placement="top-start"
                >
                  <div style="width: 100%;height: 32px;position: absolute;left: 0;z-index: 1;background: transparent;"></div>
                </el-tooltip> -->
                <el-input disabled v-model="feeRemark" placeholder="" ></el-input>
            </el-form-item>
          </c-col>
        </el-row>
        <el-row>
          <c-col :span="12">
            <el-form-item label="生效对象" :label-width="formLabelWidth" key="feepri" prop="feepri">
              <c-select v-model="form.feepri" placeholder="请选择生效对象" @change="changFormFeepri" v-if="isShow"
                dbCode="FEEPRI" :filterKey="FeepriFilterKey" :disabled="fectyp == 'edit'"></c-select>
              <c-select v-model="form.feepri" placeholder="请选择生效对象" @change="changFormFeepri" v-if="!isShow"
                dbCode="FEEPRI" :filterKey="FeepriFilterKey" :disabled="fectyp == 'edit'"></c-select>
            </el-form-item>
          </c-col>
          <c-col :span="12" v-if="form.feepri != '!' && form.feepri !=''">
            <el-form-item :label="mapArea[form.feepri]" :label-width="formLabelWidth" v-if="form.feepri != '4'"
              key="objcod" prop="objcod">
              <c-select v-model="form.objcod" :placeholder="'请输入' + mapArea[form.feepri]" style="width: 100%"
                @change="getCodPriOnly" :dbCode="selectArea[form.feepri]" :isShowKeyAndLabel="true" :isCache="false"
                :disabled="fectyp == 'edit'">
              </c-select>
            </el-form-item>
            <el-form-item :label="mapArea[form.feepri]" :label-width="formLabelWidth" v-if="form.feepri == '4'"
              key="objcod2" prop="objcod">
              <c-fullbox>
                <c-input v-model="form.objcod" :placeholder="'请输入' + mapArea[form.feepri]" @change="getCodPriOnly"
                  :disabled="fectyp == 'edit'" style="width: 100%"></c-input>
                <template slot="footer">
                  <c-button style="margin: 0 0 0 10px; padding: 0 12px" size="small" type="primary"
                    @click="getAddPtyList()" :loading="loadingAddStatus" :disabled="fectyp == 'edit'">
                    获取
                  </c-button>
                </template>
              </c-fullbox>
            </el-form-item>
          </c-col>
          <c-col :span="12" v-if="form.feepri == '!' || form.feepri == ''">
            <el-form-item label="" :label-width="formLabelWidth" style="visibility: hidden">
              <el-input></el-input>
            </el-form-item>
          </c-col>
        </el-row>
        <el-row>
          <c-col :span="12">
            <el-form-item label="生效日期" :label-width="formLabelWidth" key="begdat" prop="begdat">
              <c-fullbox>
              <c-date-picker type="date" v-model="form.begdat" value-format="yyyy-MM-dd"
                :picker-options="startDatePicker" style="" placeholder="请选择生效日期"></c-date-picker>
              
              <template slot="footer">
                <el-tooltip effect="dark" content="生效日期应小于失效日期" placement="top" size="large">
                  <i class="el-icon-info" />
                </el-tooltip>
              </template>
              
              </c-fullbox>
            </el-form-item>
          </c-col>
          <c-col :span="12">
            <el-form-item label="失效日期" :label-width="formLabelWidth" key="enddat" prop="enddat">
              <c-fullbox>
              <c-date-picker type="date" v-model="form.enddat" value-format="yyyy-MM-dd" :picker-options="endDatePicker"
                style="" placeholder="请选择失效日期"></c-date-picker>
              <template slot="footer">
                <el-tooltip effect="dark" content="失效日期应大于生效日期" placement="top" size="large">
                  <i class="el-icon-info" />
                </el-tooltip>
              </template>
              </c-fullbox>
            </el-form-item>
          </c-col>
        </el-row>
        <el-row>
          <c-col :span="12">
            <el-form-item label="默认处理方式" :label-width="formLabelWidth">
              <c-select v-model="form.colltr" placeholder="请选择默认处理方式" :code="getCodesByKey('colltr')"></c-select>
            </el-form-item>
          </c-col>
          <c-col :span="12">
            <el-form-item label="允许变动标志" :label-width="formLabelWidth">
              <c-select v-model="form.setchgflg" placeholder="请选择允许变动标志" :code="getCodesByKey('setchgflg')"></c-select>
            </el-form-item>
          </c-col>
        </el-row>
        <el-row>
          <c-col :span="12">
            <el-form-item label="计算规则" :label-width="formLabelWidth" key="calrul" prop="calrul">
              <c-select v-model="form.calrul" placeholder="请选择计算规则" :code="getCodesByKey('calrulsel')"
                @change="clearRulForm" :disabled="form.calfcc == '' && (form.feepri == '1' || form.feepri == '2' || form.feepri == '4')"></c-select>
            </el-form-item>
          </c-col>
          <c-col :span="12" v-if="form.feepri != '!' && form.feepri">
            <el-form-item label="计算规则" :label-width="formLabelWidth" key="calfcc" prop="calfcc">
              <el-checkbox label="覆盖默认生效对象" v-model="form.calfcc" true-label="S" false-label=""></el-checkbox>
            </el-form-item>
          </c-col>
        </el-row>
        <c-col :span="24" v-if="form.calrul == '1'||form.calrul == 'B'||form.calrul == '%'||form.calrul == 'M'">
          <el-row>
            <c-col :span="12">
              <el-form-item label="费率" :label-width="formLabelWidth" key="ratcal" prop="ratcal">
                <c-input-number v-model="form.ratcal" autocomplete="off" placeholder="请输入费率" :precision="6" :step="0"
                  :min="0" :max="99999999.999999" :controls="false"></c-input-number>
              </el-form-item>
            </c-col>
            <c-col :span="12">
              <el-form-item label="计算基准金额" :label-width="formLabelWidth" key="calcbs" prop="calcbs">
                <c-select v-model="form.calcbs" placeholder="请选择计算基准金额" :code="getCodesByKey('calcbs')"
                  :disabled="form.calfcc == ''"></c-select>
              </el-form-item>
            </c-col>
          </el-row>
          <el-row>
            <c-col :span="6" v-if="minFccDisabled">
              <el-form-item label="最低收费" :label-width="formLabelWidth" key="mincur" prop="mincur">
                <c-select v-model="form.mincur" placeholder="请选择最低收费币种" dbCode="CURTXT" 
                  :disabled="isMinFccDisabled"></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="6" v-if="isMinFccDisabled">
              <el-form-item label="最低收费" :label-width="formLabelWidth">
                <c-select v-model="form.mincur" placeholder="请选择最低收费"  dbCode="CURTXT" 
                  :disabled="isMinFccDisabled"></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="6">
              <el-form-item key="minamt" prop="minamt">
                <c-input v-model="form.minamt" autocomplete="off" placeholder="请选择最低收费金额" :controls="false"
                  :disabled="form.minfcc == 'N'"></c-input>
              </el-form-item>
            </c-col>
            <c-col :span="12">
              <el-form-item label="最低收费代码" :label-width="formLabelWidth" key="minfcc" prop="minfcc">
                <c-select v-model="form.minfcc" placeholder="请选择最低收费代码" :code="getCodesByKey('minfcc')"
                  :disabled="form.feepri == '!'"></c-select>
              </el-form-item>
            </c-col>
          </el-row>
          <el-row>
            <c-col :span="6" v-if="maxFccDisabled">
              <el-form-item label="最高收费" :label-width="formLabelWidth" key="maxcur" prop="maxcur">
                <c-select v-model="form.maxcur" placeholder="请选择最高收费币种"  dbCode="CURTXT" 
                  :disabled="isMaxFccDisabled"></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="6" v-if="isMaxFccDisabled">
              <el-form-item label="最高收费" :label-width="formLabelWidth">
                <c-select v-model="form.maxcur" placeholder="请选择最高收费币种"  dbCode="CURTXT" 
                  :disabled="isMaxFccDisabled"></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="6">
              <el-form-item key="maxamt" prop="maxamt">
                <c-input v-model="form.maxamt" autocomplete="off" placeholder="请选择最高收费金额" :disabled="form.maxfcc == 'N'">
                </c-input>
              </el-form-item>
            </c-col>
            <c-col :span="12">
              <el-form-item label="最高收费代码" :label-width="formLabelWidth" key="maxfcc" prop="maxfcc">
                <c-select v-model="form.maxfcc" placeholder="请选择最高收费代码" :code="getCodesByKey('maxfcc')"
                  :disabled="form.feepri == '!'"></c-select>
              </el-form-item>
            </c-col>
          </el-row>
          <el-row>
            <c-col :span="24">
              <c-col :span="9">
                <c-checkbox v-model="form.amtflg" :true-label="'X'" :false-label="''">每个计费区间与最大值最小值比较</c-checkbox>
              </c-col>
            </c-col>
          </el-row>
          <c-col :span="24" v-if="form.calrul != 'B'">
            <el-row>
              <c-col :span="12">
                <el-form-item label="周期类型" :label-width="formLabelWidth" key="pertyp" prop="pertyp">
                  <c-select v-model="form.pertyp" placeholder="请选择周期类型" dbCode="PERTYP" sort="SRT" uil="CN" :filterKey="['d','q','CALMON','y']"></c-select>
                </el-form-item>
              </c-col>
              <c-col :span="12">
                <el-form-item label="最小周期" :label-width="formLabelWidth">
                  <c-input-number v-model="form.permin" autocomplete="off" placeholder="请输入最小周期" :precision="0" :step="0"
                    :min="0" :max="999" :controls="false"></c-input-number>
                </el-form-item>
              </c-col>
            </el-row>
            <el-row>
              <c-col :span="6">
                <el-form-item label="二级起始周期" :label-width="formLabelWidth">
                  <c-input-number v-model="form.perbegtr2" autocomplete="off" placeholder="请输入起始周期" :precision="0"
                    :step="0" :min="0" :max="999" :controls="false"></c-input-number>
                </el-form-item>
              </c-col>
              <c-col :span="6">
                <c-input-number v-model="form.perrattr2" autocomplete="off" placeholder="请输入周期费率" :precision="6"
                  :step="0" :min="0" :max="99999999.999999" :controls="false" :disabled="form.perbegtr2 == 0">
                </c-input-number>
              </c-col>
              <c-col :span="6">
                <el-form-item label="三级起始周期" :label-width="formLabelWidth">
                  <c-input-number v-model="form.perbegtr3" autocomplete="off" placeholder="请输入起始周期" :precision="0"
                    :step="0" :min="0" :max="999" :controls="false" :disabled="form.perbegtr2 == 0"></c-input-number>
                </el-form-item>
              </c-col>
              <c-col :span="6">
                <c-input-number v-model="form.perrattr3" autocomplete="off" placeholder="请输入周期费率" :precision="6"
                  :step="0" :min="0" :max="99999999.999999" :controls="false" :disabled="form.perbegtr3 == 0">
                </c-input-number>
              </c-col>
            </el-row>
            <el-row>
              <c-col :span="6">
                <el-form-item label="四级起始周期" :label-width="formLabelWidth">
                  <c-input-number v-model="form.perbegtr4" autocomplete="off" placeholder="请输入起始周期" :precision="0"
                    :step="0" :min="0" :max="999" :controls="false" :disabled="form.perbegtr3 == 0"></c-input-number>
                </el-form-item>
              </c-col>
              <c-col :span="6">
                <c-input-number v-model="form.perrattr4" autocomplete="off" placeholder="请输入周期费率" :precision="6"
                  :step="0" :min="0" :max="99999999.999999" :controls="false" :disabled="form.perbegtr4 == 0">
                </c-input-number>
              </c-col>
              <c-col :span="6">
                <el-form-item label="五级起始周期" :label-width="formLabelWidth">
                  <c-input-number v-model="form.perbegtr5" autocomplete="off" placeholder="请输入起始周期" :precision="0"
                    :step="0" :min="0" :max="999" :controls="false" :disabled="form.perbegtr4 == 0"></c-input-number>
                </el-form-item>
              </c-col>
              <c-col :span="6">
                <c-input-number v-model="form.perrattr5" autocomplete="off" placeholder="请输入周期费率" :precision="6"
                  :step="0" :min="0" :max="99999999.999999" :controls="false" :disabled="form.perbegtr5 == 0">
                </c-input-number>
              </c-col>
            </el-row>
          </c-col>
        </c-col>
        <c-col :span="24" v-if="form.calrul == '0' || form.calrul == 'F'">
          <el-row>
            <c-col :span="6">
              <el-form-item label="固定收费" :label-width="formLabelWidth" key="ratcur" prop="ratcur">
                <c-select v-model="form.ratcur" placeholder="请选择固定收费币种"  dbCode="CURTXT" ></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="6">
              <c-input-number v-model="form.untamt" autocomplete="off" :precision="3" :step="0" :min="0"
                :max="999999999999999.999" :controls="false" placeholder="请选择固定收费金额"></c-input-number>
            </c-col>
          </el-row>
        </c-col>
        <c-col :span="24">
          <el-row>
            <c-col :span="12">
              <el-form-item label="信息提示级别" :label-width="formLabelWidth" key="inflev" prop="inflev">
                <c-select v-model="form.inflev" autocomplete="off" placeholder="请输入信息提示级别" dbCode="INFLEV"></c-select>
              </el-form-item>
            </c-col>
            <c-col :span="12">
              <el-form-item label="信息提示内容" :label-width="formLabelWidth" key="inftxt" prop="inftxt">
                <c-input v-model="form.inftxt" placeholder="请输入信息提示内容" style="width: 100%" type="textarea" :rows="8">
                </c-input>
              </el-form-item>
            </c-col>
          </el-row>
        </c-col>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="commitAdd" v-if="fectyp == 'add'">提 交</el-button>
        <el-button type="primary" @click="commitEdit" v-if="fectyp == 'edit'">提 交</el-button>
        <el-button @click="dialogAdd = false" v-if="fectyp != 'info'">取 消</el-button>
        <el-button @click="dialogAdd = false" v-if="fectyp == 'info'">返 回</el-button>
      </div>
    </el-dialog>

    <el-dialog :visible.sync="ptyDialogQueryVisible" title="客户信息列表" :modal-append-to-body="false" :lock-scroll="false"
      :show-close="true" :close-on-click-modal="false" :close-on-press-escape="false" v-dialogDrag>
      <c-paging-table :data="ptyDialogQueryTableData" :pageSize="ptyDialogQueryModel.pageSize"
        :pageNumber="ptyDialogQueryModel.pageNum" :total="ptyDialogQueryModel.total" @queryFunc="ptyDialogQueryFunc"
        :border="true">
        <el-table-column label="客户编号" prop="extkey" min-width="30%">
          <template slot-scope="scope">{{scope.row.extkey}}</template>
        </el-table-column>
        <el-table-column label="客户英文名称" prop="nam" min-width="30%">
          <template slot-scope="scope">{{scope.row.nam}}</template>
        </el-table-column>
        <el-table-column label="客户中文名称" prop="nam1" min-width="30%">
          <template slot-scope="scope">{{scope.row.nam1}}</template>
        </el-table-column>
        <el-table-column label="操作" min-width="10%">
          <template slot-scope="scope">
            <el-button @click="useQueryCurrentData(scope.row)" type="primary" size="mini">使用</el-button>
          </template>
        </el-table-column>
      </c-paging-table>
    </el-dialog>

    <el-dialog :visible.sync="ptyDialogAddVisible" title="客户信息列表" :modal-append-to-body="false" :lock-scroll="false"
      :show-close="true" :close-on-click-modal="false" :close-on-press-escape="false" v-dialogDrag>
      <c-paging-table :data="ptyDialogAddTableData" :pageSize="ptyDialogAddModel.pageSize"
        :pageNumber="ptyDialogAddModel.pageNum" :total="ptyDialogAddModel.total" @queryFunc="ptyDialogAddQueryFunc"
        :border="true">
        <el-table-column label="客户编号" prop="extkey" min-width="30%">
          <template slot-scope="scope">{{scope.row.extkey}}</template>
        </el-table-column>
        <el-table-column label="客户英文名称" prop="nam" min-width="30%">
          <template slot-scope="scope">{{scope.row.nam}}</template>
        </el-table-column>
        <el-table-column label="客户中文名称" prop="nam1" min-width="30%">
          <template slot-scope="scope">{{scope.row.nam1}}</template>
        </el-table-column>
        <el-table-column label="操作" min-width="10%">
          <template slot-scope="scope">
            <el-button @click="useAddCurrentData(scope.row)" type="primary" size="mini">使用</el-button>
          </template>
        </el-table-column>
      </c-paging-table>
    </el-dialog>

  </div>
</template>

<script>
  import Fec, {
    Pattern
  } from "./Fec.js";
  import Ptyn from "~/page/Statics/Pty-N/Dbipty-N/Ptyn.js";
  import codes from "~/config/CodeTable";
  import {
    queryByPage,
    queryDetailById,
    getFeecodPriOnly,
    add,
    edit,
    deleteById,
    getFeeCodList
  } from "~/service/manage/fec.js";
  import {
    listByExtkey
  } from "~/service/manage/pty.js";
  import commonFunctions from "~/mixin/commonFunctions.js";
  import Api from "~/service/Api"

  export default {
    mixins: [commonFunctions],
    name: "",
    props: ["model"],
    data() {
      return {
        rulSel: {
          objcod: [{
              "required": true,
              "message": "必输项",
              "type": "string",
              "trigger": "change"
            },
            {
              "max": 10,
              "message": "最大长度10个字符",
              "trigger": "change"
            }
          ],
        },
        rules: Pattern,
        fecData: [],
        fecColumns: [{
            label: '费用代码',
            prop: 'codFee',
            width: "120px"
          },
          {
            label: '费用名称',
            prop: 'coddscFee',
            width: "250px"
          },
          //{ label: '生效对象', prop: 'feepri', width: '120' },
          {
            label: '生效对象',
            prop: 'feepritxt',
            width: "120px"
          },
          //{ label: '对象编号', prop: 'objinr', width: '120' },
          {
            label: '对象编号',
            prop: 'objcod',
            width: "120px"
          },
          {
            label: '对象名称',
            prop: 'objnam',
            width: "120px"
          },
          {
            label: '费率币种',
            prop: 'ratcur',
            width: "120px"
          },
          {
            label: '计费区间最小值',
            prop: 'lowamt',
            width: "130px"
          },
          {
            label: '计费区间最大值',
            prop: 'higamt',
            width: "130px"
          },
          {
            label: '起始日期',
            prop: 'begdat',
            width: "120px"
          },
          {
            label: '终止日期',
            prop: 'enddat',
            width: "120px"
          },
          {
            label: '计算规则',
            prop: 'calrul',
            width: "120px"
          },
          {
            label: '每份的费用金额',
            prop: 'untamt',
            width: "150px"
          },
          {
            label: '计算费率',
            prop: 'ratcal',
            width: "120px"
          },
        ],
        feeCodList: [],
        mapArea: {
          '1': '地区代码',
          '2': '国家代码',
          '4': '客户编号',
        },
        dialogNam: {
          'add': '费率新增',
          'edit': '费率编辑',
          'info': '费率详情',
        },
        selectArea: {
          '1': 'REGTXT',
          '2': 'CTYTXT'
        },
        showInsertBtn: false,
        showUpdateBtn: false,
        showDeleteBtn: false,
        searchLoading: false,
        dialogAdd: false,
        form: new Fec().data,
        fectyp: "",
        formLabelWidth: "160px",
        startDatePicker: this.beginDate(),
        endDatePicker: this.processDate(),
        loadingStatus: false,
        ptyDialogQueryModel: new Ptyn().data,
        ptyDialogQueryTableData: [],
        ptyDialogQueryVisible: false,
        loadingAddStatus: false,
        ptyDialogAddModel: new Ptyn().data,
        ptyDialogAddTableData: [],
        ptyDialogAddVisible: false,
        isShow: true,
        FeepriFilterKey1: ['!','1','2','4'],

        feeRemark:"",

    
      };
    },
    computed: {
      isMinFccDisabled() {
        return this.form.minfcc === 'P' || this.form.minfcc === 'N';
      },
      isMaxFccDisabled() {
        return this.form.maxfcc === 'P' || this.form.maxfcc === 'N';
      },
      minFccDisabled() {
        return this.form.minfcc != 'P' && this.form.minfcc != 'N';
      },
      maxFccDisabled() {
        return this.form.maxfcc != 'P' && this.form.maxfcc != 'N';
      },

      isZonghang() {
        let currentOrg = this.$store.state.UserContext.currentOrg;
        if (currentOrg) {
          if (currentOrg.level !== '0' && currentOrg.level !== 0) {
            return false;
          } else {
            return true;
          }
        }else{
          return false;
        }
      },

      FeepriFilterKey() {
        let zhongFlg=false
        let currentOrg = this.$store.state.UserContext.currentOrg
        if (currentOrg) {
          if (currentOrg.level == '0' || currentOrg.level == 0) {
            zhongFlg=true
          }
        }

        if (zhongFlg){
          if (this.fectyp=='add'){
            return ['!','1','2']
          }else{
            return ['!','1','2','4']
          }
        }else{
          if (this.fectyp=='add'){
            return ['4']
          }else{
            return ['!','1','2','4']
          }
        }
      },



      /*
          //feepri=4,且柜员有客户主办权限,才可修改
          isDisableEditBtn (row) {
            console.log("row---",row)
            let currentOrg=this.$store.state.UserContext.currentOrg;
            if (currentOrg){
              console.log("currentOrg--",currentOrg)
              if (currentOrg.level !=='0' && currentOrg.level !==0){
                
              }else{
                return false;
              }
            }
      		},
          */





      feepriCode() {
        let feepriCode = ['!', '1', '2', '4'];
        if (this.fectyp = 'add') {
          let currentOrg = this.$store.state.UserContext.currentOrg;
          if (currentOrg) {
            console.log("currentOrg--", currentOrg)
            if (currentOrg.level !== '0' && currentOrg.level !== 0) {
              feepriCode = ['4'];
            }
          }
        }
        return feepriCode;
      },




    },
    activated() {
      const {
        update
      } = this.$route.params
      if (update) {
        this.onInffecSearch()
      }
    },
    created() {
      this.model.codFee = "ADVAME";
      this.onInffecSearch()
      //this.getCodList()
    },
    watch: {
      "form.feepri": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.feepri == "!") {
            this.form.minfcc = "S";
            this.form.maxfcc = "S";
            this.form.objtyp = "";
            this.form.calfcc = "S";
          } else if (this.form.feepri == "1") {
            this.form.objtyp = "REG";
          } else if (this.form.feepri == "2") {
            this.form.objtyp = "CTY";
          } else if (this.form.feepri == "4") {
            this.form.objtyp = "PTY";
          }
        }
      },
      "form.minfcc": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.minfcc == "N" || this.form.minfcc == "P") {
            this.form.mincur = "";
            this.form.minamt = "";
          }
        }
      },
      "form.maxfcc": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.maxfcc == "N" || this.form.maxfcc == "P") {
            this.form.maxcur = "";
            this.form.maxamt = "";
          }
        }
      },
      "form.maxfcc": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.maxfcc == "N" || this.form.maxfcc == "P") {
            this.form.maxcur = "";
            this.form.maxamt = "";
          }
        }
      },
      "form.perbegtr2": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.perbegtr2 == 0) {
            this.form.perrattr2 = 0;
            this.form.perbegtr3 = 0;
          }
        }
      },
      "form.perbegtr3": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.perbegtr3 == 0) {
            this.form.perrattr3 = 0;
            this.form.perbegtr4 = 0;
          }
        }
      },
      "form.perbegtr4": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.perbegtr4 == 0) {
            this.form.perrattr4 = 0;
            this.form.perbegtr5 = 0;
          }
        }
      },
      "form.perbegtr5": {
        immediate: true,
        handler(val, oldVal) {
          if (this.form.perbegtr5 == 0) {
            this.form.perrattr5 = 0;
          }
        }
      },
      "form.codFee": {
        immediate: true,
        handler(val, oldVal) {
          if (val !=null && val !=''){
            Api.post('/manager/fee/queryByCod',{cod:val}).then(res => {
              this.feeRemark =res.data.remark
              console.log(this.feeRemark);
            })
          }else{
            this.feeRemark=""
          }
          
        }
      },

    },
    mounted() {
      this.getHiddenButtonVue();
    },
    methods: {
      getHiddenButtonVue() {
        const loading = this.loading();
        this.$buttonControlService.hiddenBtnList()
          .then((res) => {
            // 【新增】按钮
            let hasInsert = res.some((item) => {
              return item.ITEMID === 'fecInsertBtn';
            })
            if (hasInsert) {
              this.showInsertBtn = false;
            } else {
              this.showInsertBtn = true;
            }
            // 【修改】按钮
            let hasUpdate = res.some((item) => {
              return item.ITEMID === 'fecUpdateBtn';
            })
            if (hasUpdate) {
              this.showUpdateBtn = false;
            } else {
              this.showUpdateBtn = true;
            }
            // 【删除】按钮
            let hasDelete = res.some((item) => {
              return item.ITEMID === 'fecDeleteBtn';
            })
            if (hasDelete) {
              this.showDeleteBtn = false;
            } else {
              this.showDeleteBtn = true;
            }
            loading.close();
          })
      },
      beginDate() {
        const self = this
        return {
          disabledDate(time) {
            if (self.form.enddat) { //如果结束时间不为空,则小于结束时间
              return time.getTime() > new Date(self.form.enddat).getTime() - 86400000;
            } else {
              // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
            }
          }
        }
      },
      processDate() {
        const self = this
        return {
          disabledDate(time) {
            if (self.form.begdat) { //如果开始时间不为空,则结束时间大于开始时间
              return time.getTime() < new Date(self.form.begdat).getTime();
            } else {
              // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
            }
          }
        }
      },
      handleReset() {
        this.model.objinr = "";
        this.model.objtyp = "";
        this.model.objcod = "";
        this.model.objnam = "";
        this.model.codFee = "ADVAME";
        this.model.coddscFee = "";
        this.model.feepri = "!";
      },
      onSearch() {
        this.model.pageNum = 1;
        this.model.pageSize = PageSize;
        this.onInffecSearch();
      },
      changFeepri() {
        if (this.model.feepri === "!") {
          this.model.objtyp = ""
        } else if (this.model.feepri === "1") {
          this.model.objtyp = "REG"
        } else if (this.model.feepri === "2") {
          this.model.objtyp = "CTY"
        } else if (this.model.feepri === "4") {
          this.model.objtyp = "PTY"
        }

        this.model.objinr = "";
        this.model.objcod = "";
        this.model.objnam = "";
        console.log("--d", this.model)
      },
      changFormFeepri() {
        if (this.form.feepri === "!") {
          this.form.objtyp = "";
          this.form.calfcc = "S";
        } else if (this.form.feepri === "1") {
          this.form.objtyp = "REG"
        } else if (this.form.feepri === "2") {
          this.form.objtyp = "CTY"
        } else if (this.form.feepri === "4") {
          this.form.objtyp = "PTY"
        }

        this.form.objinr = "";
        this.form.objcod = "";
        this.form.objnam = "";
        console.log("--f", this.form)
      },
      clearFormObjcod() {
        //this.form.objinr = "";
        this.form.objcod = "";
      },
      getCodList() {
        getFeeCodList({}).then(res => {
          if (res.respCode == SUCCESS) {
            const list = res.data.list
            this.feeCodList = list
          }
        })
      },
      getCodPriOnly() {
        if (this.form.codFee != "" && this.form.objcod != "") {
          getFeecodPriOnly(this.form)
            .then((res) => {
              if (res.data) {
                this.$notify.warning("该对象编号已存在关联费率!");
              }
            })
            .catch((err) => {
              //this.$message.waring("数据检测失败");
            });
        }
      },
      clearRulForm() {
        this.form.ratcal = "";
        this.form.calcbs = "CONAMT";
        this.form.minamt = "";
        this.form.mincur = "";
        this.form.minfcc = "S";
        this.form.maxcur = "";
        this.form.maxamt = "";
        this.form.maxfcc = "S";
        this.form.pertyp = "";
        this.form.permin = "";
        this.form.ratcur = "";
        this.form.untamt = "";
        this.form.perbegtr2 = "";
        this.form.perrattr2 = "";
        this.form.permintr2 = "";
        this.form.perbegtr3 = "";
        this.form.perrattr3 = "";
        this.form.permintr3 = "";
        this.form.perbegtr4 = "";
        this.form.perrattr4 = "";
        this.form.permintr4 = "";
        this.form.perbegtr5 = "";
        this.form.perrattr5 = "";
        this.form.permintr5 = "";
        this.form.amtflg = "";
      },
      onInffecSearch() {
        this.searchLoading = true;
        queryByPage(this.model).then(res => {
          const list = res.data.list
          Object.keys(list).forEach((item) => {
            let obj = list[item]
            /*
            let codArr = codes['feepri'].filter((i) => {
              return i.value == obj.feepri
            })
            
            if(codArr.length > 0){
              obj.feepri = codArr[0].label
            }
            */
            let codArr2 = codes['calrulsel'].filter((i) => {
              return i.value == obj.calrul
            })
            if (codArr2.length > 0) {
              obj.calrul = codArr2[0].label
            }
          })
          this.fecData = list
          this.model.pageNum = res.data.pageNumber
          this.model.pageSize = res.data.pageSize
          this.model.total = res.data.total
          this.searchLoading = false;
        })
      },
      queryFunc(pageNumber, pageSize) {
        this.model.pageNum = pageNumber
        this.model.pageSize = pageSize
        this.onInffecSearch()
      },
      getCodesByKey(key) {
        return codes[key] || [];
      },
      fecAdd() {
        this.form = new Fec().data;
        this.fectyp = "add";
        this.form.feepri = "";
        this.dialogAdd = true;
        if (this.$store.state.UserContext.curRole.name === "分行业务参数管理员") {
          this.isShow = false;
        } else {
          this.isShow = true;
        }
      },
      fecDetail(row) {
        queryDetailById(row)
          .then((res) => {
            this.form = res.data;
            if (this.form.colltr === null) {
              this.form.colltr = "";
            };
            if (this.form.setchgflg === null) {
              this.form.setchgflg = "";
            };
            this.fectyp = "info";
            this.dialogAdd = true;
          })
          .catch((err) => {
            this.$notify.error("数据查看失败");
          });
      },
      fecEdit(row) {
        console.log("fecEdit(row)---", row)
        queryDetailById(row)
          .then((res) => {
            this.form = res.data;
            if (this.form.colltr === null) {
              this.form.colltr = "";
            };
            if (this.form.setchgflg === null) {
              this.form.setchgflg = "";
            };
            this.fectyp = "edit";
            this.dialogAdd = true;
          })
          .catch((err) => {
            this.$notify.error("数据查看失败");
          });
      },
      fecDelete(row) {
        this.$confirm("是否确认删除?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            deleteById(row)
              .then((res) => {
                if (res.respCode == SUCCESS) {
                  this.$notify.success("删除成功!");
                  this.onInffecSearch();
                } else {
                  this.$notify.error("删除失败!");
                }
              })
              .catch((err) => {
                this.$notify.error("删除失败!");
              });
          })
          .catch(() => {
            this.$message({
              type: "info",
              message: "已取消删除",
            });
          });
      },
      commitAdd() {
        this.$refs.form.validate((validated) => {
          if (validated) {
            if (this.form.inftxt && !this.form.inflev) {
              this.$message.info("提示级别必输")
              return
            }
            if (this.form.inflev && !this.form.inftxt) {
              this.$message.info("提示内容必输")
              return
            }
            this.form.lowamt = 0;
            this.form.higamt = 99999999999999;
            if (this.form.calrul == "0" || this.form.calrul == "F") {
              this.form.minfcc = "";
              this.form.maxfcc = "";
            };
            add(this.form)
              .then((res) => {
                if (res.respCode == SUCCESS) {
                  this.$notify.success(res.respMsg);
                  this.dialogAdd = false;
                  this.onInffecSearch();
                } else {
                  this.$notify.error(res.respMsg);
                }
              })
              .catch((err) => {
                this.$notify.error(err.respMsg);
              });
          } else {
            this.$notify.error({
              title: '失败',
              message: '请检查必输项!'
            });
          }
        })
      },
      commitEdit() {
        this.$refs.form.validate((validated) => {
          if (validated) {
            if (this.form.inftxt && !this.form.inflev) {
              this.$message.info("提示级别必输")
              return
            }
            if (this.form.inflev && !this.form.inftxt) {
              this.$message.info("提示内容必输")
              return
            }
            if (this.form.calrul == "0" || this.form.calrul == "F") {
              this.form.minfcc = "";
              this.form.maxfcc = "";
            };
            if (this.form.begdat == this.form.enddat) {
              this.$notify.error("生效日期与失效日期不能相同");
            } else {
              edit(this.form)
                .then((res) => {
                  if (res.respCode == SUCCESS) {
                    this.$notify.success("保存成功!");
                    this.dialogAdd = false;
                    this.onInffecSearch();
                  } else {
                    this.$notify.error(res.respMsg);
                  }
                })
                .catch((err) => {
                  this.$notify.error("保存失败!");
                });
            }
          } else {
            this.$notify.error({
              title: '失败',
              message: '请检查必输项!'
            });
          }
        })
      },

      // 获取客户列表信息
      getQueryPtyList() {
        this.loadingStatus = true;
        this.ptyDialogQueryModel.extkey = this.model.objcod;
        listByExtkey(this.ptyDialogQueryModel)
          .then((res) => {
            this.loadingStatus = false;
            this.ptyDialogQueryVisible = true;
            this.ptyDialogQueryTableData = res.data.list;
            this.ptyDialogQueryModel.total = res.data.total;
            this.ptyDialogQueryModel.pageNum = res.data.pageNumber;
            this.ptyDialogQueryModel.pageSize = res.data.pageSize;
          })
          .catch((err) => {
            this.loadingStatus = false;
            this.$notify.error("查询失败!");
          });
      },

      // 获取分页组件数据,为请求数据赋值
      ptyDialogQueryFunc(pageNumber, pageSize) {
        this.ptyDialogQueryModel.pageNum = pageNumber;
        this.ptyDialogQueryModel.pageSize = pageSize;
        this.getQueryPtyList();
      },

      // 使用事件
      useQueryCurrentData(row) {
        this.ptyDialogQueryVisible = false;
        this.model.objcod = row.extkey;
        this.model.objnam = row.nam;
      },

      // 获取客户列表信息
      getAddPtyList() {
        this.loadingAddStatus = true;
        this.ptyDialogAddModel.extkey = this.form.objcod;
        listByExtkey(this.ptyDialogAddModel)
          .then((res) => {
            this.loadingAddStatus = false;
            this.ptyDialogAddVisible = true;
            this.ptyDialogAddTableData = res.data.list;
            this.ptyDialogAddModel.total = res.data.total;
            this.ptyDialogAddModel.pageNum = res.data.pageNumber;
            this.ptyDialogAddModel.pageSize = res.data.pageSize;
          })
          .catch((err) => {
            this.loadingAddStatus = false;
            this.$notify.error("查询失败!");
          });
      },

      // 获取分页组件数据,为请求数据赋值
      ptyDialogAddQueryFunc(pageNumber, pageSize) {
        this.ptyDialogAddModel.pageNum = pageNumber;
        this.ptyDialogAddModel.pageSize = pageSize;
        this.getAddPtyList();
      },

      // 使用事件
      useAddCurrentData(row) {
        this.ptyDialogAddVisible = false;
        this.form.objcod = row.extkey;
        this.form.objnam = row.nam;
      }

    },
  };
</script>

<style scoped>
  .table-button-item-list {
    padding: 0;
    margin: 0;
  }

  .table-button-item-list li {
    list-style: none;
    padding: 5px 0;
    text-align: center;
    color: #606266;
    cursor: pointer;
  }
</style>