<template>
  <!-- 收费查询-账单查询 -->
  <div class="white_bg burt-container custom-info">
    <!-- form -->
    <a-form-model ref="form" layout="vertical" :model="form">
      <a-row :gutter="30">
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="病历号">
            <a-input v-model="form.mrnNo" placeholder="请输入病历号" allow-clear />
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="客户姓名">
            <a-input v-model="form.patientName" placeholder="请输入客户姓名" allow-clear />
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="保险公司">
            <a-select v-model="form.payorId" placeholder="请选择保险公司" allowClear>
              <a-select-option v-for="item in companyOptions" :key="item.corpCode" :value="item.id">
                {{ item.longName }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="看诊医生">
            <a-select v-model="form.doctorCode" placeholder="请选择看诊医生" allowClear>
              <a-select-option v-for="item in doctorOptions" :key="item.doctorCode" :value="item.doctorCode">
                {{ item.doctorDesc }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="收费时间">
            <a-range-picker format="YYYY-MM-DD" v-model="form.dateRange" :placeholder="['开始时间','结束时间']"  @change="onSelectVisitTime" />
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="是否已关联寄送单">
            <a-select v-model="form.isSend" placeholder="请选择是否已关联寄送单" allowClear>
              <a-select-option  value="Y" allow-clear>
                是
              </a-select-option>
              <a-select-option  value="N" allow-clear>
                否
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="是否已回款">
            <a-select v-model="form.isEobBack" placeholder="请选择是否已回款" allowClear>
              <a-select-option  value="Y" allow-clear>
                是
              </a-select-option>
              <a-select-option  value="N" allow-clear>
                否
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="账单类型">
            <a-select v-model="form.receiptType" placeholder="请选择账单类型" allowClear>
              <a-select-option v-for="item in receiptTypeOptions" :key="item.value" :value="item.value">
                {{ item.name }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="账单编号">
            <a-input v-model="form.receiptNo" placeholder="请输入账单编号" allow-clear />
          </a-form-model-item>
        </a-col>
        <a-col :xl="6" :lg="6" :sm="12">
          <a-form-model-item label="状态">
            <a-select v-model="form.status" placeholder="请选择状态" allowClear>
              <a-select-option v-for="item in statusOptions" :key="item.code" :value="item.code">
                {{ item.name }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="8" :lg="3" :sm="3" class="none-label">
          <a-form-model-item label="button">
            <!-- <a-button>更新数据</a-button> -->
            <!-- <a-button class="mar-left10" type="primary" @click="addNewCharge">
              <Icon name="ssiadd" :size="14" />新建预授权</a-button> -->
            <a-button class="mar-left10" type="primary" @click="handlerReset">
              <Icon name="ssireset" :size="14" />重置
            </a-button>
            <a-button class="mar-left10" type="primary" @click="handlerSearch">
              <Icon name="ssisearch_active" :size="14" />查询
            </a-button>
            <a-button class="mar-left10" type="primary" @click="exportExcel">
              <Icon name="ssidaochu" :size="14" />导出
            </a-button>
          </a-form-model-item>
        </a-col>
      </a-row>
    </a-form-model>

    <!-- table -->
    <a-table :columns="columns" :data-source="dataList" :scroll="{ x: true }" :pagination="false">
      <template slot="index" slot-scope="text, record, index">
        {{ index + 1 }}
      </template>
      <template slot="operation" slot-scope="record">
        <!-- <a-button type="link" @click.stop="receiptEvt(record)">结算</a-button> -->
        <a-button type="link" class="success" @click.stop="detailEvt(record)">查看</a-button>
        <!-- <a-popconfirm title="你确定要关闭吗？" ok-text="确定" cancel-text="取消" @confirm="deleteData" >
          <a-button type="link" class="danger">删除</a-button>
        </a-popconfirm> -->
      </template>
      <template slot="isSend" slot-scope="text">
        {{text == 'Y' ? '是' : text == 'N' ? '否' : ''}}
      </template>
      <template slot="isEob" slot-scope="text">
        {{text == 'Y' ? '是' : text == 'N' ? '否' : ''}}
      </template>
      <template slot="isEobBack" slot-scope="text">
        {{text == 'Y' ? '是' : text == 'N' ? '否' : ''}}
      </template>
      <template slot="status" slot-scope="text">
        <span :style="{color: text == 2 ? 'red' : ''}">{{ text==1?'有效':text==2?'无效':'' }}</span>
      </template>
    </a-table>
    <!--分页-->
    <BurtPagination :pagination="pagination" @pageChange="_getChargeList" />
  </div>
</template>

<script>
import BurtPagination from "@/components/CUSTOMER/pagation";
import { mapState } from "vuex"
import moment from "moment";
import { receiptTypeOptions } from '@/utils/utilsdictOptions.js';
import { exportFile } from '@/utils/index';
export default {
  data() {
    const columns = [
      { title: "序号", dataIndex: "index", key:"index",align:'center', width: 80,scopedSlots: { customRender: "index" }},
      { title: "收费时间", dataIndex: "receiptDate", width: 180 },
      { title: "账单编号", dataIndex: "receiptNo", width: 180 },
      { title: "账单类型", dataIndex: "receiptTypeStr", width: 130 },
      { title: "状态", dataIndex: "status", width: 130,scopedSlots: { customRender: "status" } },
      { title: "病历号", dataIndex: "mrnNo",width: 180},
      { title: "客户姓名",dataIndex: "patientName",width: 120,},
      { title: "保险公司", dataIndex: "payorName", width: 200 },
      { title: "就诊医生", dataIndex: "doctorName", width: 150 },
      { title: "是否已关联寄送单", dataIndex: "isSend", width: 180,scopedSlots: { customRender: "isSend" } },
      { title: "是否已回款", dataIndex: "isEobBack", width: 180,scopedSlots: { customRender: "isEobBack" } },
      { title: "应收金额", dataIndex: "chargeAmount", width: 180 },
      { title: "折扣（%）", dataIndex: "discountAmount", width: 180 },
      { title: "减免金额", dataIndex: "reduceAmount", width: 180 },
      { title: "应付金额", dataIndex: "payableAmount", width: 180 },
      { title: "客户自付", dataIndex: "selfpaidAmount", width: 180 },
      { title: "理赔金额", dataIndex: "actualAmount", width: 180 },
      { title: "保险已支付", dataIndex: "backAmount", width: 180 },
      { title: "保险欠费", dataIndex: "insuranceArrearsAmount", width: 180 },
      { title: "个人欠费", dataIndex: "arrearsAmount", width: 180 },
      { title: "未清余额", dataIndex: "residueBackAmount", width: 180 },
      { title: "操作", key: "operation", width: "175px",fixed: "right",scopedSlots: { customRender: "operation" }, align: "center"},
    ];
    return {
      columns,
      receiptTypeOptions,
      form: {},
      pageForm: {
        doctorCode: "",
        patientName: "",
        mrnNo: "",
        paymentCode: "",
        payorId: 0,
        visitTimeEnd: "",
        visitTimeStart: "",
        receiptType: "",
        receiptNo: ""
      },
      patientTypeOptions: [
        {
          name: "商保",
          code: 1,
        },
      ], //客户类型
      companyOptions: [], //保险公司
      doctorOptions: [], //就诊医生
      paymentOptions: [
        {
          name: "商保",
          code: 1,
        },
      ], //支付方式
      dataList: [],
      pagination: {
        pageNum: 1,
        pageSize: 10,
        total: 0,
      },
      receiptTypeDict: {
        '1': '收费',
        '2': '退费'
      },
      statusOptions: [
        {
          name: '无效',
          code:2
        },
        {
          name: '有效',
          code: 1
        }
      ]
    };
  },
  components: {
    BurtPagination,
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.common.userInfo
    })
  },
  created() {
    this._getCompanyOptions();
    this._getDoctorListNoPage();//获取医生下拉选项
  },
  methods: {
    moment,
    // 获取列表数据
    _getChargeList() {
      const data = {
        ...this.pageForm,
        ...this.pagination,
      };
      this.$apis.GETCHARGELIST(data).then((res) => {
        let content = res.content || {};
        this.dataList = content.list.map(item => {
          item.receiptTypeStr = this.receiptTypeDict[item.receiptType] || ''
          return item
        }) || [];
        this.pagination.total = content.total || 0;
      });
    },
    // 获取保险公司下拉选项
    _getCompanyOptions() {
      this.$apis.GETCOMPANYOPTIONS().then((res) => {
        this.companyOptions = res.content || [];
      });
    },
    // 获取看诊医生下拉选项
    _getDoctorListNoPage(){
      this.$apis.GETDOCTORlISTNOPAGE({"providerId": this.userInfo.providerId}).then((res) => {
        if (res.returnCode === "0000") {
          this.doctorOptions = res.content || [];
        }else{
          this.$message.success(res.returnMsg);
        }
      });
    },
    // 选中就诊时间
    onSelectVisitTime(date, dateString) {
        this.form.visitTimeStart = dateString[0] + ' 00:00:00'
        this.form.visitTimeEnd = dateString[1] + ' 23:59:59'
        console.log(date, dateString);
    },
    // 重置
    handlerReset() {
      this.form = {}
    },
    //查看 
    detailEvt(record) {
      localStorage.setItem('chargeQueryDetail', JSON.stringify(record));
      const { receiptNo } = record;
      this.$router.push({
        name: "chargeQueryDetail",
        query: { receiptNo },
      });
    },
    //账单结算
    receiptEvt(record){
      this.$modal.confirm({
        title: "结算",
        content: "确定结算该账单？",
        okText: "确定",
        cancelText: "取消",
        onOk: () => {
          this.$apis.RECEIPTSETTLEMENT({
            id: record.id
          }).then((res) => {
            if (res.returnCode === "0000") {
              this.$message.success('结算成功');
              this._getChargeList();
            }else{
              this.$message.error(res.returnMsg);
            }
          });
        },
      });
    },
    handlerSearch() {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return false;
        }
        this.pagination.pageNum = 1;
        this.pageForm = this.$lodash.cloneDeep({...this.form, dateRange: undefined});
        this._getChargeList();
      });
    },
    // 新建账单信息
    addNewCharge() {
      // this.$router.push("/customer/edit");
    },
		//导出报表
    exportExcel(){
			let filter = {
					...this.form,
			}
			this.$apis.RceiptListReport(filter).then(res => {
					exportFile(res, '账单报表.xls');
			})
    }
  },
};
</script>
<style lang="less" scoped>
.none-label {
  text-align: right;
  .ant-form-item-label {
    opacity: 0;
  }
}
.ant-btn .icon-class {
  .mg-r(10);
}
</style>
