| | |
| | | this.addObj.sampleNum = this.sampleList.length |
| | | this.$nextTick(() => { |
| | | this.$refs.sampleTable.doLayout() |
| | | if(this.addObj.sampleNum>0){ |
| | | this.$refs.sampleTable.setCurrentRow(this.sampleList[0],true) |
| | | this.rowClick(this.sampleList[0]) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">实验室:</div> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small"> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">部门:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="componentData.entity.department" placeholder="全部" size="small"> |
| | | <el-select v-model="componentData.entity.department" placeholder="全部" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in partList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </div> |
| | | <div class="search_thing" style="width: 200px;"> |
| | | <div class="search_label">星期:</div> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small"> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small" @change="refreshTable()"> |
| | | <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_label" style="width: 90px;">时间范围:</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | style="width: 100%;" |
| | |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | end-placeholder="结束日期" @change="refreshTable()"> |
| | | </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> |
| | | v-model="componentData.entity.number" @keyup.enter.native="refreshTable()"></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-select v-model="componentData.entity.laboratory" 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> |
| | |
| | | <template> |
| | | <div class="work-time-statistics"> |
| | | 工时统计 |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">日期:</div> |
| | | <div class="search_input" style="display: flex;align-items: center;"> |
| | | <el-date-picker |
| | | v-model="componentData.entity.laboratory" |
| | | type="month" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择月" size="small" style="width: 100%;"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">员工:</div> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in personList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">部门:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="componentData.entity.laboratory" placeholder="全部" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </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> |
| | | <el-button size="small" type="primary" style="position: absolute;right: 50px;" @click="handleDown">导 出</el-button> |
| | | <el-button size="small" type="primary" style="position: absolute;right: 120px;" @click="handleUp" v-show="currentTable == 'value0'">导 入</el-button> |
| | | </div> |
| | | <el-radio-group v-model="currentTable" size="small" :key="'111'" style="margin-top: 10px;"> |
| | | <el-radio-button label="value0"> |
| | | 原始工时 |
| | | </el-radio-button> |
| | | <el-radio-button label="value1"> |
| | | 修正工时 |
| | | </el-radio-button> |
| | | </el-radio-group> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable0" |
| | | v-show="currentTable == 'value0'" |
| | | :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" |
| | | :componentData="componentData" :inputUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :downUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :key="upIndex" /> |
| | | <ValueTable ref="ValueTable1" |
| | | v-show="currentTable == 'value1'" |
| | | :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" |
| | | :componentData="componentData0" :key="upIndex" /> |
| | | </div> |
| | | </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: [], |
| | | 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: [] |
| | | }, |
| | | componentData0: { |
| | | 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: [] |
| | | }, |
| | | upIndex:0, |
| | | weekList:[], |
| | | personList:[], |
| | | currentTable:'value0' |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.getUsers() |
| | | }, |
| | | methods: { |
| | | refresh(){}, |
| | | refreshTable(){}, |
| | | getUsers(){ |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: { |
| | | current: -1, |
| | | size: -1, |
| | | }, |
| | | entity: { |
| | | name: null, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | let arr = res.data.body.records |
| | | this.personList = arr |
| | | }) |
| | | }, |
| | | handleDown(){ |
| | | if(this.currentTable == 'value0'){ |
| | | this.$refs.ValueTable0.downFile(false) |
| | | }else{ |
| | | this.$refs.ValueTable1.downFile(false) |
| | | } |
| | | }, |
| | | handleUp(){ |
| | | this.$refs.ValueTable0.openUpload() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | <style scoped> |
| | | .work-time-statistics{ |
| | | height: 100%; |
| | | } |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 270px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 60px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 60px); |
| | | } |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px - 25px); |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | |
| | | <span class="month" style="position: absolute;top: 4px;" v-if="item.week=='周日'">{{ item.weekNum }}周</span> |
| | | <p style="height: 26px;position: absolute;bottom: 12px;"> |
| | | <span class="day">{{ item.day }}</span> |
| | | <span class="week">{{ item.week }}</span> |
| | | <span class="week">{{ item.week.charAt(1) }}</span> |
| | | </p> |
| | | </div> |
| | | </div> |
| | |
| | | v-on:mouseenter="onMouseEnter(index)" |
| | | v-on:mouseleave="currentUserIndex=null"> |
| | | <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}"> |
| | | <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',}"> |
| | | <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',}"> |
| | | <!-- <div class="work-box-left"> |
| | | <span>{{ getShiftByDic(m.shift) }}</span> |
| | | </div> --> |
| | | <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!downPower"> |
| | | <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> --> |
| | | <span style="cursor: pointer;">{{ getShiftByDic(m.shift) }}</span> |
| | | <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='无'?0:1};`">{{ getShiftByDic(m.shift) }}</span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | |
| | | if(obj){ |
| | | return obj.label |
| | | } |
| | | return '未排班' |
| | | return '无' |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | .content-title-item{ |
| | | height: 100%; |
| | | width: 60px; |
| | | width: 50px; |
| | | flex-shrink: 0; |
| | | border-bottom: 1px solid #EEEEEE; |
| | | box-sizing: border-box; |
| | |
| | | } |
| | | .content-body-item{ |
| | | height: 70px; |
| | | width: 60px; |
| | | width: 50px; |
| | | flex-shrink: 0; |
| | | font-size: 12px; |
| | | box-sizing: border-box; |
| | | padding: 4px; |
| | | border-right: 1px solid #EEEEEE; |
| | |
| | | .work-box.type4 span{ |
| | | color: #F56C6C !important; |
| | | } |
| | | .work-box.type5{ |
| | | background: #ff46c145; |
| | | color: #ff46c0 !important; |
| | | } |
| | | .work-box.type5 span{ |
| | | color: #ff46c0 !important; |
| | | } |
| | | /* .el-icon-arrow-down::before{ |
| | | color: #c6c4c4; |
| | | } */ |
| | |
| | | }, |
| | | data() { |
| | | return{ |
| | | currentComponent:'workTimeConfig' |
| | | currentComponent:'workTimeStatistics' |
| | | } |
| | | } |
| | | } |
| | |
| | | //本地 |
| | | Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; |
| | | // const javaApi = 'http://192.168.11.200:8001';//李 |
| | | const javaApi = 'http://10.20.102.168:8001';//张 |
| | | // const javaApi = 'http://172.20.10.3:8001';//姜 |
| | | // const javaApi = 'http://10.20.102.168:8001';//张 |
| | | const javaApi = 'http://172.20.10.3:8001';//姜 |
| | | // const javaApi = 'http://192.168.11.2:8001';//柴 |
| | | // const javaApi = 'http://114.132.189.42:1234';//测试服 |
| | | //胜云服务器 |