Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before
| | |
| | | name: 'Sidebar', |
| | | data(){ |
| | | return { |
| | | collapse: false |
| | | } |
| | | }, |
| | | inject: ["Index"], |
| | | components: { sidebarItem, logo }, |
| | | created() { |
| | | this.Index.openMenu(this.menuId); |
| | | // console.log(window.innerWidth); |
| | | // if(window.innerWidth <= 768){ |
| | | // this.collapse = true |
| | | // this.$store.commit('SET_COLLAPSE') |
| | | // } |
| | | }, |
| | | // watch:{ |
| | | // 'window.innerWidth':{ |
| | | // handler(newVal){ |
| | | // console.log(newVal); |
| | | // }, |
| | | // deep: true |
| | | // } |
| | | // }, |
| | | computed: { |
| | | ...mapGetters(['website', 'menu', 'tag', 'keyCollapse', 'screen']), |
| | | filterMenu: function(){ |
| | |
| | | <div class="mod-config"> |
| | | <basic-container> |
| | | <el-row> |
| | | <el-col :span="14"> |
| | | <el-row> |
| | | <el-col :span="14" style="height:100vh"> |
| | | <el-row style="height:50%;padding:0px 10px;"> |
| | | <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> |
| | | <div> |
| | | <span style="position: relative;top:40px;color:#E84738">未完成</span> |
| | | <span style="position: relative;top:30px;left:61%;z-index: 11"> |
| | | <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> |
| | |
| | | ref="crud" |
| | | :option="option" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getUnFinishedData" |
| | | @refresh-change="getDataList" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | :page="page" |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-row style="height:50%;padding:0px 10px;"> |
| | | <el-col :span="24"> |
| | | <div style="height:40vh;padding: 0px 10px;"> |
| | | <span style="position: relative;top:40px">已完成</span> |
| | | <div> |
| | | <span style="position: relative;top:0px;color:#34BD66">已完成</span> |
| | | <avue-crud |
| | | :data="finishedTableData" |
| | | ref="finished" |
| | |
| | | <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" |
| | |
| | | prop:'id', |
| | | order:'descending' |
| | | }, |
| | | height: 200, |
| | | height: 230, |
| | | selection: true, |
| | | columnBtn: false, |
| | | index: true, |
| | |
| | | prop:'id', |
| | | order:'descending' |
| | | }, |
| | | height: 180, |
| | | height: 250, |
| | | 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 |
| | | } |
| | | let mIds = this.multipleSelection.map(ele=>{ |
| | | return ele.mid |
| | | }) |
| | | checkTimeLines(mIds).then(res=>{ |
| | | console.log(res); |
| | | if(res.data.code===200){ |
| | | this.scheduleEditList = JSON.parse(JSON.stringify(this.scheduleList)) |
| | | if(res.data.data.length==1){ |
| | | let dataList = this.initTimeLine(res.data.data[0]) |
| | | this.scheduleEditList = dataList |
| | | console.log(this.scheduleEditList); |
| | | 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){ |
| | |
| | | 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); |
| | | }) |
| | |
| | | } |
| | | }, |
| | | // 获取数据列表 |
| | | 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' |
| | |
| | | <el-tabs class="rawMaterial-detail" @tab-click="tabsClick"> |
| | | <el-tab-pane label="检验项目"> |
| | | <el-row style="width:100%;z-index: 10;height:50px;"> |
| | | <el-col :xs="12" :lg="18"></el-col> |
| | | <el-col :xs="4" :lg="2" style="text-align: right;"> |
| | | <el-col :sm="12" :lg="18"></el-col> |
| | | <el-col :sm="4" :lg="2" style="text-align: right;"> |
| | | <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine()">添加检验项目</el-button> |
| | | </el-col> |
| | | <el-col :xs="4" :lg="2" style="text-align: right;"> |
| | | <el-col :sm="4" :lg="2" style="text-align: right;"> |
| | | <el-button class="pad-addcol-btn" v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">添加检测值列</el-button> |
| | | </el-col> |
| | | <el-col :xs="4" :lg="2" style="text-align: right;"> |
| | | <el-col :sm="4" :lg="2" style="text-align: right;"> |
| | | <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="delTeatValueColumn()">删除检测值列</el-button> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | :ajaxFun="ajaxFun" |
| | | ref="completeProductStructureTable" |
| | | > |
| | | <template #toolbar> |
| | | <el-button type="primary" @click="addByStructureHandle" |
| | | v-if="permissions.technology_completeproductstructure_bom">产品结构生成BOM</el-button> |
| | | <el-button @click="() => {this.approveHandle('ACCEPT')}" |
| | | :disabled="uniqueStateArr.includes('01draft')" |
| | | v-if="permissions.technology_completeproductstructure_accept">批准</el-button> |
| | | <el-button @click="() => {this.approveHandle('REVOKE')}" |
| | | :disabled="uniqueStateArr.includes('02accepted')" |
| | | v-if="permissions.technology_completeproductstructure_revoke">撤回</el-button> |
| | | <el-button @click="() => {this.approveHandle('CANCEL')}" |
| | | :disabled="uniqueStateArr.includes('02accepted')" |
| | | v-if="permissions.technology_completeproductstructure_cancel">拒绝</el-button> |
| | | <el-button @click="() => {this.deleteAll()}" type="primary" |
| | | v-if="permissions.technology_completeproductstructure_batch_delete">批量删除</el-button> |
| | | </template> |
| | | <template #toolbar></template> |
| | | </ttable> |
| | | </basic-container> |
| | | </div> |
| | |
| | | this.getData() |
| | | }, |
| | | created() { |
| | | if(this.permissions.technology_completeproductstructure_bom){ |
| | | this.table.toolbar.push({ |
| | | text: '产品结构生成BOM', |
| | | disabled: false, |
| | | type: 'primary', |
| | | fun: ()=>{this.addByStructureHandle()}, |
| | | permitArr: [], |
| | | }) |
| | | } |
| | | if(this.permissions.technology_completeproductstructure_accept){ |
| | | this.table.toolbar.push({ |
| | | text: '批准', |
| | | disabled: true, |
| | | fun: ()=>{this.approveHandle('ACCEPT')}, |
| | | permitArr: ['01draft'], |
| | | }) |
| | | } |
| | | if(this.permissions.technology_completeproductstructure_revoke){ |
| | | this.table.toolbar.push({ |
| | | text: '撤回', |
| | | disabled: true, |
| | | fun: () => {this.approveHandle('REVOKE')}, |
| | | permitArr: ['02accepted'], |
| | | }) |
| | | } |
| | | if(this.permissions.technology_completeproductstructure_cancel){ |
| | | this.table.toolbar.push({ |
| | | text: '拒绝', |
| | | disabled: true, |
| | | fun: ()=>{this.approveHandle('CANCEL')}, |
| | | permitArr: ['02accepted'], |
| | | }) |
| | | } |
| | | if(this.permissions.technology_completeproductstructure_batch_delete){ |
| | | this.table.toolbar.push({ |
| | | text: '批量删除', |
| | | type:'primary', |
| | | disabled: false, |
| | | permitArr: [], |
| | | fun: ()=>{this.deleteAll()}, |
| | | }) |
| | | } |
| | | if(this.permissions.technology_completeproductstructure_del){ |
| | | this.table.operator = [ |
| | | { |
| | |
| | | ] |
| | | } |
| | | this.getBomTypeDbOptions() |
| | | }, |
| | | watch:{ |
| | | multipleSelection(newVal){ |
| | | if(newVal.length==0){ |
| | | this.table.toolbar.forEach(ele=>{ |
| | | if(ele.text=='拒绝' || ele.text=='批准' || ele.text=='撤回'){ |
| | | ele.disabled = true |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | getBomTypeDbOptions() { |
| | |
| | | uniqueStateArr.push(stateArr[i]) |
| | | } |
| | | } |
| | | this.uniqueStateArr = uniqueStateArr |
| | | // 循环表头按钮,判断每个按钮的permitArr是否完全包含选中状态,若完全包含,则按钮亮,否则按钮灰 |
| | | // var toolbar = this.table.toolbar |
| | | // for (var j = 0; j < toolbar.length; j++) { |
| | | // if ( |
| | | // uniqueStateArr.every((val) => |
| | | // toolbar[j].permitArr.length <= 0 |
| | | // ? true |
| | | // : toolbar[j].permitArr.includes(val) |
| | | // ) |
| | | // ) { |
| | | // toolbar[j].disabled = false |
| | | // } else { |
| | | // toolbar[j].disabled = true |
| | | // } |
| | | // } |
| | | var toolbar = this.table.toolbar |
| | | for (var j = 0; j < toolbar.length; j++) { |
| | | if ( |
| | | uniqueStateArr.every((val) => |
| | | toolbar[j].permitArr.length <= 0 |
| | | ? true |
| | | : toolbar[j].permitArr.includes(val) |
| | | ) |
| | | ) { |
| | | toolbar[j].disabled = false |
| | | } else { |
| | | toolbar[j].disabled = true |
| | | } |
| | | } |
| | | // 将选中记录赋值给multipleSelection |
| | | this.multipleSelection = val |
| | | }, |
| | |
| | | type:'primary', |
| | | disabled: false, |
| | | permitArr: [], |
| | | fun: ()=>{this.copyRouting()}, |
| | | fun: ()=>{this.deleteAll()}, |
| | | }) |
| | | } |
| | | if(this.permissions.technology_routing_del){ |