<template>
  <div class="app-container">
    <el-card>
      <div slot="header" class="card-title">{{ $t('请款单') }} {{id ? `-${form.paymentNo}` :''}}</div>
      <el-form
        ref="form"
        :model="form"
        label-width="120px"
        label-position="left"
      >
      <div class="list_item">
            <el-form-item
              :label="$t('供应商')"
              required
              style="width:400px"
              prop="supplierId"
              :rules="{ required: true, trigger: ['blur', 'change'],message:$t('供应商不能为空') }"
              :error="$t('供应商不能为空')"
            >
              <!-- <customer-selector v-model="form.supplierId" @change="consignor = $event" /> -->
              <el-select
                v-model="form.supplierId"
                :placeholder="$t('请选择供应商')"
                @change="selectChange"
              >
                <el-option
                  v-for="supplier in allSupplier"
                  :key="supplier.id"
                  :label="supplier.companyZh"
                  :value="supplier.id"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('部门')"
              style="width:400px"
              prop="departmentId"
              :rules="{required:true,message:$t('部门不能为空')}"
              :error="$t('部门不能为空')"
            >
              <el-select
                v-model="form.departmentId"
                style="max-width: 300px"
                :placeholder="$t('请选择部门')"
              >
                <el-option
                  @click.native="selslectVal('departmentName', item.name)"
                  v-for="item in deptData"
                  :key="item.id"
                  :label="item.name"
                  :value="parseInt(item.id)"
                />
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('业务员')"
              style="width:400px"
              prop="salesmanName"
              :rules="{required:true,message:$t('业务员不能为空')}"
              :error="$t('业务员不能为空')"
            >
              <el-select v-model="form.salesmanName" :placeholder="$t('请选择业务员')">
                <el-option
                  v-for="item in creatorData"
                  :key="item.id"
                  :label="item.nickname"
                  :value="item.nickname"
                  @click.native="selslectVal('salesmanId',item.id)"
                />
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('申请日期')"
              style="width:400px"
              prop="applicationAt"
              :rules="{required:true,message:$t('申请日期不能为空')}"
              :error="$t('申请日期不能为空')"
            >
              <el-date-picker
                clearable
                v-model="form.applicationAt"
                value-format="yyyy-MM-dd"
                format="yyyy-MM-dd"
                type="date"
                :placeholder="$t('选择申请日期')"
              />
            </el-form-item>
          </div>
          <div class="list_item">

            <el-form-item
              :label="$t('供应商银行账号')"
              style="width:400px"
              prop="supplierBankAccount"
            >
              <el-select v-model="form.supplierBankAccount"  @change="selectChangeBank" :placeholder="$t('请选择收款账户')">
                <el-option
                  v-for="item in bankData"
                  :key="item.id"
                  :label="item.bankName + '(' + item.bankAccount+ ')'"
                  :value="item.bankAccount"
                />
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('实际付款日期')"
              style="width:400px"
              prop="sjfkdate"
              :rules="{required:true,message:$t('实际付款日期')}"
              :error="$t('实际付款日期')"
            >
              <el-date-picker
                clearable
                v-model="form.sjfkdate"
                value-format="yyyy-MM-dd"
                format="yyyy-MM-dd"
                type="date"
                :placeholder="$t('选择实际付款日期')"
              />
            </el-form-item>
        </div>
        <div class="list_item">
            <el-form-item
              :label="$t('最后付款日期')"
              style="width:400px"
              prop="latestPayAt"
              :rules="{required:true,message:$t('最后付款不能为空')}"
              :error="$t('最后付款日期不能为空')"
            >
              <el-date-picker
                clearable
                v-model="form.latestPayAt"
                value-format="yyyy-MM-dd"
                format="yyyy-MM-dd"
                type="date"
                :placeholder="$t('选择最后付款日期')"
              />
            </el-form-item>
            <el-form-item
              :label="$t('结算方式')"
              style="width:400px"
              :rules="{required:true,message:$t('结算方式不能为空')}"
              :error="$t('选择结算方式')"
              prop="settlementType"
            >
              <dict-selector
                :type="DICT_TYPE.CUSTOMER_BALANCE"
                v-model="form.settlementType"
              />
            </el-form-item>
          </div>
      </el-form>
    </el-card>
    <el-card class="card">
      <div slot="header" class="card-title">{{ $t('费用信息') }}</div>
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          style="padding: 10px; margin-bottom: 10px"
          >{{ $t('添加未付供应商款项') }}</el-button
        >
      </el-col>
      <el-table v-loading="loadings" :data="list" border :show-summary="!!list.length" :summary-method="getSummaries">
        <el-table-column :label="$t('自编号')" align="center" prop="payableNo" />
        <el-table-column :label="$t('费用类型')" align="center" prop="feeType">
          <template slot-scope="scope">
            <dict-tag
              :type="DICT_TYPE.FEE_TYPE"
              :value="scope.row.feeType"
            ></dict-tag>
          </template>
        </el-table-column>
        <el-table-column :label="$t('发票号码')" align="center" prop="invoiceNumber">
          <template slot-scope="scope">
            <el-input v-model="scope.row.invoiceNumber"></el-input>
          </template>
        </el-table-column>
        <el-table-column :label="$t('应付金额')" align="center" prop="totalAmount" />
        <el-table-column :label="$t('币种')" align="center" prop="currencyId">
          <template slot-scope="scope">
			  {{getCurrencyLabel(scope.row.currencyId)}}
            <!-- <dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" /> -->
          </template>
        </el-table-column>
        <el-table-column :label="$t('汇率')" align="center" prop="exchangeRate">
          <template slot-scope="scope">
            <el-input v-model="scope.row.exchangeRate"></el-input>
          </template>
        </el-table-column>
        <el-table-column :label="$t('税率')+'%'" align="center" prop="taxRate" >
          <template slot-scope="scope">
            <el-input v-model="scope.row.taxRate" @keyup.native="scope.row.taxRate = oninput(scope.row.taxRate)"></el-input>
          </template>
        </el-table-column>
        <el-table-column :label="$t('价税合计(RMB)')" align="center" prop="total" >
          <template slot-scope="scope">
           <span>{{ scope.row.total = ((scope.row.totalAmount * scope.row.exchangeRate) + (scope.row.totalAmount * scope.row.exchangeRate) * (scope.row.taxRate/100)).toFixed(2) }}</span>
           <!-- <span>{{scope.row.total}}</span> -->
          </template>
        </el-table-column>
      </el-table>

      <el-form
        ref="forms"
        :model="form"
        label-width="120px"
        label-position="left"
        style="width: 50%"
      >
            <el-form-item
              :label="$t('账单号')"
              style="margin:20px 0"
              prop="accountNumber"
              :rules="[
                { required: true, message:$t('账单号不能为空'), trigger: 'blur' },
              ]"
            >
              <el-input
                v-model="form.accountNumber"
                :placeholder="$t('请输入账单号')"
              ></el-input>
            </el-form-item>
            <el-form-item
              :label="$t('发票')"
              style="margin-bottom: 0"
              prop="invoiceStatus"
              required
              :error="$t('请选择是否开票')"
            >
              <el-select
                v-model="form.invoiceStatus"
                :placeholder="$t('请选择是否开票')"
              >
                <el-option :label="$t('未开票')" value="0" />
                <el-option :label="$t('已开票')" value="1" />
              </el-select>
            </el-form-item>
             <!--lanbm 2024-05-30 添加备注信息和附件上传功能-->
            <el-form-item
              :label="$t('备注')"
              style="margin:20px 0"
              prop="editreason"
            >
              <el-input
                v-model="form.editreason"
                :placeholder="$t('请输入备注信息')"
              ></el-input>
            </el-form-item>
            <el-form-item
              :label="$t('附件')"
              style="margin:20px 0"
              prop="filelist"
            >
            <el-upload
             v-if="!isView"
              class="upload-demo"
              :action="uploadFileUrl"
              :headers="headers"
              :on-success="handleUploadSuccess"
              :before-upload="handleBeforeUpload"
              :on-error="handleUploadError"
              :before-remove="beforeRemove"
              :file-list="form.filelist"
              multiple
            >
              <!--filelist 是保存在数据库中的文件字符串信息-->
              <el-button size="small" type="primary">{{
                $t("上传附件")
              }}</el-button>
            </el-upload>
            <div v-else>
              <!--编辑对话款此部分不显示-->
              <div v-for="(v, i) in form.filelist" :key="i">
                <el-link :href="v.url" type="primary" target="_blank">{{
                  v.name
                }}</el-link>
              </div>
            </div>
            </el-form-item>
      </el-form>
    </el-card>
    <div slot="header" class="bpm-title">{{ $t('审核流程') }}</div>
     <work-flow  xmlkey="merge_order" v-model="form.copyUserList"></work-flow>
     <div slot="footer" style="margin: 20px 0">
       <el-button v-if="id==0||form.state==0" type="primary" @click="submitForm(1)">{{$t('提交申请')}}</el-button>
       <el-button v-if="id==0||form.state==0" type="primary"  @click="submitForm(0)">{{ $t('保存草稿') }}</el-button>
       <el-button v-if="form.state==1" type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+bpmId)">{{$t('审核中')}}</el-button>
       <el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
     </div>

      <el-dialog
        :title="$t('提示')"
        :visible.sync="dialogVisible"
        width="30%">
        <span class="cancel_notice">{{$t('付款单申请正在审核中，你确定取消付款单申请吗？')}}</span>
        <div class="cancel_content">
          <span>{{$t('取消原因：')}}</span>
          <el-input v-model="reason" :placeholder="$t('请输入取消原因')"></el-input>
        </div>

        <span slot="footer" class="dialog-footer">
          <el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
          <el-button type="primary" @click="cancelApproval">{{$t('确定')}}</el-button>
        </span>
      </el-dialog>
    <el-dialog
      :visible.sync="open"
      :title="$t('添加未付供应商款项')"
      width="80%"
      append-to-body
      @open="openDialog"
    >
      <div>
        <!-- <div slot="header" class="card-title">{{ $t('添加未收客户款项') }}</div> -->
        <!-- 搜索工作栏 -->
        <el-form
          :model="queryParams"
          ref="queryForm"
          size="small"
          :inline="true"
          label-width="80px"
        >
          <!-- <el-row> -->
            <el-form-item :label="$t('供应商')">
              <customer-selector
                v-model="queryParams.supplierId"
                @change="consignor = $event"
              />
            </el-form-item>
        <el-form-item :label="$t('始发仓')">
            <el-select
              v-model="queryParams.departureId"
              :placeholder="$t('请选择始发仓')"
              clearable
            >
              <el-option
                v-for="item in exportWarehouseList"
                :label="$l(item, 'title')"
                :value="item.id"
                :key="item.id"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('目的仓')">
            <el-select
              v-model="queryParams.objectiveId"
              :placeholder="$t('请选择目的仓')"
              clearable
            >
              <el-option
                v-for="item in importWarehouseList"
                :label="$l(item, 'title')"
                :value="item.id"
                :key="item.id"
              ></el-option>
            </el-select>
          </el-form-item>
            <el-form-item :label="$t('运输方式')">
              <dict-selector
                :type="DICT_TYPE.ECW_TRANSPORT_TYPE"
                v-model="queryParams.transportId"
                formatter="number"
              />
            </el-form-item>
            <!--  </el-row> -->
            <el-form-item :label="$t('出货渠道')">
              <el-select
                v-model="queryParams.channelId"
                :placeholder="$t('请选择出货渠道')"
              >
                <el-option
                  v-for="item in channelList"
                  :label="item.nameZh"
                  :value="item.channelId"
                  :key="item.channelId"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-row>
          <!-- <el-row> -->
