| | |
| | | <div class="mod-config"> |
| | | <basic-container> |
| | | <el-row> |
| | | <el-col :span="14"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div style="height:40vh;padding: 0px 10px;"> |
| | | <span style="position: relative;top:40px;">未完成</span> |
| | | <span style="position: relative;top:30px;left:60%;z-index: 11"> |
| | | <el-button @click="tagFinished" size="mini" round type="primary">标记已完成</el-button> |
| | | <el-col :span="16" style="height:100vh"> |
| | | <el-row style="height:65%;padding:0px 10px;"> |
| | | <el-col :span="24" style="margin: 0;"> |
| | | <div style="display:flex;height:36px;justify-content: space-between;align-items:center;"> |
| | | <div><span style="color:#E84738;font-weight: bold;">未完成</span></div> |
| | | <div> |
| | | <el-button @click="tagFinished" size="mini" round type="success">标记已完成</el-button> |
| | | <el-button size="mini" round type="primary" |
| | | v-if="permissions.plan_productionschedul_edit_line" |
| | | @click="openEditDialog">编辑时间线</el-button> |
| | | </span> |
| | | <avue-crud |
| | | :data="tableData" |
| | | ref="crud" |
| | | :option="option" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getUnFinishedData" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | :page="page" |
| | | @selection-change="selectionRow" |
| | | :table-loading="loading"> |
| | | <template #menu="{ row, index }"> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_edit" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | size="small" |
| | | @click="editHandle(row, index)">编辑</el-button> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_del" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | @click="deleteHandle(row, index)">删除</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <el-tooltip content="刷新"> |
| | | <el-button circle icon="el-icon-refresh" @click="getDataList"></el-button> |
| | | </el-tooltip> |
| | | </div> |
| | | </div> |
| | | <avue-crud |
| | | class="unfinished-crud" |
| | | :data="tableData" |
| | | ref="crud" |
| | | :option="option" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getDataList" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | :page="page" |
| | | @selection-change="selectionRow" |
| | | :table-loading="loading"> |
| | | <template #menu="{ row, index }"> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_edit" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | size="small" |
| | | @click="editHandle(row, index)">编辑</el-button> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_del" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | @click="deleteHandle(row, index)">删除</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div style="height:40vh;padding: 0px 10px;"> |
| | | <span style="position: relative;top:40px">已完成</span> |
| | | <avue-crud |
| | | :data="finishedTableData" |
| | | ref="finished" |
| | | :option="finishedOption" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getFinishedData" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | :page="finishedPage" |
| | | @selection-change="selectionFinishedRow"> |
| | | <!-- <template #menu="{ row, index }"> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_del" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | @click="deleteHandle(row, index)">删除</el-button> |
| | | </template> --> |
| | | </avue-crud> |
| | | <el-row style="height:35%;padding:0px 10px;"> |
| | | <el-col :span="24" style="margin: 0;"> |
| | | <div style="display:flex;height:36px;justify-content: space-between;align-items:center;"> |
| | | <div><span style="color:#34BD66;font-weight: bold;">已完成</span></div> |
| | | </div> |
| | | <avue-crud |
| | | class="finished-crud" |
| | | :data="finishedTableData" |
| | | ref="finished" |
| | | :option="finishedOption" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getFinishedData" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | :page="finishedPage" |
| | | @selection-change="selectionFinishedRow"> |
| | | <!-- <template #menu="{ row, index }"> |
| | | <el-button |
| | | v-if="permissions.plan_productionschedul_del" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | @click="deleteHandle(row, index)">删除</el-button> |
| | | </template> --> |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | </el-col> |
| | | <el-col :span="10" style="padding-left: 10px"> |
| | | <el-col :span="8" style="padding-left: 10px"> |
| | | <div style=""> |
| | | <el-card> |
| | | <div slot="header" class="clearfix"> |
| | | <span>调度时间线</span> |
| | | </div> |
| | | <div style="height:70vh;overflow-y: scroll;"> |
| | | <div style="height:100vh;overflow-y: scroll;"> |
| | | <el-timeline> |
| | | <el-timeline-item |
| | | placement="top" |
| | | :color="(item.planTime||item.actualTime) ? '#34BD66' :null" |
| | | :icon="(item.planTime||item.actualTime) ? 'el-icon-circle-check' :null" |
| | | v-for="(item, index) in scheduleList" |
| | | :key="index" |
| | | :timestamp="item.title"> |
| | |
| | | fillTime, |
| | | deleteSchedul, |
| | | updateState, |
| | | checkTimeLines, |
| | | } from '@/api//plan/productionschedul' |
| | | import ttable from '@/views/common/ztt-table.vue' |
| | | import { mapGetters } from 'vuex' |
| | |
| | | prop:'id', |
| | | order:'descending' |
| | | }, |
| | | height: 200, |
| | | height: 370, |
| | | selection: true, |
| | | columnBtn: false, |
| | | index: true, |
| | |
| | | prop:'id', |
| | | order:'descending' |
| | | }, |
| | | height: 180, |
| | | height: 230, |
| | | selection: true, |
| | | columnBtn: false, |
| | | index: true, |
| | |
| | | productionStatus: null, |
| | | } |
| | | } |
| | | }, |
| | | multipleSelection(newVal){ |
| | | if(newVal.length==0){ |
| | | this.scheduleList = [] |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | methods: { |
| | | tagFinished(){ |
| | | if(this.multipleSelection.length < 1){ |
| | | this.$message.warning("请选择一条数据") |
| | | this.$message.warning("请至少选择一条数据") |
| | | return |
| | | } |
| | | let ids = this.multipleSelection.map(ele=>{ |
| | |
| | | }, |
| | | openEditDialog(){ |
| | | if(this.multipleSelection.length<1){ |
| | | this.$message.error("请至少选择一条数据") |
| | | this.$message.warning("请至少选择一条数据") |
| | | return |
| | | } |
| | | this.scheduleEditList = JSON.parse(JSON.stringify(this.scheduleList)) |
| | | this.dialogVisible = true |
| | | let mIds = this.multipleSelection.map(ele=>{ |
| | | return ele.mid |
| | | }) |
| | | checkTimeLines(mIds).then(res=>{ |
| | | if(res.data.data.length==1){ |
| | | let dataList = this.initTimeLine(res.data.data[0]) |
| | | this.scheduleEditList = dataList |
| | | this.dialogVisible = true |
| | | }else{ |
| | | this.$message.error("选中数据的调度时间线不一致!") |
| | | } |
| | | }).catch(error=>{ |
| | | console.error(error); |
| | | }) |
| | | }, |
| | | confirmEditSchedul(){ |
| | | let data = this.scheduleEditList |
| | | let orderObj = this.multipleSelection[0] |
| | | let mIds = this.multipleSelection.map(ele=>{ |
| | | return ele.mid |
| | | }) |
| | | let obj = { |
| | | "documentActualTime": data[0].actualTime, |
| | | "documentPlanTime": data[0].planTime, |
| | |
| | | "checkPlanTime": data[4].planTime, |
| | | "productActualTime": data[5].actualTime, |
| | | "productPlanTime": data[5].planTime, |
| | | "id": orderObj.id, |
| | | "contractNo": orderObj.contractNo, |
| | | "customerName": orderObj.customerName, |
| | | "deliveryDate": orderObj.deliveryDate, |
| | | "orderTime": orderObj.orderTime, |
| | | "productType": orderObj.productType, |
| | | "projectName": orderObj.projectName |
| | | "mids": mIds, |
| | | // "contractNo": orderObj.contractNo, |
| | | // "customerName": orderObj.customerName, |
| | | // "deliveryDate": orderObj.deliveryDate, |
| | | // "orderTime": orderObj.orderTime, |
| | | // "productType": orderObj.productType, |
| | | // "projectName": orderObj.projectName |
| | | } |
| | | fillTime(obj).then(res=>{ |
| | | if(res.status===200){ |
| | |
| | | this.getScheduleById(orderObj.id) |
| | | this.dialogVisible = false |
| | | }).catch(error=>{ |
| | | console.log(error); |
| | | console.error(error); |
| | | }) |
| | | |
| | | }, |
| | |
| | | done() |
| | | }, |
| | | initTimeLine(data){ |
| | | this.scheduleList = [] |
| | | let scheduleList = [] |
| | | if(data){ |
| | | let arr = [ |
| | | { |
| | |
| | | planTime: data.productPlanTime, |
| | | }, |
| | | ] |
| | | this.scheduleList = arr |
| | | scheduleList = arr |
| | | return scheduleList |
| | | } |
| | | }, |
| | | getScheduleById(id){ |
| | | if(id){ |
| | | fetchScheduleById(id).then(res=>{ |
| | | this.initTimeLine(res.data.data) |
| | | this.scheduleList = this.initTimeLine(res.data.data) |
| | | }).catch(error=>{ |
| | | console.log(error); |
| | | console.error(error); |
| | | }) |
| | | } |
| | | }, |
| | | selectionRow(val){ |
| | | // if (val.length > 1) { |
| | | // const preVal = val.shift(); |
| | | // this.$refs.crud.toggleRowSelection(preVal, false); |
| | | // } |
| | | // else{ |
| | | // this.scheduleList=[] |
| | | // } |
| | | if (val.length > 1) { |
| | | const preVal = val.shift(); |
| | | this.$refs.crud.toggleRowSelection(preVal, false); |
| | | } |
| | | else{ |
| | | this.scheduleList=[] |
| | | } |
| | | this.multipleSelection = val |
| | | // this.getScheduleById(val[0].id) |
| | | this.getScheduleById(val[0].mid) |
| | | }, |
| | | selectionFinishedRow(val){ |
| | | console.log(val); |
| | | if (val.length > 1) { |
| | | const preVal = val.shift(); |
| | | this.$refs.finished.toggleRowSelection(preVal, false); |
| | |
| | | } |
| | | }, |
| | | // 获取数据列表 |
| | | getDataList(){ |
| | | this.getUnFinishedData() |
| | | this.getFinishedData() |
| | | }, |
| | | getUnFinishedData() { |
| | | this.loading = true |
| | | let param = { |
| | |
| | | // 删除 |
| | | deleteHandle(row,index) { |
| | | const _than = this |
| | | _than.$confirm('是否确认删除', '提示', { |
| | | _than.$confirm('是否确认删除该生产调度信息', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | |
| | | } |
| | | </script> |
| | | <style> |
| | | .avue-crud__tip{ |
| | | .unfinished-crud .avue-crud__tip{ |
| | | display: none; |
| | | } |
| | | .unfinished-crud .avue-crud__menu{ |
| | | display: none; |
| | | } |
| | | .finished-crud .avue-crud__tip{ |
| | | display: none; |
| | | } |
| | | .finished-crud .avue-crud__menu{ |
| | | display: none; |
| | | } |
| | | .avue-crud__pagination { |
| | | position: relative; |
| | | padding: 5px 0 20px 20px; |
| | | padding: 0px 0 0px 20px; |
| | | text-align: right; |
| | | z-index: 10; |
| | | } |
| | | .basic-template-table .el-table__body .el-table__row td:first-child .cell { |
| | | padding-left: 0px; |
| | | padding-right: 0px; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row:hover { |
| | | cursor: move; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row:hover .icon { |
| | | display: inline-block; |
| | | } |
| | | |
| | | .basic-template-table .el-table__body .el-table__row .icon { |
| | | color: rgba(0, 0, 0, 0.45); |
| | | font-size: 12px; |
| | | line-height: 18px; |
| | | display: none; |
| | | } |
| | | |
| | | .aufontAll { |
| | | font-family: aufontAll !important; |
| | | font-size: 14px; |
| | | font-style: normal; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | } |
| | | |
| | | .h-icon-all-drag { |
| | | background: url('/img/tz.png') center center no-repeat; |
| | | background-size: cover; |
| | | font-size: 14px; |
| | | } |
| | | .h-icon-all-drag:before { |
| | | content: '\E63E'; |
| | | font-size: 14px; |
| | | visibility: hidden; |
| | | } |
| | | </style> |