<template>
  <div>
    <div id="pdfDom" ref="pdfDom" style="padding: 20px 20px 0; text-align: center;font-size:12px;color:#333333" v-loading="loading">
      <table border="1" style="width: 100%" class="table">
        <tr>
          <td :colspan="salaryStructureData.length+3" class="title">薪资确认单</td>
        </tr>
        <tr>
          <td colspan="2">所属主体</td>
          <td colspan="2">{{pdfData.companyName}}</td>
          <td colspan="1">部门</td>
          <td colspan="2">{{pdfData.deptName}}</td>
          <td colspan="1">入职日期</td>
          <td colspan="2">{{pdfData.entryDate}}</td>
        </tr>
        <tr>
          <td colspan="2">员工姓名</td>
          <td colspan="2">{{pdfData.nickName}}</td>
          <td colspan="1">岗位</td>
          <td colspan="2">{{pdfData.post}}</td>
          <td colspan="1">生效日期</td>
          <td colspan="2">{{pdfData.effectiveDate}}</td>
        </tr>
        <tr>
          <td colspan="2">学历</td>
          <td colspan="2">{{pdfData.education}}</td>
          <td colspan="1">试用期限</td>
          <td colspan="2">{{pdfData.probationPeriod}}</td>
          <td colspan="1">转正日期</td>
          <td colspan="2">{{pdfData.fullTimeDate}}</td>
        </tr>
        <tr>
          <td colspan="2">
            上班时长
          </td>
          <td :colspan="salaryStructureData.length+3-2" style="text-align:left">
            月休{{pdfData.monthRest}}天,{{pdfData.dailyHours}}小时/天(上午{{pdfData.morningBeginTime}}至{{pdfData.morningEndTime}}
            ;下午{{pdfData.afternoonBeginTime}}至{{pdfData.afternoonEndTime}}
            )</td>
        </tr>
        <tr>
          <td rowspan="5" style="width:5%">
            薪资
          </td>
          <td :colspan="salaryStructureData.length+2">
            考勤结算 or 业绩/记件结算
          </td>
        </tr>
        <tr>
          <td rowspan="2" style="width:5%">考勤结算</td>
          <td v-for="col in salaryStructureData" :key="col.value" :style="`width:${parseFloat(80/salaryStructureData.length).toFixed(2)}%`">
            {{col.label}}
          </td>
          <td style="width:10%">合计</td>
        </tr>
        <tr>
          <td v-for="col in salaryStructureData" :key="col.value" :style="`width:${parseFloat(80/salaryStructureData.length).toFixed(2)}%`">
            <el-input-number onmousewheel="return false;" v-model="pdfData.salaryData[col.value+'-10']" placeholder=" " style="width: 100%"
                             :precision="2" :controls="false" :min="0" @change="changeAmount('10')" />
          </td>
          <td>{{pdfData.amount}}</td>
        </tr>
        <tr>
          <td rowspan="2">业绩/记件结算</td>
          <td v-for="col in salaryStructureData" :key="col.value">
            {{col.label}}
          </td>
          <td>合计</td>
        </tr>
        <tr>
          <td v-for="col in salaryStructureData" :key="col.value">
            <el-input-number onmousewheel="return false;" v-model="pdfData.salaryData[col.value+'-20']" placeholder=" " style="width: 100%"
                             :precision="2" :controls="false" :min="0" @change="changeAmount('20')" />
          </td>
          <td>{{pdfData.perfAmount}}</td>
        </tr>

        <tr>
          <td colspan="2">
            薪资说明
          </td>
          <td :colspan="salaryStructureData.length+3-2" style="text-align:left">{{pdfData.salaryRemark}}</td>
        </tr>
        <tr>
          <td colspan="2">
            员工签字
          </td>
          <td colspan="3"></td>
          <td colspan="1">
            主管签字
          </td>
          <td colspan="4"></td>
        </tr>
        <tr>
          <td colspan="2">
            副总审批
          </td>
          <td colspan="3"></td>
          <td colspan="1">
            总经理审批
          </td>
          <td colspan="4"></td>
        </tr>
      </table>
    </div>
    <div style="text-align: center;margin-top:20px">
      <el-button type="primary" v-print="printObj" size="default" v-debounce>打印</el-button>
      <el-button type="primary" @click="clickDownload()" size="default" v-debounce>下载PDF</el-button>
      <el-button type="primary" @click="exportExcel()" size="default" v-debounce>导出Excel</el-button>
      <el-button type="primary" @click="saveData()" size="default" v-debounce>保存</el-button>

    </div>
  </div>
