<template>
  <!-- -账单明细 -->
  <div class="white_bg burt-container custom-info">
    <Goback title="账单详情" />
    <a-form-model ref="form" layout="vertical" :model="form">
      <a-row :gutter="30">
        <a-col :xl="4" :lg="6" :sm="12">
          <a-form-model-item label="病历号">
            <a-input v-model="form.patientNo" placeholder="请输入病历号" allow-clear />
          </a-form-model-item>
        </a-col>
        <a-col :xl="4" :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="4" :lg="6" :sm="12">
          <a-form-model-item label="客户类型">
            <a-select v-model="form.patientType" placeholder="请选择客户类型" allowClear>
              <a-select-option v-for="item in patientTypeOptions" :key="item.code" :value="item.code">
                {{ item.name }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="4" :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="4" :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="5" :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="3" :lg="6" :sm="12">
          <a-form-model-item label="支付方式">
            <a-select v-model="form.paymentCode" placeholder="请选择支付方式" allowClear>
              <a-select-option v-for="item in paymentOptions" :key="item.code" :value="item.code" allow-clear>
                {{ item.name }}
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
        <a-col :xl="16" :lg="12" :sm="12" 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-form-model-item>
        </a-col>
      </a-row>
    </a-form-model>

    <a-table :columns="columns" :data-source="dataList" :scroll="{ x: true }" :pagination="false">
      <template slot="operation" slot-scope="record">
        <a-button type="link" @click.stop="editEvt(record)">修改</a-button>
        <a-popconfirm title="你确定要关闭吗？" ok-text="确定" cancel-text="取消" @confirm="deleteData" >
          <a-button type="link" class="danger">删除</a-button>
        </a-popconfirm>
      </template>
    </a-table>
    <!--分页-->
    <BurtPagination :pagination="pagination" @pageChange="_getChargeListDetail" />

    <div class="title-div">费用支付明细</div>
    <a-table :columns="payColumns" :data-source="payDataList" :scroll="{ x: true }" :pagination="false" class="payTable">
      <template slot="paymentType" slot-scope="text">
        <a-button class="danger">{{ text | payStyleFilters }}</a-button>
      </template>
    </a-table>
    <a-row :gutter="30">
      <a-col :sm="24">
        <div class="btn-div flex">
          <a-button type="primary" @click="receiptEvt">
            <Icon name="ssibaocun" :size="14" />结算</a-button>
          <a-button type="primary" class="mar-left10" @click="printEvt">
              <Icon name="ssidayinji_o" :size="14" />打印</a-button>
        </div>
      </a-col>
    </a-row>

    <a-modal title="编辑" :visible="dialogShow" width="700px" :maskClosable="false"
      okText="确定" cancelText="取消"
      @ok="handleEditOK" @cancel="dialogShow = false">
      <a-form-model ref="editForm" :model="editFormObj" :rules="editRules">
        <a-row :gutter="30">
          <a-col :lg="12" :xs="24">
            
          </a-col>
        </a-row>
      </a-form-model>
    </a-modal>
  </div>
</template>

<script>
import Goback from "@/components/CUSTOMER/goback";
import BurtPagination from "@/components/CUSTOMER/pagation";
import { mapState } from "vuex"
export default {
  data() {
    const columns = [
      { title: "项目", dataIndex: "itemcatDesc", width: 180 },
      { title: "项目明细", dataIndex: "itemDesc", width: 180},
      { title: "单价", dataIndex: "itemPrice", width: 120},
      { title: "数量", dataIndex: "itemQty", width: 180 },
      { title: "单位", dataIndex: "itemUnitDesc", width: 180 },
      { title: "金额", dataIndex: "chargeAmount", width: 180 },
      { title: "折扣（%）", dataIndex: "discountAmount", width: 180 },
      { title: "折后金额", dataIndex: "actualAmount", width: 180 },
      { title: "减免金额", dataIndex: "reduceAmount", width: 180 },
      { title: "实际金额", dataIndex: "paidAmount", width: 180 },
      // { title: "免赔额", dataIndex: "deductible", width: 180 },
      // { title: "自付额", dataIndex: "selfPaid", width: 180 },
      // { title: "其他费用", dataIndex: "otherPaid", width: 180 },
      // { title: "理赔金额", dataIndex: "actualPaid", width: 180 },
      // { title: "操作", key: "operation", width: "175px", fixed: "right", scopedSlots: { customRender: "operation" },align: "center"},
    ];
    const payColumns = [
      { title: "免赔额", dataIndex: "deductible", width: 180 },
      { title: "自付额", dataIndex: "selfPaid", width: 180 },
      { title: "其他费用", dataIndex: "otherPaid", width: 180 },
      { title: "个人支付", dataIndex: "personalPaid", width: 180 },
      { title: "理赔金额", dataIndex: "ciPaid", width: 180 },
      { title: "支付方式", dataIndex: "paymentType",  width: 180, scopedSlots: { customRender: "paymentType" }},
    ];
    return {
      dialogShow: false,
      receiptNo: "",
      columns,
      payColumns,
      form: {},
      pageForm: {
        doctorCode: "",
        patientName: "",
        patientNo: "",
        paymentCode: "",
        payorId: 0,
        visitTimeEnd: "",
        visitTimeStart: "",
      },
      patientTypeOptions: [
        {
          name: "商保",
          code: 1,
        },
      ], //客户类型
      companyOptions: [], //保险公司
      doctorOptions: [], //就诊医生
      paymentOptions: [
        {
          name: "商保",
          code: 1,
        },
      ], //支付方式
      dataList: [],
      pager: {
        pageNum: 1,
        pageSize: 10,
      },
      payDataList: [],
      pagination: {
        pageNum: 1,
        pageSize: 10,
        total: 0,
      },
      editFormObj: {
        id: "",
        patientNo: '',
        patientName: '',
      },
      editRules: {
        patientNo: [{ required: true, message: "病历号", trigger: "blur" }],
        patientName: [{ required: true, message: "客户姓名", trigger: "blur" }],
      },
    };
  },
  components: {
    Goback,
    BurtPagination,
  },
  computed: {
    ...mapState({
      userInfo: (state) => state.common.userInfo
    })
  },
  filters: {
    payStyleFilters(value) {
      const styleMap = {
        1: "支付宝",
        2: "微信",
        3: "现金",
      };
      return styleMap[value];
    },
  },
  created() {
    const { receiptNo } = this.$route.query;
    this.receiptNo = receiptNo || "";
    let chargeQueryDetail = localStorage.getItem('chargeQueryDetail');
    this.form = chargeQueryDetail? JSON.parse(chargeQueryDetail): {};

    this._getChargeListDetail();
    this._getCompanyOptions();//获取保险公司下拉选项
    this._getDoctorListNoPage();//获取看诊医生下拉选项
    this._getReceiptPaymentDetail(); //费用支付明细
  },
  methods: {
    // 获取列表数据
    _getChargeListDetail() {
      const data = {
        receiptNo: this.receiptNo,
        ...this.pager,
      };
      this.$apis.GETCHARGELISTDETAIL(data).then((res) => {
        console.log("11111111111获取table信息=", res);
        if (res.returnCode == "0000") {
          this.dataList = (res.content && res.content.list) || [];
          // this.pager.total = (res.content && res.content.total) || 0;
        } else {
          this.$message.error(res.returnMsg);
        }
      });
    },
    // 获取保险公司下拉选项
    _getCompanyOptions() {
      this.$apis.GETCOMPANYOPTIONS().then((res) => {
        console.log("获取保险公司下拉选项", res);
        if (res.returnCode == "0000") {
          this.companyOptions = res.content || [];
        } else {
          this.$message.error(res.returnMsg);
        }
      });
    },
    // 获取看诊医生下拉选项
    _getDoctorListNoPage(){
      this.$apis.GETDOCTORlISTNOPAGE({"providerId": this.userInfo.providerId}).then((res) => {
        if (res.returnCode === "0000") {
          this.doctorOptions = res.content || [];
        }else{
          this.$message.success(res.returnMsg);
        }
        
      });
    },
    // 获取费用支付明细
    _getReceiptPaymentDetail() {
      const params = {
        receiptNo: this.receiptNo,
        ...this.payPager,
      };
      this.$apis.GETRECEIPTPAYMENTDETAIL(params).then((res) => {
        console.log("获取费用支付明细", res);
        if (res.returnCode == "0000") {
          let content = res.content || {};
          this.payDataList = content;
        } else {
          this.$message.error(res.returnMsg);
        }
      });
    },
    //账单结算
    receiptEvt(){
      this.$modal.confirm({
        title: "结算",
        content: "确定结算该账单？",
        okText: "确定",
        cancelText: "取消",
        onOk: () => {
          this.$apis.RECEIPTSETTLEMENT({
            id: this.form.id
          }).then((res) => {
            if (res.returnCode === "0000") {
              this.$message.success('结算成功');
              this.pagination.pageNum = 1;
              this._getChargeListDetail();
            }else{
              this.$message.error(res.returnMsg);
            }
          });
        },
      });
    },
    //打印
    printEvt(){
      this.$apis.RECEIPTPRINT({
        id: this.form.id
      }).then(res => {
        if(res.returnCode == '0000'){
          let url = res.content;
          let link = document.createElement('a');
          link.setAttribute('href', url);
          link.setAttribute('target', "_blank");
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
        }else{
          this.$message.error(res.returnMsg);
        }
      })
    },
    // 选中就诊时间
    onSelectVisitTime(date, dateString) {
      console.log(date, dateString);
    },
    // 重置
    handlerReset() {
      this.form = {};
    },
    editEvt(record) {
      this.editFormObj = {
        id: record.id || "",
      };
      this.dialogShow = true;
    },
    //编辑保存
    handleEditOK() {
      this.$refs.editForm.validate((valid) => {
        if (valid) {
          console.log(11)
        }
      });
    },
    handlerSearch() {
      this.pagination.pageNum = 1;
      this.pageForm = this.$lodash.cloneDeep(this.form);
      this._getChargeListDetail();
    },
    deleteData() {
      this.$message.success("删除成功");
    },
    // 新建账单信息
    addNewCharge() {
      // this.$router.push("/customer/edit");
    },
  },
};
</script>
<style lang="less" scoped>
.none-label {
  text-align: right;
  .ant-form-item-label {
    opacity: 0;
  }
}
.ant-btn .icon-class {
  .mg-r(10);
}
.title-div {
  line-height: 56px;
  color: #252631;
  font-weight: bold;
  border-bottom: 1px solid #eee;
}
.payTable{
  .ant-btn{
    border-color: #1890ff;
    color: #1890ff;
  }
}
.btn-div{
  margin-top: 10px;
  justify-content: flex-end;
}
</style>
