|
|
|
@ -63,15 +63,7 @@ |
|
|
|
@row-click="partClickRow" |
|
|
|
@selection-change="selectionPart" |
|
|
|
@current-change="changeCurrentRow" |
|
|
|
v-loading="dataListLoading" |
|
|
|
style="width: 100%;"> |
|
|
|
<!-- <el-table-column--> |
|
|
|
<!-- type="selection"--> |
|
|
|
<!-- header-align="center"--> |
|
|
|
<!-- align="center"--> |
|
|
|
<!-- :selectable="selectFlag"--> |
|
|
|
<!-- width="50">--> |
|
|
|
<!-- </el-table-column>--> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
@ -102,6 +94,7 @@ |
|
|
|
<el-dropdown-menu slot="dropdown"> |
|
|
|
<el-dropdown-item @click.native="toMenu('BOM',scope.row)">BOM</el-dropdown-item> |
|
|
|
<el-dropdown-item @click.native="toMenu('Routing',scope.row)">Routing</el-dropdown-item> |
|
|
|
<el-dropdown-item v-if="scope.row.status !== 'Y'" @click.native="toBecomeOfficialPartModal(scope.row)">转正式物料</el-dropdown-item> |
|
|
|
</el-dropdown-menu> |
|
|
|
</el-dropdown> |
|
|
|
</template> |
|
|
|
@ -122,7 +115,7 @@ |
|
|
|
</el-pagination> |
|
|
|
|
|
|
|
<!-- 物料新增/编辑模态框 --> |
|
|
|
<el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="1000px"> |
|
|
|
<el-dialog :title="modalData.title" top="10vh" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="1000px"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="物料编码" prop="partNo" :rules="rules.partNo"> |
|
|
|
<el-input v-model="modalData.partNo" clearable style="width: 128px" @blur="queryMasterField" :disabled="modalDisableFlag"></el-input> |
|
|
|
@ -130,14 +123,17 @@ |
|
|
|
<el-form-item label="物料描述" prop="partDesc" :rules="rules.partDesc" style="margin-left: -10px"> |
|
|
|
<el-input v-model="modalData.partDesc" clearable style="width: 330px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="modalDisableFlag" :label="' '"> |
|
|
|
<el-form-item v-if="modalData.flag === '2'" :label="' '"> |
|
|
|
<el-button type="primary" @click="toCopyPartModal">Copy</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="modalDisableFlag && modalData.status !== 'Y'" :label="' '"> |
|
|
|
<el-button type="primary" @click="toBecomeOfficialPart">转正式物料</el-button> |
|
|
|
<el-form-item v-if="modalData.flag === '3'" label="IFS物料编码" prop="ifsPartNo" :rules="[{required: true,message: ' ',trigger: ['blur','change']}]" style="margin-left: -10px"> |
|
|
|
<el-input v-model="modalData.ifsPartNo" clearable style="width: 330px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item v-if="modalDisableFlag && modalData.status !== 'Y'" :label="' '">--> |
|
|
|
<!-- <el-button type="primary" @click="toBecomeOfficialPart">转正式物料</el-button>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<el-tabs v-model="inventoryPartTable" style="width: 100%;height: 465px;" type="border-card" @tab-click="inventoryPartClick"> |
|
|
|
<el-tab-pane label="General"> |
|
|
|
<el-tab-pane label="General" name="General"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="零件类型 / Part Type" prop="partType" :rules="rules.partType"> |
|
|
|
<el-select v-model="modalData.partType" style="width: 461px"> |
|
|
|
@ -239,7 +235,7 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules"> |
|
|
|
<el-form-item prop="codeDesc" :rules="rules.codeDesc"> |
|
|
|
<el-form-item prop="codeNo" :rules="rules.codeNo"> |
|
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(20)"><a herf="#">属性模板</a></span> |
|
|
|
<el-input v-model="modalData.codeNo" style="width: 128px"></el-input> |
|
|
|
<el-input v-model="modalData.codeDesc" disabled style="width: 330px"></el-input> |
|
|
|
@ -253,7 +249,7 @@ |
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="Acquisition"> |
|
|
|
<el-tab-pane label="Acquisition" name="Acquisition"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="制造备货期 / Manufacturing Lead Time"> |
|
|
|
<el-input :disabled="!(modalData.partType === 'Manufactured' || modalData.partType === 'Manufactured Recipe')" class="inlineNumber numInput" v-model="modalData.manufacturingLeadTime" @input="handleInput(modalData.manufacturingLeadTime,17)" @change="changeExpectedLeadTime" type="number" style="width: 223px"></el-input> |
|
|
|
@ -298,7 +294,7 @@ |
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="Costs"> |
|
|
|
<el-tab-pane label="Costs" name="Costs"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="配置标识 / Configuration ID"> |
|
|
|
<el-select v-model="modalData.configurationId" style="width: 461px"> |
|
|
|
@ -313,7 +309,7 @@ |
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="Misc Part Info"> |
|
|
|
<el-tab-pane label="Misc Part Info" name="MiscPartInfo"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="库存估价方法 / Inventory Valuation Method"> |
|
|
|
<el-select v-model="modalData.inventoryValuationMethod" style="width: 461px"> |
|
|
|
@ -360,7 +356,7 @@ |
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="Planning Data"> |
|
|
|
<el-tab-pane label="Planning Data" name="PlanningData"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules"> |
|
|
|
<el-form-item> |
|
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(132)"><a herf="#">计划方法 / Planning Method</a></span> |
|
|
|
@ -397,7 +393,7 @@ |
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
|
|
|
|
<el-tab-pane label="Manufacturing"> |
|
|
|
<el-tab-pane label="Manufacturing" name="Manufacturing"> |
|
|
|
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;"> |
|
|
|
<el-form-item label="累计提前期 / Cum Lead Time"> |
|
|
|
<el-input class="inlineNumber numInput" v-model="modalData.cumLeadTime" @input="handleInput(modalData.cumLeadTime,9)" type="number" style="width: 296px"></el-input> |
|
|
|
@ -504,9 +500,76 @@ |
|
|
|
</el-table> |
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
<el-container v-if="modalData.flag === '3'"> |
|
|
|
<el-aside style="width: 485px"> |
|
|
|
<el-table |
|
|
|
:data="bomAlternativeList" |
|
|
|
height="200px" |
|
|
|
border |
|
|
|
ref="bomAlternativeTable" |
|
|
|
@row-click="bomAlternativeClickRow" |
|
|
|
@selection-change="selectionBomAlternative" |
|
|
|
style="width:100%"> |
|
|
|
<el-table-column |
|
|
|
type="selection" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
width="50"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnBomAlternativeList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
:prop="item.columnProp" |
|
|
|
:header-align="item.headerAlign" |
|
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
|
:align="item.align" |
|
|
|
:fixed="item.fixed == ''?false:item.fixed" |
|
|
|
:min-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-aside> |
|
|
|
<el-main style="padding: 0 0 0 0"> |
|
|
|
<el-table |
|
|
|
:data="routingAlternativeList" |
|
|
|
height="200px" |
|
|
|
border |
|
|
|
ref="routingAlternativeTable" |
|
|
|
@row-click="routingAlternativeClickRow" |
|
|
|
@selection-change="selectionRoutingAlternative" |
|
|
|
style="width:100%"> |
|
|
|
<el-table-column |
|
|
|
type="selection" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
width="50"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnRoutingAlternativeList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
:prop="item.columnProp" |
|
|
|
:header-align="item.headerAlign" |
|
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
|
:align="item.align" |
|
|
|
:fixed="item.fixed == ''?false:item.fixed" |
|
|
|
:min-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-main> |
|
|
|
</el-container> |
|
|
|
</el-form> |
|
|
|
<el-footer style="height:35px;margin-top: 20px;text-align:center"> |
|
|
|
<el-button type="primary" @click="saveData()">保存</el-button> |
|
|
|
<el-button v-if="modalData.flag === '3'" type="primary" @click="saveData()">投产</el-button> |
|
|
|
<el-button v-else type="primary" @click="saveData()">保存</el-button> |
|
|
|
<el-button type="primary" @click="modalFlag = false">关闭</el-button> |
|
|
|
</el-footer> |
|
|
|
</el-dialog> |
|
|
|
@ -517,45 +580,81 @@ |
|
|
|
<el-tab-pane label="物料属性" name="part_item"> |
|
|
|
<el-form label-position="top" style="margin-top: 2px; margin-left: 2px;"> |
|
|
|
<el-button type="primary" @click="addOrDelItem">新增</el-button> |
|
|
|
<el-button type="primary" @click="updateItemValue">编辑</el-button> |
|
|
|
<!-- <el-button type="primary" @click="updateItemValue">编辑</el-button>--> |
|
|
|
<el-button type="primary" :loading="loading" @click="clickSave">{{ attributeDialog?'编辑':'保存' }}</el-button> |
|
|
|
</el-form> |
|
|
|
<el-table |
|
|
|
:data="partItemList" |
|
|
|
:height="secondHeight - 60" |
|
|
|
border |
|
|
|
v-loading="dataListLoading" |
|
|
|
style="width: 100%;"> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnItemList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
:prop="item.columnProp" |
|
|
|
:header-align="item.headerAlign" |
|
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
|
:align="item.align" |
|
|
|
:fixed="item.fixed==''?false:item.fixed" |
|
|
|
:min-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-column--> |
|
|
|
<!-- header-align="center"--> |
|
|
|
<!-- align="center"--> |
|
|
|
<!-- width="150"--> |
|
|
|
<!-- fixed="right"--> |
|
|
|
<!-- label="操作">--> |
|
|
|
<!-- <template slot-scope="scope">--> |
|
|
|
<!-- <a type="text" size="small" @click="deleteItemModal(scope.row)">删除</a>--> |
|
|
|
<!-- </template>--> |
|
|
|
<!-- </el-table-column>--> |
|
|
|
</el-table> |
|
|
|
<div class="rq " v-if="attributeDialog"> |
|
|
|
<el-table |
|
|
|
:data="partItemList" |
|
|
|
:height="secondHeight - 60" |
|
|
|
border |
|
|
|
style="width: 100%;"> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnItemList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
:prop="item.columnProp" |
|
|
|
:header-align="item.headerAlign" |
|
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
|
:align="item.align" |
|
|
|
:fixed="item.fixed==''?false:item.fixed" |
|
|
|
:min-width="item.columnWidth" |
|
|
|
:label="item.columnLabel"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-if="item.columnProp !== 'textValue' && item.columnProp !== 'numValue'"> |
|
|
|
<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> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
{{scope.row.textValue?scope.row.textValue:scope.row.numValue}} |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
<div class="rq " v-else> |
|
|
|
<el-table |
|
|
|
:data="copyAttributeList" |
|
|
|
:height="secondHeight - 60" |
|
|
|
border |
|
|
|
style="width: 100%"> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnItemList" :key="index" |
|
|
|
:sortable="item.columnSortable" |
|
|
|
:prop="item.columnProp" |
|
|
|
:header-align="item.headerAlign" |
|
|
|
:show-overflow-tooltip="item.showOverflowTooltip" |
|
|
|
:align="item.align" |
|
|
|
:fixed="item.fixed===''?false:item.fixed" |
|
|
|
:min-width="item.columnWidth" |
|
|
|
:label="item.columnLabel"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-if="item.columnProp !== 'textValue' && item.columnProp !== 'numValue'"> |
|
|
|
<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> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
<div v-if="scope.row.valueChooseFlag !== 'Y'"> |
|
|
|
<el-input-number v-model="scope.row.numValue" style="padding: 0;width: 100%" v-if="scope.row.valueTypeDb === 'N'" :controls="false"></el-input-number> |
|
|
|
<el-input v-model="scope.row.textValue" v-else></el-input> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
<el-select style="width: 100%;" v-if="scope.row.valueTypeDb === 'T'" v-model="scope.row.textValue"> |
|
|
|
<el-option :value="i.availableValue" :label="i.availableValue" v-for="(i,key) in scope.row.list" :key="key"></el-option> |
|
|
|
</el-select> |
|
|
|
<el-select style="width: 100%;" v-else v-model="scope.row.numValue"> |
|
|
|
<el-option :value="i.availableValue" :label="i.availableValue" v-for="(i,key) in scope.row.list" :key="key"></el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
</el-tab-pane> |
|
|
|
<!-- 代理商页签 --> |
|
|
|
<el-tab-pane label="代理商" name="part_agent"> |
|
|
|
<el-form label-position="top" style="margin-top: 2px; margin-left: 2px;"> |
|
|
|
<el-button type="primary" @click="savePartAgent()">新增</el-button> |
|
|
|
<el-button type="primary" @click="savePartAgent">新增</el-button> |
|
|
|
</el-form> |
|
|
|
<el-table |
|
|
|
:data="partAgentList" |
|
|
|
@ -672,7 +771,6 @@ |
|
|
|
:data="fileContentList" |
|
|
|
:height="secondHeight - 60" |
|
|
|
border |
|
|
|
v-loading="dataListLoading" |
|
|
|
style="width: 100%; "> |
|
|
|
<el-table-column |
|
|
|
v-for="(item,index) in columnFileList" :key="index" |
|
|
|
@ -734,11 +832,11 @@ |
|
|
|
min-width="80" |
|
|
|
label="文本值"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-input v-if="scope.row.valueTypeDb === 'T' && scope.row.valueChooseFlag === 'N'" v-model="scope.row.textValue" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input> |
|
|
|
<el-input v-if="scope.row.valueTypeDb === 'T' && scope.row.valueChooseFlag === 'N'" v-model="scope.row.textValue" style="height: 11px;width:98%"></el-input> |
|
|
|
<el-select v-if="scope.row.valueTypeDb === 'T' && scope.row.valueChooseFlag === 'Y'" v-model="scope.row.textValue" style="width: 180px" placeholder="请选择"> |
|
|
|
<el-option v-for="item in scope.row.availableValueList" :key="index" :label="item.availableValue" :value="item.availableValue"></el-option> |
|
|
|
</el-select> |
|
|
|
<el-input v-if="scope.row.valueTypeDb !== 'T'" v-model="scope.row.textValue" disabled style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input> |
|
|
|
<el-input v-if="scope.row.valueTypeDb !== 'T'" v-model="scope.row.textValue" disabled style="height: 11px;width:98%"></el-input> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
@ -1156,16 +1254,16 @@ |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<el-dialog title="Revision" :close-on-click-modal="false" v-drag :visible.sync="updateRevisionModelFlag" width="430px"> |
|
|
|
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-form-item label="Revision"> |
|
|
|
<el-input v-model="revisionData.engChgLevel" :disabled="updateRevisionModelDisableFlag" style="width: 185px"></el-input> |
|
|
|
<el-form :inline="true" label-position="top" :model="revisionData" :rules="revisionRules" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-form-item label="Revision" prop="engChgLevel" :rules="revisionRules.engChgLevel"> |
|
|
|
<el-input class="inlineNumber numInput" v-model="revisionData.engChgLevel" :disabled="updateRevisionModelDisableFlag" type="number" style="width: 185px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Eng Rev"> |
|
|
|
<el-input v-model="revisionData.engRevision" style="width: 185px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-form :inline="true" label-position="top" :model="revisionData" style="margin-left: 7px;margin-top: -5px;"> |
|
|
|
<el-form-item label="Phase In"> |
|
|
|
<el-form-item label="Phase In" prop="effPhaseInDate" :rules="revisionRules.effPhaseInDate"> |
|
|
|
<el-date-picker style="width: 185px" v-model="revisionData.effPhaseInDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Phase Out"> |
|
|
|
@ -1285,7 +1383,9 @@ |
|
|
|
saveRevision, // 新增物料版本 |
|
|
|
updateRevision, // 编辑物料版本 |
|
|
|
deleteRevision, // 删除物料版本 |
|
|
|
copyPart // 复制物料 |
|
|
|
copyPart, // 复制物料 |
|
|
|
getBomAndRoutingList, // 查询物料的bom和routing集合 |
|
|
|
partInformationToOfficial, // 转正式物料 |
|
|
|
} from '@/api/part/partInformation.js' |
|
|
|
import { |
|
|
|
getFileContentList, // 获取物料单附件列表 |
|
|
|
@ -1387,10 +1487,10 @@ |
|
|
|
limit: 10 |
|
|
|
}, |
|
|
|
// 其它 |
|
|
|
dataListLoading: false, |
|
|
|
|
|
|
|
// 初始页签 |
|
|
|
activeTable: 'part_item', |
|
|
|
inventoryPartTable: '', |
|
|
|
inventoryPartTable: 'General', |
|
|
|
// ======== 数据对象 ======== |
|
|
|
modalData: { |
|
|
|
flag: '', |
|
|
|
@ -1576,6 +1676,9 @@ |
|
|
|
itemList1:[], |
|
|
|
itemList2:[], |
|
|
|
revisionList: [], |
|
|
|
bomAlternativeList: [], |
|
|
|
routingAlternativeList: [], |
|
|
|
copyAttributeList: [], |
|
|
|
// ======== 列表表头 ======== |
|
|
|
columnList: [ |
|
|
|
{ |
|
|
|
@ -2024,11 +2127,9 @@ |
|
|
|
columnLabel: '属性编码', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: true, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
columnWidth: 100, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
@ -2038,15 +2139,13 @@ |
|
|
|
tableName: "物料属性表", |
|
|
|
columnProp: 'itemDesc', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: '属性名称', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: true, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 90, |
|
|
|
columnWidth: 120, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
@ -2060,11 +2159,9 @@ |
|
|
|
columnLabel: '属性类型', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: true, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 70, |
|
|
|
columnWidth: 100, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
@ -2074,34 +2171,30 @@ |
|
|
|
tableName: "物料属性表", |
|
|
|
columnProp: 'textValue', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '文本值', |
|
|
|
align: "left", |
|
|
|
columnLabel: '实测值', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: true, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 70, |
|
|
|
}, |
|
|
|
{ |
|
|
|
userId: this.$store.state.user.name, |
|
|
|
functionId: 104001, |
|
|
|
serialNumber: '104001Table2ValueChooseFlag', |
|
|
|
tableId: "104001Table2", |
|
|
|
tableName: "物料属性表", |
|
|
|
columnProp: 'numValue', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '数字值', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
columnSortable: true, |
|
|
|
sortLv: 0, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
columnWidth: 70, |
|
|
|
columnWidth: 100, |
|
|
|
}, |
|
|
|
// { |
|
|
|
// userId: this.$store.state.user.name, |
|
|
|
// functionId: 104001, |
|
|
|
// serialNumber: '104001Table2ValueChooseFlag', |
|
|
|
// tableId: "104001Table2", |
|
|
|
// tableName: "物料属性表", |
|
|
|
// columnProp: 'numValue', |
|
|
|
// headerAlign: "center", |
|
|
|
// align: "center", |
|
|
|
// columnLabel: '数字值', |
|
|
|
// columnHidden: false, |
|
|
|
// columnImage: false, |
|
|
|
// status: true, |
|
|
|
// fixed: '', |
|
|
|
// columnWidth: 70, |
|
|
|
// }, |
|
|
|
], |
|
|
|
updateColumnItemList: [ |
|
|
|
{ |
|
|
|
@ -2742,6 +2835,90 @@ |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
], |
|
|
|
columnBomAlternativeList: [ |
|
|
|
{ |
|
|
|
columnProp: 'engChgLevel', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'BOM版本', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'bomType', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '制造类型', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'alternativeNo', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '替代编码', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'alternativeDescription', |
|
|
|
headerAlign: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: '替代名称', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
} |
|
|
|
], |
|
|
|
columnRoutingAlternativeList: [ |
|
|
|
{ |
|
|
|
columnProp: 'routingRevision', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: 'Routing版本', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'routingType', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '工艺类型', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'alternativeNo', |
|
|
|
headerAlign: "center", |
|
|
|
align: "center", |
|
|
|
columnLabel: '替代编码', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
}, |
|
|
|
{ |
|
|
|
columnProp: 'alternativeDescription', |
|
|
|
headerAlign: "center", |
|
|
|
align: "left", |
|
|
|
columnLabel: '替代名称', |
|
|
|
columnHidden: false, |
|
|
|
columnImage: false, |
|
|
|
status: true, |
|
|
|
fixed: '', |
|
|
|
} |
|
|
|
], |
|
|
|
// ======== 必填规则 ======== |
|
|
|
rules: { |
|
|
|
partNo: [ |
|
|
|
@ -2765,7 +2942,7 @@ |
|
|
|
trigger: ['blur','change'] |
|
|
|
} |
|
|
|
], |
|
|
|
codeDesc: [ |
|
|
|
codeNo: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: ' ', |
|
|
|
@ -2815,8 +2992,26 @@ |
|
|
|
} |
|
|
|
], |
|
|
|
}, |
|
|
|
revisionRules: { |
|
|
|
engChgLevel: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: ' ', |
|
|
|
trigger: ['blur','change'] |
|
|
|
} |
|
|
|
], |
|
|
|
effPhaseInDate: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: ' ', |
|
|
|
trigger: ['blur','change'] |
|
|
|
} |
|
|
|
], |
|
|
|
}, |
|
|
|
// ======== 复选数据集 ======== |
|
|
|
partSelections: [], |
|
|
|
bomAlternativeSelections: [], |
|
|
|
routingAlternativeSelections: [], |
|
|
|
// ======== 选中的当前行数据 ======== |
|
|
|
partCurrentRow: {}, |
|
|
|
// ======== 模态框开关控制 ======== |
|
|
|
@ -2834,7 +3029,9 @@ |
|
|
|
locationModelFlag: false, |
|
|
|
updateRevisionModelFlag: false, |
|
|
|
updateRevisionModelDisableFlag: false, |
|
|
|
copyPartModelFlag: false |
|
|
|
copyPartModelFlag: false, |
|
|
|
loading: false, |
|
|
|
attributeDialog: true, |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
@ -2873,8 +3070,7 @@ |
|
|
|
queryPartRevisionList () { |
|
|
|
let tempData = { |
|
|
|
site: this.modalData.site, |
|
|
|
partNo: this.modalData.partNo, |
|
|
|
// partType: this.modalData.partType |
|
|
|
partNo: this.modalData.partNo |
|
|
|
} |
|
|
|
queryPartRevisionList(tempData).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
@ -3026,9 +3222,9 @@ |
|
|
|
this.modalData.umId = data.data.umId |
|
|
|
this.modalData.umName = data.data.umName |
|
|
|
this.modalData.weightNet = data.data.weightNet |
|
|
|
this.modalData.uomForWeightNet = data.data.uomForWeightNet |
|
|
|
//this.modalData.uomForWeightNet = data.data.uomForWeightNet |
|
|
|
this.modalData.volumeNet = data.data.volumeNet |
|
|
|
this.modalData.uomForVolumeNet = data.data.uomForVolumeNet |
|
|
|
//this.modalData.uomForVolumeNet = data.data.uomForVolumeNet |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
@ -3056,23 +3252,55 @@ |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// /** |
|
|
|
// * 编辑物料属性 |
|
|
|
// */ |
|
|
|
// updateItemValue () { |
|
|
|
// let tempData = { |
|
|
|
// site: this.$store.state.user.site, |
|
|
|
// partNo: this.partCurrentRow.partNo, |
|
|
|
// codeNo: this.partCurrentRow.codeNo, |
|
|
|
// recordType: 'IP' |
|
|
|
// } |
|
|
|
// getPartItem(tempData).then(({data}) => { |
|
|
|
// if (data && data.code === 0) { |
|
|
|
// this.updatePartItemList = data.rows |
|
|
|
// this.updateItemModelFlag = true |
|
|
|
// } else { |
|
|
|
// this.updatePartItemList = [] |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// }, |
|
|
|
|
|
|
|
clickSave () { |
|
|
|
if (!this.attributeDialog) { // 保存 |
|
|
|
this.updateItemValue() |
|
|
|
} else { // 编辑 |
|
|
|
this.copyAttributeList = JSON.parse(JSON.stringify(this.partItemList)) |
|
|
|
this.attributeDialog = false |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 编辑物料属性 |
|
|
|
*/ |
|
|
|
updateItemValue () { |
|
|
|
this.loading = true |
|
|
|
let tempData = { |
|
|
|
site: this.$store.state.user.site, |
|
|
|
partNo: this.partCurrentRow.partNo, |
|
|
|
codeNo: this.partCurrentRow.codeNo, |
|
|
|
recordType: 'IP' |
|
|
|
itemList: JSON.parse(JSON.stringify(this.copyAttributeList)) |
|
|
|
} |
|
|
|
getPartItem(tempData).then(({data}) => { |
|
|
|
commitItemValue(tempData).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.updatePartItemList = data.rows |
|
|
|
this.updateItemModelFlag = true |
|
|
|
this.getPartItem() |
|
|
|
this.attributeDialog = true |
|
|
|
this.$message.success(data.msg) |
|
|
|
} else { |
|
|
|
this.updatePartItemList = [] |
|
|
|
this.$message.warning(data.msg) |
|
|
|
} |
|
|
|
this.loading = false |
|
|
|
}).catch((error) => { |
|
|
|
this.$message.error(error) |
|
|
|
this.loading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
@ -3080,6 +3308,10 @@ |
|
|
|
* 新增/删除物料属性 |
|
|
|
*/ |
|
|
|
addOrDelItem () { |
|
|
|
if (!this.attributeDialog) { |
|
|
|
this.$message.warning('请保存更改!') |
|
|
|
return |
|
|
|
} |
|
|
|
this.itemSelections1 = null |
|
|
|
this.itemSelections2 = null |
|
|
|
this.itemData.propertiesItemNo = '' |
|
|
|
@ -3411,7 +3643,6 @@ |
|
|
|
this.partClickRow(this.dataList[0]) |
|
|
|
} |
|
|
|
} |
|
|
|
this.dataListLoading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
@ -3436,9 +3667,9 @@ |
|
|
|
umId: '', |
|
|
|
umName: '', |
|
|
|
weightNet: '', |
|
|
|
uomForWeightNet: '', |
|
|
|
uomForWeightNet: 'kg', |
|
|
|
volumeNet: '', |
|
|
|
uomForVolumeNet: '', |
|
|
|
uomForVolumeNet: 'm3', |
|
|
|
lotTrackingCode: 'Order Based', |
|
|
|
active: 'Y', |
|
|
|
remark: '', |
|
|
|
@ -3517,6 +3748,7 @@ |
|
|
|
density: 0, |
|
|
|
variableLeadTimeHour: 0 |
|
|
|
} |
|
|
|
this.inventoryPartTable = 'General' |
|
|
|
this.modalDisableFlag = false |
|
|
|
this.modalFlag = true |
|
|
|
}, |
|
|
|
@ -3623,10 +3855,150 @@ |
|
|
|
variableLeadTimeHour: row.variableLeadTimeHour, |
|
|
|
createDate: row.createDate |
|
|
|
} |
|
|
|
this.inventoryPartTable = 'General' |
|
|
|
this.modalDisableFlag = true |
|
|
|
this.modalFlag = true |
|
|
|
}, |
|
|
|
|
|
|
|
// 转正式物料 |
|
|
|
toBecomeOfficialPartModal (row) { |
|
|
|
this.modalData = { |
|
|
|
flag: '3', |
|
|
|
title: '物料投产', |
|
|
|
site: row.site, |
|
|
|
partNo: row.partNo, |
|
|
|
partDesc: row.partDesc, |
|
|
|
spec: row.spec, |
|
|
|
partTypeDb: row.partTypeDb, |
|
|
|
partType: row.partType, |
|
|
|
familyId: row.familyId, |
|
|
|
familyName: row.familyName, |
|
|
|
groupId: row.groupId, |
|
|
|
groupName: row.groupName, |
|
|
|
umId: row.umId, |
|
|
|
umName: row.umName, |
|
|
|
weightNet: row.weightNet, |
|
|
|
uomForWeightNet: row.uomForWeightNet, |
|
|
|
volumeNet: row.volumeNet, |
|
|
|
uomForVolumeNet: row.uomForVolumeNet, |
|
|
|
lotTrackingCode: row.lotTrackingCode, |
|
|
|
active: row.active, |
|
|
|
remark: row.remark, |
|
|
|
supplierId: row.supplierId, |
|
|
|
supplierName: row.supplierName, |
|
|
|
productGroupId1: row.productGroupId1, |
|
|
|
productGroupName1: row.productGroupName1, |
|
|
|
productGroupId2: row.productGroupId2, |
|
|
|
productGroupName2: row.productGroupName2, |
|
|
|
productGroupId3: row.productGroupId3, |
|
|
|
productGroupName3: row.productGroupName3, |
|
|
|
productGroupId4: row.productGroupId4, |
|
|
|
productGroupName4: row.productGroupName4, |
|
|
|
erpPartNo: row.erpPartNo, |
|
|
|
codeNo: row.codeNo, |
|
|
|
codeDesc: row.codeDesc, |
|
|
|
manufacturerId: row.manufacturerId, |
|
|
|
manufacturerName: row.manufacturerName, |
|
|
|
agentId: row.agentId, |
|
|
|
agentName: row.agentName, |
|
|
|
updateBy: this.$store.state.user.name, |
|
|
|
typeDesignation: row.typeDesignation, |
|
|
|
hazardCode: row.hazardCode, |
|
|
|
hazardDesc: row.hazardDesc, |
|
|
|
assetClass: row.assetClass, |
|
|
|
assetClassDesc: row.assetClassDesc, |
|
|
|
dimQuality: row.dimQuality, |
|
|
|
abcClass: row.abcClass, |
|
|
|
abcClassDesc: row.abcClassDesc, |
|
|
|
frequencyClass: row.frequencyClass, |
|
|
|
lifecycleStage: row.lifecycleStage, |
|
|
|
countryOfOrigin: row.countryOfOrigin, |
|
|
|
countryOfOriginDesc: row.countryOfOriginDesc, |
|
|
|
manufacturingLeadTime: row.manufacturingLeadTime, |
|
|
|
expectedLeadTime: row.expectedLeadTime, |
|
|
|
regionOfOrigin: row.regionOfOrigin, |
|
|
|
regionOfOriginDesc: row.regionOfOriginDesc, |
|
|
|
durabilityWeek: '', |
|
|
|
customsStatNo: row.customsStatNo, |
|
|
|
customsStatDesc: row.customsStatDesc, |
|
|
|
durabilityDay: row.durabilityDay, |
|
|
|
intrastatConvFactor: row.intrastatConvFactor, |
|
|
|
umDesc: row.umDesc, |
|
|
|
status: row.status, |
|
|
|
partStatus: row.partStatus, |
|
|
|
partStatusDesc: row.partStatusDesc, |
|
|
|
configurationId: row.configurationId, |
|
|
|
estimatedMaterialCost: row.estimatedMaterialCost, |
|
|
|
inventoryValuationMethod: row.inventoryValuationMethod, |
|
|
|
partCostGroupId: row.partCostGroupId, |
|
|
|
partCostGroupDesc: row.partCostGroupDesc, |
|
|
|
inventoryPartCostLevel: row.inventoryPartCostLevel, |
|
|
|
invoiceConsideration: row.invoiceConsideration, |
|
|
|
zeroCostFlag: row.zeroCostFlag, |
|
|
|
planningMethod: row.planningMethod, |
|
|
|
planningMethodDesc: row.planningMethodDesc, |
|
|
|
safetyStock: row.safetyStock, |
|
|
|
minOrderQty: row.minOrderQty, |
|
|
|
maxOrderQty: row.maxOrderQty, |
|
|
|
mulOrderQty: row.mulOrderQty, |
|
|
|
safetyLeadTime: row.safetyLeadTime, |
|
|
|
shrinkageFac: row.shrinkageFac, |
|
|
|
stdOrderQty: row.stdOrderQty, |
|
|
|
cumLeadTime: row.cumLeadTime, |
|
|
|
backFlushPart: row.backFlushPart, |
|
|
|
byProdAsSupplyInMrpDb: row.byProdAsSupplyInMrpDb, |
|
|
|
unprotectedLeadTime: row.unprotectedLeadTime, |
|
|
|
issueType: row.issueType, |
|
|
|
mrpControlFlagDb: row.mrpControlFlagDb, |
|
|
|
fixedLeadTimeDay: row.fixedLeadTimeDay, |
|
|
|
overReporting: row.overReporting, |
|
|
|
useTheoreticalDensityDb: row.useTheoreticalDensityDb, |
|
|
|
variableLeadTimeDay: row.variableLeadTimeDay, |
|
|
|
overReportTolerance: row.overReportTolerance, |
|
|
|
fixedLeadTimeHour: row.fixedLeadTimeHour, |
|
|
|
density: row.density, |
|
|
|
variableLeadTimeHour: row.variableLeadTimeHour, |
|
|
|
createDate: row.createDate, |
|
|
|
bomAlternativeList: [], |
|
|
|
routingAlternativeList: [], |
|
|
|
ifsPartNo: '' |
|
|
|
} |
|
|
|
// 查出该物料的BOM和routing的替代 |
|
|
|
this.getBomAndRoutingList() |
|
|
|
this.inventoryPartTable = 'General' |
|
|
|
this.modalDisableFlag = true |
|
|
|
this.modalFlag = true |
|
|
|
}, |
|
|
|
|
|
|
|
// 查出该物料的BOM和routing的替代 |
|
|
|
getBomAndRoutingList () { |
|
|
|
getBomAndRoutingList(this.modalData).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.bomAlternativeList = data.rows.bomList |
|
|
|
this.routingAlternativeList = data.rows.routingList |
|
|
|
} else { |
|
|
|
this.bomAlternativeList = [] |
|
|
|
this.routingAlternativeList = [] |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
bomAlternativeClickRow (row) { |
|
|
|
this.$refs.bomAlternativeTable.toggleRowSelection(row) |
|
|
|
}, |
|
|
|
|
|
|
|
routingAlternativeClickRow (row) { |
|
|
|
this.$refs.routingAlternativeTable.toggleRowSelection(row) |
|
|
|
}, |
|
|
|
|
|
|
|
selectionBomAlternative (val) { |
|
|
|
this.bomAlternativeSelections = val |
|
|
|
}, |
|
|
|
|
|
|
|
selectionRoutingAlternative (val) { |
|
|
|
this.routingAlternativeSelections = val |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 选择代理商 |
|
|
|
*/ |
|
|
|
@ -4089,6 +4461,7 @@ |
|
|
|
refreshDetailList () { |
|
|
|
this.getPartAgent() |
|
|
|
this.getPartManufacturer() |
|
|
|
this.getDefaultLocation() |
|
|
|
}, |
|
|
|
|
|
|
|
// ======== 新增/编辑/删除方法 ======== |
|
|
|
@ -4137,6 +4510,33 @@ |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
} else if (this.modalData.flag === '3') { // 转正式物料 |
|
|
|
if (this.modalData.ifsPartNo === '' || this.modalData.ifsPartNo == null) { |
|
|
|
this.$message.warning('请填写IFS物料编码!') |
|
|
|
return |
|
|
|
} |
|
|
|
if (this.modalData.partNo === this.modalData.ifsPartNo) { |
|
|
|
this.$message.warning('IFS物料编码不能等于PLM物料编码!') |
|
|
|
return |
|
|
|
} |
|
|
|
this.modalData.bomAlternativeList = this.bomAlternativeSelections |
|
|
|
this.modalData.routingAlternativeList = this.routingAlternativeSelections |
|
|
|
partInformationToOfficial(this.modalData).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
this.getDataList() |
|
|
|
this.modalFlag = false |
|
|
|
this.$message({ |
|
|
|
message: '操作成功', |
|
|
|
type: 'success', |
|
|
|
duration: 1500, |
|
|
|
onClose: () => {} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.$alert(data.msg, '错误', { |
|
|
|
confirmButtonText: '确定' |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
partInformationEdit(this.modalData).then(({data}) => { |
|
|
|
if (data && data.code === 0) { |
|
|
|
|