<!--            <el-form-item :label="$t('报关方式')">
              <dict-selector
                :type="DICT_TYPE.ECW_CUSTOMS_TYPE"
                v-model="queryParams.customsType"
              />
            </el-form-item>
            <el-form-item :label="$t('控货')">
              <dict-selector
                :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
                v-model="queryParams.control"
              />
            </el-form-item>
            <el-form-item :label="$t('客户名称')">
              <customer-selector
                v-model="queryParams.consignorId"
                @change="consignor = $event"
              />
            </el-form-item>
          </el-row> -->
          <el-form-item :label="$t('订单号')" prop="orderNo">
            <el-input
              v-model="queryParams.orderNo"
              :placeholder="$t('请输入订单号')"
              clearable
            />
          </el-form-item>

          <el-form-item :label="$t('业务编号')" prop="selfNo">
            <el-input
              v-model="queryParams.selfNo"
              :placeholder="$t('请输入业务编号')"
              clearable
              @blur="handleQuery"
            />
          </el-form-item>

          <el-form-item>
            <el-button type="primary" icon="el-icon-search" @click="handleQuery"
              >{{ $t('查询') }}</el-button
            >
          </el-form-item>
        </el-form>
        <el-table
          ref="multipleTable"
          v-loading="loading"
          :data="orderData"
          border
          @selection-change="handleSelectionChange"
          row-key="id"
        >
          <el-table-column type="selection" width="55" :reserve-selection="true"> </el-table-column>
          <el-table-column :label="$t('业务编号')" align="center" prop="payableNo" />
          <el-table-column :label="$t('货柜号')" align="center" prop="containerNo" />
          <el-table-column :label="$t('供应商')" align="center" prop="supplierName" />
          <el-table-column :label="$t('费用类型')" align="center" prop="feeType">
            <template slot-scope="scope">
              <dict-tag
                :type="DICT_TYPE.FEE_TYPE"
                :value="scope.row.feeType"
              ></dict-tag>
            </template>
          </el-table-column>
          <el-table-column :label="$t('金额')" align="center" prop="totalAmount">
            <template slot-scope="scope">
              <span>{{ scope.row.totalAmount }}{{getCurrencyLabel(scope.row.currencyId)}}</span>
              <!-- <dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" /> -->
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.page"
          :limit.sync="queryParams.rows"
          @pagination="getList"
        />
        <!-- </el-card> -->
        <div slot="footer" style="margin: 20px 0; text-align: center;">
          <el-button type="primary" @click="saveSelectList">{{ $t('确认添加') }}</el-button>
          <el-button @click="hiddenDialog">{{ $t('取消') }}</el-button>
        </div>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { listSimpleUsers, getUserProfile } from "@/api/system/user";
