<template>
|
<div class="work-time-management">
|
<div class="search">
|
<!-- <div class="search_thing">
|
<div class="search_label">周次:</div>
|
<div class="search_input" style="display: flex;align-items: center;">
|
<el-input size="small" placeholder="开始周次" clearable
|
v-model="entity.week1"></el-input>
|
<span> - </span>
|
<el-input size="small" placeholder="结束周次" clearable
|
v-model="entity.week2"></el-input>
|
</div>
|
</div> -->
|
<div class="search_thing" style="width: 200px;">
|
<div class="search_label">星期:</div>
|
<el-select v-model="entity.weekDay" placeholder="全部" size="small" @change="refreshTable()" clearable>
|
<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
<div class="search_thing" style="width: 390px;">
|
<div class="search_label" style="width: 90px;">时间范围:</div>
|
<div class="search_input">
|
<el-date-picker
|
style="width: 100%;"
|
v-model="entity.dateTime"
|
size="small"
|
type="daterange"
|
range-separator="至"
|
format="yyyy-MM-dd HH:mm:ss"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期" @change="refreshTable()" clearable>
|
</el-date-picker>
|
</div>
|
</div>
|
<!-- 以下这两个为组长角色特有的 -->
|
<div class="search_thing" style="width: 200px;">
|
<div class="search_label" >名字:</div>
|
<el-input size="small" placeholder="请输入" clearable
|
v-model="entity.name" @keyup.enter.native="refreshTable()"></el-input>
|
</div>
|
<div class="search_thing" style="width: 200px;" v-if="currentTable == 'ValueTable0'">
|
<div class="search_label" >状态:</div>
|
<el-select v-model="entity.state" placeholder="全部" size="small" @change="refreshTable()">
|
<el-option v-for="item in stateList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
<div class="search_thing" style="padding-left: 30px;width: 100px;">
|
<el-button size="small" @click="refresh()">重 置</el-button>
|
<el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
|
</div>
|
</div>
|
<div style="display: flex;align-items: center;justify-content: space-between;margin-top: 10px;">
|
<el-radio-group v-model="currentTable" size="small" :key="'111'">
|
<el-radio-button label="ValueTable0">
|
辅助工时
|
</el-radio-button>
|
<el-radio-button label="ValueTable1">
|
产量工时
|
</el-radio-button>
|
</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;" v-if="totalInfo">{{ (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总'])? (totalInfo['产量工时汇总']+totalInfo['辅助工时汇总']):0 }}</span> 产量工时汇总:<span style="font-size: 16px;color: #3A7BFA;" v-if="totalInfo">{{totalInfo['产量工时汇总']?totalInfo['产量工时汇总']:0}}</span> 辅助工时汇总:<span style="font-size: 16px;color: #3A7BFA;" v-if="totalInfo">{{totalInfo['辅助工时汇总']?totalInfo['辅助工时汇总']:0}}</span>
|
</p>
|
<el-button size="small" type="primary" @click="openAdd" v-show="currentTable == 'ValueTable0'&&add">录入数据</el-button>
|
<el-button size="small" type="primary"
|
v-if="down"
|
@click="handleOut" :loading="outLoading">导 出</el-button>
|
<el-button size="small" type="primary" v-show="currentTable == 'ValueTable0'&&add" @click="openBatchCheck(0)">批量审核</el-button>
|
<el-button size="small" type="primary" v-show="currentTable == 'ValueTable0'&&add" @click="openBatchCheck(1)">批量批准</el-button>
|
</div>
|
</div>
|
<div class="table">
|
<ValueTable ref="ValueTable0"
|
v-if="currentTable == 'ValueTable0'"
|
:url="$api.auxiliaryWorkingHoursDay.selectAuxiliaryWorkingHoursDay"
|
:delUrl="$api.auxiliaryWorkingHoursDay.deleteAuxiliaryWorkingHoursDay" :componentData="componentData" :key="upIndex"
|
@delete="handleDelete" />
|
<ValueTable ref="ValueTable1"
|
v-if="currentTable == 'ValueTable1'"
|
:url="$api.auxiliaryOutputWorkingHours.selectAuxiliaryOutputWorkingHours" :componentData="componentData1" :key="upIndex1" />
|
</div>
|
<el-dialog :title="formData.id?'编辑':'录入数据'" :visible.sync="addVisible" width="600px" :before-close="handleClose">
|
<el-row style="display:flex;justify-content: space-around;">
|
<el-col :span="12">
|
<el-form :model="formData" label-width="90px">
|
<el-form-item label="录入时间:">
|
<el-radio-group v-model="formData.dateTime" size="small">
|
<el-radio :label="getYearAndMonthAndDays()+' 00:00:00'">今天</el-radio>
|
<el-radio :label="getYearAndMonthAndDays(new Date((new Date()).getTime() - 24 * 60 * 60 * 1000))+' 00:00:00'">昨天</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="年份:">
|
<el-input v-model="formData.year" disabled size="small"></el-input>
|
</el-form-item>
|
<el-form-item label="周次:">
|
<el-input v-model="formData.week" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="星期:">
|
<!-- <el-input v-model="formData.weekDay" size="small" disabled></el-input> -->
|
<el-select v-model="formData.weekDay" placeholder="请选择" size="small" disabled>
|
<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="班次:">
|
<el-input v-model="formData.shift" size="small" disabled></el-input>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
<el-col :span="12">
|
<el-form :model="formData" label-width="90px">
|
<el-form-item label="编号:" required>
|
<el-input v-model="formData.number" size="small" @blur="getInfoByCode"></el-input>
|
</el-form-item>
|
<el-form-item label="数量:" required>
|
<el-input v-model="formData.amount" size="small" ></el-input>
|
</el-form-item>
|
<el-form-item label="核准工时:">
|
<el-input v-model="formData.approvedWorkingHour" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助工时:">
|
<el-input v-model="formData.nonproductiveTime" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助项目:">
|
<el-input v-model="formData.auxiliaryProject" size="small" disabled></el-input>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
<el-form :model="formData" label-width="90px">
|
<el-form-item label="辅助说明:">
|
<el-input v-model="formData.remarks" type="textarea"
|
:rows="3" size="small"></el-input>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="handleClose">取 消</el-button>
|
<el-button type="primary" @click="submitAdd" :loading="addLoad">确 定</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog :title="title" :visible.sync="checkVisible" width="600px">
|
<el-row style="display:flex;justify-content: space-around;">
|
<el-col :span="12">
|
<el-form :model="formData0" label-width="90px">
|
<el-form-item label="年份:">
|
<el-input v-model="formData0.year" size="small" :disabled="title=='批准'"></el-input>
|
</el-form-item>
|
<el-form-item label="周次:">
|
<el-input v-model="formData0.week" size="small" :disabled="title=='批准'"></el-input>
|
</el-form-item>
|
<el-form-item label="星期:">
|
<!-- <el-input v-model="formData0.weekDay" size="small" :disabled="title=='批准'"></el-input> -->
|
<el-select v-model="formData0.weekDay" placeholder="请选择" size="small" :disabled="title=='批准'">
|
<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="姓名:">
|
<el-input v-model="formData0.nameUser" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="班次:">
|
<el-select v-model="formData0.shift" placeholder="请选择" size="small" :disabled="title=='批准'">
|
<el-option v-for="item in classType" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="复核说明:">
|
<el-input v-model="formData0.reviewerRemark" type="textarea" :rows="3" size="small" :disabled="title=='批准'"></el-input>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
<el-col :span="12">
|
<el-form :model="formData0" label-width="90px">
|
<el-form-item label="编号:" required>
|
<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-form-item>
|
<el-form-item label="复核数量:" required>
|
<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.reviewerNonproductiveTime" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助项目:">
|
<el-input v-model="formData0.auxiliaryProject" size="small" disabled></el-input>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="submitCheck(0)" :loading="checkLoadN">{{title=='审核'?'不通过':'不批准'}}</el-button>
|
<el-button type="primary" @click="submitCheck(1)" :loading="checkLoadY">{{title=='审核'?'通 过':'批 准'}}</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog
|
:title="batchCheckTitle"
|
:visible.sync="batchCheckDialog"
|
width="30%"
|
:before-close="closeBatchCheckDialog">
|
<span>{{batchCheckDialogMessage}}</span>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="batchCheckDialog = false">{{batchCheckTitle=='批量审核'?'不通过':'不批准'}}</el-button>
|
<el-button type="primary" @click="batchCheck">{{batchCheckTitle=='批量审核'?'通 过':'批 准'}}</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../../tool/value-table.vue'
|
import {
|
getYearAndMonthAndDays
|
} from '../../../util/date'
|
export default {
|
components: {
|
ValueTable
|
},
|
data () {
|
return{
|
entity:{
|
dateTime: []
|
},
|
down:false,
|
add:false,
|
componentData: {
|
entity: {
|
week: null,
|
weekDay: null,
|
dateTime: null,
|
name:null,
|
orderBy: {
|
field: 'id',
|
order: 'desc'
|
}
|
},
|
isIndex: true,
|
showSelect: true,
|
select: true,
|
selectMethod: 'handleChangeTask',
|
do: [{
|
id: 'delete',
|
font: '删除',
|
type: 'text',
|
method: 'doDiy'
|
}, {
|
id: 'handleEdit',
|
font: '编辑',
|
type: 'text',
|
method: 'handleEdit'
|
},{
|
id: 'handleCheck',
|
font: '审核',
|
type: 'text',
|
method: 'handleCheck',
|
disabFun: (row, index) => {
|
return row.state === '已审核' || row.state === '已批准'
|
}
|
}, {
|
id: 'handleRatify',
|
font: '批准',
|
type: 'text',
|
method: 'handleRatify',
|
disabFun: (row, index) => {
|
return row.state === '已批准'
|
}
|
}],
|
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:[]
|
}
|
},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
entityCopy: {},
|
upIndex: 0,
|
componentData1: {
|
entity: {
|
week: null,
|
weekDay: null,
|
dateTime: [],
|
name:null,
|
orderBy: {
|
field: 'id',
|
order: 'desc'
|
}
|
},
|
isIndex: true,
|
showSelect: false,
|
select: false,
|
do: [],
|
tagField: {
|
},
|
linkEvent: {},
|
selectField: {},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
addFileVisible:false,
|
entityCopy1: {},
|
upIndex1:100,
|
weekList:[
|
{label: '周一', value: '周一',type:'primary'},
|
{label: '周二', value: '周二',type:'primary'},
|
{label: '周三', value: '周三',type:'primary'},
|
{label: '周四', value: '周四',type:'primary'},
|
{label: '周五', value: '周五',type:'primary'},
|
{label: '周六', value: '周六',type:'primary'},
|
{label: '周日', value: '周日',type:'primary'}
|
],
|
currentTable:'ValueTable0',
|
addVisible:false,
|
addLoad:false,
|
formData:{
|
dateTime:getYearAndMonthAndDays()+' 00:00:00',
|
year:new Date().getFullYear(),
|
week:this.getCurrentWeekNumber(),
|
weekDay:this.getWeek(),
|
shift:'',
|
number:'',
|
amount:'',
|
approvedWorkingHour:'',
|
nonproductiveTime:'',
|
auxiliaryProject:'',
|
remarks:'',
|
},
|
formData0:{
|
dateTime:0,
|
year:new Date().getFullYear(),
|
week:this.getCurrentWeekNumber(),
|
weekDay:this.getWeek(),
|
createUser:'',
|
shift:'',
|
number:'',
|
reviewerNumber:'',
|
approvedWorkingHour:'',
|
reviewerNonproductiveTime:'',
|
auxiliaryProject:'',
|
reviewerRemark:'',
|
nameUser: ''
|
},
|
checkVisible:false,
|
checkLoadN:false,
|
checkLoadY:false,
|
title:'审核',
|
classType:[],
|
stateList:[
|
{
|
value:'已提交',
|
label:'已提交'
|
},
|
{
|
value:'已审核',
|
label:'已审核'
|
},
|
{
|
value:'已批准',
|
label:'已批准'
|
},
|
],
|
totalInfo:null,
|
auxiliaryWorking:null,
|
outLoading:false,
|
batchCheckTitle: '批量审核',
|
batchCheckDialog: false,
|
ValueTable0Selected: [],
|
batchCheckDialogMessage: ''
|
}
|
},
|
watch:{
|
'formData.dateTime'(val){
|
if(val==(getYearAndMonthAndDays()+' 00:00:00')){
|
this.formData.year = new Date().getFullYear();
|
this.formData.week = this.getCurrentWeekNumber()
|
this.formData.weekDay = this.getWeek()
|
}else{
|
var today = new Date(); // 获取当前日期
|
var yesterday = new Date(today); // 复制当前日期
|
yesterday.setDate(today.getDate() - 1); // 设置为前一天
|
var timestamp = new Date(yesterday.getTime());
|
this.formData.year = timestamp.getFullYear();
|
this.formData.week = this.getCurrentWeekNumber(timestamp)
|
this.formData.weekDay = this.getWeek(timestamp)
|
}
|
},
|
'formData.amount'(val){
|
if(val){
|
if(!isNaN(val)){
|
if(this.formData.approvedWorkingHour){
|
this.formData.nonproductiveTime = this.formData.approvedWorkingHour*val
|
}
|
}else{
|
this.$message.error('请输入数字')
|
this.formData.amount = ''
|
}
|
}
|
},
|
'formData.approvedWorkingHour'(val){
|
if(val&&this.formData.amount){
|
this.formData.nonproductiveTime = this.formData.amount*val
|
}
|
},
|
'formData0.reviewerNumber'(val){
|
if(val){
|
if(!isNaN(val)){
|
if(this.formData0.approvedWorkingHour){
|
this.formData0.reviewerNonproductiveTime = this.formData0.approvedWorkingHour*val
|
}
|
}else{
|
this.$message.error('请输入数字')
|
this.formData0.reviewerNumber = ''
|
}
|
}
|
},
|
'formData0.approvedWorkingHour'(val){
|
if(val&&this.formData0.reviewerNumber){
|
this.formData0.reviewerNonproductiveTime = this.formData0.reviewerNumber*val
|
}
|
}
|
},
|
created() {
|
this.setDate()
|
},
|
mounted(){
|
this.getCurrentWeekNumber()
|
this.selectEnumByCategory()
|
this.collectWorkingHours()
|
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:{
|
/** 将时间选择器默认选为当天的日期 */
|
setDate(){
|
let currentDate = new Date();
|
let year = currentDate.getFullYear();
|
let month = String(currentDate.getMonth() + 1).padStart(2, '0');
|
let day = String(currentDate.getDate()).padStart(2, '0');
|
let formattedDate1 = `${year}-${month}-${day} 00:00:00`;
|
let formattedDate2 = `${year}-${month}-${day} 23:59:59`;
|
this.entity.dateTime.push(formattedDate1);
|
this.entity.dateTime.push(formattedDate2);
|
this.componentData1.entity.dateTime.push(formattedDate1);
|
this.componentData1.entity.dateTime.push(formattedDate2);
|
this.componentData1.entity.dateTime = JSON.stringify(this.componentData1.entity.dateTime)
|
this.refreshTable()
|
},
|
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)
|
},
|
refreshTable(){
|
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
|
if(this.currentTable=='ValueTable0'){
|
entity.state = this.entity.state
|
this.componentData.entity = {...this.componentData.entity,...entity}
|
this.$refs['ValueTable0'].selectList()
|
}else{
|
this.componentData1.entity = {...this.componentData1.entity,...entity}
|
this.$refs['ValueTable1'].selectList()
|
}
|
this.collectWorkingHours()
|
},
|
refresh(){
|
this.entity = {}
|
if(this.currentTable=='ValueTable0'){
|
this.componentData.entity = this.HaveJson(this.entityCopy)
|
this.upIndex++
|
}else{
|
this.componentData1.entity = this.HaveJson(this.entityCopy1)
|
this.upIndex1++
|
}
|
this.refreshTable()
|
},
|
openAdd(){
|
this.formData = {
|
dateTime:getYearAndMonthAndDays()+' 00:00:00',
|
year:new Date().getFullYear(),
|
week:this.getCurrentWeekNumber(),
|
weekDay:this.getWeek(),
|
shift:'',
|
number:'',
|
amount:'',
|
approvedWorkingHour:'',
|
nonproductiveTime:'',
|
auxiliaryProject:'',
|
remarks:'',
|
}
|
this.addVisible = true
|
},
|
handleEdit(row){
|
this.formData = row;
|
this.addVisible = true
|
},
|
handleDelete(){
|
this.collectWorkingHours()
|
},
|
handleClose(){
|
this.addVisible = false
|
},
|
submitAdd(){
|
if(!this.formData.number){
|
this.$message.error('请输入编号')
|
return
|
}
|
if(!this.formData.amount){
|
this.$message.error('请输入数量')
|
return
|
}
|
this.addLoad = true
|
if(!this.formData.id){
|
this.$axios.post(this.$api.auxiliaryWorkingHoursDay.insertAuxiliaryWorkingHoursDay, {
|
...this.formData
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
this.addLoad = false
|
if (res.code == 201) return
|
this.$message.success('已提交')
|
this.formData.number = ''
|
this.formData.amount = ''
|
this.formData.remarks = ''
|
this.formData.approvedWorkingHour = ''
|
this.formData.nonproductiveTime = ''
|
this.formData.auxiliaryProject = ''
|
// this.addVisible = false
|
this.refreshTable()
|
this.collectWorkingHours()
|
})
|
}else{
|
this.$axios.post(this.$api.auxiliaryWorkingHoursDay.updateAuxiliaryWorkingHoursDay, {
|
...this.formData
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
this.addLoad = false
|
if (res.code == 201) return
|
this.$message.success('操作成功')
|
this.formData.number = ''
|
this.formData.amount = ''
|
this.formData.remarks = ''
|
this.formData.approvedWorkingHour = ''
|
this.formData.nonproductiveTime = ''
|
this.formData.auxiliaryProject = ''
|
// this.addVisible = false
|
this.refreshTable()
|
this.collectWorkingHours()
|
})
|
}
|
},
|
handleCheck(row){
|
this.title = '审核'
|
this.formData0 = row;
|
this.checkVisible = true
|
},
|
handleRatify(row){
|
this.title = '批准'
|
this.formData0 = row;
|
this.checkVisible = true
|
},
|
handleChangeTask (row) {
|
this.ValueTable0Selected = JSON.parse(JSON.stringify(row))
|
},
|
openBatchCheck (e) {
|
if (this.ValueTable0Selected.length > 0) {
|
const isChecked = this.ValueTable0Selected.every(item => item.state === '已提交')
|
const isApprove = this.ValueTable0Selected.every(item => item.state !== '已批准')
|
console.log('this.isApprove---', isApprove)
|
this.batchCheckTitle = e === 0 ? '批量审核' : '批量批准'
|
this.batchCheckDialogMessage = e === 0 ? '是否全部通过审核?' : '是否全部通过批准?'
|
if (this.batchCheckTitle === '批量审核') {
|
if (isChecked) {
|
this.batchCheckDialog = true
|
} else {
|
this.$message.error('请选择未审核或未批准的数据')
|
}
|
} else {
|
if (isApprove) {
|
this.batchCheckDialog = true
|
} else {
|
this.$message.error('请选择未批准的数据')
|
}
|
}
|
} else {
|
this.$message.error('请选择至少一条数据')
|
}
|
},
|
batchCheck () {
|
const e = this.batchCheckTitle === '批量审核' ? 0 : 1
|
this.$refs.ValueTable0.batchCheck(e)
|
},
|
closeBatchCheckDialog () {
|
this.batchCheckDialog = false
|
},
|
submitBatchCheckDialog () {
|
this.batchCheckDialog = false
|
this.refreshTable()
|
this.collectWorkingHours()
|
},
|
submitCheck(e){
|
if(!this.formData0.number){
|
this.$message.error('请输入编号')
|
return
|
}
|
if(!this.formData0.amount){
|
this.$message.error('请输入数量')
|
return
|
}
|
|
if(this.title == '审核'){
|
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
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
if(e==0){
|
// 审核不通过
|
this.checkLoadN = false
|
}else{
|
// 审核通过
|
this.checkLoadY = false
|
}
|
if (res.code == 201) return
|
this.$message.success('操作成功')
|
this.checkVisible = false
|
this.refreshTable()
|
this.collectWorkingHours()
|
})
|
}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?'已提交':'已批准'
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
if(e==0){
|
this.checkLoadN = false
|
}else{
|
this.checkLoadY = false
|
}
|
if (res.code == 201) return
|
this.$message.success('操作成功')
|
this.checkVisible = false
|
this.refreshTable()
|
this.collectWorkingHours()
|
})
|
}
|
},
|
selectEnumByCategory() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "班次类型"
|
}).then(res => {
|
this.classType = res.data
|
this.componentData.tagField.shift.select = res.data
|
this.classType = res.data
|
this.componentData.selectField.shift.select = res.data
|
})
|
},
|
getCurrentWeekNumber(now=new Date()) {
|
const startOfWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() - now.getDay()); // 周天
|
const firstWeekOfYear = new Date(startOfWeek.getFullYear(), 0, 0); // 当年的第一个周天
|
const firstWeekOfNextYear = new Date(firstWeekOfYear.getFullYear() + 1, 0, 0); // 下一年的第一个周天
|
const daysSinceNewYear = (startOfWeek - firstWeekOfYear) / (24 * 60 * 60 * 1000); // 计算自新年以来的天数
|
const weeksSinceNewYear = Math.floor(daysSinceNewYear / 7); // 天数除以7得到周数
|
|
if (startOfWeek > now) {
|
// 如果当前周的周天还没到,则返回上年的最后一周
|
return weeksSinceNewYear;
|
} else if (firstWeekOfNextYear <= now) {
|
// 如果当前周的周天已经过了,则返回当年的周数
|
return weeksSinceNewYear +1;
|
} else {
|
// 否则返回当年的最后一周
|
return weeksSinceNewYear + 2;
|
}
|
},
|
getWeek(e=new Date()){
|
// let str = '日一二三四五六'
|
let d = e.getDay()
|
// let c = str.charAt(d)
|
// return `周${c}`
|
return String(d)
|
},
|
collectWorkingHours(){
|
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
|
this.$axios.post(this.$api.auxiliaryOutputWorkingHours.collectWorkingHours,{
|
entity:entity
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
this.totalInfo = res.data
|
})
|
},
|
selectshiftByUser(){
|
this.$axios.post(this.$api.auxiliaryWorkingHoursDay.selectshiftByUser).then(res => {
|
this.formData.shift = res.data
|
})
|
},
|
getInfoByCode(){
|
if(this.formData.number){
|
this.$axios.post(this.$api.auxiliaryWorkingHoursDay.selectAuxiliaryWorkingHoursByNumber+'?number='+this.formData.number).then(res => {
|
this.auxiliaryWorking = res.data
|
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.get(this.$api.auxiliaryOutputWorkingHours.exportWorkingHours,{responseType: "blob"}).then(res => {
|
this.outLoading = false
|
this.$message.success('导出成功')
|
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();
|
})
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
.work-time-management{
|
height: 100%;
|
overflow-y: scroll;
|
/* scrollbar-width: none; */
|
}
|
/* .work-time-management::-webkit-scrollbar {
|
display: none;
|
} */
|
.search {
|
background-color: #fff;
|
height: 80px;
|
display: flex;
|
align-items: center;
|
}
|
|
.search_thing {
|
width: 300px;
|
display: flex;
|
align-items: center;
|
}
|
|
.search_label {
|
width: 70px;
|
font-size: 14px;
|
text-align: right;
|
}
|
|
.search_input {
|
width: calc(100% - 70px);
|
}
|
.table {
|
margin-top: 10px;
|
background-color: #fff;
|
width: calc(100% - 40px);
|
height: calc(100% - 60px - 80px - 10px - 40px - 25px);
|
padding: 20px;
|
}
|
>>>.el-dialog__wrapper {
|
z-index: 9999 !important; /* 根据需要调整层级 */
|
}
|
</style>
|