<template>
    <div style="display: inline-block;margin: 0px 5px">
      <el-button type="text" @click="openPurchaseDialog" size="mini">{{getOperatorName()}}</el-button>
      <el-dialog :title="getOperatorName()" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false" destroy-on-close>
        <component :is="currentTabComponent" :purchaseData="purchaseData" ref="currentCom" v-if="open"></component>
        <div slot="footer" class="dialog-footer" style="text-align: center" v-if="operatorName != 'purchaseDetail'">
          <el-button style="width: 150px;border-color: #1890ff;color: #1890ff;" @click="resetSuggestion">重置意见</el-button>
          <el-button type="primary" style="width: 150px" @click="submitSuggestion">提交</el-button>
        </div>
      </el-dialog>
    </div>
</template>

<script>
  import { getPurchase, updatePurchase, approvalPurchase } from "@/api/transaction/purchase";
  import calculate from "./Calculate";
  import confirm from "./Confirm";
  import purchaseDetail from "./PurchaseDetail";
  import { sendNotice, noticeIsReadByRelationId } from "@/api/system/notice";
  export default {
    name: "operator-button",
    components:{
      calculate,
      confirm,
      purchaseDetail
    },
    props:{
      operatorName: {
        type: String
      },
      purchaseInfo: {
        type: Object
      }
    },
    created(){
      this.currentTabComponent = this.operatorName;
    },
    data(){
        return{
          open: false,
          currentTabComponent: "",
          purchaseData: {}
        }
    },
    methods:{
      getOperatorName(){
        switch(this.operatorName){
          case "purchaseDetail":
            return "详情";
          case "confirm" :
            return "部门长审核";
          case "calculate":
            return "核算部审批";
          default:
            return "";
        }
      },
      openPurchaseDialog(){
        getPurchase(this.purchaseInfo.purchaseId).then(res =>{
          if(res.code == 200){
            this.purchaseData = res.data;
            this.open = true;
          }
        })
      },
      //重置意见
      resetSuggestion(){
        this.$refs.currentCom.resetSuggestion();
      },
      //提交
      submitSuggestion(){
        if(this.$refs.currentCom.checkParam()){
          return;
        }

        if("calculate" == this.operatorName){
          approvalPurchase(this.$refs.currentCom.submitSuggestion()).then(res =>{
            if(res.code == 200){
              this.open = false;
              this.$emit("getList");
              this.$message.success("审核成功！");
              if(this.$refs.currentCom.submitSuggestion().purchaseStatus == '3'){
                sendNotice({noticeTitle:"您的服务费用申请被驳回",noticeType:"1",noticeContent:"您的服务费用申请被驳回",userId:this.purchaseInfo.handledByUserId,relationType:"3",relationId:this.purchaseInfo.purchaseId});
              }else {
                noticeIsReadByRelationId({relationId:this.purchaseInfo.purchaseId});
              }
            }else{
              this.$message.error("审核失败！");
            }
          });
          return;
        }

        updatePurchase(this.$refs.currentCom.submitSuggestion()).then(res =>{
          if(res.code == 200){
            this.open = false;
            this.$emit("getList");
            this.$message.success("提交成功！");
            sendNotice({noticeTitle:"您有新服务费用信息待审批",noticeType:"1",noticeContent:"您有新服务费用信息待审批",roles:"calculator",relationType:"3",relationId:this.purchaseInfo.purchaseId})
          }else{
            this.$message.error("提交失败！");
          }
        })
      },
    }
  }
</script>

<style scoped>

</style>
