<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="componentData.entity.number"></el-input>
|
<span> - </span>
|
<el-input size="small" placeholder="结束周次" clearable
|
v-model="componentData.entity.number"></el-input>
|
</div>
|
</div>
|
<div class="search_thing" style="width: 200px;">
|
<div class="search_label">星期:</div>
|
<el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small">
|
<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">
|
<div class="search_label">时间范围:</div>
|
<div class="search_input">
|
<el-date-picker
|
style="width: 100%;"
|
v-model="componentData.entity.number"
|
size="small"
|
type="daterange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期">
|
</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="componentData.entity.number"></el-input>
|
</div>
|
<div class="search_thing" style="width: 200px;">
|
<div class="search_label">状态:</div>
|
<el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small">
|
<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;">11.333</span> 辅助工时汇总:<span style="font-size: 16px;color: #3A7BFA;">12.333</span>
|
</p>
|
<el-button size="small" type="primary" style="margin-right: 16px;" @click="openAdd">录入数据</el-button>
|
<el-button size="small" type="primary">导 出</el-button>
|
</div>
|
</div>
|
<div class="table">
|
<ValueTable ref="ValueTable0"
|
v-show="currentTable == 'ValueTable0'"
|
:url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :upUrl="$api.auxiliaryWorkingHours.upAuxiliaryWorkingHours"
|
:delUrl="$api.auxiliaryWorkingHours.deleteAuxiliaryWorkingHours" :componentData="componentData" :key="upIndex" />
|
<ValueTable ref="ValueTable1"
|
v-show="currentTable == 'ValueTable1'"
|
:url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :upUrl="$api.auxiliaryWorkingHours.upAuxiliaryWorkingHours"
|
:delUrl="$api.auxiliaryWorkingHours.deleteAuxiliaryWorkingHours" :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.value0" size="small">
|
<el-radio :label="0">今天</el-radio>
|
<el-radio :label="1">明天</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.value2" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="星期:">
|
<el-input v-model="formData.value3" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="班次:">
|
<el-input v-model="formData.value4" 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="编号:">
|
<el-input v-model="formData.value5" size="small"></el-input>
|
</el-form-item>
|
<el-form-item label="数量:">
|
<el-input v-model="formData.value6" size="small" ></el-input>
|
</el-form-item>
|
<el-form-item label="核准工时:">
|
<el-input v-model="formData.value7" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助工时:">
|
<el-input v-model="formData.value8" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助项目:">
|
<el-input v-model="formData.value9" 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.value10" 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"></el-input>
|
</el-form-item>
|
<el-form-item label="周次:">
|
<el-input v-model="formData0.value2" size="small"></el-input>
|
</el-form-item>
|
<el-form-item label="星期:">
|
<el-input v-model="formData0.value3" size="small"></el-input>
|
</el-form-item>
|
<el-form-item label="姓名:">
|
<el-input v-model="formData0.value4" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="班次:">
|
<el-select v-model="formData0.value4" placeholder="请选择" size="small">
|
<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>
|
</el-col>
|
<el-col :span="12">
|
<el-form :model="formData0" label-width="90px">
|
<el-form-item label="编号:">
|
<el-input v-model="formData0.value5" size="small"></el-input>
|
</el-form-item>
|
<el-form-item label="数量:">
|
<el-input v-model="formData0.value6" size="small" ></el-input>
|
</el-form-item>
|
<el-form-item label="核准工时:">
|
<el-input v-model="formData0.value7" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助工时:">
|
<el-input v-model="formData0.value8" size="small" disabled></el-input>
|
</el-form-item>
|
<el-form-item label="辅助项目:">
|
<el-input v-model="formData0.value9" size="small" disabled></el-input>
|
</el-form-item>
|
</el-form>
|
</el-col>
|
</el-row>
|
<el-form :model="formData0" label-width="90px">
|
<el-form-item label="复核说明:">
|
<el-input v-model="formData0.value10" type="textarea"
|
:rows="3" size="small"></el-input>
|
</el-form-item>
|
</el-form>
|
<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>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../../tool/value-table.vue'
|
export default {
|
components: {
|
ValueTable
|
},
|
data () {
|
return{
|
componentData: {
|
entity: {
|
number: null,
|
department: null,
|
laboratory: null,
|
orderBy: {
|
field: 'id',
|
order: 'desc'
|
}
|
},
|
isIndex: true,
|
showSelect: false,
|
select: false,
|
do: [{
|
id: 'delete',
|
font: '删除',
|
type: 'text',
|
method: 'doDiy'
|
}, {
|
id: 'handleEdit',
|
font: '编辑',
|
type: 'text',
|
method: 'handleEdit'
|
},{
|
id: 'handleCheck',
|
font: '审核',
|
type: 'text',
|
method: 'handleCheck'
|
}, {
|
id: 'handleRatify',
|
font: '批准',
|
type: 'text',
|
method: 'handleRatify'
|
}],
|
tagField: {
|
deviceStatus: {
|
select: []
|
},
|
equipmentManager: {
|
select: []
|
},
|
authorizedPerson: {
|
select: []
|
},
|
insProductIds:{
|
select:[]
|
}
|
},
|
linkEvent: {
|
deviceName: {
|
method: 'selectAllByOne'
|
}
|
},
|
selectField: {
|
authorizedPerson: {
|
select: [],
|
choose: true
|
},
|
equipmentManager: {
|
select: []
|
},
|
insProductIds:{
|
select:[],
|
choose: true
|
}
|
},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
entityCopy: {},
|
upIndex: 0,
|
componentData1: {
|
entity: {
|
number: null,
|
department: null,
|
laboratory: null,
|
orderBy: {
|
field: 'id',
|
order: 'desc'
|
}
|
},
|
isIndex: true,
|
showSelect: false,
|
select: false,
|
do: [],
|
tagField: {
|
deviceStatus: {
|
select: []
|
},
|
equipmentManager: {
|
select: []
|
},
|
authorizedPerson: {
|
select: []
|
},
|
insProductIds:{
|
select:[]
|
}
|
},
|
linkEvent: {
|
deviceName: {
|
method: 'selectAllByOne'
|
}
|
},
|
selectField: {
|
authorizedPerson: {
|
select: [],
|
choose: true
|
},
|
equipmentManager: {
|
select: []
|
},
|
insProductIds:{
|
select:[],
|
choose: true
|
}
|
},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
upIndex1:0,
|
weekList:[
|
{label: '星期一', value: 1},
|
{label: '星期二', value: 2},
|
{label: '星期三', value: 3},
|
{label: '星期四', value: 4},
|
{label: '星期五', value: 5},
|
{label: '星期六', value: 6},
|
{label: '星期日', value: 7}
|
],
|
currentTable:'ValueTable0',
|
addVisible:false,
|
addLoad:false,
|
formData:{
|
value0:0,
|
year:new Date().getFullYear(),
|
value2:this.getCurrentWeekNumber(),
|
value3:this.getWeek(),
|
value4:'',
|
value5:'',
|
value6:'',
|
value7:'',
|
value8:'',
|
value9:'',
|
value10:'',
|
},
|
formData0:{
|
value0:0,
|
year:new Date().getFullYear(),
|
value2:this.getCurrentWeekNumber(),
|
value3:this.getWeek(),
|
value4:'',
|
value5:'',
|
value6:'',
|
value7:'',
|
value8:'',
|
value9:'',
|
value10:'',
|
},
|
checkVisible:false,
|
checkLoadN:false,
|
checkLoadY:false,
|
title:'审核',
|
classType:[],
|
stateList:[
|
{
|
value:0,
|
label:'已提交'
|
},
|
{
|
value:1,
|
label:'已审核'
|
},
|
{
|
value:2,
|
label:'已批准'
|
},
|
]
|
}
|
},
|
watch:{
|
'formData.value0'(val){
|
if(val==0){
|
this.formData.year = new Date().getFullYear();
|
this.formData.value2 = this.getCurrentWeekNumber()
|
this.formData.value3 = 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.value2 = this.getCurrentWeekNumber(timestamp)
|
this.formData.value3 = this.getWeek(timestamp)
|
}
|
}
|
},
|
mounted(){
|
this.getCurrentWeekNumber()
|
this.selectEnumByCategory()
|
},
|
methods:{
|
refreshTable(){},
|
refresh(){},
|
openAdd(){
|
this.formData = {
|
value0:0,
|
year:new Date().getFullYear(),
|
value2:this.getCurrentWeekNumber(),
|
value3:this.getWeek(),
|
value4:'',
|
value5:'',
|
value6:'',
|
value7:'',
|
value8:'',
|
value9:'',
|
value10:'',
|
}
|
this.addVisible = true
|
},
|
handleEdit(row){
|
this.formData = row;
|
this.addVisible = true
|
},
|
handleClose(){
|
this.addVisible = false
|
},
|
submitAdd(){
|
if(!this.formData.value5){
|
this.$message.error('请输入编号')
|
return
|
}
|
if(!this.formData.value6){
|
this.$message.error('请输入数量')
|
return
|
}
|
this.addLoad = true
|
},
|
handleCheck(row){
|
this.title = '审核'
|
this.formData0 = row;
|
this.checkVisible = true
|
},
|
handleRatify(row){
|
this.title = '批准'
|
this.formData0 = row;
|
this.checkVisible = true
|
},
|
submitCheck(e){
|
if(!this.formData0.value5){
|
this.$message.error('请输入编号')
|
return
|
}
|
if(!this.formData0.value6){
|
this.$message.error('请输入数量')
|
return
|
}
|
this.checkLoadY = true
|
},
|
selectEnumByCategory() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "班次类型"
|
}).then(res => {
|
this.classType = 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 d
|
},
|
}
|
}
|
</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;
|
}
|
</style>
|