<template>
  <div>
    <div class="sty">
      <el-page-header content="销售返利单" @back="goBack" />
    </div>
    <el-divider />
    <!-- 表头 -->
    <div>
      <el-form ref="searchForm" :model="searchForm" label-width="100px" size="small" label-position="left">
        <el-row :gutter="20">
          <el-col :xs="24" :sm="12" :lg="6">
            <el-form-item label="返利日期" prop="">
              <el-date-picker
                disabled
                class="selectStyle"
                type="datetime"
                placeholder="系统自动生成"
                default-time="23:59:59"
                value-format="yyyy-MM-dd HH:mm:ss"
              />
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :lg="6">
            <el-form-item label="备注" prop="remark">
              <el-input v-model="searchForm.remark" placeholder="" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <!-- 按钮 -->
    <div class="btn-group clearfix">
      <div class="fl">
        <el-button type="primary" size="small" @click="addFn">保存</el-button>
      </div>
      <div v-if="state == 'SAVE'" class="fr">
        <el-button type="primary" size="small" @click="addRowFn">添加行</el-button>
        <el-button type="primary" size="small" @click="delRowFn">删除行</el-button>
      </div>
    </div>
    <!-- 列表 -->
    <div v-if="state != 'SAVE' && state != 'OK' && state !='OK_ONE'" class="mymain-container">
      <div class="table">
        <el-table
          v-loading="listLoading"
          :data="dataList"
          element-loading-text="Loading"
          border
          fit
          highlight-current-row
          stripe
          :row-class-name="rouClassNameFn"
          @row-click="onRowClick"
        >
          <el-table-column align="left" label="序号" type="index" width="100" show-overflow-tooltip />
          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="160" show-overflow-tooltip />
          <el-table-column align="left" label="经销商名称" prop="customerName" min-width="250" show-overflow-tooltip />
          <el-table-column align="left" label="返利类型" prop="walletName" min-width="160" show-overflow-tooltip />
          <el-table-column align="right" label="返利总金额" prop="amount" min-width="160" show-overflow-tooltip />
          <el-table-column align="right" label="暂扣返利" prop="withholdAmount" min-width="160" show-overflow-tooltip />
          <el-table-column
            align="left"
            label="政策文件流水号"
            prop="policyFileNo"
            min-width="160"
            show-overflow-tooltip
          />
          <el-table-column align="left" label="政策文号" prop="policyDocNo" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyDocNo" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="政策年份" prop="policyYear" min-width="160" show-overflow-tooltip />
          <el-table-column align="left" label="政策月份" prop="policyMonth" min-width="160" show-overflow-tooltip />
          <el-table-column align="left" label="政策归属部门" prop="policyOrg" min-width="160" show-overflow-tooltip />
          <el-table-column align="left" label="客户区域" prop="customerArea" min-width="160" show-overflow-tooltip />
          <el-table-column align="left" label="客户属性" prop="customerAttr" min-width="160" show-overflow-tooltip />
          <el-table-column
            align="left"
            label="建立实际归属客户"
            prop="rewardActualCustomers"
            min-width="160"
            show-overflow-tooltip
          />
          <el-table-column align="left" label="备注1" prop="remark1" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.remark1" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="备注2" prop="remark2" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.remark2" />
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <!-- 列表 -->
    <div v-if="state == 'SAVE' || state =='OK' ||state =='OK_ONE'" class="mymain-container">
      <div class="table">
        <el-table
          v-loading="listLoading"
          :data="dataList"
          element-loading-text="Loading"
          border
          fit
          highlight-current-row
          stripe
          :row-class-name="rouClassNameFn"
          @row-click="onRowClick"
        >
          <el-table-column align="left" label="序号" type="index" width="100" show-overflow-tooltip />
          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.customerNumber" disabled />
            </template>
          </el-table-column>
          <el-table-column align="left" label="经销商名称" prop="customerName" min-width="250" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-select
                v-model="scope.row.customerId"
                filterable
                placeholder="请选择"
                @change="changeCustomerFn($event, scope.$index, scope.row)"
              >
                <el-option v-for="item in customerData" :key="item.id" :label="item.name" :value="item.id" />
              </el-select>
            </template>
          </el-table-column>
          <el-table-column align="left" label="返利类型" prop="customerWalletId" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <!-- v-if="state2"  -->
              <el-select v-model="scope.row.customerWalletId" placeholder="请选择">
                <el-option
                  v-for="item in scope.row.walletList"
                  :key="item.customerWalletId"
                  :label="item.name"
                  :value="item.customerWalletId"
                />
              </el-select>
              <!-- <el-select v-else v-model="scope.row.walletName" placeholder="请选择">
                <el-option :label="scope.row.walletName" value=""> </el-option>
              </el-select> -->
            </template>
          </el-table-column>
          <el-table-column align="left" label="返利总金额" prop="amount" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model.number="scope.row.amount" class="mountclass" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="暂扣返利" prop="withholdAmount" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model.number="scope.row.withholdAmount" class="mountclass" />
            </template>
          </el-table-column>
          <el-table-column
            align="left"
            label="政策文件流水号"
            prop="policyFileNo"
            min-width="160"
            show-overflow-tooltip
          >
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyFileNo" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="政策文号" prop="policyDocNo" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyDocNo" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="政策年份" prop="policyYear" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyYear" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="政策月份" prop="policyMonth" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyMonth" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="政策归属部门" prop="policyOrg" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.policyOrg" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="客户区域" prop="customerArea" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.customerArea" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="客户属性" prop="customerAttr" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.customerAttr" />
            </template>
          </el-table-column>
          <el-table-column
            align="left"
            label="建立实际归属客户"
            prop="rewardActualCustomers"
            min-width="160"
            show-overflow-tooltip
          >
            <template slot-scope="scope">
              <el-input v-model="scope.row.rewardActualCustomers" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="备注1" prop="remark1" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.remark1" />
            </template>
          </el-table-column>
          <el-table-column align="left" label="备注2" prop="remark2" min-width="160" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-input v-model="scope.row.remark2" />
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
  </div>
