<template>
  <div class="container">
    <div>
      <el-form :inline="true" :model="reimbursementQurey">
        <el-form-item>
          <el-button
            type="success"
            icon="el-icon-circle-plus-outline"
            @click="addreimbursement()"
            >申请报销</el-button
          >
        </el-form-item>
      </el-form>
    </div>

    <div class="conter">
      <el-table
        :data="reimbursementList"
        style="width: 100%; text-align: center"
        border
      >
        <el-table-column type="expand">
          <template slot-scope="props">
            <div style="padding: 10px">
              <el-descriptions title="报销详情" :column="5" border>
                <el-descriptions-item label="支付方式" :span="5">{{
                  props.row.paymentMethod
                }}</el-descriptions-item>
                <el-descriptions-item label="组长审批状态" :span="2">
                  <el-tag
                    :type="
                      props.row.reimbursementState == 0
                        ? 'info'
                        : props.row.reimbursementState == 2
                        ? 'danger'
                        : 'success'
                    "
                  >
                    {{
                      props.row.reimbursementState == 0
                        ? "待审批"
                        : props.row.reimbursementState == 2
                        ? "驳回"
                        : "通过"
                    }}
                  </el-tag>
                </el-descriptions-item>
                <el-descriptions-item label="组长审批时间" :span="3">{{
                  props.row.headmanTime
                }}</el-descriptions-item>
                <el-descriptions-item label="组长驳回缘由" :span="5">{{
                  props.row.headmanRefute || "无"
                }}</el-descriptions-item>
                <el-descriptions-item label="财务审批状态" :span="2">
                  <el-tag
                    :type="
                      props.row.reimbursementState == 4
                        ? 'danger'
                        : props.row.reimbursementState == 3
                        ? 'success'
                        : 'info'
                    "
                  >
                    {{
                      props.row.reimbursementState == 4
                        ? "驳回"
                        : props.row.reimbursementState == 3
                        ? "通过"
                        : "待审批"
                    }}
                  </el-tag>
                </el-descriptions-item>
                <el-descriptions-item label="财务审批时间" :span="3">{{
                  props.row.financeTime
                }}</el-descriptions-item>
                <el-descriptions-item label="财务驳回缘由" :span="5">{{
                  props.row.finaceRefute || "无"
                }}</el-descriptions-item>
                <el-descriptions-item label="查看详情" :span="5">
                  <el-button
                    @click="getdetails(props.row)"
                    type="primary"
                    style="margin: 5px"
                    size="mini"
                    >查看详情</el-button
                  >
                </el-descriptions-item>
              </el-descriptions>
            </div>
          </template>
        </el-table-column>
        <el-table-column label="序号" width="50px">
          <template slot-scope="scope">
            {{
              (reimbursementQurey.pageNum - 1) * reimbursementQurey.pageSize +
              scope.$index +
              1
            }}
          </template>
        </el-table-column>
        <el-table-column prop="projectName" label="项目" />
        <!-- <el-table-column prop="typeName" label="报销类别">
          <template slot-scope="scope">
            <el-tag>{{ scope.row.typeName }}</el-tag>
          </template>
        </el-table-column> -->
        <el-table-column prop="applyTotalAmountSmall" label="申报总金额" />
        <el-table-column label="核报总金额">
          <template slot-scope="props">
            {{ props.row.verifyTotalAmountSmall || "还未核实金额" }}
          </template>
        </el-table-column>
        <el-table-column label="组长审批人">
          <template slot-scope="props">
            {{ props.row.financeName || "暂无" }}
          </template>
        </el-table-column>
        <el-table-column label="财务审批人">
          <template slot-scope="props">
            {{ props.row.financeName || "暂无" }}
          </template>
        </el-table-column>
        <el-table-column
          prop="fillingTime"
          label="报销日期"
          :formatter="timestampToTime"
        ></el-table-column>
        <el-table-column prop="prop" label="发票图片">
          <template slot-scope="scope">
            <el-button
              type="primary"
              size="mini"
              @click="ReviseImage(scope.row)"
              >点击查看</el-button
            >
          </template>
        </el-table-column>
        <el-table-column prop="reimbursementState" label="状态">
          <template slot-scope="props">
            <el-tag
              :type="
                props.row.reimbursementState == 0
                  ? 'info'
                  : props.row.reimbursementState == 1 ||
                    props.row.reimbursementState == 3
                  ? 'success'
                  : 'danger'
              "
            >
              {{
                props.row.reimbursementState == 0
                  ? "待小组长通过"
                  : props.row.reimbursementState == 1
                  ? "待财务长通过"
                  : props.row.reimbursementState == 2
                  ? "小组长驳回"
                  : props.row.reimbursementState == 3
                  ? "财务长通过"
                  : "财务长驳回"
              }}
            </el-tag>
          </template>
        </el-table-column>
        <el-table-column label="操作" fixed="right">
          <template slot-scope="scope">
            <el-button
              style="margin: 5px"
              size="mini"
              icon="el-icon-edit"
              type="info"
              @click="updataReimbursement(scope.row)"
              v-if="
                scope.row.reimbursementState != 3 &&
                scope.row.reimbursementState != 1
              "
              >修改信息</el-button
            >
            <el-button
              style="margin: 5px"
              size="mini"
              type="danger"
              @click="Resubmit(scope.row)"
              v-if="
                scope.row.reimbursementState == 2 ||
                scope.row.reimbursementState == 4
              "
              >重新提交</el-button
            >
            <el-button
              style="margin: 5px"
              size="mini"
              type="info"
              @click="withdraw(scope.row)"
              v-if="scope.row.reimbursementState == 0"
            >
              撤回</el-button
            >
            <el-link
              type="success"
              style="margin: 5px"
              size="mini"
              v-if="scope.row.reimbursementState == 3"
              >已通过</el-link
            >
            <el-link
              type="info"
              style="margin: 5px"
              size="mini"
              v-if="scope.row.reimbursementState == 1"
              >待审批</el-link
            >
          </template>
        </el-table-column>
      </el-table>
      <!-- 查看详情 -->
      <el-drawer title="查看详情" :visible.sync="drawer" :direction="direction">
          <el-row>
            <el-col
              v-for="(item, index) in reimbursementDetails.list"
              :key="index"
              :span="20"
            >
              <el-descriptions :title="item.name" border :column="1" style="margin: 10px 0;">
                <el-descriptions-item label="金额">{{item.money}}</el-descriptions-item>
                <el-descriptions-item label="备注" >{{item.explain}}</el-descriptions-item>
                <el-descriptions-item label="说明" >{{item.remarks}}</el-descriptions-item>
              </el-descriptions>
            </el-col>
          </el-row>
      </el-drawer>

      <el-drawer
        title="发票详情"
        :visible.sync="invoiceShow"
        :direction="direction"
        size="40%"
      >
        <!-- filePath-->
        <el-table
          :data="getinvoivelist"
          style="width: 100%; text-align: center"
          border
        >
          <el-table-column
            type="index"
            label="序号"
            width="40"
          ></el-table-column>
          <el-table-column prop="prop" label="发票详情">
            <template slot-scope="scope">
              <el-image
                style="width: 100px; height: 100px"
                :src="scope.row.filePath"
                :preview-src-list="[scope.row.filePath]"
              ></el-image>
            </template>
          </el-table-column>
        </el-table>
      </el-drawer>
    </div>
    <div class="footer">
      <el-pagination
        @current-change="handleCurrentChange"
        :current-page.sync="reimbursementQurey.pageNum"
        :page-size="reimbursementQurey.pageSize"
        layout="total, prev, pager, next"
        :total="total"
      ></el-pagination>
    </div>
  </div>
