| | |
| | | :model="formTop" |
| | | label-width="100px" |
| | | inline |
| | | style="display: flex;justify-content: space-between" |
| | | style="display: flex;" |
| | | > |
| | | <div class="elForm"> |
| | | <el-form-item label-width="70px" label="车间编码" style=" display: flex;"> |
| | | <el-form-item label="车间编码" style=" display: flex;"> |
| | | <el-input v-model="formTop.workshop" placeholder="请输入" style="width: 200px" /> |
| | | </el-form-item> |
| | | <el-form-item label="生产工单号" style=" display: flex;"> |
| | |
| | | <el-input v-model="formTop.partname" placeholder="请输入" style="width: 200px" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'10%'}"> |
| | | <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button> |
| | | <el-button type="info" icon="el-icon-refresh" @click="reset">重置</el-button> |
| | | <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"> |
| | | <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button> |
| | | <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button> |
| | | </div> |
| | | </el-form> |
| | | <div |
| | |
| | | /> |
| | | <el-table-column |
| | | prop="AdvaSchePiroQue" |
| | | show-tooltip-when-overflow |
| | | label="优先级" |
| | | width="90" |
| | | sortable="custom" |
| | |
| | | prop="AdvaSchePartSpec" |
| | | label="产品规格" |
| | | width="110" |
| | | show-tooltip-when-overflow |
| | | sortable="custom" |
| | | > |
| | | <template slot-scope="{row}"> |
| | |
| | | <el-table-column |
| | | prop="AdvaScheQty" |
| | | label="数量" |
| | | show-tooltip-when-overflow |
| | | width="110" |
| | | sortable="custom" |
| | | /> |
| | |
| | | prop="AdvaScheEndDate" |
| | | label="要求交付时间" |
| | | sortable="custom" |
| | | show-tooltip-when-overflow |
| | | width="160" |
| | | /> |
| | | <el-table-column |
| | | prop="AdvaScheStus" |
| | | label="排程状态" |
| | | show-tooltip-when-overflow |
| | | width="110" |
| | | sortable="custom" |
| | | > |
| | |
| | | <el-table-column |
| | | prop="AdvaScheBotProcName" |
| | | label="排程工序" |
| | | show-tooltip-when-overflow |
| | | width="110" |
| | | sortable="custom" |
| | | /> |
| | | <el-table-column |
| | | prop="AdvaSchePCStartDate" |
| | | label="计划排程时间" |
| | | width="160" |
| | | width="200" |
| | | sortable="custom" |
| | | show-tooltip-when-overflow |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.AdvaSchePCStartDate">{{ row.AdvaSchePCStartDate }}</div> |
| | | <div v-if="row.AdvaSchePCStartDate">{{ row.AdvaSchePCStartDate }} ~ {{ row.AdvaSchePCEndDate }} </div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | ref="form" |
| | | :model="formBottom" |
| | | inline |
| | | style="display: flex;justify-content: space-between" |
| | | label-width="100px" |
| | | style="display: flex;" |
| | | > |
| | | <div class="elForm"> |
| | | <el-form-item label-width="70px" label="排程日期" style=" display: flex;"> |
| | | <el-form-item label="排程日期" style=" display: flex;"> |
| | | <el-date-picker |
| | | v-model="formBottom.scheDate" |
| | | :disabled="radioSelectedId===''" |
| | | type="daterange" |
| | | range-separator="~" |
| | | format="yyyy-MM-dd" |
| | |
| | | <el-option value="Y" label="时间优先" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="时间刻度(分钟)" style=" display: flex;"> |
| | | <el-select v-model.number="formBottom.scale" style="width: 120px;"> |
| | | <el-form-item label="时间刻度(分钟)" label-width="110" style=" display: flex;"> |
| | | <el-select v-model.number="formBottom.scale" :disabled="radioSelectedId===''" style="width: 120px;"> |
| | | <el-option v-for="item in scaleList" :key="item" :value="item" :label="item" /> |
| | | </el-select> |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="换型时间(分钟)" style=" display: flex;"> |
| | | <el-form-item label="换型时间(分钟)" label-width="110" style=" display: flex;"> |
| | | <el-input |
| | | id="scale" |
| | | v-model="formBottom.times" |
| | | :disabled="radioSelectedId===''" |
| | | type="number" |
| | | style="display:inline-block;width:80px;" |
| | | @change="no_zero" |
| | |
| | | </span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'10%'}"> |
| | | <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"> |
| | | <el-button |
| | | v-waves |
| | | :disabled="radioSelectedId===''" |
| | | type="primary" |
| | | icon="el-icon-document-remove" |
| | | @click="click_schedule" |
| | | >预排 |
| | | </el-button> |
| | | <el-button |
| | | v-waves |
| | | type="primary" |
| | | :disabled="radioSelectedId===''" |
| | | icon="el-icon-document-checked" |
| | | @click="click_yes" |
| | | >提交 |
| | |
| | | </div> |
| | | <div class="speed"> |
| | | <!-- <el-tooltip class="item" effect="dark" content="查看" placement="top">--> |
| | | <!-- <el-button type="text" size="mini" @click="look(data)">--> |
| | | <!-- <el-button v-waves type="text" size="mini" @click="look(data)">--> |
| | | <!-- <i class="el-icon-document size i-color" />--> |
| | | <!-- </el-button>--> |
| | | <!-- </el-tooltip>--> |
| | |
| | | </template> |
| | | <template slot="title"> |
| | | <span class="tc">工位列表</span> |
| | | <el-checkbox v-model="all_status" class="box_style" @change="changeLift()" /> |
| | | <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles"> |
| | | <el-checkbox v-model="all_status" class="box_style" :disabled="radioSelectedId===''" @change="changeLift()" /> |
| | | <input v-model.number="cellWidth" type="range" min="20" max="100" class="box_styles" :disabled="radioSelectedId===''"> |
| | | </template> |
| | | </v-gantt-chart> |
| | | </div> |
| | |
| | | import dayjs from 'dayjs' |
| | | import { AdvancedSchedulingSearch, OnclickAdvancedSchedulingDevice, SubmitAlreadyScheduling } from '@/api/scgl' |
| | | import { handleDatetime } from '@/utils/global' |
| | | import waves from '@/directive/waves' |
| | | |
| | | const scaleList = `30,60,240,360`.split(',').map(n => parseInt(n)) |
| | | const timeList = `0,30,60,120,240,480`.split(',').map(n => parseInt(n)) |
| | |
| | | components: { |
| | | Pagination, Test |
| | | }, |
| | | directives: { waves }, |
| | | data() { |
| | | return { |
| | | mouseHoverType: 'mouseout', |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | this.getAdvancedSchedulingSearch() |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '正在加载数据,请稍等...', |
| | | spinner: 'el-icon-loading', |
| | | customClass: 'osloading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }) |
| | | setTimeout(() => { |
| | | if (this.getAdvancedSchedulingSearch()) { |
| | | loading.close() |
| | | } |
| | | }, 3000) |
| | | |
| | | // this.getAdvancedSchedulingSearch() |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.getHeight) |
| | | this.getHeight() |
| | | }, |
| | | methods: { |
| | | async getAdvancedSchedulingSearch() { |
| | | async getAdvancedSchedulingSearch() { |
| | | const res = await AdvancedSchedulingSearch(this.formTop) |
| | | this.tableData = res.data |
| | | this.totalTop = res.count |
| | | |
| | | return true |
| | | }, |
| | | // 排序改变时 |
| | | sortChangeTop({ column, prop, order }) { |
| | |
| | | // 时间/设备优先排程 |
| | | click_schedule() { |
| | | const timestamp = new Date().toLocaleDateString() |
| | | if (new Date(this.formBottom.scheDate[0]) < new Date(timestamp)) { |
| | | this.$message.error('排程时间不可以小于当前时间!') |
| | | |
| | | if (new Date(this.formBottom.scheDate[1]) < new Date(timestamp)) { |
| | | this.$message.error('排程日期不可以小于当前时间!') |
| | | return false |
| | | } |
| | | |
| | | this.nitialize()// 手动过滤所有设备已排程 |
| | | console.log(this.facility_data, 67890) |
| | | // console.log(this.facility_data, 67890) |
| | | if (this.bm_data != '' && this.formBottom.types == 'N') { // 设备优先 |
| | | this.fun_time() |
| | | this.change_num(this.bm_data) |
| | |
| | | .box_style { |
| | | position: relative; |
| | | top: 40px; |
| | | left: -75px; |
| | | left: -91px; |
| | | } |
| | | |
| | | .box_styles { |