</template>

<script>
import { getRebateOrderDetail, getRebateOrderUpdate } from '@/api/finance/rebate_list'
import { getCustomerList, getWalletCustomerList } from '@/api/finance/rebate_form'
import { async } from 'q'
import { tsThisType } from '@babel/types'
export default {
  props: {
    detailId: {
      type: String,
      required: true
    }
  },
  data() {
    return {
      state: '', // 单据状态
      state2: false, // 状态
      dataList: [],
      listLoading: false, // 列表加载loading
      searchForm: {
        theTime: '',
        remark: ''
      },
      customerData: []
      // rules: {
      //   theTime: [
      //     {
      //       required: true,
      //       message: "请选择返利日期",
      //       trigger: "blur",
      //     },
      //   ],
      // },
    }
  },
  created() {
    this.getDataList()
    this.getCustomerData()
  },
  methods: {
    goBack() {
      this.$emit('setShowPage', 1)
    },
    // 获取详情数据
    async getDataList() {
      const res = await getRebateOrderDetail({ id: this.detailId })
      //   this.searchForm.rebateOrderId = res.data.id;
      this.searchForm.theTime = res.data.theTime
      //   this.searchForm.createBy = res.data.createBy;
      //   this.searchForm.createTime = res.data.createTime;
      this.searchForm.remark = res.data.remark
      this.state = res.data.examineStatus
      res.data.items.map(async k => {
        const wallet = await getWalletCustomerList({
          customerId: k.customerId,
          type: 'REBATE'
        })
        this.$set(k, 'walletList', wallet.data)
      })
      this.dataList = res.data.items
      // this.$set(this.dataList, 'walletList', wallet.data)
    },
    // 保存
    async addFn() {
      // await this.$refs.searchForm.validate();

      if (this.state2) {
        this.dataList.forEach(v => {
          const arr = v.walletList.filter(i => i.customerWalletId == v.customerWalletId)

          v.walletName = arr[0].name
        })
      }

      console.log(this.dataList)
      await getRebateOrderUpdate({
        ...this.searchForm,
        items: this.dataList,
        id: this.detailId
      })
      this.$emit('updateList')

      this.$message.success('保存成功')
      this.$emit('setShowPage', 1)
    },
    // 选择经销商名称事件
    async changeCustomerFn(v, index, value) {
      this.state2 = true
      this.$nextTick(function() {
        value.customerWalletId = ''
        value.walletName = ''
      })

      const res = await getWalletCustomerList({
        customerId: v,
        type: 'REBATE'
      })
      const res2 = this.customerData.filter(i => i.id == v)

      this.$set(this.dataList[index], 'customerNumber', res2[0].number)
      this.$set(this.dataList[index], 'customerName', res2[0].name)
      this.$set(this.dataList[index], 'walletList', res.data)
    },
    // 获取经销商数据
    async getCustomerData() {
      const res = await getCustomerList({ pageSize: -1, pageNum: 1 })
      this.customerData = res.data.records
    },
    rouClassNameFn({ row, rowIndex }) {
      // 把每一行的索引放进row
      row.index = rowIndex
    },
    onRowClick(row, event, column) {
      this.delIndex = row.index
    },
    // 删除行
    delRowFn() {
      this.dataList.splice(this.delIndex, 1)
    },
    // 添加行
    addRowFn() {
      this.dataList.push({
        customerNumber: '',
        customerName: '',
        customerWalletId: '',
        amount: null,
        withholdAmount: null,
        policyFileNo: '',
        policyDocNo: '',
        policyYear: '',
        policyMonth: '',
        policyOrg: '',
        customerArea: '',
        customerAttr: '',
        rewardActualCustomers: '',
        remark1: '',
        remark2: ''
      })
    }
  }
}
</script>
<style lang="scss" scoped>
::v-deep .mountclass {
  input {
    text-align: right;
  }
}
.selectStyle {
  width: 100%;
}
</style>
