Browse Source

2025/8/18

java8
Aoi_Tori 5 months ago
parent
commit
6eafaf9e91
  1. 4
      src/api/part/quicklyCreateBom.js
  2. 94
      src/views/modules/part/bom_create.vue
  3. 3
      src/views/modules/part/part_create.vue
  4. 1239
      src/views/modules/part/quicklyCreateBom.vue
  5. 80
      src/views/modules/part/routing_create.vue
  6. 1
      src/views/modules/quote/detail/primary/quoteDetailBom.vue
  7. 1
      src/views/modules/quote/detail/primary/quoteDetailRouting.vue
  8. 2
      src/views/modules/quote/detail/quoteDetail.vue

4
src/api/part/quicklyCreateBom.js

@ -5,10 +5,12 @@ export const nodeSave = data => createAPI(`/part/quicklyBom/nodeSave`,'post',dat
export const nodeDelete = data => createAPI(`/part/quicklyBom/nodeDelete`,'post',data)
export const nodeEdit = data => createAPI(`/part/quicklyBom/nodeEdit`,'post',data)
export const getBomInformationByPartNo = data => createAPI(`/part/quicklyBom/getBomInformationByPartNo`,'post',data)
export const getBomInformationListByPartNo = data => createAPI(`/part/quicklyBom/getBomInformationListByPartNo`,'post',data)
export const savePartInfo = data => createAPI(`/part/quicklyBom/savePartInfo`,'post',data)
export const updatePartNoOfNode = data => createAPI(`/part/quicklyBom/updatePartNoOfNode`,'post',data)
export const saveBomHeader = data => createAPI(`/part/quicklyBom/saveBomHeader`,'post',data)
export const getRoutingInformationByPartNo = data => createAPI(`/part/quicklyBom/getRoutingInformationByPartNo`,'post',data)
export const getRoutingInformationListByPartNo = data => createAPI(`/part/quicklyBom/getRoutingInformationListByPartNo`,'post',data)
export const saveRoutingHeader = data => createAPI(`/part/quicklyBom/saveRoutingHeader`,'post',data)
export const batchBuildInfo = data => createAPI(`/part/quicklyBom/batchBuildInfo`,'post',data)
export const resetNodePartInfo = data => createAPI(`/part/quicklyBom/resetNodePartInfo`,'post',data)
@ -17,3 +19,5 @@ export const saveMainPartInfo = data => createAPI(`/part/quicklyBom/saveMainPart
export const templateAdd = data => createAPI(`/part/quicklyBom/templateAdd`,'post',data)
export const getTemplateList = data => createAPI(`/part/quicklyBom/getTemplateList`,'post',data)
export const chooseTemplate = data => createAPI(`/part/quicklyBom/chooseTemplate`,'post',data)
export const getBomAndRoutingRevision = data => createAPI(`/part/quicklyBom/getBomAndRoutingRevision`,'post',data)
export const setRevision = data => createAPI(`/part/quicklyBom/setRevision`,'post',data)

94
src/views/modules/part/bom_create.vue

@ -61,54 +61,58 @@
<el-form-item :label="'损耗率%'">
<el-input-number :controls="false" :step="0" disabled v-model="modalData.shrinkageFactor" style="width: 78px"></el-input-number>
</el-form-item>
<el-form-item>
<el-button v-if="modalData.flag === '1' && headerSaveFlag" :loading="saveHeaderLoading" type="primary" @click="saveBomHeader" style="margin-top: 23px;width: 100px">保存</el-button>
<el-form-item :label="'状态'">
<el-input v-model="detailData.status" readonly style="width: 150px"></el-input>
</el-form-item>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" :loading="alternativeLoading" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" :loading="alternativeLoading" @click="updateStatusToObsolete">Retire</el-button>
<!-- <el-form-item>-->
<!-- <el-button v-if="modalData.flag === '1' && headerSaveFlag" :loading="saveHeaderLoading" type="primary" @click="saveBomHeader" style="margin-top: 23px;width: 100px">保存</el-button>-->
<!-- </el-form-item>-->
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;">
<el-form-item label="备注">
<el-input type="textarea" v-model="modalData.noteText" :rows="3" resize='none' show-word-limit style="width: 885px;height: 20px"></el-input>
</el-form-item>
</el-form>
<el-tabs v-model="detailTable" style="margin-top: 50px; width: 100%; min-height: 120px" type="border-card" class="detail-tab">
<!-- BOM明细信息页签 -->
<el-tab-pane label="Product Structure" name="bom_detail">
<el-form label-position="top" style="margin-top: -10px">
<el-form-item>
<el-button type="primary" :loading="alternativeLoading" @click="updateBomDetail" style="margin-left: 7px">编辑</el-button>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" :loading="alternativeLoading" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" :loading="alternativeLoading" @click="updateStatusToObsolete">Retire</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">
<el-form-item :label="'替代编码'">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 165px">
<el-option
v-for = "(i, index) in detailDataList"
:key = "index"
:label = "i.alternativeNo"
:value = "i.alternativeNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'替代名称'">
<el-input v-model="detailData.alternativeDescription" readonly style="width: 300px"></el-input>
</el-form-item>
<el-form-item :label="'状态'">
<el-input v-model="detailData.status" readonly style="width: 150px"></el-input>
</el-form-item>
<el-form-item :label="'最小订单数'">
<el-input class="inlineNumber numInput" v-model="detailData.minLotQty" readonly type="number" style="width: 100px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" style="margin-left: 7px">
<el-form-item label="备注">
<el-input type="textarea" v-model="detailData.detailNoteText" :rows="3" resize='none' show-word-limit readonly style="width: 885px;height: 20px"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<el-tabs v-model="subDetailTable" style="width: 100%; min-height: 350px" type="border-card" @tab-click="queryBomComponentTable" class="sub_detail-tab">
<!-- <el-tabs v-model="detailTable" style="margin-top: 50px; width: 100%; min-height: 120px" type="border-card" class="detail-tab">-->
<!-- &lt;!&ndash; BOM明细信息页签 &ndash;&gt;-->
<!-- <el-tab-pane label="Product Structure" name="bom_detail">-->
<!-- <el-form label-position="top" style="margin-top: -10px">-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" :loading="alternativeLoading" @click="updateBomDetail" style="margin-left: 7px">编辑</el-button>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">-->
<!-- <el-form-item :label="'替代编码'">-->
<!-- <el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 165px">-->
<!-- <el-option-->
<!-- v-for = "(i, index) in detailDataList"-->
<!-- :key = "index"-->
<!-- :label = "i.alternativeNo"-->
<!-- :value = "i.alternativeNo">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="'替代名称'">-->
<!-- <el-input v-model="detailData.alternativeDescription" readonly style="width: 300px"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="'状态'">-->
<!-- <el-input v-model="detailData.status" readonly style="width: 150px"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="'最小订单数'">-->
<!-- <el-input class="inlineNumber numInput" v-model="detailData.minLotQty" readonly type="number" style="width: 100px"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <el-form :inline="true" label-position="top" :model="detailData" style="margin-left: 7px">-->
<!-- <el-form-item label="备注">-->
<!-- <el-input type="textarea" v-model="detailData.detailNoteText" :rows="3" resize='none' show-word-limit readonly style="width: 885px;height: 20px"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- </el-tab-pane>-->
<!-- </el-tabs>-->
<el-tabs v-model="subDetailTable" style="margin-top: 50px; width: 100%; min-height: 350px" type="border-card" @tab-click="queryBomComponentTable" class="sub_detail-tab">
<!-- BOM子明细信息页签 -->
<el-tab-pane label="Components" name="bom_sub_detail">
<el-form label-position="top" style="margin-top: 7px">
@ -1786,8 +1790,12 @@ export default {
//
saveComponentModal () {
if (this.detailData.alternativeNo === '' || this.detailData.alternativeNo == null) {
this.$message.warning('请先选择替代!')
// if (this.detailData.alternativeNo === '' || this.detailData.alternativeNo == null) {
// this.$message.warning('')
// return
// }
if (this.modalData.flag==='1'&&headerSaveFlag) {
this.$message.warning('请先保存!')
return
}
this.componentData = {

3
src/views/modules/part/part_create.vue

@ -2176,7 +2176,7 @@ export default {
this.modalData = {
flag: '1',
title: '物料新增',
site: '',
site: this.$store.state.user.site,
buNo: '',
bu: this.userBuList[0].buNo,
partNo: '',
@ -3507,6 +3507,7 @@ export default {
});
this.modalData.umId2 = data.data.umId
this.modalData.familyID = data.data.familyId
if (this.modalData.partType2&&this.modalData.partType2==='Manufactured')
this.modalData.templateNo = data.data.bomTemplateNo
this.modalData.templateName = data.data.bomTemplateName
}

1239
src/views/modules/part/quicklyCreateBom.vue
File diff suppressed because it is too large
View File

80
src/views/modules/part/routing_create.vue

@ -46,52 +46,54 @@
<el-option label="Prototype" value="Prototype"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button v-if="modalData.flag === '1' && headerSaveFlag" :loading="saveHeaderLoading" type="primary" @click="saveRoutingHeader" style="margin-top: 23px;width: 100px">保存</el-button>
<el-form-item :label="'状态'">
<el-input v-model="detailData.status" readonly style="width: 150px"></el-input>
</el-form-item>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" :loading="alternativeLoading" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" :loading="alternativeLoading" @click="updateStatusToObsolete">Retire</el-button>
<el-button type="primary" :loading="alternativeLoading" @click="createByStandardOperation">基于标准工序快速创建</el-button>
<!-- <el-form-item>-->
<!-- <el-button v-if="modalData.flag === '1' && headerSaveFlag" :loading="saveHeaderLoading" type="primary" @click="saveRoutingHeader" style="margin-top: 23px;width: 100px">保存</el-button>-->
<!-- </el-form-item>-->
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px">
<el-form-item label="备注">
<el-input type="textarea" v-model="modalData.noteText" :rows="3" resize='none' show-word-limit style="width: 885px;height: 20px"></el-input>
</el-form-item>
</el-form>
<el-tabs v-model="detailTable" style="margin-top: 50px; width: 100%" type="border-card" class="detail-tab">
<!-- Routing明细信息页签 -->
<el-tab-pane label="Routings" name="routing_detail">
<el-form label-position="top" style="margin-top: -10px">
<el-form-item>
<el-button type="primary" :loading="alternativeLoading" @click="updateRoutingDetail" style="margin-left: 7px">编辑</el-button>
<el-button v-if="detailData.status === 'Tentative' || detailData.status === 'Obsolete'" type="primary" :loading="alternativeLoading" @click="updateStatusToBuildable">Build</el-button>
<el-button v-if="detailData.status === 'Buildable' && (modalData.effPhaseOutDate == null || modalData.effPhaseOutDate === '')" type="primary" :loading="alternativeLoading" @click="updateStatusToObsolete">Retire</el-button>
<el-button type="primary" :loading="alternativeLoading" @click="createByStandardOperation">基于标准工序快速创建</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">
<el-form-item :label="'替代编码'">
<el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 165px">
<el-option
v-for = "(i, index) in detailDataList"
:key = "index"
:label = "i.alternativeNo"
:value = "i.alternativeNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'替代名称'">
<el-input v-model="detailData.alternativeDescription" readonly style="width: 300px"></el-input>
</el-form-item>
<el-form-item :label="'状态'">
<el-input v-model="detailData.status" readonly style="width: 150px"></el-input>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="detailData" style="margin-left: 7px">
<el-form-item label="备注">
<el-input type="textarea" v-model="detailData.detailNoteText" :rows="3" resize='none' show-word-limit readonly style="width: 885px;height: 20px"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<el-tabs v-show="detailTable === 'routing_detail'" v-model="subDetailTable" style="width: 100%; min-height: 350px" type="border-card" class="sub_detail-tab">
<!-- <el-tabs v-model="detailTable" style="margin-top: 50px; width: 100%" type="border-card" class="detail-tab">-->
<!-- &lt;!&ndash; Routing明细信息页签 &ndash;&gt;-->
<!-- <el-tab-pane label="Routings" name="routing_detail">-->
<!-- <el-form label-position="top" style="margin-top: -10px">-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" :loading="alternativeLoading" @click="updateRoutingDetail" style="margin-left: 7px">编辑</el-button>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <el-form :inline="true" label-position="top" :model="detailData" :rules="rules" style="margin-left: 7px">-->
<!-- <el-form-item :label="'替代编码'">-->
<!-- <el-select v-model="detailData.alternativeNo" @change="alternativeChange" style="width: 165px">-->
<!-- <el-option-->
<!-- v-for = "(i, index) in detailDataList"-->
<!-- :key = "index"-->
<!-- :label = "i.alternativeNo"-->
<!-- :value = "i.alternativeNo">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="'替代名称'">-->
<!-- <el-input v-model="detailData.alternativeDescription" readonly style="width: 300px"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <el-form :inline="true" label-position="top" :model="detailData" style="margin-left: 7px">-->
<!-- <el-form-item label="备注">-->
<!-- <el-input type="textarea" v-model="detailData.detailNoteText" :rows="3" resize='none' show-word-limit readonly style="width: 885px;height: 20px"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- </el-tab-pane>-->
<!-- </el-tabs>-->
<el-tabs v-show="detailTable === 'routing_detail'" v-model="subDetailTable" style="margin-top: 50px;width: 100%; min-height: 350px" type="border-card" class="sub_detail-tab">
<!-- Routing子明细信息页签 -->
<el-tab-pane label="Operations" name="routing_sub_detail">
<el-form label-position="top" style="margin-top: 7px">

1
src/views/modules/quote/detail/primary/quoteDetailBom.vue

@ -311,6 +311,7 @@ export default {
handleQueryQuoteDetailBomTree() {
let params = {
id: this.quoteDetail.id,
queryType: 'bom'
}
this.queryTreeLoading = true;
queryQuoteDetailBomTree(params).then(({data}) => {

1
src/views/modules/quote/detail/primary/quoteDetailRouting.vue

@ -567,6 +567,7 @@ export default {
handleQueryQuoteDetailBomTree(){
let params = {
id: this.quoteDetail.id,
queryType: 'routing'
}
this.queryTreeLoading = true;
queryQuoteDetailBomTree(params).then(({data})=>{

2
src/views/modules/quote/detail/quoteDetail.vue

@ -798,7 +798,7 @@ export default {
</template>
<el-table overflow-y: scroll ref="table1" v-loading="queryLoading" border :data="dataList" style="width: 100%;margin-top: 5px"
:height="height" @header-dragend="handleColumnResize" :header-cell-style="getHeaderStyle">
<el-table-column width="'3.1vw'" align="center" label="默认行" v-if="quoteGroupDetail && quoteGroupDetail.status === '草稿'">
<el-table-column width="50" align="center" label="默认行" v-if="quoteGroupDetail && quoteGroupDetail.status === '草稿'">
<template slot-scope="{row}">
<el-radio
class="radio"

Loading…
Cancel
Save