gaoluyang
2024-07-04 7dba00a80cee072bc9e193d5d2a75c1f7cf72d28
src/components/do/b3-work-time-management/work-time-management.vue
@@ -63,10 +63,12 @@
      </el-radio-group>
      <div style="display: flex;align-items: center;">
        <p style="font-size: 14px;margin-right: 30px;">
          总工时汇总:<span style="font-size: 16px;color: #3A7BFA;">{{ (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总'])? (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总']):0 }}</span>&nbsp;&nbsp;&nbsp;&nbsp;产量工时汇总:<span style="font-size: 16px;color: #3A7BFA;">{{totalInfo['产量工时汇总']?totalInfo['产量工时汇总']:0}}</span>&nbsp;&nbsp;&nbsp;&nbsp;辅助工时汇总:<span style="font-size: 16px;color: #3A7BFA;">{{totalInfo['辅助工时汇总']?totalInfo['辅助工时汇总']:0}}</span>
          总工时汇总:<span style="font-size: 16px;color: #3A7BFA;" v-if="totalInfo">{{ (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总'])? (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总']):0 }}</span>&nbsp;&nbsp;&nbsp;&nbsp;产量工时汇总:<span style="font-size: 16px;color: #3A7BFA;" v-if="totalInfo">{{totalInfo['产量工时汇总']?totalInfo['产量工时汇总']:0}}</span>&nbsp;&nbsp;&nbsp;&nbsp;辅助工时汇总:<span style="font-size: 16px;color: #3A7BFA;" v-if="totalInfo">{{totalInfo['辅助工时汇总']?totalInfo['辅助工时汇总']:0}}</span>
        </p>
        <el-button size="small" type="primary" style="margin-right: 16px;" @click="openAdd" v-show="currentTable == 'ValueTable0'">录入数据</el-button>
        <el-button size="small" type="primary" @click="handleOut" :loading="outLoading">导 出</el-button>
        <el-button size="small" type="primary" style="margin-right: 16px;" @click="openAdd" v-show="currentTable == 'ValueTable0'&&add">录入数据</el-button>
        <el-button size="small" type="primary"
        v-if="down"
        @click="handleOut" :loading="outLoading">导 出</el-button>
      </div>
    </div>
    <div class="table">
@@ -174,13 +176,13 @@
              <el-input v-model="formData0.number" size="small" :disabled="title=='批准'"></el-input>
            </el-form-item>
            <el-form-item label="数量:" required>
              <el-input v-model="formData0.amount" size="small" :disabled="title=='批准'"></el-input>
              <el-input v-model="formData0.reviewerNumber" size="small" :disabled="title=='批准'"></el-input>
            </el-form-item>
            <el-form-item label="核准工时:">
              <el-input v-model="formData0.approvedWorkingHour" size="small" disabled></el-input>
            </el-form-item>
            <el-form-item label="辅助工时:">
              <el-input v-model="formData0.nonproductiveTime" size="small" disabled></el-input>
            <el-form-item label="复核工时:">
              <el-input v-model="formData0.reviewerNonproductiveTime" size="small" disabled></el-input>
            </el-form-item>
            <el-form-item label="辅助项目:">
              <el-input v-model="formData0.auxiliaryProject" size="small" disabled></el-input>
@@ -216,6 +218,8 @@
  data () {
    return{
      entity:{},
      down:false,
      add:false,
      componentData: {
               entity: {
                  week: null,
@@ -254,11 +258,55 @@
               tagField: {
            shift:{
              select:[]
            },
            state:{
              select:[
                {
                  label:'已提交',
                  value:'已提交',
                  type:'primary'
                },
                {
                  label:'已审核',
                  value:'已审核',
                  type:'warning'
                },
                {
                  label:'已批准',
                  value:'已批准',
                  type:'success'
                },
              ]
            },
            weekDay:{
              select:[]
            }
          },
               linkEvent: {},
               selectField: {
            shift:{
              select:[]
            },
            state:{
              select:[
                {
                  label:'已提交',
                  value:'已提交',
                  type:'primary'
                },
                {
                  label:'已审核',
                  value:'已审核',
                  type:'warning'
                },
                {
                  label:'已批准',
                  value:'已批准',
                  type:'success'
                },
              ]
            },
            weekDay:{
              select:[]
            }
          },
@@ -289,16 +337,17 @@
               requiredAdd: [],
               requiredUp: []
         },
      addFileVisible:false,
      entityCopy1: {},
      upIndex1:100,
      weekList:[
        {label: '星期一', value: '1'},
        {label: '星期二', value: '2'},
        {label: '星期三', value: '3'},
        {label: '星期四', value: '4'},
        {label: '星期五', value: '5'},
        {label: '星期六', value: '6'},
        {label: '星期日', value: '7'}
        {label: '星期一', value: '1',type:'primary'},
        {label: '星期二', value: '2',type:'primary'},
        {label: '星期三', value: '3',type:'primary'},
        {label: '星期四', value: '4',type:'primary'},
        {label: '星期五', value: '5',type:'primary'},
        {label: '星期六', value: '6',type:'primary'},
        {label: '星期日', value: '7',type:'primary'}
      ],
      currentTable:'ValueTable0',
      addVisible:false,
@@ -324,9 +373,9 @@
        createUser:'',
        shift:'',
        number:'',
        amount:'',
        reviewerNumber:'',
        approvedWorkingHour:'',
        nonproductiveTime:'',
        reviewerNonproductiveTime:'',
        auxiliaryProject:'',
        reviewerRemark:'',
      },
@@ -349,7 +398,7 @@
          label:'已批准'
        },
      ],
      totalInfo:{},
      totalInfo:null,
      auxiliaryWorking:null,
      outLoading:false
    }
@@ -387,21 +436,21 @@
        this.formData.nonproductiveTime = this.formData.amount*val
      }
    },
    'formData0.amount'(val){
    'formData0.reviewerNumber'(val){
      if(val){
        if(!isNaN(val)){
          if(this.formData0.approvedWorkingHour){
            this.formData0.nonproductiveTime = this.formData0.approvedWorkingHour*val
            this.formData0.reviewerNonproductiveTime = this.formData0.approvedWorkingHour*val
          }
        }else{
          this.$message.error('请输入数字')
          this.formData0.amount = ''
          this.formData0.reviewerNumber = ''
        }
      }
    },
    'formData0.approvedWorkingHour'(val){
      if(val&&this.formData0.amount){
        this.formData0.nonproductiveTime = this.formData0.amount*val
      if(val&&this.formData0.reviewerNumber){
        this.formData0.reviewerNonproductiveTime = this.formData0.reviewerNumber*val
      }
    }
  },
@@ -412,8 +461,55 @@
    this.selectshiftByUser()
    this.entityCopy = this.HaveJson(this.componentData.entity);
    this.entityCopy1 = this.HaveJson(this.componentData1.entity);
    this.componentData.tagField.weekDay.select = this.weekList
    this.componentData.selectField.weekDay.select = this.weekList
    this.getPower()
  },
  methods:{
    getPower(){
      let power = JSON.parse(sessionStorage.getItem('power'))
        let del = false
        let down = false
        let add = false
        let up = false
        let check = false
        let ratify = false
        for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'exportWorkingHours') {
                  down = true
               }
               if (power[i].menuMethod == 'deleteAuxiliaryWorkingHoursDay') {
                  del = true
               }
          if (power[i].menuMethod == 'insertAuxiliaryWorkingHoursDay') {
                  add = true
               }
          console.log(add)
          if (power[i].menuMethod == 'updateAuxiliaryWorkingHoursDay') {
                  up = true
               }
          if (power[i].menuMethod == 'check') {
                  check = true
               }
          if (power[i].menuMethod == 'approve') {
                  ratify = true
               }
            }
        if (!ratify) {
               this.componentData.do.splice(3, 1)
            }
        if (!check) {
               this.componentData.do.splice(2, 1)
            }
        if (!up) {
               this.componentData.do.splice(1, 1)
            }
        if (!del) {
               this.componentData.do.splice(0, 1)
            }
        this.down = down
        this.add = add
    },
    getYearAndMonthAndDays(date){
      return getYearAndMonthAndDays(date)
    },
@@ -421,9 +517,13 @@
      let entity = {}
      if(this.entity.week1&&this.entity.week2){
        entity.week = JSON.stringify([this.entity.week1,this.entity.week2])
      }else{
        entity.week = ''
      }
      if(this.entity.dateTime){
        entity.dateTime = JSON.stringify(this.entity.dateTime)
      }else{
        entity.dateTime = ''
      }
      entity.weekDay = this.entity.weekDay
      entity.name = this.entity.name