</template>

<script>
import { queryBypage, resubmit, reimbursementId } from "@/api/reimbursement";
import { selectByReimbursementId } from "@/api/reimbursementDetails";
import { selectAllById } from "@/api/project";
export default {
  data() {
    return {
      reimbursementQurey: {
        userId: null,
        pageNum: 1,
        pageSize: 10,
      },
      total: 0,
      reimbursementList: [],
      //抽屉
      drawer: false,
      invoiceShow: false,
      direction: "rtl",
      reimbursementDetails: {
        list: [],
      },
      getinvoivelist: [],
      //查询图片给的值
      getinvoiveId: {
        companyId: null,
        reimbursementId: 0,
      },
    };
  },
  created() {
    this.getinvoiveId.companyId = this.$store.getters.companyId;
    this.reimbursementQurey.userId = this.$store.getters.urId;
    this.getReimbursement();
  },
  methods: {
    //查看详情
    getdetails(data) {
      this.drawer = true;
      let param = {
        reimbursementId: data.reimbursementId,
      };
      selectByReimbursementId(param)
        .then((res) => {
          if (res.success) {
            //获取数据
            console.log(res);
            this.reimbursementDetails.list = res.data;
            this.$message.success(res.msg);
          }
        })
        .catch((error) => {
          this.$message.error("查询失败");
        });
    },

    //申请报销
    addreimbursement() {
      this.$router.push({ path: "/reimbursementAdd" });
    },
    //获取申请报销列表
    getReimbursement() {
      queryBypage(this.reimbursementQurey)
        .then((res) => {
          if (res.success) {
            this.reimbursementList = res.data.list;
            this.total = res.data.total;
          } else {
            this.$message.error(res.msg);
          }
        })
        .catch((error) => {
          this.$message.error("回去数据失败");
        });
    },
    //修改信息
    updataReimbursement(data) {
      //data是列表中所有的数据
      console.log(data);
      this.$router.push({
        path: "/reimbursementUpdata",
        //query 找到我们需要的字段
        query: {
          reimbursementId: data.reimbursementId, //传那一行数据的id
          projectId: data.projectId, //项目id 下拉框根据项目id选择
          typeId: data.typeId, //报销类别id
          applyTotalAmountLarge: data.applyTotalAmountLarge, //大写金额
          applyTotalAmountSmall: data.applyTotalAmountSmall, //小写金额
          summary: data.summary, //摘要
          paymentMethod: data.paymentMethod, //支付方式
        },
      });
    },
    //换页
    handleCurrentChange(val) {
      this.reimbursementQurey.pageNum = val;
      this.getReimbursement();
    },
    //时间处理
    timestampToTime(row, column, cellValue) {
      return cellValue.split(" ")[0];
    },
    //重新提交
    Resubmit(data) {
      //重新提交就要让之前的数据回复。
      //两个审批人的id、状态、审批时间、驳回缘由、核实金额
      //删除记录在重新填，或者删除字段记录
      data.reimbursementState = 0; //状态
      data.verifyTotalAmountLarge = null; //核实金额
      data.verifyTotalAmountSmall = null; //核实金额
      data.headmanRefute = null; //驳回缘由
      data.finaceRefute = null; //驳回缘由
      data.financeTime = null; //审批时间
      data.headmanTime = null; //审批时间
      data.financeId = null; //审批人的id
      data.headmanId = null; //审批人的id
      resubmit(data)
        .then((res) => {
          if (res.success) {
            this.$message.success("重新提交成功，等待审批");
            this.getReimbursement();
          } else {
            this.$message.error(res.msg);
          }
        })
        .catch((error) => {
          this.$message.error("重新提交失败");
        });
    },
    //撤回
    withdraw(data) {
      reimbursementId(data.reimbursementId).then((res) => {
        if (res.success) {
          this.getReimbursement();
        }
      });
    },
    //查看图片的方法
    ReviseImage(row) {
      this.invoiceShow = true;
      this.getinvoiveId.reimbursementId = row.reimbursementId;
      this.Selectinsertlsit();
    },
    //查询发票图片
    Selectinsertlsit() {
      selectAllById(this.getinvoiveId)
        .then((res) => {
          if (res.success) {
            this.getinvoivelist = res.data;
            this.getinvoivelist.forEach((e) => {
              e.filePath = process.env.VUE_APP_BASE_API + e.filePath;
            });
            // console.log(this.getinvoivelist);
          } else {
            this.$message.error(res.msg);
            this.back();
          }
        })
        .catch((error) => {
          this.$message.error("获取发票图片失败");
          this.back();
        });
    },
  },
};
</script>

<style scoped>
.container {
  padding: 10px;
}
.conter {
  margin-bottom: 10px;
}
.footer {
  text-align: right;
}
</style>