import { DICT_TYPE } from "@/utils/dict";
import { getToken } from "@/utils/auth";
import { getChannelList } from "@/api/ecw/channel";
import CustomerSelector from "@/components/CustomerSelector";
import { listSimpleDepts } from "@/api/system/dept";
import { getTradeCityList } from "@/api/ecw/region";
import { getSupplierPage, getSupplier } from "@/api/ecw/supplier";
import {
  getPayableList,
  getPayableInfoByIds,
  createPayment,
  getPaymentInfoByIds,
  getPaymentItem,
  updatePayment,
} from "@/api/ecw/financial";
import { getCurrencyPage } from "@/api/ecw/currency";
import NP from "number-precision";
import { getWarehouseList } from "@/api/ecw/warehouse";
import WorkFlow from "@/components/WorkFlow/";
import { getExchangeRatePage } from "@/api/ecw/exchangeRate";

export default {
  name: "EcwFinancialCreatpayment",
  components: {
    CustomerSelector,
    WorkFlow,
  },
  data() {
    return {
      //上传文件所需要的参数 lanbm 2024-05-31 add
      uploadFileUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload",
      //上传的图片服务器地址
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      id: 0,
      payableId: 0,
      orderData: [],
      total: 0,
      loadings: false,
      open: false,
      //附件是展示还是编辑 lanbm 2024-05-31 add
      isView: false,
      form: {},
      creatorData: [],
      list: [],
      defaultList: [],
      channelList: [],
      loading: "",
      bankData: [],
      reason: "",
      params: {
        page: 1,
        rows: 20,
      },
      deptData: [],
      deptArr: [],
      queryParams: {
        page: 1,
        rows: 20,
      },
      multipleSelection: [],
      tradeCityList: [],
      allSupplier: [],
      currencyList: [],
      warehouseList: [],
      selectedUsers: [],
      dialogVisible: false,
      rateList: [],
      userInfo: null,
      // 用户导入参数
      upload: {
        open: false, // 是否显示弹出层
        title: "", // 弹出层标题
        isUploading: false, // 是否禁用上传
        url: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址
        headers: { Authorization: "Bearer " + getToken() }, // 设置上传的请求头部
        data: {}, // 上传的额外数据，用于文件名
      },
    };
  },
  async activated() {
    let that = this;
    await getUserProfile().then((res) => (that.userInfo = res.data));
    if (this.$route.query.payableId && this.$route.query.payableId != 0) {
      this.payableId = this.$route.query.payableId;
      getPayableInfoByIds({ id: this.payableId }).then((res) => {
        this.handleSelectionChange([res.data]);
        this.list = this.multipleSelection;
        this.$set(this.form, "supplierId", res.data.supplierId);
        this.selectChange(this.form.supplierId);
      });
      this.$set(this.form, "departmentId", parseInt(this.userInfo.deptId));
      this.$set(this.form, "salesmanId", this.userInfo.id);
      that.$set(that.form, "salesmanName", that.userInfo.nickname);
      that.$set(that.form, "departmentName", that.userInfo.dept.name);
    }
    if (this.$route.query.id && this.$route.query.id !== "0") {
      this.id = this.$route.query.id;
      getPaymentInfoByIds({ id: this.id }).then((res) => {
        this.form = {
          ...res.data,
          latestPayAt: this.parseTime(res.data.latestPayAt, "{y}-{m}-{d}"),
          applicationAt: res.data.applicationAt
            ? this.parseTime(res.data.applicationAt, "{y}-{m}-{d}")
            : this.getYmd(),
          invoiceStatus: String(res.data.invoiceStatus),
        };

        this.$set(
          this.form,
          "supplierBankAccount",
          res.data.supplierBankAccount
        );
        console.log(this.form);
      });
      getPaymentItem({ id: this.id }).then((res) => {
        this.list = [...res.data];
        this.defaultList = [...res.data];
      });
    } else {
      if (!this.form.applicationAt)
        this.$set(this.form, "applicationAt", this.getYmd());
    }
  },
  async created() {
    let that = this;
    await getUserProfile().then((res) => (that.userInfo = res.data));
    await getCurrencyPage(this.params).then(
      (res) => (this.currencyList = res.data.list)
    );
    await getExchangeRatePage({ page: 1, rows: 100 }).then(
      (res) => (this.rateList = res.data.list)
    );
    getWarehouseList().then((res) => (this.warehouseList = res.data));

    if (that.$route.query.payableId && that.$route.query.payableId != 0) {
      this.payableId = this.$route.query.payableId;
      getPayableInfoByIds({ id: this.payableId }).then((res) => {
        this.handleSelectionChange([res.data]);
        this.list = this.multipleSelection;
        this.$set(this.form, "supplierId", res.data.supplierId);
        this.selectChange(this.form.supplierId);
      });
      this.$set(this.form, "departmentId", parseInt(this.userInfo.deptId));
      this.$set(this.form, "salesmanId", this.userInfo.id);
      that.$set(that.form, "salesmanName", that.userInfo.nickname);
      that.$set(that.form, "departmentName", that.userInfo.dept.name);
    }
    if (that.$route.query.id && that.$route.query.id !== "0") {
      this.id = this.$route.query.id;
      getPaymentInfoByIds({ id: this.id }).then((res) => {
        this.form = {
          ...res.data,
          latestPayAt: this.parseTime(res.data.latestPayAt, "{y}-{m}-{d}"),
          applicationAt: res.data.applicationAt
            ? this.parseTime(res.data.applicationAt, "{y}-{m}-{d}")
            : this.getYmd(),
          invoiceStatus: String(res.data.invoiceStatus),
        };

        this.$set(
          this.form,
          "supplierBankAccount",
          res.data.supplierBankAccount
        );
        console.log(this.form);
      });
      getPaymentItem({ id: this.id }).then((res) => {
        this.list = [...res.data];
        this.defaultList = [...res.data];
      });
    } else {
      if (!this.form.applicationAt)
        this.$set(this.form, "applicationAt", this.getYmd());
    }
    listSimpleUsers().then((res) => (that.creatorData = res.data));
    getChannelList().then((res) => (that.channelList = res.data));
    getTradeCityList().then((res) => (that.tradeCityList = res.data));
    getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
      const { data } = res;
      this.allSupplier = data.list;
      this.selectChange(this.form.supplierId);
    });
    listSimpleDepts().then((res) => {
      that.deptData = res.data;
    });
  },
  computed: {
    expoerCityList() {
      return this.tradeCityList.filter((item) => item.type == 2);
    },
    importCityList() {
      return this.tradeCityList.filter((item) => item.type == 1);
    },
    exportWarehouseList() {
      /* tradeType 1 进口，2出口，3进出口 */
      return this.warehouseList.filter(
        (item) => item.tradeType == 2 || item.tradeType == 3
      );
    },
    importWarehouseList() {
      return this.warehouseList.filter(
        (item) => item.tradeType == 1 || item.tradeType == 3
      );
    },
  },
  methods: {
    selslectVal(key, value) {
      this.form[key] = value;
    },
    getCurrencyLabel(id) {
      var label = this.currencyList.filter((item) => item.id == id);
      if (label.length > 0)
        return this.$i18n.locale == "zh_CN"
          ? label[0].titleZh
          : label[0].titleEn;
      return "";
    },
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = { ...this.queryParams };
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
      // 执行查询
      getPayableList(params).then((response) => {
        this.orderData = response.data.list;
        this.total = response.data.total;
        this.loading = false;
        this.$nextTick(() => {
          this.list.forEach((itm) => {
            const t = this.orderData.find((v) => v.id == itm.id);
            t && this.$refs.multipleTable.toggleRowSelection(t, true);
          });
        });
      });
    },
    getSummaries(param) {
      console.log(param);
      const { columns, data } = param;
      const sums = new Array(columns.length).map((v) => "");
      const index = sums.length - 1;
      sums[index - 1] = this.$t("价税合计大写");
      const t = data
        .map((v) => v.total)
        .reduce((prev, curr) => {
          return parseFloat(prev) + parseFloat(curr);
        }, 0);
      sums[index] = this.convertCurrency(t);
      return sums;
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.open = true;
    },
    submitForm(addType) {
      this.$refs.form.validate((valid) => {
        if (valid) {
          this.$refs.forms.validate((val) => {
            if (val) {
              const params = { ...this.form };
              params.addType = addType;
              if (this.list && this.list.length > 0) {
                params.payableReqVOList = [...this.list];
              } else {
                this.$modal.msgError(this.$t("请选择供应商未付款项"));
                return;
              }
              //只保存文件的路径
              //params.filepath=params.filepath.map((v) => v.url).join(",");
              /*if(!params.supplierBankAccount){
                this.$modal.msgError(this.$t('请选择供应商银行账号'));
                return
              }*/
              if (this.id && this.id !== "0") {
                updatePayment(params).then((res) => {
                  this.$modal.msgSuccess(this.$t("申请成功"));
                  this.$router.back();
                });
              } else {
                createPayment(params).then((res) => {
                  this.$modal.msgSuccess(this.$t("新增成功"));
                  this.$router.back();
                });
              }
            }
          });
        }
      });
    },
    submitDraft() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          const params = { ...this.form };
          if (this.list && this.list.length > 0) {
            params.payableReqVOList = [...this.list];
          } else {
            this.$modal.msgError(this.$t("请选择供应商未付款项"));
            return;
          }
          if (!params.supplierBankAccount) {
            this.$modal.msgError(this.$t("请选择供应商银行账号"));
            return;
          }
          if (this.id && this.id !== "0") {
            updatePayment(params).then((res) => {
              this.$modal.msgSuccess(this.$t("修改成功"));
              this.$router.back();
            });
          } else {
            createPayment(params).then((res) => {
              this.$modal.msgSuccess(this.$t("新增成功"));
              this.$router.back();
            });
          }
          // console.log(params, '-----params---------')
        }
      });
    },
    selectChangeBank(val) {
      this.$forceUpdate();
      let bank = this.bankData.find(
        (item) => item.bankAccount == this.form.supplierBankAccount
      );
      this.form.supplierBank = bank.bankName;
      this.form.supplierBankAccountName = bank.accountName;
    },
    selectChange(val) {
      this.bankData = [];
      // this.form.supplierBankAccount=''
      if (val) {
        getSupplier(val).then((res) => {
          this.bankData = res.data.bankList;
          let bank = this.bankData.find(
            (item) => item.bankAccount == this.form.supplierBankAccount
          );
          if (!bank) this.form.supplierBankAccount = "";
          if (!bank && this.bankData.length > 0)
            this.form.supplierBankAccount = this.bankData[0]["bankAccount"];
        });
      }

      const t = this.allSupplier.find((v) => v.id == val);

      t && (this.form.supplierName = t.companyZh);
      // t && (this.bankData = t.bankList)
    },
    handleQuery() {
      this.queryParams.page = 1;
      this.getList();
    },
    UStoRMB() {
      return NP.divide(
        this.currencyList.find((v) => v.titleEn === "USD").huilv,
        100
      ).toFixed(6);
    },
    NANtoRMB() {
      return NP.divide(
        this.currencyList.find((v) => v.titleEn === "NGN").huilv,
        100
      ).toFixed(6);
    },
    handleSelectionChange(val) {
      this.multipleSelection = val.map((v) => {
        // var rate = NP.divide(this.currencyList.find(vs => vs.id === v.currencyId).huilv, 100).toFixed(6)
        var rate = this.getRate(v.currencyId);
        return Object.assign(v, { exchangeRate: rate });
      });
    },
    //获取汇率
    getRate(sourceCurrencyId) {
      var targetCurrencyId = this.currencyList.find(
        (vs) => vs.titleEn == "RMB"
      ).id;
      var rate = this.rateList.find(
        (v) =>
          v.sourceCurrencyId === sourceCurrencyId &&
          v.targetCurrencyId === targetCurrencyId
      );
      if (rate) return rate.currencyRate;
      return "";
    },
    hiddenDialog() {
      this.open = false;
    },
    saveSelectList() {
      if (this.id && this.id !== "0") {
        this.list = [...this.defaultList, ...this.multipleSelection];
      } else {
        this.list = this.multipleSelection;
      }
      this.open = false;
    },
    cancelApproval() {},
    convertCurrency(money) {
      //汉字的数字
      var cnNums = new Array(
        "零",
        this.$t("壹"),
        this.$t("贰"),
        this.$t("叁"),
        this.$t("肆"),
        this.$t("伍"),
        this.$t("陆"),
        this.$t("柒"),
        this.$t("捌"),
        "玖"
      );
      //基本单位
      var cnIntRadice = new Array("", this.$t("拾"), this.$t("佰"), "仟");
      //对应整数部分扩展单位
      var cnIntUnits = new Array("", this.$t("万"), this.$t("亿"), "兆");
      //对应小数部分单位
      var cnDecUnits = new Array("角", this.$t("分"), this.$t("毫"), "厘");
      //整数金额时后面跟的字符
      var cnInteger = this.$t("整");
      //整型完以后的单位
      var cnIntLast = this.$t("元");
      //最大处理的数字
      var maxNum = 999999999999999.9999;
      //金额整数部分
      var integerNum;
      //金额小数部分
      var decimalNum;
      //输出的中文金额字符串
      var chineseStr = "";
      //分离金额后用的数组，预定义
      var parts;
      // 传入的参数为空情况
      if (money === "") {
        return "";
      }
      money = parseFloat(money);
      if (money >= maxNum) {
        return "";
      }
      // 传入的参数为0情况
      if (money === 0) {
        chineseStr = cnNums[0] + cnIntLast + cnInteger;
        return chineseStr;
      }
      // 转为字符串
      money = money.toString();
      // indexOf 检测某字符在字符串中首次出现的位置 返回索引值（从0 开始） -1 代表无
      if (money.indexOf(".") == -1) {
        integerNum = money;
        decimalNum = "";
      } else {
        parts = money.split(".");
        integerNum = parts[0];
        decimalNum = parts[1].substr(0, 4);
      }
      //转换整数部分
      if (parseInt(integerNum, 10) > 0) {
        let zeroCount = 0;
        let IntLen = integerNum.length;
        for (let i = 0; i < IntLen; i++) {
          let n = integerNum.substr(i, 1);
          let p = IntLen - i - 1;
          let q = p / 4;
          let m = p % 4;
          if (n == "0") {
            zeroCount++;
          } else {
            if (zeroCount > 0) {
              chineseStr += cnNums[0];
            }
            zeroCount = 0;
            chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
          }
          if (m == 0 && zeroCount < 4) {
            chineseStr += cnIntUnits[q];
          }
        }
        // 最后+ 元
        chineseStr += cnIntLast;
      }
      // 转换小数部分
      if (decimalNum != "") {
        let decLen = decimalNum.length;
        for (let i = 0; i < decLen; i++) {
          let n = decimalNum.substr(i, 1);
          if (n != "0") {
            chineseStr += cnNums[Number(n)] + cnDecUnits[i];
          }
        }
      }
      if (chineseStr == "") {
        chineseStr += cnNums[0] + cnIntLast + cnInteger;
      } else if (decimalNum == "") {
        chineseStr += cnInteger;
      }
      return chineseStr;
    },
    openDialog() {
      this.getList();
    },
    oninput(num) {
      let str = num;
      let len1 = str.substr(0, 1);
      let len2 = str.substr(1, 1);
      //如果第一位是0，第二位不是点，就用数字把点替换掉
      if (str.length > 1 && len1 == 0 && len2 != ".") {
        str = str.substr(1, 1);
      }
      //第一位不能是.
      if (len1 == ".") {
        str = "";
      }
      //限制只能输入一个小数点
      if (str.indexOf(".") != -1) {
        let str_ = str.substr(str.indexOf(".") + 1);
        if (str_.indexOf(".") != -1) {
          str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1);
        } else {
          // if (str_.length > 2) {
          //   str = str.substr(0, str.indexOf('.') + 1) + str_.substr(0, 2)
          // }
        }
      }
      //正则替换
      str = str.replace(/[^\d^\.]+/g, ""); // 保留数字和小数点
      // str = str.replace(/\.\d\d\d$/,'') // 小数点后只能输两位
      return str;
    },
    getYmd() {
      let today = new Date();
      let year = today.getFullYear(); //获取年份
      let month = today.getMonth() + 1; //获取月份
      let day = today.getDate(); //获取日期
      return year + "-" + month + "-" + day;
    },
    //附件上传相关方法 lanbm 2024-05-31 add
    handleUploadSuccess(res, file, fileList) {
      let arr = [];
      setTimeout(() => {
        fileList.forEach((item) => {
          arr.push({
            name: item.name,
            url: item.response ? item.response.data : item.url,
          });
        });
        this.form.filelist = arr;
      }, 300);
      this.loading2.close();
    },
    handleBeforeUpload() {     
      this.loading2 = this.$loading({
        lock: true,
        text: this.$t("上传中"),
        background: "rgba(0, 0, 0, 0.7)",
      });
    },
    handleUploadError() {
      this.$message({
        type: "error",
        message: this.$t("上传失败"),
      });
      this.loading2.close();
    },
    beforeRemove(file, fileList) {
      return this.$confirm(this.$t("确定移除") + "?").then((res) => {
        setTimeout(() => {
          this.form.filelist = fileList.map((v) => ({
            name: v.name,
            url: v.response ? v.response.data : v.url,
          }));
        }, 300);
      });
    },
    //end 附件上传相关方法 lanbm 2024-05-31 add
  },
};
</script>

<style scoped>
.card {
  margin-top: 20px;
}
.dialog-footer {
  padding: 40px;
}
.card-title {
  font-size: 18px;
  font-weight: bold;
}
.bpm-title {
  font-size: 20px;
  font-weight: bold;
  color: #666;
  margin: 20px 0;
}
.list_item {
  display: flex;
  align-items: center;
  justify-content: start;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
</style>
