<template>
  <div id="contract_info">
    <!-- 合同基本信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="contract_show =!contract_show">合同基本信息</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('form')" v-show="disabled_list[0]!=1 || disabled_list[1] != 1">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <el-form id="form" :inline="true" :model="form" class="demo-form-inline" label-width="100px" :rules="add_rules" v-show="contract_show" ref="contract_form">
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="合同编号" prop="contract_unid">
                <el-select id="ccc" class="width-220" v-model="form.contract_unid" filterable placeholder="合同编号" @change="change_unid(form.contract_unid)" :disabled="contract_unid_disabled">
                  <el-option v-for="(item,index) in contract_unid_selected_data" :key="index" :label="item" :value="item">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="销售员" prop="salesperson_unid">
                <el-select class="width-220" v-model="form.salesperson_unid" clearable filterable placeholder="销售人员" :disabled="disabled_list[0]==1">
                  <el-option v-for="(item,index) in salesperson_unid_selected_data" :key="index" :label="item.name" :value="item.user_unid">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="项目名称" prop="project_unid">
                <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.project_unid" clearable filterable placeholder="项目名称">
                  <el-option v-for="(item,index) in project_unid_selected_data" :key="index" :label="item.project_name" :value="item.project_unid">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="客户名称" prop="customer_unid">
                <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.customer_unid" clearable filterable placeholder="客户名称">
                  <el-option v-for="(item) in customer_unid_selected_data" :key="item.customer_unid" :label="item.customer_name" :value="item.customer_unid">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item id="province" label="项目所在地" prop="province_value">
                <el-select :disabled="disabled_list[0]==1" style="width:108px" v-model="form.province_value" filterable clearable placeholder="省" @change="get_cities()">
                  <el-option v-for="(item,index) in provinces" :key="index" :label="item.name" :value="item.province_unid + '#' + item.name">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item prop="city_value">
                <el-select :disabled="disabled_list[0]==1" style="width:108px" v-model="form.city_value" filterable clearable placeholder="市">
                  <el-option v-for="(item,index) in cities" :key="index" :label="item.name" :value="item.city_unid + '#' + item.name">
                  </el-option>
                </el-select>
                <!-- <el-select :disabled="disabled_list[0]==1" style="width:100px" v-model="form.county_value" clearable placeholder="区县">
                  <el-option v-for="(item,index) in counties" :key="index" :label="item.name" :value="item.county_unid + '#' + item.name">
                  </el-option>
                </el-select> -->
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="质保周期(月)" prop="guarantee_period">
                <el-input-number :disabled="disabled_list[0]==1" class="width-220" v-model="form.guarantee_period" :step="6" :min="6" :max="60" size="medium"></el-input-number>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="签订日期" prop="sign_date">
                <el-date-picker :disabled="disabled_list[0]==1" class="width-220" v-model="form.sign_date" type="date" placeholder="日期" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="所属年份">
                <el-input class="width-220" v-model="get_year" :disabled="true"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="所属月份">
                <el-input class="width-220" v-model="get_month" :disabled="true"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="产品线类型" prop="product_line_type">
                <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.product_line_type" clearable placeholder="产品线类型">
                  <el-option v-for="item in product_line_type_data" :key="item.unid" :label="item.name" :value="item.code">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>

            <el-col :span="8">
              <el-form-item label="合同金额" prop="contract_amount">
                <el-input :disabled="disabled_list[0]==1" class="width-220" v-model="form.contract_amount" clearable></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="合同性质" prop="contract_type">
                <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.contract_type" clearable placeholder="合同性质">
                  <el-option v-for="item in contract_type_data" :key="item.unid" :label="item.name" :value="item.code">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="维保服务期" prop="guarantee_date">
                <el-date-picker :disabled="disabled_list[0]==1" style="width:220px;padding:0 0 0 10px" v-model="guarantee_date" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" :unlink-panels="true">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="15" style="text-align:left">
              <el-form-item label="质保期">
                <!-- <el-select :disabled="disabled_list[0]==1" v-model="form.mainten_start_point" clearable placeholder="开始节点">
                  <el-option v-for="item in mainten_start_point_data" :key="item.unid" :label="item.name" :value="item.code">
                  </el-option>
                </el-select> -->
                <el-date-picker v-model="this.mainten_start_date" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :disabled="true">
                </el-date-picker>
                <el-date-picker v-model="this.mainten_end_date" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :disabled="true">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="text-align:left">
            <el-col :span="8">
              <el-form-item label="备注" prop="contract_note">
                <el-input :disabled="disabled_list[0]==1" v-model="form.contract_note" type="textarea" :rows="5" style="width:220px"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="9">
              <el-form-item label="上传文件" prop="contract_appendix_list">
                <el-upload :disabled="disabled_list[0]==1" class="upload-demo" :action="upload_url" multiple :file-list="contract_appendix_list" :http-request="contract_upload" :on-preview="download_file" :on-remove="on_remove">
                  <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top">
                    <el-button :disabled="disabled_list[0]==1" type="primary" style="width:200px">点击上传</el-button>
                  </el-tooltip>
                </el-upload>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row id="hide_wrapper" style="margin-bottom:10px">
            <span id="hide_icon_text" @click="show_more">-------
              <i :class="hide_icon">{{hide_text}}</i>&nbsp;&nbsp;-------</span>
          </el-row>
          <el-collapse-transition>
            <div id="contract_hide" v-show="!hide_contract_info">
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="合同状态" prop="contract_state">
                    <el-select :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_state" clearable placeholder="合同状态">
                      <el-option v-for="item in contract_state_data" :key="item.unid" :label="item.name" :value="item.code">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="抵扣金额" prop="deduct_amount">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.deduct_amount" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="备注" prop="contract_amount_note">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_amount_note" clearable></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="累计回款额">
                    <el-input class="width-220" v-model="total_reback_amount" :disabled="true" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="暂停金额" prop="stop_amount">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.stop_amount" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="备注" prop="reback_note">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.reback_note" clearable></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="合同余额">
                    <el-input class="width-220" v-model="contract_remaining" :disabled="true"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="豁免金额" prop="exemptions_amount">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.exemptions_amount" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="备注" prop="contract_remain_note">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_remain_note" clearable></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="合同是否归档" prop="is_archive">
                    <el-select :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.is_archive" clearable placeholder="请选择">
                      <el-option label="是" :value="true"></el-option>
                      <el-option label="否" :value="false"></el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="坏账金额" prop="bad_amount">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.bad_amount" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="备注" prop="bad_amount_note">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.bad_amount_note" clearable></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="累计应收款">
                    <el-input id="total_receive_amount" class="width-220" v-model="total_receive_amount" :disabled="true"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="应收账款余额">
                    <el-input class="width-220" v-model="total_leave_amount" :disabled="true"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="逾期天数">
                    <el-input class="width-220" id="over_days" v-model="over_days_unid" :disabled="true"></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row style="text-align:left">
                <el-col :span="8">
                  <el-form-item label="确认收入金额" prop="confirm_income_amount">
                    <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.confirm_income_amount" clearable></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="账款状态" prop="amount_state_unid">
                    <el-select :disabled="true" class="width-220" v-model="get_amount_state" clearable placeholder="账款状态">
                      <el-option v-for="item in amount_state_unid_data" :key="item.unid" :label="item.name" :value="item.code">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
            </div>
          </el-collapse-transition>
        </el-form>

      </transition>
    </el-card>

    <!-- 基本信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <!-- 付款约定开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="payments_show = !payments_show">付款约定</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('payment')" v-show="false">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <div id="payments_data_table" v-show="payments_show">
          <el-table :data="payments_data" style="width: 100%">
            <el-table-column prop="payment_progress" label="付款进度" min-width="80" align="center">
              <!-- <template slot-scope="scope">
                {{scope.$index + 1}}
              </template> -->
            </el-table-column>
            <el-table-column label="付款类型" min-width="120" align="center">
              <template slot-scope="scope">
                {{get_payment_type(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column prop="days" label="天数" min-width="80" align="center">
            </el-table-column>
            <el-table-column label="付款比例(%)" min-width="100" align="center">
              <template slot-scope="scope">
                {{payments_data[scope.$index].payment_propority * 100}}
              </template>
            </el-table-column>
            <el-table-column label="本期应付款日期" min-width="120" align="center">
              <template slot-scope="scope">
                {{get_pay_date(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column prop="amount" label="本期应付款金额" min-width="120" align="center">
              <template slot-scope="scope">
                {{get_pay_amount(scope.$index).toFixed(2)}}
              </template>
            </el-table-column>
            <el-table-column prop="payment_requirement" label="本期付款条件" min-width="300" align="center">
            </el-table-column>
            <el-table-column label="操作" width="140" align="center">
              <template slot-scope="scope">
                <el-button-group>
                  <el-button @click.native.prevent="payment_data_modify(scope.$index, payments_data)" type="primary" size="mini" round :disabled="disabled_list[0]==1">
                    修改
                  </el-button>
                  <el-button @click.native.prevent="data_delete(scope.$index, payments_data,'payments')" type="danger" size="mini" round :disabled="disabled_list[0]==1">
                    移除
                  </el-button>
                </el-button-group>
              </template>
            </el-table-column>
          </el-table>
          <el-row>
            <el-button class="add_button" type="text" @click="payments_dialog_show = true" :disabled="disabled_list[0]==1">添加付款约定</el-button>
          </el-row>
        </div>
      </transition>
    </el-card>

    <!-- 付款约定弹出框 -->

    <el-dialog id="payments_dialog" title="付款约定" :visible.sync="payments_dialog_show" width="30%" :show-close="false">
      <el-form :model="payments_form" label-width="150px" label-position="left" :rules="add_rules" ref="payments_form">
        <el-form-item label="付款类型" prop="payment_type">
          <el-select v-model="payments_form.payment_type" clearable placeholder="付款类型" style="width:100%">
            <el-option v-for="item in payment_type_data" :key="item.unid" :label="item.name" :value="item.code">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="天数" prop="days">
          <el-input v-model="payments_form.days" placeholder="请输入天数" style="width:100%" clearable></el-input>
        </el-form-item>
        <el-form-item label="付款比例" prop="payment_propority">
          <el-input-number v-model="payments_form.payment_propority" :step="5" :min="0" :max="100" style="width:100%"></el-input-number>
        </el-form-item>
        <el-form-item label="条件" prop="payment_requirement">
          <el-input v-model="payments_form.payment_requirement" type="textarea" :rows="2" style="width:100%"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="payments_dialog_cancel()">取 消</el-button>
        <el-button type="primary" @click="payments_dialog_confirm()">确 定</el-button>
      </div>
    </el-dialog>

    <!-- 付款约定结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- 工程验收信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="acceptanc_show = !acceptanc_show">工程验收信息(工程部)</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('project')" v-show="disabled_list[3]!=1">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <div id="acceptanc_form" v-show="acceptanc_show">
          <el-form :inline="true" :model="first_acceptancs_form" class="demo-form-inline" label-width="100px" :rules="acceptanc_form_rules" ref="first_acceptancs_form" :disabled="disabled_list[3]==1">
            <el-row>
              <el-col :span="8">
                <el-tooltip class="item" effect="dark" content="填写初验必须填写终验" placement="top">
                  <el-form-item label="是否初验" prop="acceptanc_type">
                    <el-select class="width-220" v-model="first_acceptancs_form.acceptanc_type" clearable>
                      <el-option label="是" value="1">
                      </el-option>
                      <el-option label="否" value="">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-tooltip>
              </el-col>
              <el-col :span="8">
                <el-form-item label="项目验收日期" prop="acceptanc_date">
                  <el-date-picker class="width-220" v-model="first_acceptancs_form.acceptanc_date" type="date" value-format="yyyy-MM-dd">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="备注">
                  <el-input class="width-220" type="textarea" :rows="2" v-model="first_acceptancs_form.acceptanc_note" placeholder="备注" clearable></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-form-item lalel="上传附件">
                <el-upload class="upload-demo" :action="upload_url" multiple :file-list="first_acceptancs_appendix_list" :http-request="first_acceptances_upload" :on-preview="download_file" :on-remove="on_remove">
                  <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top">
                    <el-button type="primary">点击上传</el-button>
                  </el-tooltip>
                </el-upload>
              </el-form-item>
            </el-row>
          </el-form>
          <el-form :inline="true" :model="final_acceptancs_form" class="demo-form-inline" label-width="100px" :rules="acceptanc_form_rules2" ref="final_acceptancs_form" :disabled="disabled_list[3]==1">
            <el-row>
              <el-col :span="8">
                <el-tooltip class="item" effect="dark" content="填写初验必须填写终验" placement="top">
                  <el-form-item label="是否终验" prop="acceptanc_type">
                    <el-select class="width-220" v-model="final_acceptancs_form.acceptanc_type" clearable>
                      <el-option label="是" value="2">
                      </el-option>
                      <el-option label="否" value="">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-tooltip>
              </el-col>
              <el-col :span="8">
                <el-form-item label="项目验收日期" prop="acceptanc_date">
                  <el-date-picker class="width-220" v-model="final_acceptancs_form.acceptanc_date" type="date" value-format="yyyy-MM-dd">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="备注">
                  <el-input class="width-220" type="textarea" :rows="2" v-model="final_acceptancs_form.acceptanc_note" placeholder="备注" clearable></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-form-item lalel="上传附件">
                <el-upload class="upload-demo" :action="upload_url" multiple :file-list="acceptancs_appendix_list" :http-request="acceptances_upload" :on-preview="download_file" :on-remove="on_remove">
                  <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top">
                    <el-button type="primary">点击上传</el-button>
                  </el-tooltip>
                </el-upload>
              </el-form-item>
            </el-row>
          </el-form>
        </div>
      </transition>
    </el-card>
    <!-- 工程验收信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- 合同回款信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="rebacks_show = !rebacks_show">合同回款信息(财务部)</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('reback')" v-show="disabled_list[1]!=1">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <div id="rebacks_data_table" v-show="rebacks_show">
          <el-table :data="rebacks_data" style="width:100%">
            <el-table-column label="回款进度" prop="reback_progress" min-width="100" align="center">
              <!-- <template slot-scope="scope">
                {{scope.$index + 1}}
              </template> -->
            </el-table-column>
            <el-table-column prop="actual_reback_amount" label="实际回款金额" min-width="200" align="center">
            </el-table-column>
            <el-table-column label="回款比例(%)" min-width="100" align="center">
              <template slot-scope="scope">
                {{reback_propority_cal(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column prop="reback_date" label="回款日期" min-width="200" align="center">
            </el-table-column>
            <el-table-column prop="reback_note" label="回款备注" min-width="300" align="center">
            </el-table-column>
            <el-table-column label="操作" width="140" align="center">
              <template slot-scope="scope">
                <el-button-group>
                  <el-button @click.native.prevent="reback_data_modify(scope.$index, rebacks_data)" type="primary" size="mini" round :disabled="disabled_list[1]==1">
                    修改
                  </el-button>
                  <el-button @click.native.prevent="data_delete(scope.$index, rebacks_data,'rebacks')" type="danger" size="mini" round :disabled="disabled_list[1]==1">
                    移除
                  </el-button>
                </el-button-group>
              </template>
            </el-table-column>
          </el-table>
          <el-row>
            <el-button class="add_button" type="text" @click="rebacks_dialog_show = true" :disabled="disabled_list[1]==1">添加合同回款信息</el-button>
          </el-row>
        </div>
      </transition>
    </el-card>
    <!-- 合同回款信息弹出框 -->

    <el-dialog id="rebacks_dialog" title="回款信息" :visible.sync="rebacks_dialog_show" width="30%" :show-close="false">
      <el-form :model="rebacks_form" label-width="150px" label-position="left" :rules="rebacks_form_rules" ref="rebacks_form">
        <el-form-item label="实际回款金额" prop="actual_reback_amount">
          <el-input v-model="rebacks_form.actual_reback_amount" placeholder="请输入金额" style="width:100%" clearable></el-input>
        </el-form-item>
        <el-form-item label="回款日期" prop="reback_date">
          <el-date-picker style="width:100%" v-model="rebacks_form.reback_date" type="date" value-format="yyyy-MM-dd" clearable>
          </el-date-picker>
        </el-form-item>
        <el-form-item label="备注" prop="reback_note">
          <el-input v-model="rebacks_form.reback_note" placeholder="备注" style="width:100%" type="textarea" :rows="2"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="rebacks_dialog_cancel()">取 消</el-button>
        <el-button type="primary" @click="rebacks_dialog_confirm()">确 定</el-button>
      </div>
    </el-dialog>

    <!-- 合同回款信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- 合同开票信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="receipts_show = !receipts_show">合同开票信息(财务部)</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('receipt')" v-show="disabled_list[1]!=1">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <div id="receipts_data_table" v-show="receipts_show">
          <el-table :data="receipts_data" style="width: 100%">
            <el-table-column prop="receipt_progress" label="开票进度" min-width="100" align="center">
            </el-table-column>
            <el-table-column prop="receipt_amount" label="开票金额" min-width="150" align="center">
            </el-table-column>
            <el-table-column prop="oa_flow_id" label="OA流水号" min-width="150" align="center">
            </el-table-column>
            <el-table-column label="开票比例(%)" min-width="100" align="center">
              <template slot-scope="scope">
                {{receipt_propority_cal(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column label="累计开票金额" min-width="200" align="center">
              <template slot-scope="scope">
                {{total_receipt_amount_cal(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column label="是否回款" min-width="100" align="center">
              <template slot-scope="scope">
                {{is_reback_cal(scope.$index)}}
              </template>
            </el-table-column>
            <el-table-column prop="receipt_note" label="备注" min-width="300" align="center">
            </el-table-column>
            <el-table-column label="操作" width="140" align="center">
              <template slot-scope="scope">
                <el-button-group>
                  <el-button @click.native.prevent="receipt_data_modify(scope.$index, receipts_data)" type="primary" size="mini" round :disabled="disabled_list[1]==1">
                    修改
                  </el-button>
                  <el-button @click.native.prevent="data_delete(scope.$index, receipts_data,'receipts')" type="danger" size="mini" round :disabled="disabled_list[1]==1">
                    移除
                  </el-button>
                </el-button-group>
              </template>
            </el-table-column>
          </el-table>
          <el-row>
            <el-button class="add_button" type="text" @click="receipts_dialog_show = true" :disabled="disabled_list[1]==1">添加开票信息</el-button>
          </el-row>
        </div>
      </transition>
    </el-card>
    <!-- 开票信息弹出框 -->

    <el-dialog id="receipts_dialog" title="开票合同" :visible.sync="receipts_dialog_show" width="30%" :show-close="false">
      <el-form :model="receipts_form" label-width="150px" label-position="left" :rules="receipts_form_rules" ref="receipts_form">
        <el-form-item label="开票金额" prop="receipt_amount">
          <el-input v-model="receipts_form.receipt_amount" placeholder="请输入金额" style="width:100%"></el-input>
        </el-form-item>
        <el-form-item label="OA流水号" prop="oa_flow_id">
          <el-input v-model="receipts_form.oa_flow_id" placeholder="请输入流水号" style="width:100%"></el-input>
        </el-form-item>
        <el-form-item label="备注" prop="receipt_note">
          <el-input v-model="receipts_form.receipt_note" placeholder="备注" style="width:100%" type="textarea" :rows="2"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="receipts_dialog_cancel()">取 消</el-button>
        <el-button type="primary" @click="receipts_dialog_confirm()">确 定</el-button>
      </div>
    </el-dialog>

    <!-- 合同开票信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- 发货信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <el-card class="box-card" id="tail">
      <div slot="header" class="clearfix">
        <span style="font-size:24px;color:#eff0dc" @click="delivers_show = !delivers_show">发货信息(生产部)</span>
        <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('deliver')" v-show="disabled_list[2]!=1">提交</el-button>
      </div>

      <transition name="el-fade-in-linear">
        <div id="delivers_data_table" v-show="delivers_show">
          <el-table :data="delivers_data" style="width: 100%">
            <el-table-column prop="deliver_goods_date" label="发货日期" width="300" align="center">
            </el-table-column>
            <el-table-column prop="goods_acceptanc_date" label="到货验收日期" width="300" align="center">
            </el-table-column>
            <el-table-column min-width="10" align="center">
            </el-table-column>
            <el-table-column label="操作" width="140" align="center">
              <template slot-scope="scope">
                <el-button-group>
                  <el-button :disabled="disabled_list[2]==1" @click.native.prevent="deliver_data_modify(scope.$index, delivers_data)" type="primary" size="mini" round>
                    修改
                  </el-button>
                  <el-button :disabled="disabled_list[2]==1" @click.native.prevent="data_delete(scope.$index, delivers_data,'delivers')" type="danger" size="mini" round>
                    移除
                  </el-button>
                </el-button-group>
              </template>
            </el-table-column>
          </el-table>
          <el-row>
            <el-button class="add_button" type="text" @click="delivers_dialog_show = true" :disabled="disabled_list[2]==1">添加发货信息</el-button>
          </el-row>
        </div>
      </transition>
    </el-card>
    <!-- 发货信息信息弹出框 -->

    <el-dialog id="delivers_dialog" title="发货信息" :visible.sync="delivers_dialog_show" width="30%" :show-close="false">
      <el-form :model="delivers_form" label-width="150px" label-position="left" :rules="add_rules" ref="delivers_form">
        <el-form-item label="发货日期" prop="deliver_goods_date">
          <el-date-picker style="width:100%" v-model="delivers_form.deliver_goods_date" type="date" value-format="yyyy-MM-dd">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="到货验收日期" prop="goods_acceptanc_date">
          <el-date-picker style="width:100%" v-model="delivers_form.goods_acceptanc_date" type="date" value-format="yyyy-MM-dd">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="上传文件">
          <el-upload class="upload-demo" :action="upload_url" multiple :file-list="delivers_form.delivers_appendix_list" :http-request="delivers_upload" :on-preview="download_file" :on-remove="on_remove">
            <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top">
              <el-button type="primary">点击上传</el-button>
            </el-tooltip>
          </el-upload>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="delivers_dialog_cancel()">取 消</el-button>
        <el-button type="primary" @click="delivers_dialog_confirm()">确 定</el-button>
      </div>
    </el-dialog>

    <!-- 发货信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  </div>
</template>
<script>
  const twodecimalrule = {
    pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
    message: "请填写正确金额",
    trigger: "blur"
  };
  export default {
    name: "contract_information",
    data() {
      return {
        hide_icon: "icon i-arrowdown-copy",
        hide_text: "显示更多",
        hide_contract_info: true,
        contract_unid_disabled: false,
        disabled_list: [1, 1, 1, 1],
        contract_appendix_list: [],
        acceptancs_appendix_list: [],
        first_acceptancs_appendix_list: [],
        operate_type: [0, 0, 0, 0, 0, 0], //整个页面的操作类型,一共6个表单,0表示新增,1表示修改
        code_base_url: this.$disparch_data.code_base_url,
        contract_base_url: this.$disparch_data.contract_base_url,
        auth_base_url: this.$disparch_data.auth_base_url,
        contract_unid_selected_data: [], //合同编号数据数组
        salesperson_unid_selected_data: [], //销售人员数据数组
        project_unid_selected_data: [], //项目名称数据数组
        customer_unid_selected_data: [], //客户名称数据数组
        provinces: [],
        cities: [],
        // counties: [],
        modify_data: false, //用来标志dialog用来修改数据
        modify_index: -1, //用来标志修改数据的索引
        payment_type_data: [],
        product_line_type_data: [],
        contract_state_data: [],
        contract_type_data: [],
        amount_state_unid_data: [],
        // mainten_start_point_data: [],
        guarantee_date: [,], //维保服务期,数组形式的日期,0开始,1结束。
        // show and display~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        payments_dialog_show: false,
        receipts_dialog_show: false,
        rebacks_dialog_show: false,
        delivers_dialog_show: false,
        payments_show: true,
        contract_show: true,
        rebacks_show: true,
        receipts_show: true,
        delivers_show: true,
        acceptanc_show: true,
        // show and display~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        form: {
          // 合同编号
          contract_unid: null,
          //销售员
          salesperson_unid: null,
          // 项目名称
          project_unid: null,
          // 客户名称
          customer_unid: null,
          // 项目所在省
          province_value: "",
          // // 项目所在市
          city_value: "",
          // // 项目所在区
          // county_value: "",
          // 质保周期
          guarantee_period: 6,
          // 签订时间
          sign_date: "",
          // 产品线类型
          product_line_type: null,
          // 合同状态
          contract_state: "30003",
          // 合同类型
          contract_type: null,
          // 合同金额
          contract_amount: null,
          // 抵扣金额
          deduct_amount: null,
          // 合同金额备注
          contract_amount_note: "",
          // 暂停金额
          stop_amount: null,
          // 累计回款额备注
          reback_note: "",
          // 豁免金额
          exemptions_amount: null,
          // 合同余额备注
          contract_remain_note: "",
          // 是否归档
          is_archive: "",
          // 坏账金额
          bad_amount: null,
          // 坏账金额备注
          bad_amount_note: "",
          // 确定收入金额
          confirm_income_amount: "",
          // 账款状态
          amount_state_unid: "",
          // 质保期开始
          // mainten_start_point: null,
          // 合同备注
          contract_note: "",
          // 合同附件
          appendix_unids: [],
          start_guarantee_date: "",
          end_guarantee_date: ""
        },

        // 工程验收表单
        first_acceptancs_form: {
          acceptanc_unid: "",
          acceptanc_type: "",
          acceptanc_date: "",
          acceptanc_note: "",
          appendix_unids: []
        },

        final_acceptancs_form: {
          acceptanc_unid: "",
          acceptanc_type: "",
          acceptanc_date: "",
          acceptanc_note: "",
          appendix_unids: []
        },
        // 发货信息表单和数据,提交时提交data里的数据
        delivers_data: [],
        delivers_form: {
          deliver_unid: null,
          deliver_goods_date: "",
          goods_acceptanc_date: "",
          appendix_unids: [],
          delivers_appendix_list: []
        },
        // 付款约定表单和数据,提交时提交data里的数据
        payments_data: [],
        payments_form: {
          payment_unid: null,
          payment_type: "",
          days: "",
          payment_propority: "",
          payment_requirement: ""
        },
        // 回款信息表单和数据,提交时提交data里的数据
        rebacks_data: [],
        rebacks_form: {
          reback_unid: null,
          actual_reback_amount: null,
          reback_date: "",
          reback_note: ""
        },
        // 开票信息表单和数据,提交时提交data里的数据
        receipts_data: [],
        receipts_form: {
          receipt_unid: null,
          receipt_amount: null,
          oa_flow_id: "",
          receipt_note: ""
        },

        // 表单验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        add_rules: {
          project_unid: {
            required: true,
            message: "不能为空",
            trigger: "blur"
          },
          customer_unid: {
            required: true,
            message: "不能为空",
            trigger: "blur"
          },
          contract_unid: {
            required: true,
            message: "不能为空",
            trigger: "blur"
          },
          contract_amount: twodecimalrule,
          deduct_amount: twodecimalrule,
          stop_amount: twodecimalrule,
          exemptions_amount: twodecimalrule,
          bad_amount: twodecimalrule,
          confirm_income_amount: twodecimalrule,
          payment_type: {
            required: true,
            message: "类型不能为空",
            trigger: "blur"
          },
          days: {
            required: true,
            pattern: /(^[1-9](\d*)$)|(^0$)/,
            message: "请输入正确天数",
            trigger: "blur"
          },
          deliver_goods_date: {
            validator: (rule, value, callback) => {
              if (value == "") {
                callback(new Error("时间不能为空"));
              } else callback();
            },
            trigger: "blur"
          },
          goods_acceptanc_date: {
            validator: (rule, value, callback) => {
              if (value == "") {
                callback(new Error("时间不能为空"));
              } else if (
                this.delivers_form.deliver_goods_date &&
                value < this.delivers_form.deliver_goods_date
              ) {
                callback(new Error("到货验收时间不能小于发货时间"));
              } else callback();
            },
            trigger: "blur"
          }
        },
        rebacks_form_rules: {
          actual_reback_amount: {
            required: true,
            validator: (rule, value, callback) => {
              if (parseFloat(this.form.contract_amount) < parseFloat(value)) {
                callback(new Error("实际回款金额不能大于合同金额"));
              } else if (
                !/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(
                  value
                )
              ) {
                callback(new Error("请填写正确金额"));
              } else callback();
            },
            trigger: "blur"
          },
          reback_date: {
            required: true,
            message: "不能为空",
            trigger: "blur"
          }
        },
        receipts_form_rules: {
          receipt_amount: {
            required: true,
            validator: (rule, value, callback) => {
              if (parseFloat(this.form.contract_amount) < parseFloat(value)) {
                callback(new Error("开票金额不能大于合同金额"));
              } else if (
                !/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(
                  value
                )
              ) {
                callback(new Error("请填写正确金额"));
              } else callback();
            },
            trigger: "blur"
          },
          oa_flow_id: {
            required: true,
            message: "请输入流水号",
            trigger: "blur"
          }
        },
        acceptanc_form_rules: {
          acceptanc_date: {
            validator: (rule, value, callback) => {
              if (
                this.first_acceptancs_form.acceptanc_type == "1" &&
                value == null
              ) {
                callback(new Error("请填写时间"));
              } else callback();
            },
            trigger: "blur"
          }
        },
        acceptanc_form_rules2: {
          acceptanc_date: {
            validator: (rule, value, callback) => {
              var a = this.final_acceptancs_form.acceptanc_type;
              if (a == "2" && value == null) {
                callback(new Error("请填写时间"));
              } else callback();
            },
            trigger: "blur"
          },
          //callback必须返回
          acceptanc_type: {
            validator: (rule, value, callback) => {
              if (
                this.first_acceptancs_form.acceptanc_type == "1" &&
                value != "2"
              ) {
                callback(new Error("初验必须终验"));
              } else {
                callback();
              }
            }
          }
        }
        // 表单验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      };
    },
    computed: {
      get_amount_state() {
        var now_date =
          new Date().getFullYear() +
          "-" +
          (new Date().getMonth() + 1) +
          "-" +
          new Date().getDate();
        var over = {
          amount_state: null,
          weight: -1
        };
        var normal = {
          amount_state: null
        };
        var amount = 0;
        var contract_amount = this.form.contract_amount;
        var total_reback_amount = this.total_reback_amount;
        this.payments_data.forEach(e => {
          var _this = this;
          switch (e.payment_type) {
            //预付款和维保款的判断
            case "100001":
              if (_this.form.sign_date) {
                amount += e.payment_propority * parseFloat(contract_amount);
                //小于说明逾期了,然后再判断钱
                if (
                  _this.date_diff(
                    now_date,
                    _this.date_add_days(_this.form.sign_date, e.days)
                  ) > 0 &&
                  amount > total_reback_amount
                ) {
                  over.weight = 8;
                  if (_this.form.contract_type != "40003") {
                    over.amount_state = "50006"; //逾期预付款
                  } else {
                    over.amount_state = "50012"; //逾期维保款
                  }
                } else {
                  if (_this.form.contract_type != "40003") {
                    normal.amount_state = "50003"; //正常预付款
                  } else {
                    normal.amount_state = "50002"; //正常维保款
                  }
                }
              }
              break;
            //到货款
            case "100002":
            case "100004":
              if (
                _this.delivers_data[0] &&
                _this.delivers_data[0].goods_acceptanc_date
              ) {
                amount += e.payment_propority * parseFloat(contract_amount);
                if (
                  _this.date_diff(
                    now_date,
                    _this.date_add_days(
                      _this.delivers_data[_this.delivers_data.length - 1]
                        .goods_acceptanc_date,
                      e.days
                    )
                  ) > 0 &&
                  amount > total_reback_amount
                ) {
                  if (e.payment_type == "100002" && over.weight < 8) {
                    over.weight = 7;
                    over.amount_state = "50007"; //逾期到货款
                  } else if (over.weight < 6) {
                    over.weight = 5;
                    over.amount_state = "50009"; //逾期质保款
                  }
                } else {
                  if (e.payment_type == "100002") {
                    normal.amount_state = "50004"; //正常到货款
                  } else {
                    normal.amount_state = "50005"; //正常质保款
                  }
                }
              }
              break;
            case "100003":
            case "100005":
              if (_this.final_acceptancs_form.acceptanc_date) {
                amount += e.payment_propority * parseFloat(contract_amount);
                if (
                  _this.date_diff(
                    now_date,
                    _this.date_add_days(
                      _this.final_acceptancs_form.acceptanc_date,
                      e.days
                    )
                  ) > 0 &&
                  amount > total_reback_amount
                ) {
                  if (e.payment_type == "100003" && over.weight < 7) {
                    over.weight = 6;
                    over.amount_state = "50008"; //逾期验收款
                  } else if (over.weight < 6) {
                    over.weight = 5;
                    over.amount_state = "50009"; //逾期质保款
                  }
                } else {
                  if (e.payment_type == "100003") {
                    normal.amount_state = "50001"; //正常验收款
                  } else {
                    normal.amount_state = "50005"; //正常质保款
                  }
                }
              }
              break;
            default:
              break;
          }
        });
        if (over.weight > 0) {
          return over.amount_state;
        } else {
          return normal.amount_state;
        }
      },
      get_province_unid() {
        if (this.form.province_value) {
          return this.form.province_value.split("#")[0];
        }
      },
      get_province_name() {
        if (this.form.province_value) {
          return this.form.province_value.split("#")[1];
        }
      },
      get_city_unid() {
        if (this.form.city_value) {
          return this.form.city_value.split("#")[0];
        }
      },
      get_city_name() {
        if (this.form.city_value) {
          return this.form.city_value.split("#")[1];
        }
      },
      // get_county_unid() {
      //   if (this.form.county_value) {
      //     return this.form.county_value.split("#")[0];
      //   }
      // },
      // get_county_name() {
      //   if (this.form.county_value) {
      //     return this.form.county_value.split("#")[1];
      //   }
      // },
      get_year() {
        if (this.form.sign_date) {
          var date = this.form.sign_date;
          return date.slice(0, 4);
        }
      },
      get_month() {
        if (this.form.sign_date) {
          var date = this.form.sign_date;
          return date.slice(5, 7);
        }
      },
      // 上传附件地址
      upload_url: function() {
        return (
          this.contract_base_url + this.form.contract_unid + "/upload/appendixes"
        );
      },
      // 合同余额
      contract_remaining: function() {
        var a =
          this.form.contract_amount -
          this.form.deduct_amount -
          this.total_reback_amount -
          this.form.stop_amount -
          this.form.exemptions_amount -
          this.form.bad_amount;
        if (isNaN(a)) {
          return null;
        } else {
          return a.toFixed(2);
        }
      },
      // 累计回款额
      total_reback_amount: function() {
        var total = 0;
        for (let i = 0; i < this.rebacks_data.length; i++) {
          const e = this.rebacks_data[i];
          if (e.actual_reback_amount) {
            total += parseFloat(e.actual_reback_amount);
          }
        }
        return total.toFixed(2);
      },
      //累计应收款
      total_receive_amount: function() {
        var total = 0;
        var now = new Date();
        var now_date =
          now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
        for (let i = 0; i < this.payments_data.length; i++) {
          const e = this.payments_data[i];
          if (this.date_diff(now_date, this.get_pay_date(i)) >= 0) {
            total += parseFloat(this.get_pay_amount(i));
          }
        }
        return total.toFixed(2);
      },
      // 应收账款余额
      total_leave_amount: function() {
        var a =
          this.total_receive_amount -
          this.total_reback_amount -
          this.form.deduct_amount -
          this.form.stop_amount -
          this.form.exemptions_amount -
          this.form.bad_amount;
        if (isNaN(a)) {
          return null;
        } else {
          return a.toFixed(2);
        }
      },
      // 逾期天数
      over_days_unid: function() {
        var pay_date = "";
        var now = new Date();
        var now_date =
          now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
        var amount = 0;
        var days = 0;
        for (let i = 0; i < this.payments_data.length; i++) {
          const element = this.payments_data[i];
          pay_date = this.get_pay_date(i);
          var pay_amount = this.get_pay_amount(i);
          amount += pay_amount;
          var a = this.date_diff(now_date, pay_date);
          if (a > 0 && (amount > this.total_reback_amount && a > days)) {
            days = a;
          }
        }
        return days;
      },
      // 维保服务期开始时间
      start_guarantee_date: function() {
        if (this.guarantee_date && this.guarantee_date[0]) {
          return this.guarantee_date[0];
        }
      },
      // 维保服务期结束时间
      end_guarantee_date: function() {
        if (this.guarantee_date && this.guarantee_date[1]) {
          return this.guarantee_date[1];
        }
      },
      mainten_start_date: function() {
        // if (
        //   this.form.mainten_start_point == "60001" &&
        //   this.form.sign_date &&
        //   this.form.guarantee_period
        // ) {
        //   return this.form.sign_date;
        // } else if (
        //   this.form.mainten_start_point == "60002" &&
        //   this.delivers_data[0]
        // ) {
        //   var index = this.delivers_data.length - 1;
        //   return this.delivers_data[index].goods_acceptanc_date;
        // } else
        if (
          // this.form.mainten_start_point == "60003" &&
          this.final_acceptancs_form.acceptanc_type == "2" &&
          this.final_acceptancs_form.acceptanc_date != null
        ) {
          return this.final_acceptancs_form.acceptanc_date;
        }
      },
      mainten_end_date: function() {
        // if (
        //   this.form.mainten_start_point == "60001" &&
        //   this.form.sign_date &&
        //   this.form.guarantee_period
        // ) {
        //   return this.date_add_month(
        //     this.form.sign_date,
        //     this.form.guarantee_period
        //   );
        // } else if (
        //   this.form.mainten_start_point == "60002" &&
        //   this.delivers_data[0]
        // ) {
        //   var index = this.delivers_data.length - 1;
        //   return this.date_add_month(
        //     this.delivers_data[index].goods_acceptanc_date,
        //     this.form.guarantee_period
        //   );
        // } else

        if (
          // this.form.mainten_start_point == "60003" &&
          this.final_acceptancs_form.acceptanc_type == "2" &&
          this.final_acceptancs_form.acceptanc_date != null
        ) {
          return this.date_add_month(
            this.final_acceptancs_form.acceptanc_date,
            this.form.guarantee_period
          );
        }
      }
    },
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    methods: {
      show_more() {
        this.hide_contract_info = !this.hide_contract_info;
        this.hide_contract_info == true
          ? (this.hide_text = "显示更多")
          : (this.hide_text = "收起");
        this.hide_contract_info == true
          ? (this.hide_icon = "icon i-arrowdown-copy")
          : (this.hide_icon = "icon i-arrowup");
      },
      download_file(f) {
        window.open(f.url);
      },
      // upload+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      contract_upload(f) {
        let param = new FormData(); //创建form对象
        param.append("appendix_files", f.file); //通过append向form对象添加数据
        param.append("business_table", "contracts"); //添加form表单中其他数据
        var xhr = new XMLHttpRequest();
        xhr.open("post", f.action, true);
        var _this = this;
        xhr.onerror = function() {
          _this.$message.err("上传失败");
        };
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) {
            var a = JSON.parse(xhr.response);
            var b = {};
            b.name = a[0].appendix_name;
            b.url = a[0].appendix_url;
            b.appendix_unid = a[0].appendix_unid;
            _this.contract_appendix_list.push(b);
            _this.form.appendix_unids.push(b.appendix_unid);
            _this.$message({
              message: "成功",
              type: "success"
            });
          } else {
            _this.$message({
              message: "失败",
              type: "error"
            });
          }
        };
        xhr.send(param);
      },
      delivers_upload(f) {
        let param = new FormData(); //创建form对象
        param.append("appendix_files", f.file); //通过append向form对象添加数据
        param.append("business_table", "delivers"); //添加form表单中其他数据
        var xhr = new XMLHttpRequest();
        xhr.open("post", f.action, true);
        var _this = this;
        xhr.onerror = function() {
          _this.$message.err("上传失败");
        };
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) {
            var a = JSON.parse(xhr.response);
            var b = {};
            b.name = a[0].appendix_name;
            b.url = a[0].appendix_url;
            b.appendix_unid = a[0].appendix_unid;
            _this.delivers_form.appendix_unids.push(b.appendix_unid);
            _this.delivers_form.delivers_appendix_list.push(b);
            _this.$message({
              message: "成功",
              type: "success"
            });
          } else {
            _this.$message({
              message: "失败",
              type: "error"
            });
          }
        };
        xhr.send(param);
      },
      acceptances_upload(f) {
        let param = new FormData(); //创建form对象
        param.append("appendix_files", f.file); //通过append向form对象添加数据
        param.append("business_table", "acceptance"); //添加form表单中其他数据
        var xhr = new XMLHttpRequest();
        xhr.open("post", f.action, true);
        var _this = this;
        xhr.onerror = function() {
          _this.$message.err("上传失败");
        };
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) {
            var a = JSON.parse(xhr.response);
            var b = {};
            b.name = a[0].appendix_name;
            b.url = a[0].appendix_url;
            b.appendix_unid = a[0].appendix_unid;
            _this.final_acceptancs_form.appendix_unids.push(b.appendix_unid);
            _this.acceptancs_appendix_list.push(b);
            _this.$message({
              message: "成功",
              type: "success"
            });
          } else {
            _this.$message({
              message: "失败",
              type: "error"
            });
          }
        };
        xhr.send(param);
      },
      first_acceptances_upload(f) {
        let param = new FormData(); //创建form对象
        param.append("appendix_files", f.file); //通过append向form对象添加数据
        param.append("business_table", "acceptance"); //添加form表单中其他数据
        var xhr = new XMLHttpRequest();
        xhr.open("post", f.action, true);
        var _this = this;
        xhr.onerror = function() {
          _this.$message.err("上传失败");
        };
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) {
            var a = JSON.parse(xhr.response);
            var b = {};
            b.name = a[0].appendix_name;
            b.url = a[0].appendix_url;
            b.appendix_unid = a[0].appendix_unid;
            _this.first_acceptancs_form.appendix_unids.push(b.appendix_unid);
            _this.first_acceptancs_appendix_list.push(b);
            _this.$message({
              message: "成功",
              type: "success"
            });
          } else {
            _this.$message({
              message: "失败",
              type: "error"
            });
          }
        };
        xhr.send(param);
      },
      on_remove(file, fileList) {
        this.$alert("暂时不能删除");
      },
      // upload+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      total_receipt_amount_cal(index) {
        var total_receipt_amount = 0;
        for (let i = index; i >= 0; i--) {
          total_receipt_amount += parseFloat(
            this.receipts_data[i].receipt_amount
          );
        }
        return parseFloat(total_receipt_amount).toFixed(2);
      },
      is_reback_cal(index) {
        var total_receipt_amount = 0;
        for (let i = index; i >= 0; i--) {
          total_receipt_amount += parseFloat(
            this.receipts_data[i].receipt_amount
          );
        }
        if (this.total_reback_amount >= total_receipt_amount) {
          return "是";
        } else {
          return "否";
        }
      },
      receipt_propority_cal(index) {
        var receipt_propority = 0;
        if (this.form.contract_amount) {
          receipt_propority = (
            this.receipts_data[index].receipt_amount *
            100 /
            this.form.contract_amount
          ).toFixed(2);
        }
        return receipt_propority;
      },
      reback_propority_cal(index) {
        var reback_propority = 0;
        if (this.form.contract_amount) {
          reback_propority =
            this.rebacks_data[index].actual_reback_amount /
            this.form.contract_amount *
            100;
        }
        return parseFloat(reback_propority).toFixed(2);
      },

      // dialog_cancel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      payments_dialog_cancel() {
        this.modify_data = false;
        this.payments_form = {};
        this.payments_dialog_show = false;
      },
      rebacks_dialog_cancel() {
        this.modify_data = false;
        this.rebacks_form = {};
        this.rebacks_dialog_show = false;
      },
      receipts_dialog_cancel() {
        this.modify_data = false;
        this.receipts_form = {};
        this.receipts_dialog_show = false;
      },
      delivers_dialog_cancel() {
        this.modify_data = false;
        this.delivers_form = { appendix_unids: [], delivers_appendix_list: [] };
        this.delivers_dialog_show = false;
      },

      // dialog_cancel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      // date_methods~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      date_diff(date1, date2) {
        if (date1 && date2) {
          var date1s = date1.split("-");
          var date2s = date2.split("-");
          var days = parseInt(
            (new Date(date1s[0], date1s[1] - 1, date1s[2]).getTime() -
              new Date(date2s[0], date2s[1] - 1, date2s[2]).getTime()) /
              1000 /
              60 /
              60 /
              24
          );
          return days;
        }
      },
      date_add_days(datestr, daynum) {
        if (datestr && daynum != null) {
          var date_str = datestr;
          var date = new Date(date_str.replace(/-/g, "/"));
          date = new Date((date / 1000 + 86400 * daynum) * 1000);
          var result_date =
            date.getFullYear() +
            "-" +
            (date.getMonth() + 1) +
            "-" +
            date.getDate();
          return result_date;
        }
      },
      date_add_month(datestr, month) {
        if (datestr && month) {
          var dates = datestr.split("-");
          var date = new Date(dates[0], dates[1] - 1 + month, dates[2]);
          return date
            .toLocaleDateString()
            .match(/\d+/g)
            .join("-");
        }
      },
      // date_methods~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      // remoteMethod~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      get_contract_unid() {
        this.$Axios({
          method: "get",
          url: this.contract_base_url + "codes"
        })
          .then(response => {
            this.contract_unid_selected_data = response.data;
          })
          .catch(err => {
            console.log(err.message);
          });
      },
      get_salesperson() {
        this.$Axios({
          method: "get",
          url: this.auth_base_url + "users",
          params: {
            norm_type: "employee"
          }
        })
          .then(response => {
            this.salesperson_unid_selected_data = response.data.list_data;
          })
          .catch(err => {
            console.log(err.message);
          });
      },
      // remoteMethod~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      // dialog_confirm_start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      payments_dialog_confirm() {
        this.$refs["payments_form"].validate(valid => {
          if (valid) {
            var payment_unid = this.payments_form.payment_unid;
            var days = this.payments_form.days;
            var propority =
              parseFloat(this.payments_form.payment_propority) / 100;
            var requirement = this.payments_form.payment_requirement;

            var type_value = this.payments_form.payment_type;

            // 总比例为1,用1减去每个已存的比例,剩下的如果小于本次比例,那么添加不成功
            var total_propority = 1;
            for (let i = 0; i < this.payments_data.length; i++) {
              const e = this.payments_data[i];
              if (! this.modify_data) {
                total_propority -= e.payment_propority;
              }else if (i != this.modify_index) {
                total_propority -= e.payment_propority;
              }{
              }
              if (
                ((type_value == "100004" || type_value == "100005") &&
                  (e.payment_type == "100004" || e.payment_type == "100005")) ||
                type_value == e.payment_type
              ) {
                if (!(this.modify_data && this.modify_index == i)) {
                  this.payments_form = {};
                  this.modify_data = false;
                  this.payments_dialog_show = false;
                  this.$message.error("只能出现一次");
                  return;
                }
              }
            }
            if (total_propority < propority) {
              this.$message.error("请检查付款比例是否正确");
              return;
            }

            var a = {
              payment_unid: payment_unid,
              payment_type: type_value,
              days: days,
              payment_propority: propority,
              payment_requirement: requirement
            };
            if (!this.modify_data) {
              if (this.payments_data.length > 0) {
                a.payment_progress =
                  this.payments_data[this.payments_data.length - 1]
                    .payment_progress + 1;
              } else {
                a.payment_progress = 1;
              }
              this.payments_data.push(a);
            } else {
              a.payment_progress = this.payments_data[
                this.modify_index
              ].payment_progress;
              this.$set(this.payments_data, this.modify_index, a);
            }

            this.payments_form = {};
            this.modify_data = false;
            this.payments_dialog_show = false;
          }
        });
      },
      receipts_dialog_confirm() {
        this.$refs["receipts_form"].validate(valid => {
          if (valid) {
            var receipt_unid = this.receipts_form.receipt_unid;
            var receipt_amount = parseFloat(this.receipts_form.receipt_amount);
            var oa_flow_id = this.receipts_form.oa_flow_id;
            var receipt_note = this.receipts_form.receipt_note;
            var a = {
              receipt_unid: receipt_unid,
              receipt_amount: parseFloat(receipt_amount).toFixed(2),
              oa_flow_id: oa_flow_id,
              receipt_note: receipt_note
            };
            if (!this.modify_data) {
              if (this.receipts_data.length > 0) {
                a.receipt_progress =
                  this.receipts_data[this.receipts_data.length - 1]
                    .receipt_progress + 1;
              } else {
                a.receipt_progress = 1;
              }
              this.receipts_data.push(a);
            } else {
              a.receipt_progress = this.receipts_data[
                this.modify_index
              ].receipt_progress;
              this.$set(this.receipts_data, this.modify_index, a);
            }
            this.modify_data = false;
            this.receipts_form = {};
            this.receipts_dialog_show = false;
          }
        });
      },
      rebacks_dialog_confirm() {
        this.$refs["rebacks_form"].validate(valid => {
          if (valid) {
            var actual_reback_amount = this.rebacks_form.actual_reback_amount;
            var reback_unid = this.rebacks_form.reback_unid;
            var reback_date = this.rebacks_form.reback_date;
            var reback_note = this.rebacks_form.reback_note;
            var a = {
              reback_unid: reback_unid,
              actual_reback_amount: actual_reback_amount,
              reback_date: reback_date,
              reback_note: reback_note
            };

            if (!this.modify_data) {
              if (this.rebacks_data.length > 0) {
                a.reback_progress =
                  this.rebacks_data[this.rebacks_data.length - 1]
                    .reback_progress + 1;
              } else {
                a.reback_progress = 1;
              }
              this.rebacks_data.push(a);
            } else {
              a.reback_progress = this.rebacks_data[
                this.modify_index
              ].reback_progress;
              this.$set(this.rebacks_data, this.modify_index, a);
            }

            this.modify_data = false;

            this.rebacks_form = {};
            this.rebacks_dialog_show = false;
          }
        });
      },
      delivers_dialog_confirm() {
        this.$refs["delivers_form"].validate(valid => {
          if (valid) {
            var deliver_unid = this.delivers_form.deliver_unid;
            var deliver_goods_date = this.delivers_form.deliver_goods_date;
            var goods_acceptanc_date = this.delivers_form.goods_acceptanc_date;
            var appendix_unids = this.delivers_form.appendix_unids;
            var delivers_appendix_list = this.delivers_form
              .delivers_appendix_list;
            var a = {
              deliver_unid: deliver_unid,
              deliver_goods_date: deliver_goods_date,
              goods_acceptanc_date: goods_acceptanc_date,
              appendix_unids: appendix_unids,
              delivers_appendix_list: delivers_appendix_list
            };
            if (!this.modify_data) {
              this.delivers_data.push(a);
            } else {
              this.$set(this.delivers_data, this.modify_index, a);
            }
            this.modify_data = false;
            this.delivers_form = {};
            this.delivers_dialog_show = false;
          }
        });
      },
      // dialog_confirm_end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      data_delete(index, data, appendUrl) {
        var a;
        var id;
        if (appendUrl == "payments") {
          a = { payment_unids: [data[index].payment_unid] };
          id = data[index].payment_unid;
        } else if (appendUrl == "rebacks") {
          a = { reback_unids: [data[index].reback_unid] };
          id = data[index].reback_unid;
        } else if (appendUrl == "receipts") {
          a = { receipt_unids: [data[index].receipt_unid] };
          id = data[index].receipt_unid;
        } else if (appendUrl == "delivers") {
          a = { deliver_unids: [data[index].deliver_unid] };
          id = data[index].deliver_unid;
        }

        this.$confirm("确认删除数据?", "确认信息", {
          confirmButtonText: "确认",
          cancelButtonText: "取消"
        })
          .then(() => {
            if (id != null) {
              this.$Axios({
                method: "delete",
                url:
                  this.contract_base_url +
                  this.form.contract_unid +
                  "/" +
                  appendUrl,
                data: a
              }).then(res => {
                if (res.data.ecode == "200") {
                  this.$message({
                    duration: 1000,
                    type: "success",
                    message: "删除成功"
                  });
                  data.splice(index, 1);
                  if (appendUrl == "delivers") {
                    this.delivers_form = {
                      deliver_unid: null,
                      deliver_goods_date: "",
                      goods_acceptanc_date: "",
                      appendix_unids: [],
                      delivers_appendix_list: []
                    };
                  }
                } else {
                  this.$message.error("删除失败");
                }
              });
            } else {
              data.splice(index, 1);
              if (appendUrl == "delivers") {
                this.delivers_form = {
                  deliver_unid: null,
                  deliver_goods_date: "",
                  goods_acceptanc_date: "",
                  appendix_unids: [],
                  delivers_appendix_list: []
                };
              }
            }
          })
          .catch(action => {
            this.$message({
              duration: 1000,
              type: "info",
              message: "没有删除数据"
            });
          });
      },

      // modif ystart~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      payment_data_modify(index, data) {
        this.$set(this.payments_form, "payment_unid", data[index].payment_unid);
        this.$set(this.payments_form, "payment_type", data[index].payment_type);
        this.$set(this.payments_form, "days", data[index].days);
        this.$set(
          this.payments_form,
          "payment_propority",
          data[index].payment_propority * 100
        );
        this.$set(
          this.payments_form,
          "payment_requirement",
          data[index].payment_requirement
        );
        this.modify_data = true;
        this.modify_index = index;
        this.payments_dialog_show = true;
      },
      reback_data_modify(index, data) {
        this.$set(this.rebacks_form, "reback_unid", data[index].reback_unid);
        this.$set(
          this.rebacks_form,
          "actual_reback_amount",
          data[index].actual_reback_amount
        );
        this.$set(this.rebacks_form, "reback_date", data[index].reback_date);
        this.$set(this.rebacks_form, "reback_note", data[index].reback_note);
        this.modify_data = true;
        this.modify_index = index;
        this.rebacks_dialog_show = true;
      },
      receipt_data_modify(index, data) {
        this.$set(this.receipts_form, "receipt_unid", data[index].receipt_unid);
        this.$set(
          this.receipts_form,
          "receipt_amount",
          parseFloat(data[index].receipt_amount).toFixed(2)
        );
        this.$set(this.receipts_form, "oa_flow_id", data[index].oa_flow_id);
        this.$set(this.receipts_form, "receipt_note", data[index].receipt_note);
        this.$set(this.receipts_form, "receipt_unid", data[index].receipt_unid);
        this.modify_data = true;
        this.modify_index = index;
        this.receipts_dialog_show = true;
      },
      deliver_data_modify(index, data) {
        this.delivers_form.deliver_unid = data[index].deliver_unid;
        this.$set(
          this.delivers_form,
          "deliver_goods_date",
          data[index].deliver_goods_date
        );
        this.$set(
          this.delivers_form,
          "goods_acceptanc_date",
          data[index].goods_acceptanc_date
        );
        this.$set(
          this.delivers_form,
          "delivers_appendix_list",
          data[index].delivers_appendix_list
        );
        this.$set(
          this.delivers_form,
          "appendix_unids",
          data[index].appendix_unids
        );
        this.modify_data = true;
        this.modify_index = index;
        this.delivers_dialog_show = true;
      },
      // modifyend~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      // getlocation start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      get_payment_type(index) {
        for (let i = 0; i < this.payment_type_data.length; i++) {
          const e = this.payment_type_data[i];
          if (this.payments_data[index].payment_type === e.code) {
            return e.name;
          }
        }
        return "无";
      },
      get_payment_type_data() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "custom/cates/215649FB93/codes"
        })
          .then(res => {
            this.payment_type_data = res.data.list_data;
          })
          .catch(err => {});
      },
      get_product_line_type_data() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "custom/cates/4FC51AD3C9/codes"
        })
          .then(res => {
            this.product_line_type_data = res.data.list_data;
          })
          .catch(err => {});
      },
      get_contract_state_data() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "custom/cates/13BEFACBCF/codes"
        })
          .then(res => {
            this.contract_state_data = res.data.list_data;
          })
          .catch(err => {});
      },
      get_contract_type_data() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "custom/cates/8EC31D08A0/codes"
        })
          .then(res => {
            this.contract_type_data = res.data.list_data;
          })
          .catch(err => {});
      },
      get_amount_state_unid_data() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "custom/cates/42407C5EF2/codes"
        })
          .then(res => {
            this.amount_state_unid_data = res.data.list_data;
          })
          .catch(err => {});
      },
      get_provinces() {
        this.$Axios({
          method: "get",
          url: this.code_base_url + "countries/0E229CD043/provinces"
        })
          .then(response => {
            this.provinces = response.data.list_data;
          })
          .catch(err => {
            console.log(err.message);
          });
      },
      get_cities() {
        this.form.city_value = "";
        // this.form.county_value = "";
        if (this.form.province_value) {
          this.$Axios({
            method: "get",
            url:
              this.code_base_url +
              "countries/0E229CD043/provinces/" +
              this.get_province_unid +
              "/cities"
          })
            .then(response => {
              this.cities = response.data.list_data;
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },
      // get_counties() {
      //   this.form.county_value = "";
      //   if (this.form.province_value && this.form.city_value) {
      //     this.$Axios({
      //       method: "get",
      //       url:
      //         this.code_base_url +
      //         "countries/0E229CD043/provinces/" +
      //         this.get_province_unid +
      //         "/cities/" +
      //         this.get_city_unid +
      //         "/counties"
      //     })
      //       .then(response => {
      //         this.counties = response.data.list_data;
      //       })
      //       .catch(err => {
      //         console.log(err.message);
      //       });
      //   }
      // },
      get_pay_date(index) {
        var date = "";
        var type = this.payments_data[index].payment_type;
        var days = this.payments_data[index].days;
        if (type == "100001" && this.form.sign_date) {
          date = this.date_add_days(this.form.sign_date, days);
        } else if (
          (type == "100002" || type == "100004") &&
          this.delivers_data[0]
        ) {
          var i = this.delivers_data.length - 1;
          date = this.date_add_days(
            this.delivers_data[i].goods_acceptanc_date,
            days
          );
        } else if (
          (type == "100003" || type == "100005") &&
          this.final_acceptancs_form.acceptanc_date != null
        ) {
          date = this.date_add_days(
            this.final_acceptancs_form.acceptanc_date,
            days
          );
        }
        return date;
      },
      get_pay_amount(index) {
        var amount = 0;
        if (this.form.contract_amount > 0) {
          amount =
            this.form.contract_amount *
            this.payments_data[index].payment_propority;
        }
        return amount;
      },
      get_customers() {
        this.$Axios({
          method: "get",
          url: this.contract_base_url + "customers",
          headers: { "Content-Type": "application/json" }
        })
          .then(response => {
            this.customer_unid_selected_data = response.data;
          })
          .catch(err => {
            console.log(err.message);
          });
      },
      get_projects() {
        this.$Axios({
          method: "get",
          url: this.contract_base_url + "projects",
          headers: { "Content-Type": "application/json" }
        })
          .then(response => {
            this.project_unid_selected_data = response.data;
          })
          .catch(err => {
            console.log(err.message);
          });
      },
      get_project_info(id) {
        if (id != "0") {
          this.$Axios({
            method: "get",
            url: this.contract_base_url + id + "/project/acceptancs",
            headers: { "Content-Type": "application/json" }
          })
            .then(response => {
              if (!response.data.ecode && response.data != []) {
                for (let i = 0; i < response.data.list_check_data.length; i++) {
                  var e = response.data.list_check_data[i];
                  if (e.acceptanc_type == "1") {
                    this.$set(
                      this.first_acceptancs_form,
                      "acceptanc_unid",
                      e.acceptanc_unid
                    );

                    this.$set(this.first_acceptancs_form, "acceptanc_type", "1");
                    this.$set(
                      this.first_acceptancs_form,
                      "acceptanc_date",
                      e.acceptanc_date
                    );
                    this.$set(
                      this.first_acceptancs_form,
                      "acceptanc_note",
                      e.acceptanc_note
                    );
                    this.first_acceptancs_appendix_list = [];
                    if (e.appendix_list) {
                      for (let i = 0; i < e.appendix_list.length; i++) {
                        const b = e.appendix_list[i];
                        var a = {};
                        a.name = b.appendix_name;
                        a.url = b.appendix_url;
                        this.first_acceptancs_appendix_list.push(a);
                      }
                    }
                  } else if (e.acceptanc_type == "2") {
                    this.$set(
                      this.final_acceptancs_form,
                      "acceptanc_unid",
                      e.acceptanc_unid
                    );
                    this.$set(this.final_acceptancs_form, "acceptanc_type", "2");
                    this.$set(
                      this.final_acceptancs_form,
                      "acceptanc_date",
                      e.acceptanc_date
                    );
                    this.$set(
                      this.final_acceptancs_form,
                      "acceptanc_note",
                      e.acceptanc_note
                    );
                    this.final_acceptancs_form;
                    this.acceptancs_appendix_list = [];
                    if (e.appendix_list) {
                      for (let i = 0; i < e.appendix_list.length; i++) {
                        const b = e.appendix_list[i];
                        var a = {};
                        a.name = b.appendix_name;
                        a.url = b.appendix_url;
                        this.acceptancs_appendix_list.push(a);
                      }
                    }
                  }
                }
              }
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },

      get_payment_info(id) {
        if (id != "0") {
          this.$Axios({
            method: "get",
            url: this.contract_base_url + id + "/payments",
            headers: { "Content-Type": "application/json" }
          })
            .then(response => {
              if (!response.data.ecode || response.data != []) {
                for (let i = 0; i < response.data.length; i++) {
                  var item = {};
                  const e = response.data[i];
                  item.payment_unid = e.payment_unid;
                  item.payment_type = e.payment_type ? e.payment_type : "";
                  // if (
                  //   item.payment_type == "100004" ||
                  //   item.payment_type == "100005"
                  // ) {
                  //   this.payment_type_tag = 1;
                  // }
                  item.payment_progress = e.payment_progress;
                  item.days = e.days ? e.days : 0;
                  item.payment_propority = e.payment_propority
                    ? e.payment_propority
                    : 0;
                  item.payment_requirement = e.payment_requirement
                    ? e.payment_requirement
                    : "";
                  item.amount =
                    this.form.contract_amount * item.payment_propority;
                  this.payments_data.push(item);
                }
              }
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },
      get_deliver_info(id) {
        if (id != "0") {
          this.$Axios({
            method: "get",
            url: this.contract_base_url + id + "/delivers",
            headers: { "Content-Type": "application/json" }
          })
            .then(response => {
              if (response.data.ecode != "500" && response.data != []) {
                for (let i = 0; i < response.data.list_deliver_data.length; i++) {
                  var e = response.data.list_deliver_data[i];
                  var item = {};
                  item.deliver_unid = e.deliver_unid;

                  item.deliver_goods_date = e.deliver_goods_date
                    ? e.deliver_goods_date
                    : "";
                  item.goods_acceptanc_date = e.goods_acceptanc_date
                    ? e.goods_acceptanc_date
                    : "";

                  item.delivers_appendix_list = [];
                  item.appendix_unids = [];
                  for (let i = 0; i < e.list_deliver_data.length; i++) {
                    const b = e.list_deliver_data[i];
                    var a = {};
                    a.name = b.appendix_name;
                    a.url = b.appendix_url;
                    a.id = b.appendix_unid;
                    item.delivers_appendix_list.push(a);
                  }
                  this.delivers_data.push(item);
                }
              }
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },
      get_reback_info(id) {
        if (id != "0") {
          this.$Axios({
            method: "get",
            url: this.contract_base_url + id + "/rebacks",
            headers: { "Content-Type": "application/json" }
          })
            .then(response => {
              if (!response.data.ecode || response.data != []) {
                for (let i = 0; i < response.data.length; i++) {
                  var e = response.data[i];
                  var item = {};
                  item.reback_unid = e.reback_unid;
                  item.reback_progress = e.reback_progress;
                  item.reback_date = e.reback_date ? e.reback_date : "";

                  item.actual_reback_amount = e.actual_reback_amount
                    ? parseFloat(e.actual_reback_amount).toFixed(2)
                    : null;

                  item.reback_note = e.reback_note ? e.reback_note : "";
                  this.rebacks_data.push(item);
                }
              }
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },
      get_receipt_info(id) {
        if (id != "0") {
          this.$Axios({
            method: "get",
            url: this.contract_base_url + id + "/receipts",
            headers: { "Content-Type": "application/json" }
          })
            .then(response => {
              if (!response.data.ecode || response.data != []) {
                for (let i = 0; i < response.data.length; i++) {
                  var e = response.data[i];
                  var item = {};
                  item.receipt_unid = e.receipt_unid;
                  item.oa_flow_id = e.oa_flow_id ? e.oa_flow_id : null;
                  item.receipt_amount = e.receipt_amount
                    ? parseFloat(e.receipt_amount).toFixed(2)
                    : 0.0;
                  item.receipt_note = e.receipt_note ? e.receipt_note : "";
                  item.receipt_progress = e.receipt_progress;
                  this.receipts_data.push(item);
                }
              }
            })
            .catch(err => {
              console.log(err.message);
            });
        }
      },
      get_contract_info(id) {
        this.$Axios({
          method: "get",
          url: this.contract_base_url + id,
          headers: { "Content-Type": "application/json" }
        })
          .then(response => {
            if (response.data.ecode == "100") {
              this.$alert("合同已删除");
              this.$router.push({ path: "0" });
            } else {
              this.$set(this.form, "contract_unid", response.data.contract_unid);
              if (response.data.province) {
                this.$set(
                  this.form,
                  "province_value",
                  response.data.province + "#" + response.data.province_name
                );
              } else if (response.data.province_name) {
                this.provinces.forEach(e => {
                  if (e.name === response.data.province_name) {
                    this.$set(
                      this.form,
                      "province_value",
                      e.province_unid + "#" + response.data.province_name
                    );
                  }
                });
              }
              if (response.data.city) {
                this.get_cities();
                this.$set(
                  this.form,
                  "city_value",
                  response.data.city + "#" + response.data.city_name
                );
              } else if (response.data.city_name && this.form.province_value) {
                this.$Axios({
                  method: "get",
                  url:
                    this.code_base_url +
                    "countries/0E229CD043/provinces/" +
                    this.get_province_unid +
                    "/cities"
                })
                  .then(r => {
                    this.cities = r.data.list_data;
                    this.cities.forEach(e => {
                      if (e.name === response.data.city_name) {
                        this.$set(
                          this.form,
                          "city_value",
                          e.city_unid + "#" + response.data.city_name
                        );
                      }
                    });
                  })
                  .catch(err => {
                    console.log(err.message);
                  });
              }
              // if (response.data.county) {
              //   this.get_counties();
              //   this.$set(
              //     this.form,
              //     "county_value",
              //     response.data.county + "#" + response.data.county_name
              //   );
              // }
              if (response.data.contract_state) {
                this.$set(
                  this.form,
                  "contract_state",
                  response.data.contract_state
                );
              }

              if (response.data.contract_type) {
                this.$set(
                  this.form,
                  "contract_type",
                  response.data.contract_type
                );
              }
              if (response.data.is_archive) {
                this.$set(this.form, "is_archive", response.data.is_archive);
              }
              if (response.data.amount_state_unid) {
                this.$set(
                  this.form,
                  "amount_state_unid",
                  response.data.amount_state_unid
                );
              }
              if (response.data.salesperson_unid) {
                this.$set(
                  this.form,
                  "salesperson_unid",
                  response.data.salesperson_unid
                );
              }
              if (response.data.project_unid) {
                this.$set(this.form, "project_unid", response.data.project_unid);
              }
              if (response.data.customer_unid) {
                this.$set(
                  this.form,
                  "customer_unid",
                  response.data.customer_unid
                );
              }
              if (response.data.deduct_amount) {
                this.$set(
                  this.form,
                  "deduct_amount",
                  response.data.deduct_amount.toFixed(2)
                );
              }
              if (response.data.contract_amount_note) {
                this.$set(
                  this.form,
                  "contract_amount_note",
                  response.data.contract_amount_note
                );
              }
              if (response.data.stop_amount) {
                this.$set(
                  this.form,
                  "stop_amount",
                  response.data.stop_amount.toFixed(2)
                );
              }
              if (response.data.reback_note) {
                this.$set(this.form, "reback_note", response.data.reback_note);
              }
              if (response.data.exemptions_amount) {
                this.$set(
                  this.form,
                  "exemptions_amount",
                  response.data.exemptions_amount.toFixed(2)
                );
              }
              if (response.data.contract_remain_note) {
                this.$set(
                  this.form,
                  "contract_remain_note",
                  response.data.contract_remain_note
                );
              }
              if (response.data.bad_amount_note) {
                this.$set(
                  this.form,
                  "bad_amount_note",
                  response.data.bad_amount_note
                );
              }
              if (response.data.contract_note) {
                this.$set(
                  this.form,
                  "contract_note",
                  response.data.contract_note
                );
              }
              if (response.data.contract_amount) {
                this.$set(
                  this.form,
                  "contract_amount",
                  response.data.contract_amount.toFixed(2)
                );
              }
              if (response.data.guarantee_period) {
                this.$set(
                  this.form,
                  "guarantee_period",
                  response.data.guarantee_period
                );
              }
              if (response.data.product_line_type) {
                this.$set(
                  this.form,
                  "product_line_type",
                  response.data.product_line_type
                );
              }
              if (response.data.confirm_income_amount) {
                this.$set(
                  this.form,
                  "confirm_income_amount",
                  response.data.confirm_income_amount.toFixed(2)
                );
              }
              if (response.data.sign_date) {
                this.$set(this.form, "sign_date", response.data.sign_date);
              }
              if (response.data.bad_amount) {
                this.$set(
                  this.form,
                  "bad_amount",
                  response.data.bad_amount.toFixed(2)
                );
              }
              this.contract_appendix_list = [];
              if (response.data.appendix_list) {
                for (let i = 0; i < response.data.appendix_list.length; i++) {
                  const e = response.data.appendix_list[i];
                  var b = {};
                  b.name = e.appendix_name;
                  b.url = e.appendix_url;
                  b.id = e.appendix_unid;
                  this.contract_appendix_list.push(b);
                }
              }
              if (this.form.start_guarantee_date) {
                this.$delete(this.form, "start_guarantee_date");
              }
              if (this.form.end_guarantee_date) {
                this.$delete(this.form, "end_guarantee_date");
              }
              this.guarantee_date = [];
              if (response.data.start_guarantee_date) {
                this.guarantee_date.push(response.data.start_guarantee_date);
              } else {
                this.guarantee_date.push("");
              }
              if (response.data.end_guarantee_date) {
                this.guarantee_date.push(response.data.end_guarantee_date);
              } else {
                this.guarantee_date.push("");
              }
            }
          })
          .catch(err => {
            console.log(err.message);
          });
        // }
      },
      get_all(id) {
        this.get_contract_info(id);
        this.get_deliver_info(id);
        this.get_reback_info(id);
        this.get_receipt_info(id);
        this.get_payment_info(id);
        this.get_project_info(id);
      },
      // getlocation end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      // !!!!!!~~~~~~~~~~~~~submittttttt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      form_submit(name) {
        var a = this.form;
        Object.keys(a).forEach(key => {
          if (a[key] && typeof a[key] == "string") {
            a[key] = a[key].trim();
          }
        });
        var unid = this.$route.params.contract_unid;
        switch (name) {
          case "form":
            this.$refs["contract_form"].validate(valid => {
              if (valid) {
                this.form.start_guarantee_date = this.start_guarantee_date;
                this.form.end_guarantee_date = this.end_guarantee_date;
                this.form.province = this.get_province_unid;
                this.form.province_name = this.get_province_name;
                this.form.city = this.get_city_unid;
                this.form.city_name = this.get_city_name;
                // this.form.county = this.get_county_unid;
                // this.form.county_name = this.get_county_name;
                this.$Axios({
                  method: "put",
                  url: this.contract_base_url + this.form.contract_unid,
                  data: this.form,
                  headers: { "Content-Type": "application/json" }
                })
                  .then(response => {
                    if (response.data.ecode == 200) {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    } else {
                      this.$message.error("提交失败");
                    }
                    this.$refs["contract_form"].resetFields();
                    this.get_contract_info(unid);
                  })
                  .catch(err => {
                    this.$message.error("提交失败");
                  });
              }
            });
            this.form_submit("payment");
            break;
          // ---------
          case "payment":
            for (let i = 0; i < this.payments_data.length; i++) {
              const e = this.payments_data[i];
              if (e.payment_unid != null) {
                this.$Axios({
                  method: "put",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/payments",
                  data: {
                    list_payment_data: [e]
                  }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.payments_data.length - 1) {
                      this.payments_data = [];
                      this.get_payment_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              } else {
                this.$Axios({
                  method: "post",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/payments",
                  data: {
                    list_payment_data: [e]
                  }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.payments_data.length - 1) {
                      this.payments_data = [];
                      this.get_payment_info(unid);
                    }
                  })
                  .catch(err => {
                    this.$message.error("提交失败");
                    console.log(err.message);
                  });
              }
            }

            break;
          // -------
          case "reback":
            var a = 0;
            for (let i = 0; i < this.rebacks_data.length; i++) {
              const e = this.rebacks_data[i];
              if (e.reback_unid != null) {
                this.$Axios({
                  method: "put",
                  url:
                    this.contract_base_url + this.form.contract_unid + "/rebacks",
                  data: { list_reback_data: [e] },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.rebacks_data.length - 1) {
                      this.rebacks_data = [];
                      this.get_reback_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              } else {
                this.$Axios({
                  method: "post",
                  url:
                    this.contract_base_url + this.form.contract_unid + "/rebacks",
                  data: { list_reback_data: [e] },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.rebacks_data.length - 1) {
                      this.rebacks_data = [];
                      this.get_reback_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              }
            }

            break;
          case "receipt":
            var a = 0;
            for (let i = 0; i < this.receipts_data.length; i++) {
              const e = this.receipts_data[i];
              if (e.receipt_unid != null) {
                this.$Axios({
                  method: "put",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/receipts",
                  data: {
                    list_receipt_data: [e]
                  },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.receipts_data.length - 1) {
                      this.receipts_data = [];
                      this.get_receipt_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              } else {
                this.$Axios({
                  method: "post",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/receipts",
                  data: {
                    list_receipt_data: [e]
                  },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.receipts_data.length - 1) {
                      this.receipts_data = [];
                      this.get_receipt_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              }
            }
            break;
          case "deliver":
            var a = 0;
            for (let i = 0; i < this.delivers_data.length; i++) {
              const e = this.delivers_data[i];
              if (e.deliver_unid) {
                this.$Axios({
                  method: "put",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/delivers",
                  data: {
                    list_deliver_data: [e]
                  },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.delivers_data.length - 1) {
                      this.delivers_data = [];
                      this.get_deliver_info(unid);
                    }
                  })
                  .catch(err => {
                    this.$message.error("提交失败");
                  });
              } else {
                this.$Axios({
                  method: "post",
                  url:
                    this.contract_base_url +
                    this.form.contract_unid +
                    "/delivers",
                  data: {
                    list_deliver_data: [e]
                  },
                  headers: { "Content-Type": "application/json" }
                })
                  .then(res => {
                    if (res.data.ecode == "500") {
                      this.$message.error("提交失败");
                    } else {
                      this.$message({
                        type: "success",
                        message: "提交成功"
                      });
                    }
                    if (i == this.delivers_data.length - 1) {
                      this.delivers_data = [];
                      this.get_deliver_info(unid);
                    }
                  })
                  .catch(err => {
                    console.log(err.message);
                    this.$message.error("提交失败");
                  });
              }
            }
            break;
          case "project":
            var a = 0;
            this.$refs.first_acceptancs_form.validate(valid => {
              if (valid) {
                this.$refs.final_acceptancs_form.validate(valid2 => {
                  if (valid2) {
                    var first_method, final_method;
                    if (this.first_acceptancs_form.acceptanc_unid != "") {
                      first_method = "put";
                    } else {
                      first_method = "post";
                    }
                    if (this.first_acceptancs_form.acceptanc_type == "") {
                      if (this.first_acceptancs_form.acceptanc_unid != "") {
                        this.$Axios({
                          method: "DELETE",
                          url:
                            this.contract_base_url +
                            this.form.contract_unid +
                            "/project/acceptancs",
                          data: {
                            acceptanc_unids: [
                              this.first_acceptancs_form.acceptanc_unid
                            ]
                          }
                        })
                          .then(res => {
                            console.log(res.data);
                          })
                          .catch();
                      }
                    } else {
                      this.$Axios({
                        method: first_method,
                        url:
                          this.contract_base_url +
                          this.form.contract_unid +
                          "/project/acceptancs",
                        data: {
                          list_check_data: [this.first_acceptancs_form]
                        },
                        headers: { "Content-Type": "application/json" }
                      })
                        .then(res => {
                          if (res.data.ecode == "500") {
                            this.$message.error("提交失败");
                            this.$refs["first_acceptancs_form"].resetFields();
                            this.$refs["final_acceptancs_form"].resetFields();
                            this.get_project_info(unid);
                            return;
                          }
                        })
                        .catch(err => {
                          this.$message.error("提交失败");
                        });
                    }

                    if (this.final_acceptancs_form.acceptanc_unid != "") {
                      final_method = "put";
                    } else {
                      final_method = "post";
                    }
                    if (this.final_acceptancs_form.acceptanc_type == "") {
                      if (this.final_acceptancs_form.acceptanc_unid != "") {
                        this.$Axios({
                          method: "DELETE",
                          url:
                            this.contract_base_url +
                            this.form.contract_unid +
                            "/project/acceptancs",
                          data: {
                            acceptanc_unids: [
                              this.final_acceptancs_form.acceptanc_unid
                            ]
                          }
                        })
                          .then(res => {
                            console.log(res.data);
                            this.$refs["first_acceptancs_form"].resetFields();
                            this.$refs["final_acceptancs_form"].resetFields();
                            this.get_project_info(unid);
                          })
                          .catch();
                      }
                    } else {
                      this.$Axios({
                        method: final_method,
                        url:
                          this.contract_base_url +
                          this.form.contract_unid +
                          "/project/acceptancs",
                        data: {
                          list_check_data: [this.final_acceptancs_form]
                        },
                        headers: { "Content-Type": "application/json" }
                      })
                        .then(res => {
                          if (res.data.ecode == "500") {
                            this.$message.error("提交失败");
                          } else {
                            this.$message({
                              type: "success",
                              message: "提交成功"
                            });
                            this.$refs["first_acceptancs_form"].resetFields();
                            this.$refs["final_acceptancs_form"].resetFields();
                            this.get_project_info(unid);
                          }
                        })
                        .catch(err => {
                          this.$message.error("提交失败");
                        });
                    }
                  }
                });
              }
            });

            break;
          default:
            break;
        }
      },
      change_unid(id) {
        this.$router.push("" + id);
      },
      change_dialog() {
        if (localStorage.getItem("style")) {
          var style = JSON.parse(localStorage.getItem("style"));
          var dialogs = document.getElementsByClassName("el-dialog");
          for (let i = 0; i < dialogs.length; i++) {
            const e = dialogs[i];
            e.style.backgroundColor = style.color;
            e.style.backgroundImage = style.image;
          }
        }
      }
    },
    created() {
      if (
        sessionStorage.getItem("user_roles") != "null" &&
        sessionStorage.getItem("user_roles")
      ) {
        var roles = JSON.parse(sessionStorage.getItem("user_roles"));
        for (let i = 0; i < roles.length; i++) {
          const e = roles[i];
          if (e.role_unid == "ec480894ee85f1fa282ee7fa27be9cbc") {
            this.disabled_list[2] = 0;
          } else if (e.role_unid == "91d5185d47e3bad099e17570b0dd0ed2") {
            this.disabled_list = [0, 0, 0, 0];
          } else if (e.role_unid == "65f881ffa510eb9ec0c0dc76d625515f") {
            this.disabled_list[3] = 0;
          } else if (e.role_unid == "b126ebb9fbc87f4997cb0498a88b5f4c") {
            this.disabled_list[1] = 0;
            this.hide_contract_info = false;
          }
        }
      }
      if (sessionStorage.getItem("manager")) {
        this.disabled_list = [0, 0, 0, 0];
      }
      if (sessionStorage.getItem("provinces")) {
        this.provinces = JSON.parse(sessionStorage.getItem("provinces"));
      } else {
        this.get_provinces();
      }

      if (sessionStorage.getItem("contract_state_data")) {
        this.contract_state_data = JSON.parse(
          sessionStorage.getItem("contract_state_data")
        );
      } else {
        this.get_contract_state_data();
      }
      if (sessionStorage.getItem("contract_type_data")) {
        this.contract_type_data = JSON.parse(
          sessionStorage.getItem("contract_type_data")
        );
      } else {
        this.get_contract_type_data();
      }
      if (sessionStorage.getItem("amount_state_unid_data")) {
        this.amount_state_unid_data = JSON.parse(
          sessionStorage.getItem("amount_state_unid_data")
        );
      } else {
        this.get_amount_state_unid_data();
      }
      if (sessionStorage.getItem("product_line_type_data")) {
        this.product_line_type_data = JSON.parse(
          sessionStorage.getItem("product_line_type_data")
        );
      } else {
        this.get_product_line_type_data();
      }
      if (sessionStorage.getItem("payment_type_data")) {
        this.payment_type_data = JSON.parse(
          sessionStorage.getItem("payment_type_data")
        );
      } else {
        this.get_payment_type_data();
      }
      if (sessionStorage.getItem("salesperson_unid_selected_data")) {
        this.salesperson_unid_selected_data = JSON.parse(
          sessionStorage.getItem("salesperson_unid_selected_data")
        );
      } else {
        this.get_salesperson();
      }
      if (sessionStorage.getItem("contract_unid_selected_data")) {
        this.contract_unid_selected_data = JSON.parse(
          sessionStorage.getItem("contract_unid_selected_data")
        );
      } else {
        this.get_contract_unid();
      }
      if (sessionStorage.getItem("project_unid_selected_data")) {
        this.project_unid_selected_data = JSON.parse(
          sessionStorage.getItem("project_unid_selected_data")
        );
      } else {
        this.get_projects();
      }
      if (sessionStorage.getItem("customer_unid_selected_data")) {
        this.customer_unid_selected_data = JSON.parse(
          sessionStorage.getItem("customer_unid_selected_data")
        );
      } else {
        this.get_customers();
      }
      var id = this.$route.params.contract_unid;
      if (id != 0) {
        this.get_all(id);
      }
      if (sessionStorage.getItem("modify")) {
        this.contract_unid_disabled = true;
      } else {
        this.contract_unid_disabled = false;
        this.$message({
          type: "warning",
          message: "请选择合同编号,再进行下一步操作",
          duration: 5000
        });
      }
    },
    mounted() {
      this.change_dialog();
    },
    watch: {
      //点击合同编号后对路由进行push,但不会刷新当前页面,需要通过watch 路由变化进行刷新
      $route(to, from) {
        this.payments_data = [];
        this.rebacks_data = [];
        this.receipts_data = [];
        this.delivers_data = [];
        this.$refs["first_acceptancs_form"].resetFields();
        this.$refs["final_acceptancs_form"].resetFields();
        this.$refs["contract_form"].resetFields();
        if (to.params.contract_unid != 0) {
          this.get_all(to.params.contract_unid);
        } else {
          this.contract_unid_disabled = false;
        }
      }
    }
  };
</script>
<style scoped>
.add_button {
  font-size: 20px;
  padding-top: 20px;
  color: black;
}

.width-220 {
  width: 220px;
}
span:hover {
  cursor: pointer;
}
.box-card >>> .el-card__header {
  background-color: #34352c;
}
#contract_info >>> label {
  color: black;
}
#contract_info >>> .el-dialog {
  border-radius: 20px;
  background-color: lightblue;
}
#contract_info >>> input {
  background-color: rgba(0, 0, 0, 0.3);
  border-color: black;
  color: black;
}
#contract_info >>> .el-range-editor.is-disabled,
#contract_info >>> .el-textarea__inner:disabled,
#contract_info >>> .el-input.is-disabled {
  background-color: rgba(224, 19, 19, 0.719);
}
#contract_info >>> input:disabled {
  background-color: rgba(0, 0, 0, 0);
}
#contract_info >>> .el-date-editor input:disabled {
  background-color: none;
}
#contract_info >>> .el-textarea__inner {
  border-color: black;
  background-color: rgba(0, 0, 0, 0.3);
  color: black;
}
#contract_info >>> .el-date-editor input,
#contract_info >>> .el-range-input {
  color: black;
  background-color: rgba(0, 0, 0, 0);
}
#contract_info >>> .el-date-editor {
  background-color: rgba(0, 0, 0, 0.3);
  border-color: black;
}
#contract_info >>> .el-input-number__decrease,
#contract_info >>> .el-input-number__increase {
  background-color: rgba(0, 0, 0, 0);
  border: 0px !important;
}
#contract_info >>> thead > tr > th > .cell {
  color: black;
}
#province {
  margin-right: 0;
}
#contract_info >>> tr,
#contract_info >>> .el-table {
  background-color: rgba(0, 0, 0, 0);
}
#contract_info >>> th {
  background-color: rgba(0, 0, 0, 0.2);
}
#contract_info >>> .el-card {
  background-color: rgba(0, 0, 0, 0);
}
#contract_info >>> .el-card__body {
  background-color: rgba(0, 0, 0, 0);
}
#hide_icon_text:hover {
  cursor: pointer;
  color: orangered;
  transition: all ease 0.5s;
}
</style>