</template>

<script setup>
import $ from "jquery";
const { proxy } = getCurrentInstance();
const pdfData = ref({});
const props = defineProps({
  rowData: Object,
});
const salaryStructureData = ref([]);
const getData = () => {
  proxy
    .post("/salaryStructure/page", {
      pageNum: 1,
      pageSize: 999,
    })
    .then((res) => {
      salaryStructureData.value = res.rows
        .map((item) => {
          return {
            label: item.name,
            value: item.id,
          };
        })
        .reverse();
    });
};
getData();

const loading = ref(false);
const getPdfData = (query) => {
  loading.value = true;
  proxy.post("/userSalaryManage/detail", query).then((res) => {
    res.salaryData = {};
    if (res.userSalaryDetailList && res.userSalaryDetailList.length > 0) {
      for (let i = 0; i < res.userSalaryDetailList.length; i++) {
        const row = res.userSalaryDetailList[i];
        res.salaryData[row.salaryStructureId + "-" + row.type] = row.money;
      }
    }
    console.log(res.salaryData);
    pdfData.value = res;
    loading.value = false;
  });
};

watch(
  () => props.rowData,
  (val) => {
    if (props.rowData.id) {
      getPdfData({ userId: props.rowData.id });
    }
  },
  {
    immediate: true,
    deep: true,
  }
);

const printObj = ref({
  id: "pdfDom",
  popTitle: "",
  extraCss:
    "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css",
  extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
});

const clickDownload = () => {
  proxy.getPdf("薪资确认单PDF文件");
};

const pdfDom = ref(null);
const exportExcel = () => {
  // pdfDom.value.exportExcel();
  // isShowImg.value = false;
  loading.value = true;
  setTimeout(() => {
    $("#pdfDom").table2excel({
      exclude: ".noExl",
      sheetName: `${pdfData.value.nickName} 薪资确认单`,
      filename: `${pdfData.value.nickName} 薪资确认单`,
      exclude_img: false,
      exclude_links: false,
      exclude_inputs: true,
    });
    // isShowImg.value = true;
    loading.value = false;
  }, 500);
};

const saveData = () => {
  let userSalaryDetailList = [];
  for (const key in pdfData.value.salaryData) {
    let arr = key.split("-");
    userSalaryDetailList.push({
      salaryStructureId: arr[0],
      type: arr[1],
      money: pdfData.value.salaryData[key],
    });
  }
  pdfData.value.userSalaryDetailList = userSalaryDetailList;
  proxy.post("/userSalaryManage/edit", pdfData.value).then((res) => {
    getPdfData({ userId: props.rowData.id });
    proxy.msgTip("操作成功", 1);
    proxy.$emit("getList");
  });
};

const changeAmount = (type) => {
  let userSalaryDetailList = [];
  for (const key in pdfData.value.salaryData) {
    let arr = key.split("-");
    userSalaryDetailList.push({
      salaryStructureId: arr[0],
      type: arr[1],
      money: pdfData.value.salaryData[key],
    });
  }
  pdfData.value.userSalaryDetailList = userSalaryDetailList;
  let amount = pdfData.value.userSalaryDetailList
    .filter((x) => x.type == "10")
    .reduce(
      (total, x) => Number(parseFloat((total += Number(x.money))).toFixed(2)),
      0
    );
  pdfData.value.amount = amount;
  let perfAmount = pdfData.value.userSalaryDetailList
    .filter((x) => x.type == "20")
    .reduce(
      (total, x) => Number(parseFloat((total += Number(x.money))).toFixed(2)),
      0
    );
  pdfData.value.perfAmount = perfAmount;
};
</script>

<style lang="scss" scoped>
.table {
  .title {
    font-size: 26px;
    // font-weight: 700;
  }
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
  td {
    text-align: center;
    padding: 6px;
    font-size: 12px;
    // padding: 5px 10px;
  }
  .align-right {
    text-align: right;
  }
}
:deep(.el-input__wrapper) {
  box-shadow: none;
}
</style>