@@ -534,14 +634,16 @@
        this.$message.error('请输入数量')
        return
      }
      this.checkLoadY = true
      if(this.title == '审核'){
        // if(e==0){
        //   // 审核不通过
        // }else{
        //   // 审核通过
        // }
        this.formData0.state = e==0?'审核不通过':'审核通过'
        if(e==0){
          // 审核不通过
          this.checkLoadN = true
        }else{
          // 审核通过
          this.checkLoadY = true
        }
        this.formData0.state = e==0?this.formData0.state:'已审核'
        this.$axios.post(this.$api.auxiliaryWorkingHoursDay.check, {
            ...this.formData0
        }, {
@@ -549,7 +651,13 @@
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.checkLoadY = false
          if(e==0){
            // 审核不通过
            this.checkLoadN = false
          }else{
            // 审核通过
            this.checkLoadY = false
          }
          if (res.code == 201) return
          this.$message.success('操作成功')
          this.checkVisible = false
@@ -557,20 +665,24 @@
          this.collectWorkingHours()
        })
      }else{
        // if(e==0){
        //   // 审核不通过
        // }else{
        //   // 审核通过
        // }
        if(e==0){
          this.checkLoadN = true
        }else{
          this.checkLoadY = true
        }
        this.$axios.post(this.$api.auxiliaryWorkingHoursDay.approve, {
            id:this.formData0.id,
            state:e==0?'批准不通过':'批准通过'
            state:e==0?'已提交':'已批准'
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.checkLoadY = false
          if(e==0){
            this.checkLoadN = false
          }else{
            this.checkLoadY = false
          }
          if (res.code == 201) return
          this.$message.success('操作成功')
          this.checkVisible = false
@@ -628,42 +740,28 @@
      if(this.formData.number){
        this.$axios.post(this.$api.auxiliaryWorkingHoursDay.selectAuxiliaryWorkingHoursByNumber+'?number='+this.formData.number).then(res => {
        this.auxiliaryWorking = res.data
        this.formData.approvedWorkingHour = this.auxiliaryWorking.approvedWorkingHour
        this.formData.auxiliaryProject = this.auxiliaryWorking.auxiliaryProject
        if(this.addVisible){
          this.formData.approvedWorkingHour = this.auxiliaryWorking.approvedWorkingHour
          this.formData.auxiliaryProject = this.auxiliaryWorking.auxiliaryProject
        }else if(this.title=='审核'&&this.checkVisible){
          this.formData0.approvedWorkingHour = this.auxiliaryWorking.approvedWorkingHour
          this.formData0.auxiliaryProject = this.auxiliaryWorking.auxiliaryProject
        }
      })
      }
    },
    handleOut(){
      this.outLoading = true
      this.$axios.post(this.$api.auxiliaryOutputWorkingHours.exportWorkingHours,{responseType: 'blob'}).then(res => {
      this.$axios.get(this.$api.auxiliaryOutputWorkingHours.exportWorkingHours,{responseType: "blob"}).then(res => {
        this.outLoading = false
        this.$message.success('导出成功')
        // let fileName="日工时汇总表";
        // const blob = new Blob([res], {
        //   type: 'application/force-download'
        // })
        // const filename = decodeURI(fileName+'.xlsx')
        // // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
        // const elink = document.createElement('a')
        // elink.download = filename
        // elink.style.display = 'none'
        // elink.href = URL.createObjectURL(blob)
        // document.body.appendChild(elink)
        // elink.click()
        // URL.revokeObjectURL(elink.href) // 释放URL 对象
        // document.body.removeChild(elink)
        const blob = new Blob([res], {
          type: 'application/force-download'
        })
        const link = document.createElement('a')
        link.href = URL.createObjectURL(blob)
        link.download = decodeURI('日工时汇总表'+'.xlsx')
        document.body.appendChild(link)
        link.click()
        window.setTimeout(function () {
            URL.revokeObjectURL(blob)
            document.body.removeChild(link)
        }, 0)
        const blob = new Blob([res]);
        console.log(blob)
        const url = URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.download = '日工时汇总表.xlsx';
        link.click();
      })
    },
  }