| | |
| | | </div> |
| | | <div class="page-main"> |
| | | <div class="document-basic" style="height: 28%;"> |
| | | <el-form |
| | | :model="dataForm" |
| | | :rules="dataRule" |
| | | ref="dataForm" |
| | | style="width: 100%" |
| | | class="l-mes" |
| | | :disabled="!editable" |
| | | label-width="110px" |
| | | > |
| | | <el-form :model="dataForm" :rules="dataRule" ref="dataForm" style="width: 100%" class="l-mes" |
| | | :disabled="!editable" label-width="110px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="name" label="文件名称"> |
| | | <el-tooltip class="item" effect="dark" :content="dataForm.name" > |
| | | <el-input |
| | | v-model="dataForm.name" |
| | | placeholder="文件名称" |
| | | ></el-input> |
| | | <el-input v-model="dataForm.name" placeholder="文件名称"></el-input> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="6"> |
| | | <el-form-item label="产品零件号" prop="partNo"> |
| | | <el-input disabled v-model="dataForm.partNo" placeholder="请选择零件"> |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-search" |
| | | @click="openPartDialog()" |
| | | ></el-button> |
| | | <el-button slot="append" icon="el-icon-search" @click="openPartDialog()"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="version" label="版本号"> |
| | | <el-input |
| | | v-model="dataForm.version" |
| | | placeholder="版本号" |
| | | ></el-input> |
| | | <el-input v-model="dataForm.version" placeholder="版本号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="BOM" prop="bomId"> |
| | | <el-select |
| | | :disabled="dataForm.id != null" |
| | | v-model="dataForm.bomId" |
| | | placeholder="" |
| | | style="width: 100%;" |
| | | <el-select :disabled="dataForm.id != null" v-model="dataForm.bomId" placeholder="" style="width: 100%;" |
| | | filterable> |
| | | <el-option |
| | | v-for="item in bomList" |
| | | :key="item.id" |
| | | :label="item.number" |
| | | :value="item.id" |
| | | /> |
| | | <el-option v-for="item in bomList" :key="item.id" :label="item.number" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="工艺路线编号" prop="routingList"> |
| | | <el-select |
| | | :disabled="dataForm.id != null" |
| | | v-model="dataForm.routingId" |
| | | placeholder="" |
| | | style="width: 100%;" |
| | | filterable> |
| | | <el-option |
| | | v-for="item in routingList" |
| | | :key="item.id" |
| | | :label="item.routing_no" |
| | | :value="item.id" |
| | | /> |
| | | <el-select :disabled="dataForm.id != null" v-model="dataForm.routingId" placeholder="" |
| | | style="width: 100%;" filterable> |
| | | <el-option v-for="item in routingList" :key="item.id" :label="item.routing_no" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="项目号" prop="projectNo"> |
| | | <el-input |
| | | v-model="dataForm.projectNo" |
| | | placeholder="项目号" |
| | | style="width:100%" |
| | | ></el-input> |
| | | <el-input v-model="dataForm.projectNo" placeholder="项目号" style="width:100%"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="dataForm.remark" |
| | | placeholder="备注" |
| | | style="width:100%" |
| | | ></el-input> |
| | | <el-input type="textarea" v-model="dataForm.remark" placeholder="备注" style="width:100%"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | |
| | | <div class="document-detail"> |
| | | <el-tabs type="card" style="width: 100%;height: 100%"> |
| | | <el-tab-pane |
| | | label="原材料用量" |
| | | style="height: 100%" |
| | | class="orimaterial-quantity" |
| | | > |
| | | <el-card |
| | | shadow="never" |
| | | style="margin-top: 12px;border: 1px solid #cfd5de;" |
| | | > |
| | | <el-tab-pane label="原材料用量" style="height: 100%" class="orimaterial-quantity"> |
| | | <el-card shadow="never" style="margin-top: 12px;border: 1px solid #cfd5de;"> |
| | | <div slot="header"> |
| | | <div> |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | class="blue-but" |
| | | v-if="editable" |
| | | @click="calcMaterialCost()" |
| | | >计算用量 |
| | | <el-button type="text" size="small" class="blue-but" v-if="editable" @click="calcMaterialCost()">计算用量 |
| | | </el-button> |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | @click="exportMaterialCost()" |
| | | >导出 |
| | | <el-button type="text" size="small" @click="exportMaterialCost()">导出 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="materialCostList" |
| | | border |
| | | height="650" |
| | | :span-method="objectSpanMethod" |
| | | :header-cell-style="{ color: '#999' }" |
| | | class="document-materialcost-table" |
| | | show-summary |
| | | :summary-method="getSummaries" |
| | | ref="summeryTable" |
| | | > |
| | | <el-table-column |
| | | label="成品" |
| | | prop="finishedProduct" |
| | | align="center" |
| | | > |
| | | <el-table :data="materialCostList" border height="650" :span-method="objectSpanMethod" |
| | | :header-cell-style="{ color: '#999' }" class="document-materialcost-table" show-summary |
| | | :summary-method="getSummaries" ref="summeryTable"> |
| | | <el-table-column label="成品" prop="finishedProduct" align="center"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="Bom编号" |
| | | prop="bomNumber" |
| | | align="center" |
| | | > |
| | | <el-table-column label="Bom编号" prop="bomNumber" align="center"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="工序" |
| | | prop="operationName" |
| | | align="center" |
| | | > |
| | | <el-table-column label="工序" prop="operationName" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="物料编号" prop="partNo" align="center"> |
| | | </el-table-column> |
| | |
| | | </el-table> |
| | | </el-card> |
| | | </el-tab-pane> |
| | | <el-tab-pane |
| | | class="final-product-checkout" |
| | | label="成品检测" |
| | | style="height: 100%" |
| | | > |
| | | <TeststandardDialog |
| | | :editable="editable" |
| | | :key="dataForm.id" |
| | | :documentId="dataForm.id" |
| | | > |
| | | <el-tab-pane class="final-product-checkout" label="成品检测" style="height: 100%"> |
| | | <TeststandardDialog :editable="editable" :key="dataForm.id" :documentId="dataForm.id"> |
| | | </TeststandardDialog> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="产品结构工序参数" style="height: 100%"> |
| | | <div class="document-related-stock-part"> |
| | | <div |
| | | style="padding-left:18px;font-size:14px;font-weight:700;color:#000;height:20px;line-height:20px;" |
| | | > |
| | | <div style="padding-left:18px;font-size:14px;font-weight:700;color:#000;height:20px;line-height:20px;"> |
| | | <span>相关库存零件</span> |
| | | </div> |
| | | <el-table |
| | | :data="relatedStockPartList" |
| | | @row-click="clickRelatedStockPart" |
| | | highlight-current-row |
| | | height="188px" |
| | | :header-cell-style="relatedStockPartTableHeaderCellStyle" |
| | | :row-style="{ height: '0' }" |
| | | :cell-style="{ padding: '1px' }" |
| | | > |
| | | <el-table-column |
| | | label="零件编号" |
| | | prop="partNo" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table :data="relatedStockPartList" @row-click="clickRelatedStockPart" highlight-current-row |
| | | height="188px" :header-cell-style="relatedStockPartTableHeaderCellStyle" :row-style="{ height: '0' }" |
| | | :cell-style="{ padding: '1px' }"> |
| | | <el-table-column label="零件编号" prop="partNo" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="零件描述" |
| | | prop="partName" |
| | | align="center" |
| | | width="400" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="零件描述" prop="partName" align="center" width="400" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="工艺路线编号" |
| | | prop="routingNo" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="工艺路线编号" prop="routingNo" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="工艺路线版本" |
| | | prop="routingVersion" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="工艺路线版本" prop="routingVersion" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="工艺替代号" |
| | | prop="routingAlternativeNo" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="工艺替代号" prop="routingAlternativeNo" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="工艺替代描述" |
| | | prop="routingAlternativeDesc" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="工艺替代描述" prop="routingAlternativeDesc" align="center" |
| | | :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="BOM号" |
| | | prop="bomNo" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="BOM号" prop="bomNo" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="BOM版本" |
| | | prop="bomVersion" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="BOM版本" prop="bomVersion" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="BOM替代号" |
| | | prop="bomAlternativeNo" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="BOM替代号" prop="bomAlternativeNo" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="BOM替代描述" |
| | | prop="bomAlternativeDesc" |
| | | align="center" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <el-table-column label="BOM替代描述" prop="bomAlternativeDesc" align="center" :show-overflow-tooltip="true"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | |
| | | </el-button> |
| | | </el-tooltip> |
| | | </div> --> |
| | | <el-collapse |
| | | v-model="currTechnologyBomPartName" |
| | | accordion |
| | | @change="handleCompleteproductstructureChange" |
| | | > |
| | | <el-collapse-item |
| | | v-for="(item, i) in completeproductstructureData" |
| | | :key="i" |
| | | :name="item.bomRoutingId" |
| | | > |
| | | <el-collapse v-model="currTechnologyBomPartName" accordion @change="handleCompleteproductstructureChange"> |
| | | <el-collapse-item v-for="(item, i) in completeproductstructureData" :key="i" :name="item.bomRoutingId"> |
| | | <template slot="title"> |
| | | <el-checkbox |
| | | class="completeproductstructure-checkout" |
| | | v-model="item.expand" |
| | | disabled |
| | | > |
| | | <span style="font-weight:bold">工艺路线编号:</span |
| | | >{{ item.routingNo }} |
| | | <span style="font-weight:bold">零件号:</span |
| | | >{{ item.partNo }} |
| | | <span style="font-weight:bold">零件名称:</span |
| | | >{{ item.partName }} |
| | | <span style="font-weight:bold">Bom编号:</span |
| | | >{{ item.number == null ? '无' : item.number }} |
| | | <el-checkbox class="completeproductstructure-checkout" v-model="item.expand" disabled> |
| | | <span style="font-weight:bold">工艺路线编号:</span>{{ item.routingNo }} |
| | | <span style="font-weight:bold">零件号:</span>{{ item.partNo }} |
| | | <span style="font-weight:bold">零件名称:</span>{{ item.partName }} |
| | | <span style="font-weight:bold">Bom编号:</span>{{ item.number == null ? '无' : item.number }} |
| | | </el-checkbox> |
| | | </template> |
| | | <div style="display:flex;"> |
| | |
| | | </div> --> |
| | | <div |
| | | style="font-size:13px;font-weight:bold;cursor: pointer;margin-left: 10px;border-radius:2px 2px 0px 0px;width:80px;text-align:center;" |
| | | :class="['highlight-tab-class']" |
| | | > |
| | | :class="['highlight-tab-class']"> |
| | | 工序参数 |
| | | </div> |
| | | </div> |
| | |
| | | </div> --> |
| | | |
| | | <div class="document-technology-div" v-show="item.showBom"> |
| | | <div |
| | | style="border: 1px solid #ebeef5;height: 440px;overflow: auto;" |
| | | > |
| | | <el-collapse |
| | | v-model="currTechnologyOperationName" |
| | | accordion |
| | | @change=" |
| | | <div style="border: 1px solid #ebeef5;height: 440px;overflow: auto;"> |
| | | <el-collapse v-model="currTechnologyOperationName" accordion @change=" |
| | | handleTechnologyOperationChange( |
| | | $event, |
| | | item.bomRoutingId |
| | | ) |
| | | " |
| | | > |
| | | <el-collapse-item |
| | | v-for="(ele, j) in item.technologyOperationData" |
| | | :key="j" |
| | | :name="ele.id" |
| | | > |
| | | <template slot="title" |
| | | ><span style="font-weight:300" |
| | | > 工序名称:</span |
| | | >{{ ele.operationName }} |
| | | <span style="font-weight:300">工序编号:</span |
| | | >{{ ele.operationNo }} |
| | | "> |
| | | <el-collapse-item v-for="(ele, j) in item.technologyOperationData" :key="j" :name="ele.id"> |
| | | <template slot="title"><span style="font-weight:300"> 工序名称:</span>{{ |
| | | ele.operationName }} |
| | | <span style="font-weight:300">工序编号:</span>{{ ele.operationNo }} |
| | | </template> |
| | | <el-tabs v-model="activeTemplateName" type="card"> |
| | | <el-tab-pane |
| | | v-for="(paramTab, index) in paramTabs" |
| | | :key="index" |
| | | :label="paramTab.label" |
| | | :name="paramTab.name" |
| | | > |
| | | <el-tab-pane v-for="(paramTab, index) in paramTabs" :key="index" :label="paramTab.label" |
| | | :name="paramTab.name"> |
| | | <el-table :data="paramTab.params"> |
| | | <el-table-column |
| | | prop="parameterItem" |
| | | label="名称" |
| | | align="center" |
| | | > |
| | | <el-table-column prop="parameterItem" label="名称" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span |
| | | >{{ scope.row.parameterItem }}({{ |
| | | <span>{{ scope.row.parameterItem }}({{ |
| | | scope.row.unit |
| | | }})</span |
| | | > |
| | | }})</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="paramValue" |
| | | label="值" |
| | | align="center" |
| | | ></el-table-column> |
| | | <el-table-column prop="paramValue" label="值" align="center"></el-table-column> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | <!-- <el-tab-pane label="备注" style="height: 100%"> |
| | |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | <completeproductstructureDialog |
| | | :currshowlist.sync="showCompleteproductstructure" |
| | | :queryParam="bomQueryParam" |
| | | @listenToCompleteproductstructureEvent="selectCompleteproductstructure" |
| | | /> |
| | | <routingDialog |
| | | :currshowlist.sync="showTechnology" |
| | | :queryParam="queryParam" |
| | | @listenToRoutingEvent="selectTechnology" |
| | | /> |
| | | <qualityStandardDialog |
| | | :currshowlist.sync="showQualityStandard" |
| | | @listenToSelectTestStandardEvent="selectQualityStandard" |
| | | /> |
| | | <completeproductstructureDialog :currshowlist.sync="showCompleteproductstructure" :queryParam="bomQueryParam" |
| | | @listenToCompleteproductstructureEvent="selectCompleteproductstructure" /> |
| | | <routingDialog :currshowlist.sync="showTechnology" :queryParam="queryParam" |
| | | @listenToRoutingEvent="selectTechnology" /> |
| | | <qualityStandardDialog :currshowlist.sync="showQualityStandard" |
| | | @listenToSelectTestStandardEvent="selectQualityStandard" /> |
| | | <partDialog :currshowlist.sync="showPart" @listenToPartEvent="selectPart" /> |
| | | <spotCheckRule |
| | | :currshowlist.sync="spotCheckRuleShow" |
| | | :docBomId="currDocBomId" |
| | | :routingOperationId="currRoutingOperationId" |
| | | :routingOperationName="currRoutingOperationName" |
| | | @refreshSpotCheckRuleList="refreshSpotCheckRuleList" |
| | | /> |
| | | <spotCheckRuleEdit |
| | | :currshowlist.sync="editSpotCheckRuleShow" |
| | | :documentSamplingRuleId="currDocumentSamplingRuleId" |
| | | @refreshSpotCheckRuleList="refreshSpotCheckRuleList" |
| | | /> |
| | | <spotCheckRule :currshowlist.sync="spotCheckRuleShow" :docBomId="currDocBomId" |
| | | :routingOperationId="currRoutingOperationId" :routingOperationName="currRoutingOperationName" |
| | | @refreshSpotCheckRuleList="refreshSpotCheckRuleList" /> |
| | | <spotCheckRuleEdit :currshowlist.sync="editSpotCheckRuleShow" :documentSamplingRuleId="currDocumentSamplingRuleId" |
| | | @refreshSpotCheckRuleList="refreshSpotCheckRuleList" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } |
| | | }, |
| | | |
| | | created() { |
| | | activated() { |
| | | this.dataForm.id = this.$route.query.id |
| | | this.init() |
| | | this.getDict() |
| | |
| | | }, |
| | | watch: { |
| | | 'dataForm.partId'(newValue, oldValue) { |
| | | if (oldValue) { |
| | | this.dataForm.bomId = null |
| | | } |
| | | // if (oldValue) { |
| | | // this.dataForm.bomId = null |
| | | // } |
| | | if (newValue) { |
| | | getBomList( |
| | | Object.assign({ |
| | |
| | | } else { |
| | | this.routingList = [] |
| | | } |
| | | }, |
| | | '$route.query.id': { |
| | | immediate: true, |
| | | handler(newVal, oldVal) { |
| | | if (this.$route.name == '工艺文件详情') { |
| | | if (newVal) { |
| | | this.dataForm.id = this.$route.query.id |
| | | this.init() |
| | | this.getDict() |
| | | this.getBomTypeDbOptions() |
| | | this.initReportTypeSelect() |
| | | } else { |
| | | this.dataForm.id = null |
| | | this.init() |
| | | this.getDict() |
| | | this.getBomTypeDbOptions() |
| | | this.initReportTypeSelect() |
| | | this.dataForm = { |
| | | id: null, |
| | | bomId: null, |
| | | routingId: null, |
| | | number: null, |
| | | name: null, |
| | | version: null, |
| | | projectNo: null, |
| | | projectType: null, |
| | | country: null, |
| | | state: null, |
| | | remark: null, |
| | | partNo: null, |
| | | partId: null, |
| | | partName: null, |
| | | docType: 'M', |
| | | insulationColor: null, |
| | | sheathColor: null, |
| | | testStandard: false, |
| | | updateRealUser: null, |
| | | updateRealTime: null |
| | | } |
| | | this.materialCostList = [] |
| | | this.relatedStockPartList = [] |
| | | this.currTechnologyBomPartName = null; |
| | | this.completeproductstructureData = [] |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | methods: { |
| | |
| | | }, |
| | | handleFlowExceed(files, fileList) { |
| | | this.$message.warning( |
| | | `当前限制选择 1 个流程图文件,本次选择了 ${ |
| | | files.length |
| | | `当前限制选择 1 个流程图文件,本次选择了 ${files.length |
| | | } 个流程图文件,共选择了 ${files.length + fileList.length} 个流程图文件` |
| | | ) |
| | | }, |
| | |
| | | } |
| | | |
| | | /*自定义disabled状态下checkbox的样式*/ |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | .el-checkbox__inner { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { |
| | | background-color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | + span.el-checkbox__label { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked+span.el-checkbox__label { |
| | | color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | .el-checkbox__inner { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled .el-checkbox__inner { |
| | | background-color: #ffffff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | + span.el-checkbox__label { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled+span.el-checkbox__label { |
| | | color: #606266; |
| | | cursor: pointer; |
| | | } |
| | |
| | | .GooFlow .ico .ico_start:before { |
| | | color: red; |
| | | } |
| | | |
| | | .highlight-tab-class { |
| | | color: #006eff; |
| | | background: #e4e7ed; |
| | | border-top: 1px solid #006eff; |
| | | } |
| | | |
| | | .unhighlight-tab-class { |
| | | border: 1px solid #e4e7ed; |
| | | border-bottom: none; |