13 changed files with 3419 additions and 1854 deletions
-
3src/api/shopOrder/productionReport.js
-
24src/api/shopOrder/shopOrder.js
-
4src/assets/scss/global.scss
-
2src/main.js
-
3src/utils/common.js
-
0src/utils/directives.js
-
353src/views/modules/shopOrder/productionReport/common/productionLineYieldReport.vue
-
127src/views/modules/shopOrder/productionReport/searchItemToBeProduct.vue
-
631src/views/modules/shopOrder/shopOrder/common/routing.vue
-
376src/views/modules/shopOrder/shopOrder/common/routingAddAndEdit.vue
-
98src/views/modules/shopOrder/shopOrder/shopOrder.vue
@ -0,0 +1,353 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<el-dialog |
||||
|
v-drag |
||||
|
@close="closeDialog" |
||||
|
width="520px" |
||||
|
:title="'产量报告'" |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="visible"> |
||||
|
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;"> |
||||
|
<fieldset class="customer-fieldset" style="width: 482px; height: 100% ;margin-top: -10px"> |
||||
|
<legend class="customer-legend">产量报告</legend> |
||||
|
<fieldset class="customer-fieldset" style="width: 482px; height: 100%;margin-top: -5px"> |
||||
|
<legend class="customer-legend">订单信息</legend> |
||||
|
<el-row class="customer-input-color-red"> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<el-form-item :label="'工厂'"> |
||||
|
<el-input disabled v-model="itemData.site"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'生产订单号'"> |
||||
|
<el-input disabled v-model="itemData.orderNo"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'物料编码'"> |
||||
|
<el-input disabled v-model="itemData.partNo"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row class="customer-input-color-red"> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<el-form-item :label="'订单数量'"> |
||||
|
<el-input disabled v-model="itemData.qtyRequired"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'工序号'"> |
||||
|
<el-input disabled v-model="itemData.itemNo"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'工序名称'"> |
||||
|
<el-input disabled v-model="itemData.operationDesc"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</fieldset> |
||||
|
<div style="margin-left: 5px"> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="margin-top: 0px"> |
||||
|
<el-form-item> |
||||
|
<span slot="label"><el-link @click="getBaseList(26)">{{'操作员'}}</el-link></span> |
||||
|
<el-input v-model="itemData.operator"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'开工时间'"> |
||||
|
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" |
||||
|
style='width: 145px;' v-model="itemData.startTime"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'生产时间'"> |
||||
|
<el-input class="customer-input-color-red" disabled v-model="itemData.produceTime"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<el-form-item :label="'操作员姓名'"> |
||||
|
<el-input v-model="itemData.operatorName" disabled></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'完工时间'"> |
||||
|
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" |
||||
|
style='width: 145px;' v-model="itemData.finishTime"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'停机时间'"> |
||||
|
<el-input type="number" oninput="value=value.replace(/[^0-9.]/g,'')" min="0" |
||||
|
v-model="itemData.downtime"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<el-form-item :label="'合格数量'"> |
||||
|
<el-input type="number" oninput="value=value.replace(/[^0-9.]/g,'')" min="0" |
||||
|
v-model="itemData.qualifiedQty"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'不合格数量'"> |
||||
|
<el-input type="number" min="0" oninput="value=value.replace(/[^0-9.]/g,'')" |
||||
|
v-model="itemData.qualifiedNotQty"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'报告数量'"> |
||||
|
<el-input disabled class="customer-input-color-red" v-model="itemData.reportQty"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<fieldset class="customer-fieldset" style="width: 482px; height: 100% ;margin-top: 5px"> |
||||
|
<legend class="customer-legend">排产班次信息</legend> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="margin-top: -10px"> |
||||
|
<el-form-item class="customer-item" label="排产日期:"> |
||||
|
<el-input v-model="pageData.scheduledDate" disabled="disabled" style="width: 120px;"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="customer-item" label="班次:"> |
||||
|
<el-input v-model="pageData.shiftDesc" class="customer-input-color-red" readonly="readonly" |
||||
|
style="width: 120px;"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-button type="info" :disabled="buttonTags.selectShiftFlag" plain @click="selectSchduleShiftModal" |
||||
|
style="margin-left: -10px; margin-top: 20px; height: 20px; padding: 3px 3px;"> |
||||
|
<icon-svg name="ellipsis" style="height: 10px; width: 10px;"></icon-svg> |
||||
|
</el-button> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</fieldset> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<div style="margin-left: 5px"> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item :label="'备注'"> |
||||
|
<el-input v-model="itemData.remark" style="width:475PX"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</fieldset> |
||||
|
</el-form> |
||||
|
<span slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="saveYieldReport">保存</el-button> |
||||
|
<el-button @click="visible = false" type="primary">取消</el-button> |
||||
|
</span> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<!-- 班次选择组件 --> |
||||
|
<comSelectShift ref="comSelectShift" :close-on-click-modal="false" |
||||
|
:visible.sync="showShiftFlag" |
||||
|
@initScheduleShift="initScheduleShift"> |
||||
|
</comSelectShift> |
||||
|
<!--基础列表--> |
||||
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
saveYieldReport |
||||
|
} from "@/api/shopOrder/productionReport.js" |
||||
|
import {getScheduleShiftData} from '@/api/yieldReport/com_finish_roll.js'; |
||||
|
import comSelectShift from "../../../yieldReport/com_select_shift"; |
||||
|
import Chooselist from '@/views/modules/common/Chooselist' |
||||
|
|
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
visible: false, |
||||
|
showShiftFlag: false, |
||||
|
itemData: { |
||||
|
site: '', |
||||
|
orderNo: '', |
||||
|
itemNo: '', |
||||
|
rollNo: '*', |
||||
|
operator: '', |
||||
|
operatorName: '', |
||||
|
operationDesc: '', |
||||
|
qtyRequired: 0, |
||||
|
qualifiedQty: 1, |
||||
|
qualifiedNotQty: 0, |
||||
|
reportQty: 0, |
||||
|
startTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
finishTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
produceTime: 0, |
||||
|
downtime: 0, |
||||
|
partNo: '', |
||||
|
enterDate: '', |
||||
|
remark: '' |
||||
|
}, |
||||
|
pageData: { |
||||
|
site: this.$store.state.user.site, |
||||
|
username: this.$store.state.user.name, |
||||
|
resourceId: '', |
||||
|
reportedTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
reportedFlag: 'N', |
||||
|
scheduledDate: this.dayjs().format('YYYY-MM-DD'), |
||||
|
shiftDesc: '无班次' |
||||
|
}, |
||||
|
buttonTags: { |
||||
|
selectShiftFlag: false, |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
itemData: { |
||||
|
deep: true, |
||||
|
handler: function (newV, oldV) { |
||||
|
this.itemData.reportQty = Number(this.itemData.qualifiedQty) + Number(this.itemData.qualifiedNotQty) |
||||
|
let time = (this.dayjs(this.itemData.finishTime).diff(this.dayjs(this.itemData.startTime), 'minutes') / 60).toFixed(2) |
||||
|
this.itemData.produceTime = isNaN(time) ? 0 : time |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
comSelectShift,/*班次选择的组件*/ |
||||
|
Chooselist, |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.$nextTick(() => { |
||||
|
this.height = window.innerHeight - 160; |
||||
|
}) |
||||
|
}, |
||||
|
methods: { |
||||
|
closeDialog() { |
||||
|
this.$nextTick(() => { |
||||
|
Object.assign(this.$data, this.$options.data.call(this)); |
||||
|
}) |
||||
|
}, |
||||
|
init(row) { |
||||
|
this.visible = true |
||||
|
this.itemData = Object.assign(this.itemData, row) |
||||
|
// this.getScheduleShiftFlag() |
||||
|
}, |
||||
|
// 保存报工信息 |
||||
|
saveYieldReport() { |
||||
|
|
||||
|
if (!this.itemData.operator) { |
||||
|
this.$message.warning('请选择操作员!') |
||||
|
return |
||||
|
} |
||||
|
if (this.itemData.produceTime <= 0) { |
||||
|
this.$message.warning('生产时间必须大于0,请检查开工和完工时间是否正确!') |
||||
|
return |
||||
|
} |
||||
|
if (this.itemData.produceTime >= 12) { |
||||
|
this.$message.warning('生产时间不能大12个小时,请检查开工和完工时间是否正确!') |
||||
|
return |
||||
|
} |
||||
|
if (this.itemData.qualifiedQty.length == 0 || this.itemData.qualifiedQty <= 0) { |
||||
|
this.$message.warning('合格数量,必须输入,并且必须大于0!') |
||||
|
return |
||||
|
} |
||||
|
if (this.itemData.qualifiedNotQty.length == 0) { |
||||
|
this.$message.warning('不合格数量,必须输入!') |
||||
|
return |
||||
|
} |
||||
|
if (this.pageData.shiftDesc == '无班次') { |
||||
|
this.$message.warning('该时间段内没有匹配的班次信息,请联系相关人员!') |
||||
|
return |
||||
|
} |
||||
|
let reportDto = { |
||||
|
site: this.itemData.site, |
||||
|
orderNo: this.itemData.orderNo, |
||||
|
itemNo: this.itemData.itemNo, |
||||
|
seqNo: this.itemData.seqNo, |
||||
|
rollNo: '*', |
||||
|
sfdcReportedQty: this.itemData.reportQty, |
||||
|
sfdcApproveQty: this.itemData.qualifiedQty, |
||||
|
sfdcProdTime: this.itemData.produceTime, |
||||
|
sfdcDownTime: this.itemData.downtime, |
||||
|
startTime: this.itemData.startTime, |
||||
|
tillTime: this.itemData.finishTime, |
||||
|
remark: this.itemData.remark, |
||||
|
defectedQty: this.itemData.qualifiedNotQty, |
||||
|
operatorId: this.itemData.operator, |
||||
|
currentTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
scheduledDate: this.pageData.scheduleDate, |
||||
|
shiftNo: this.pageData.shiftNo, |
||||
|
sfdcSetupTime: 0, |
||||
|
sfdcSetupDownTime: 0, |
||||
|
sfdcProdSetupTime: 0, |
||||
|
sfdcManufactureTime: Number(this.itemData.produceTime)+Number(this.itemData.downtime) |
||||
|
} |
||||
|
saveYieldReport(reportDto).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
// 获取基础数据列表 |
||||
|
getBaseList(val) { |
||||
|
this.tagNo = val |
||||
|
this.$nextTick(() => { |
||||
|
let query = this.itemData.operator |
||||
|
this.$refs.baseList.init(val, query) |
||||
|
}) |
||||
|
}, |
||||
|
// 操作员信息 |
||||
|
getBaseData(val) { |
||||
|
this.itemData.operator = val.OperatorID |
||||
|
this.itemData.operatorName = val.OperatorName |
||||
|
this.pageData.resourceId = val.OperatorID |
||||
|
this.getScheduleShiftFlag() |
||||
|
|
||||
|
}, |
||||
|
//刷新派工单的班次信息 |
||||
|
getScheduleShiftFlag() { |
||||
|
getScheduleShiftData(this.pageData).then(({data}) => { |
||||
|
let specialAuth = 'N'; |
||||
|
//区分是否存在班次 |
||||
|
if (data.code == 500) { |
||||
|
this.pageData.shiftDesc = '无班次';//重置班次 |
||||
|
this.pageData.scheduledDate = '';//重置排产日期 |
||||
|
this.pageData.shiftNo = ''; |
||||
|
} else { |
||||
|
this.pageData.shiftDesc = data.row.shiftDesc;//重置班次 |
||||
|
this.pageData.scheduledDate = data.row.scheduledDate.substring(0, 10);//重置排产日期 |
||||
|
this.pageData.shiftNo = data.row.shiftNo; |
||||
|
//设置结果 |
||||
|
specialAuth = data.row.specialAuth; |
||||
|
} |
||||
|
//根据不同设置不同的属性 |
||||
|
if ("Y" === specialAuth) { |
||||
|
this.buttonTags.selectShiftFlag = false; |
||||
|
} else { |
||||
|
this.buttonTags.selectShiftFlag = true; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
/*打开班次选择页面*/ |
||||
|
selectSchduleShiftModal() { |
||||
|
//1.首先调用菜单判断方式 打开生产过程的材料的页面 |
||||
|
//checkProduceButton('produceMaterialFlag'); |
||||
|
//打开生产过程的工具的页面 |
||||
|
this.$nextTick(() => { |
||||
|
this.showShiftFlag = true; |
||||
|
this.$refs.comSelectShift.init(this.pageData); |
||||
|
}); |
||||
|
}, |
||||
|
/*修改页面的班次和排产的时间*/ |
||||
|
initScheduleShift(scheduleDate, shiftDesc, username) { |
||||
|
//重置班次和排产的时间 |
||||
|
this.pageData.scheduledDate = scheduleDate.substring(0, 10); |
||||
|
this.pageData.shiftDesc = shiftDesc; |
||||
|
this.pageData.shiftNo = shiftDesc; |
||||
|
this.pageData.remark = username + "更改了班次." |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.getScheduleShiftFlag() |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
/*统一的input内容颜色样式*/ |
||||
|
.customer-input-color-red /deep/ .el-input__inner { |
||||
|
color: red; |
||||
|
} |
||||
|
|
||||
|
.customer-fieldset /deep/ .el-input--prefix .el-input__inner { |
||||
|
padding-left: 20px; |
||||
|
} |
||||
|
|
||||
|
.customer-fieldset /deep/ .el-input__prefix { |
||||
|
left: 0px; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,631 @@ |
|||||
|
<template> |
||||
|
<div class="mod-config"> |
||||
|
<el-dialog |
||||
|
v-drag |
||||
|
@close="closeDialog" |
||||
|
width="880px" |
||||
|
:title="'生产订单-工艺路线维护'" |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="visible"> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-button @click="routAddAndEdit(0)" type="primary" style="margin-left: 2px;margin-top: 0px">{{ '新增' }} |
||||
|
</el-button> |
||||
|
<el-button @click="routAddAndEdit(1)" :disabled="disabledFlag" type="primary" |
||||
|
style="margin-left: 2px;margin-top: 0px">{{ '修改' }} |
||||
|
</el-button> |
||||
|
<el-button @click="removeRouteInShopOrder" :disabled="disabledFlag" type="primary" |
||||
|
style="margin-left: 2px;margin-top: 0px">{{ '删除' }} |
||||
|
</el-button> |
||||
|
<el-button @click="copyRouting()" :disabled="disabledFlag" type="primary" |
||||
|
style="margin-left: 2px;margin-top: 0px">{{ '复制' }} |
||||
|
</el-button> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col style="margin-top: -5px" :span="24"> |
||||
|
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;"> |
||||
|
<el-form-item :label="'订单号'"> |
||||
|
<el-input class="customer-input-color-red" disabled v-model="itemData.orderNo"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'物料编码'"> |
||||
|
<el-input class="customer-input-color-red" disabled v-model="itemData.partNo"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'物料名称/规格'"> |
||||
|
<el-input class="customer-input-color-red" disabled style="width: 260px" |
||||
|
v-model="itemData.partDesc"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'工厂编号'"> |
||||
|
<el-input class="customer-input-color-red" disabled style="width: 80px" |
||||
|
v-model="itemData.site"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-table |
||||
|
ref="routingTable" |
||||
|
:height="height" |
||||
|
:data="dataList" |
||||
|
highlight-current-row |
||||
|
@current-change="handleCurrentChange" |
||||
|
border |
||||
|
v-loading="dataListLoading" |
||||
|
style="width: 100%;"> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in columnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed" |
||||
|
:width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" |
||||
|
style="width: 100px; height: 80px"/></span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<RoutingAddAndEdit ref="routingAddAndEdit" @searchRouteInShopOrder="searchRouteInShopOrder"></RoutingAddAndEdit> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
getRouteInShopOrder, |
||||
|
deleteRouteInShopOrder, |
||||
|
insertRouteInShopOrder, |
||||
|
getOrderNoRouteInMaxItemNo |
||||
|
} from "@/api/shopOrder/shopOrder.js" |
||||
|
|
||||
|
import RoutingAddAndEdit from './routingAddAndEdit' |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
RoutingAddAndEdit |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
visible: false, |
||||
|
height: 350, |
||||
|
dataListLoading: false, |
||||
|
disabledFlag: true, |
||||
|
columnList: [ |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableItemNo', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "itemNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "序号", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 40 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableOperationDesc', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "operationDesc", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "工序名称", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 160 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableWorkCenterNo', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "workCenterNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "加工中心", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableWorkCenterDesc', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "workCenterDesc", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "加工中心名称", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 120 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableMachSetupTime', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "machSetupTime", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "准备时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableMachRunFactor', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "machRunFactor", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "单位产出量", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 100 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableFactorUnit', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "factorUnit", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "产出单位", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableTimeRequired', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "timeRequired", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "需求时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableTimeReported', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "timeReported", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "报告时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableEfficiency', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "efficiency", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "效率", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 60 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableQtyRequired', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "qtyRequired", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "需求数量", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableQtyReported', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "qtyReported", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "报告数量", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableQtyApprove', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "qtyApprove", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "合格数量", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TablePlanStartTime', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "planStartTime", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "计划开工时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 140 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TablePlanFinishTime', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "planFinishTime", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "计划完工时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 140 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableBarcodeID', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "barcodeID", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "条形码", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 150 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableRemark', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "remark", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "备注", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableClosedFlag', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "closedFlag", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "是否关闭", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 80 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableActionNotes', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "actionNotes", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "打开/关闭备忘", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 200 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableWorkCenterType', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "workCenterType", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "加工中心类型", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 120 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 6031, |
||||
|
serialNumber: '6031TableAvailResource', |
||||
|
tableId: "6031Table", |
||||
|
tableName: "生产订单工艺路线表", |
||||
|
columnProp: "availResource", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "可用机台", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false, |
||||
|
columnWidth: 200 |
||||
|
}, |
||||
|
|
||||
|
], |
||||
|
dataList: [], |
||||
|
itemData: { |
||||
|
orderNo: '', |
||||
|
partNo: '', |
||||
|
partDesc: '', |
||||
|
site: '', |
||||
|
lotSize: 0 |
||||
|
}, |
||||
|
selectRow: null |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
selectRow: { |
||||
|
deep: true, |
||||
|
handler: function (newV, oldV) { |
||||
|
if (newV == null) { |
||||
|
this.disabledFlag = true |
||||
|
} else { |
||||
|
this.disabledFlag = false |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
init(modelData) { |
||||
|
this.visible = true |
||||
|
this.itemData = modelData |
||||
|
this.searchRouteInShopOrder() |
||||
|
}, |
||||
|
// 编辑或新增 |
||||
|
routAddAndEdit(val) { |
||||
|
this.$nextTick(() => { |
||||
|
if (val == 1) { |
||||
|
this.selectRow.lotSize = this.itemData.lotSize |
||||
|
this.$refs.routingAddAndEdit.init(JSON.parse(JSON.stringify(this.selectRow)), 1) |
||||
|
} else { |
||||
|
let selectRow = { |
||||
|
actionNotes: null, |
||||
|
availResource: '', |
||||
|
barcodeID: '', |
||||
|
closedFlag: 'N', |
||||
|
crewsize: 1, |
||||
|
efficiency: 100, |
||||
|
factorUnit: '', |
||||
|
factorUnit_DB: null, |
||||
|
itemNo: null, |
||||
|
machRunFactor: 0, |
||||
|
machSetupTime: 0.0, |
||||
|
operationDesc: '', |
||||
|
orderNo: this.itemData.orderNo, |
||||
|
partNo: this.itemData.partNo, |
||||
|
planFinishTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
planStartTime: this.dayjs().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
qtyApprove: 0, |
||||
|
qtyReported: 0, |
||||
|
qtyRequired: 0, |
||||
|
remark: null, |
||||
|
site: this.itemData.site, |
||||
|
timeReported: 0.0, |
||||
|
timeRequired: 0.0, |
||||
|
workCenterDesc: '', |
||||
|
workCenterNo: '', |
||||
|
workCenterType: '', |
||||
|
lotSize: this.itemData.lotSize, |
||||
|
} |
||||
|
this.$refs.routingAddAndEdit.init(JSON.parse(JSON.stringify(selectRow)), 0) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 获取数据 |
||||
|
searchRouteInShopOrder() { |
||||
|
getRouteInShopOrder(this.itemData).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.dataList = data.dataList |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 删除 订单工序 |
||||
|
removeRouteInShopOrder() { |
||||
|
this.$confirm('确认删除该工序?', '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
deleteRouteInShopOrder(this.selectRow).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.searchRouteInShopOrder() |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
// 复制 |
||||
|
copyRouting() { |
||||
|
// 获取最大工序 |
||||
|
getOrderNoRouteInMaxItemNo(this.itemData).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
let maxItem = JSON.parse(JSON.stringify(this.selectRow)) |
||||
|
maxItem.itemNo = Number(data.data) + 10 |
||||
|
// 保存信息 |
||||
|
this.addRouteInShopOrder(maxItem) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 保存订单工序 |
||||
|
addRouteInShopOrder(val) { |
||||
|
insertRouteInShopOrder(val).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.searchRouteInShopOrder() |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
handleCurrentChange(val) { |
||||
|
this.selectRow = val |
||||
|
}, |
||||
|
closeDialog() { |
||||
|
this.$nextTick(() => { |
||||
|
this.$emit('tableHanddle', this.itemData) |
||||
|
Object.assign(this.$data, this.$options.data.call(this)); |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.mod-config /deep/ .el-card__header { |
||||
|
padding: 0px 2px; |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
/*统一的input内容颜色样式*/ |
||||
|
.customer-input-color-red /deep/ .el-input__inner { |
||||
|
color: red; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.mod-config /deep/ .el-form-item--medium .el-form-item__content { |
||||
|
height: 20px; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,376 @@ |
|||||
|
<template> |
||||
|
<div class="mod-config"> |
||||
|
<el-dialog |
||||
|
v-drag |
||||
|
@close="closeDialog" |
||||
|
width="690px" |
||||
|
class="sxm" |
||||
|
:title="selectRow.itemNo?'编辑工序信息':'新增工序信息'" |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="visible"> |
||||
|
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;"> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item :label="'工序号:'"> |
||||
|
<el-input oninput="value=value.replace(/[^0-9]/g,'')" :class="itemNoFlag?'customer-input-color-red':''" v-model="selectRow.itemNo" |
||||
|
:disabled="itemNoFlag" |
||||
|
style="width: 150px;text-align: right" |
||||
|
type="number"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'工序名称:'"> |
||||
|
<el-input v-model="selectRow.operationDesc" style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<span slot="label" style="" @click="getBaseList(24,0)"><a herf="#">加工中心编码:</a></span> |
||||
|
<el-input @input="searchWorkCenterInfo()" v-model="selectRow.workCenterNo" |
||||
|
style="width: 100px"></el-input> |
||||
|
<el-input v-model="selectRow.workCenterType" class="customer-input-color-red" disabled |
||||
|
style="width: 46px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<span slot="label" style="">加工中心名称:</span> |
||||
|
<el-input v-model="selectRow.workCenterDesc" class="customer-input-color-red" disabled |
||||
|
style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item :label="'准备时间:'"> |
||||
|
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="selectRow.machSetupTime" |
||||
|
style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'单位产出量:'"> |
||||
|
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="selectRow.machRunFactor" type="number" |
||||
|
style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'产出单位:'"> |
||||
|
<el-select filterable v-model="selectRow.factorUnit" style="width: 150px"> |
||||
|
<el-option label="单位/小时" value="单位/小时"></el-option> |
||||
|
<el-option label="小时" value="小时"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'效率:'"> |
||||
|
<el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="selectRow.efficiency" |
||||
|
style="width: 150px"> |
||||
|
<span slot="suffix">%</span> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item :label="'需求时间:'"> |
||||
|
<el-input class="customer-input-color-red" disabled v-model="selectRow.timeRequired" |
||||
|
style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'计划完工时间:'"> |
||||
|
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" v-model="selectRow.planFinishTime" style="width: 150px"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'计划开工时间:'"> |
||||
|
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" v-model="selectRow.planStartTime" style="width: 150px"></el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'操作工人数:'"> |
||||
|
<el-input oninput="value=value.replace(/[^0-9]/g,'')" v-model="selectRow.crewsize" type="number" |
||||
|
style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item :label="'备注:'"> |
||||
|
<el-input v-model="selectRow.remark" style="width: 150px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label="'可用机台:'"> |
||||
|
<el-input v-model="selectRow.availResource" class="customer-input-color-red" disabled |
||||
|
style="width: 478px"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
||||
|
<el-button type="primary" @click="saveOrEdit">保存</el-button> |
||||
|
<el-button type="primary" @click="visible = false">关闭</el-button> |
||||
|
</el-footer> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
getRouteInShopOrder, |
||||
|
insertRouteInShopOrder, |
||||
|
updateRouteInShopOrder, |
||||
|
getRoutingTimeRequired, |
||||
|
getWorkCenterInfo, |
||||
|
getOrderNoRouteInMaxItemNo, |
||||
|
getOrderNoItemNoCenter |
||||
|
} from "@/api/shopOrder/shopOrder.js" |
||||
|
import Chooselist from '@/views/modules/common/Chooselist' |
||||
|
|
||||
|
import {debounce, throttle} from "../../../../../utils/common"; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
Chooselist |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
visible: false, |
||||
|
itemNoFlag: true, |
||||
|
selectRow: { |
||||
|
actionNotes: null, |
||||
|
availResource: '', |
||||
|
barcodeID: '', |
||||
|
closedFlag: '', |
||||
|
crewsize: 1, |
||||
|
efficiency: 80, |
||||
|
factorUnit: '', |
||||
|
factorUnit_DB: null, |
||||
|
itemNo: null, |
||||
|
machRunFactor: 0, |
||||
|
machSetupTime: 0.0, |
||||
|
operationDesc: '', |
||||
|
orderNo: '', |
||||
|
partNo: '', |
||||
|
planFinishTime: '', |
||||
|
planStartTime: '', |
||||
|
qtyApprove: 0, |
||||
|
qtyReported: 0, |
||||
|
qtyRequired: 0, |
||||
|
remark: null, |
||||
|
site: '', |
||||
|
timeReported: 0.0, |
||||
|
timeRequired: 0.0, |
||||
|
workCenterDesc: '', |
||||
|
workCenterNo: '', |
||||
|
workCenterType: "内部", |
||||
|
lotSize: 0 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
selectRow: { |
||||
|
deep: true, |
||||
|
handler: function (newV, oldV) { |
||||
|
this.getTimeRequired() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
init(selectRow, operationType) { |
||||
|
this.visible = true |
||||
|
this.selectRow = Object.assign(this.selectRow, selectRow); |
||||
|
if (operationType == 1) { |
||||
|
this.itemNoFlag = true |
||||
|
} else { |
||||
|
this.itemNoFlag = false |
||||
|
this.searchOrderNoRouteInMaxItemNo() |
||||
|
} |
||||
|
}, |
||||
|
// 计算需求时间 |
||||
|
getTimeRequired() { |
||||
|
let dto = { |
||||
|
site:this.selectRow.site, |
||||
|
lotSize:this.selectRow.lotSize, |
||||
|
machSetupTime:this.selectRow.machSetupTime, |
||||
|
factorUnit:this.selectRow.factorUnit, |
||||
|
efficiency:this.selectRow.efficiency, |
||||
|
} |
||||
|
getRoutingTimeRequired(this.selectRow).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.selectRow.timeRequired = data.data |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 获取最大工序 , 可用机台 |
||||
|
searchOrderNoRouteInMaxItemNo() { |
||||
|
let order = { |
||||
|
orderNo: this.selectRow.orderNo, |
||||
|
site: this.selectRow.site, |
||||
|
} |
||||
|
// 工序 |
||||
|
getOrderNoRouteInMaxItemNo(order).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.selectRow.itemNo = Number(data.data)+10 |
||||
|
getOrderNoItemNoCenter( this.selectRow).then(({data})=>{ |
||||
|
this.selectRow.availResource = data.data |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 保存或修改订单工序 |
||||
|
saveOrEdit() { |
||||
|
if (!this.selectRow.itemNo) { |
||||
|
this.$message.warning('工序号不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.operationDesc) { |
||||
|
this.$message.warning('工序号名称不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.workCenterNo) { |
||||
|
this.$message.warning('加工中心编码不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.machSetupTime) { |
||||
|
this.$message.warning('准备时间不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.factorUnit) { |
||||
|
this.$message.warning('请选择产出单位!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.efficiency) { |
||||
|
this.$message.warning('效率不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.timeRequired) { |
||||
|
this.$message.warning('需求时间不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (!this.selectRow.planFinishTime) { |
||||
|
this.$message.warning('计划完工时间不能为空!') |
||||
|
return |
||||
|
} if (!this.selectRow.planStartTime) { |
||||
|
this.$message.warning('计划开工时间不能为空!') |
||||
|
return |
||||
|
} |
||||
|
if (this.selectRow.planFinishTime>this.selectRow.planStartTime){ |
||||
|
this.$message.warning('计划开工时间不能早于计划完工时间!') |
||||
|
return |
||||
|
} |
||||
|
let centerInfo = { |
||||
|
workCenterNo: this.selectRow.workCenterNo, |
||||
|
active: 'Y', |
||||
|
site: this.$store.state.user.site |
||||
|
} |
||||
|
// 校验加功中心 |
||||
|
getWorkCenterInfo(centerInfo).then(({data}) => { |
||||
|
// itemNoFlag = true 修改 false 否则保存 |
||||
|
if (data.code == 0) { |
||||
|
if (this.itemNoFlag) { |
||||
|
updateRouteInShopOrder(this.selectRow).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.visible = false |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
this.selectRow.timeRequired = this.selectRow.lotSize |
||||
|
let barcodeID = '0000'+this.selectRow.itemNo |
||||
|
this.selectRow.barcodeID = this.selectRow.site+'-00000'+this.selectRow.orderNo+"-"+barcodeID.slice(-4) |
||||
|
insertRouteInShopOrder(this.selectRow).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.visible = false |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 获取数据 |
||||
|
searchRouteInShopOrder() { |
||||
|
getRouteInShopOrder(this.itemData).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.selectRow = data.dataList[0] |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
// 保存订单工序 |
||||
|
addRouteInShopOrder(val) { |
||||
|
|
||||
|
insertRouteInShopOrder(val).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.searchRouteInShopOrder() |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
handleCurrentChange(val) { |
||||
|
this.selectRow = val |
||||
|
}, |
||||
|
getBaseData(val) { |
||||
|
if (this.tagNo === 24) { |
||||
|
this.selectRow.workCenterNo = val.WorkCenterNo |
||||
|
} |
||||
|
this.searchWorkCenterInfo() |
||||
|
}, |
||||
|
// 获取加工中心的信息 |
||||
|
searchWorkCenterInfo: debounce(function () { |
||||
|
let centerInfo = { |
||||
|
workCenterNo: this.selectRow.workCenterNo, |
||||
|
active: 'Y', |
||||
|
site: this.$store.state.user.site |
||||
|
} |
||||
|
getWorkCenterInfo(centerInfo).then(({data}) => { |
||||
|
if (data.code == 0) { |
||||
|
this.selectRow.workCenterType = data.data.workCenterType |
||||
|
this.selectRow.workCenterNo = data.data.workCenterNo |
||||
|
this.selectRow.workCenterDesc = data.data.workCenterDesc |
||||
|
} else { |
||||
|
this.selectRow.workCenterNo = '' |
||||
|
this.selectRow.workCenterDesc = '' |
||||
|
} |
||||
|
}) |
||||
|
}, 1000), |
||||
|
// 获取基础数据列表 |
||||
|
getBaseList(val, val2) { |
||||
|
this.tagNo = val |
||||
|
this.tagNo2 = val2 |
||||
|
this.$nextTick(() => { |
||||
|
let strVal = ""; |
||||
|
if (val === 24) { |
||||
|
strVal = this.selectRow.workCenterNo |
||||
|
} |
||||
|
this.$refs.baseList.init(val, strVal) |
||||
|
}) |
||||
|
}, |
||||
|
closeDialog() { |
||||
|
this.$nextTick(() => { |
||||
|
this.$emit('searchRouteInShopOrder') |
||||
|
Object.assign(this.$data, this.$options.data.call(this)); |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.mod-config /deep/ .el-card__header { |
||||
|
padding: 0px 2px; |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
.mod-config /deep/ .el-form-item--medium .el-form-item__content { |
||||
|
height: 20px; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
|
||||
|
.customer-input-color-red /deep/ .el-input__inner { |
||||
|
color: red; |
||||
|
} |
||||
|
|
||||
|
.sxm /deep/ .el-input--prefix .el-input__inner { |
||||
|
padding-left: 20px; |
||||
|
} |
||||
|
|
||||
|
.sxm /deep/ .el-input__prefix { |
||||
|
left: 0px; |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue