Browse Source

2026-03-18

Inventory Part和项目信息页面增加【获取编码】【编码详情】功能
master
fengyuan_yang 4 weeks ago
parent
commit
67ad1864f8
  1. 12
      src/views/modules/code/generation.vue
  2. 97
      src/views/modules/part/partInformation.vue
  3. 94
      src/views/modules/project/projectInfo/com_project_info_part.vue

12
src/views/modules/code/generation.vue

@ -8,6 +8,12 @@ import itemValue from "./item/itemValue.vue";
export default {
name: "CodeGeneration",
props: {
dialogMode: {
type: Boolean,
default: false
}
},
computed: {
itemValue() {
return itemValue
@ -232,6 +238,11 @@ export default {
this.saveCodeLoading = true;
saveDrawing(params).then(({data})=>{
if (data && data.code === 0){
if (this.dialogMode) {
this.saveCodeLoading = false;
const savedDrawingNo = this.searchModel.drawingNo;
this.$emit('code-saved', savedDrawingNo);
} else {
this.$alert(`成功获取并保存了编码${this.searchModel.drawingNo}`, '提示', {
confirmButtonText: '确定',
});
@ -243,6 +254,7 @@ export default {
}
this.saveCodeLoading = false;
this.searchCodeItemDefs();
}
}else {
this.saveCodeLoading = false;
this.$message.warning(data.msg)

97
src/views/modules/part/partInformation.vue

@ -8,6 +8,9 @@
<el-form-item label="IFS物料编码">
<el-input v-model="searchData.ifsPartNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="编码">
<el-input v-model="searchData.drawingNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="物料名称">
<el-input v-model="searchData.partDesc" clearable style="width: 210px"></el-input>
</el-form-item>
@ -134,6 +137,7 @@
<el-dropdown-item v-if="scope.row.ifHasPeifang === 'Y'" @click.native="toMenu('Recipe', 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.temporaryPartFlag === 'Y' && scope.row.status === 'N'" @click.native="toBecomeOfficialPartModal(scope.row)">转正式物料</el-dropdown-item>
<el-dropdown-item v-if="scope.row.drawingNo" @click.native="handlePartDrawingDetail(scope.row)">编码详情</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@ -165,6 +169,12 @@
<el-form-item label="物料名称 / Part Desc." 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="modalData.flag === '2' && !copyFlag2" label="编码">
<el-input v-model="modalData.drawingNo" readonly style="width: 150px" placeholder="获取编码后填入"></el-input>
</el-form-item>
<el-form-item v-if="modalData.flag === '2' && !copyFlag2" :label="' '">
<el-button type="primary" @click="drawingNoDialogVisible = true">获取编码</el-button>
</el-form-item>
<el-form-item v-if="modalData.flag === '2' && !copyFlag2" :label="' '">
<el-button type="primary" @click="toCopyPartModal">Copy Part</el-button>
</el-form-item>
@ -1419,6 +1429,26 @@
<upload-file-list folder="Inventory Part" title="物料附件上传" :label="'物料编码:'" :no="partCurrentRow.partNo" :file-list.sync="fileList" :upload-dialog.sync="uploadDialog" path="/upload/test"></upload-file-list>
<filter-search :visible.sync="filterVisible" @search="queryByAnyField"></filter-search>
<!-- 获取编码对话框 -->
<el-dialog title="获取编码" :close-on-click-modal="false" top="5vh" v-drag :visible.sync="drawingNoDialogVisible" width="1100px" @close="drawingNoDialogVisible = false">
<code-generation :dialog-mode="true" @code-saved="handleCodeGenerated"></code-generation>
</el-dialog>
<!-- 编码详情对话框 -->
<el-dialog title="编码详情" :close-on-click-modal="false" v-drag :visible.sync="partDrawingDetailDialogVisible" v-loading="partDrawingDetailLoading">
<el-table :data="partDrawingDetailList" height="400" border style="width: 100%">
<el-table-column prop="itemNo" header-align="center" width="140" align="right" label="序号"></el-table-column>
<el-table-column prop="itemDesc" header-align="center" width="140" align="left" label="描述"></el-table-column>
<el-table-column prop="itemName" header-align="center" width="140" align="left" label="元素名称"></el-table-column>
<el-table-column prop="itemType" show-overflow-tooltip header-align="center" align="left" label="类型"></el-table-column>
<el-table-column prop="itemLabel" show-overflow-tooltip header-align="center" align="left" label="选中项描述"></el-table-column>
<el-table-column prop="itemValue" show-overflow-tooltip header-align="center" align="left" label="选中项值"></el-table-column>
</el-table>
<el-footer style="height:30px;margin-top:10px;text-align:center">
<el-button type="primary" @click="partDrawingDetailDialogVisible = false">关闭</el-button>
</el-footer>
</el-dialog>
</div>
</template>
@ -1489,6 +1519,8 @@
import FilterSearch from "../../common/filterSearch.vue";
import {masterPartSearchAny} from "../../../api/part/masterPartInformation";
import {partInformationSearchAny} from "../../../api/part/partInformation";
import {searchDrawingDetailList} from "../../../api/code/codeDrawing";
import CodeGeneration from "../code/generation.vue";
export default {
components: {
FilterSearch,
@ -1496,7 +1528,8 @@
UploadFileList,
DictDataSelect,
Chooselist,
partUploadFile
partUploadFile,
CodeGeneration
},
watch: {
searchData: {
@ -1603,7 +1636,8 @@
status: '',
ifsPartNo: '',
plmPartNo: '',
partType: ''
partType: '',
drawingNo: ''
},
//
loading: false,
@ -1725,7 +1759,8 @@
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false, //
copyPartNo: ''
copyPartNo: '',
drawingNo: ''
},
revisionData: {
flag: '',
@ -1882,6 +1917,22 @@
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104001,
serialNumber: '104001Table1DrawingNo',
tableId: '104001Table1',
tableName: '物料信息表',
columnProp: 'drawingNo',
headerAlign: 'center',
align: 'left',
columnLabel: '编码',
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 104001,
@ -3408,7 +3459,11 @@
filterVisible: false,
isFilterSearch: false,
filterSearchData: {},
copyFlag2: false
copyFlag2: false,
drawingNoDialogVisible: false,
partDrawingDetailList: [],
partDrawingDetailDialogVisible: false,
partDrawingDetailLoading: false
}
},
@ -4111,7 +4166,8 @@
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false, //
copyPartNo: ''
copyPartNo: '',
drawingNo: ''
}
this.partItemList = []
this.inventoryPartTable = 'General'
@ -4237,7 +4293,8 @@
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false, //
copyPartNo: ''
copyPartNo: '',
drawingNo: row.drawingNo || ''
}
this.resetFlags() //
this.setupWatchers() //
@ -4361,7 +4418,8 @@
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false, //
copyPartNo: ''
copyPartNo: '',
drawingNo: row.drawingNo || ''
}
this.getPartCharacteristicList()
this.inventoryPartTable = 'General'
@ -4484,7 +4542,8 @@
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false, //
copyPartNo: ''
copyPartNo: '',
drawingNo: row.drawingNo || ''
}
this.getPartCharacteristicList()
// BOMrouting
@ -6133,6 +6192,28 @@
this.isFilterSearch = true
this.filterVisible = false
},
handleCodeGenerated(drawingNo) {
this.modalData.drawingNo = drawingNo;
this.drawingNoDialogVisible = false;
},
handlePartDrawingDetail(row) {
this.partDrawingDetailLoading = true;
this.partDrawingDetailList = [];
this.partDrawingDetailDialogVisible = true;
searchDrawingDetailList({ drawingNo: row.drawingNo }).then(({data}) => {
if (data && data.code === 0) {
this.partDrawingDetailList = data.rows;
} else {
this.$message.warning(data.msg);
}
this.partDrawingDetailLoading = false;
}).catch((error) => {
this.$message.error(error);
this.partDrawingDetailLoading = false;
});
},
}
}
</script>

94
src/views/modules/project/projectInfo/com_project_info_part.vue

@ -10,6 +10,9 @@
<el-form-item label="PLM物料编码">
<el-input v-model="searchData.plmPartNo" clearable placeholder="请输入PLM物料编码" style="width: 140px"></el-input>
</el-form-item>
<el-form-item label="编码">
<el-input v-model="searchData.drawingNo" clearable placeholder="请输入编码" style="width: 140px"></el-input>
</el-form-item>
<el-form-item label="物料名称">
<el-input v-model="searchData.partDesc" clearable placeholder="请输入物料名称" style="width: 140px"></el-input>
</el-form-item>
@ -69,12 +72,13 @@
fixed="right"
header-align="center"
align="center"
width="100"
width="160"
label="操作">
<template slot-scope="scope">
<el-link style="cursor: pointer" @click="updateModal(scope.row)">编辑</el-link>
<el-link style="cursor: pointer" @click="deleteModal(scope.row)">删除</el-link>
<el-link style="cursor: pointer" @click="copyProjectPartModal(scope.row)">复制</el-link>
<el-link v-if="scope.row.drawingNo" style="cursor: pointer" @click="handlePartDrawingDetail(scope.row)">编码详情</el-link>
</template>
</el-table-column>
</el-table>
@ -95,20 +99,26 @@
<el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" @close="handleDialogClose" width="1000px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-top: -5px;">
<el-form-item label="Site">
<el-input v-model="modalData.site" disabled style="width: 60px"></el-input>
<el-input v-model="modalData.site" disabled style="width: 50px"></el-input>
</el-form-item>
<el-form-item label="物料编码 / Part No." prop="partNo" :rules="rules.partNo" style="margin-left: -10px">
<el-input v-model="modalData.partNo" disabled style="width: 128px"></el-input>
<el-input v-model="modalData.partNo" disabled style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="物料名称 / Part Desc." prop="partDesc" :rules="rules.partDesc" style="margin-left: -10px">
<el-input v-model="modalData.partDesc" clearable style="width: 347px"></el-input>
<el-input v-model="modalData.partDesc" clearable style="width: 300px"></el-input>
</el-form-item>
<el-form-item v-if="modalData.flag === '2'" label="编码">
<el-input v-model="modalData.drawingNo" readonly style="width: 150px" placeholder="获取编码后填入"></el-input>
</el-form-item>
<el-form-item v-if="modalData.flag === '2'" :label="' '">
<el-button type="primary" @click="drawingNoDialogVisible = true">获取编码</el-button>
</el-form-item>
<el-form-item label="客户料号" prop="customerPartNo" :rules="rules.customerPartNo">
<el-input v-model="modalData.customerPartNo" clearable style="width: 140px"></el-input>
<el-input v-model="modalData.customerPartNo" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item prop="buDesc" :rules="rules.buDesc">
<span slot="label" style="" @click="getBaseList(106,1)"><a herf="#">BU</a></span>
<el-input v-model="modalData.buDesc" readonly ></el-input>
<span slot="label" @click="getBaseList(106,1)"><a herf="#">BU</a></span>
<el-input v-model="modalData.buDesc" readonly style="width: 80px"></el-input>
</el-form-item>
<el-tabs v-model="inventoryPartTable" style="width: 100%;height: 465px;" type="border-card" @tab-click="inventoryPartClick">
<el-tab-pane label="General" name="General">
@ -964,6 +974,26 @@
<project-part-upload ref="projectPartUpload" @refreshPageTables="searchTable" v-drag></project-part-upload>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
<!-- 获取编码对话框 -->
<el-dialog title="获取编码" :close-on-click-modal="false" top="5vh" v-drag :visible.sync="drawingNoDialogVisible" width="1100px" @close="drawingNoDialogVisible = false">
<code-generation :dialog-mode="true" @code-saved="handleCodeGenerated"></code-generation>
</el-dialog>
<!-- 编码详情对话框 -->
<el-dialog title="编码详情" :close-on-click-modal="false" v-drag :visible.sync="partDrawingDetailDialogVisible" v-loading="partDrawingDetailLoading">
<el-table :data="partDrawingDetailList" height="400" border style="width: 100%">
<el-table-column prop="itemNo" header-align="center" width="140" align="right" label="序号"></el-table-column>
<el-table-column prop="itemDesc" header-align="center" width="140" align="left" label="描述"></el-table-column>
<el-table-column prop="itemName" header-align="center" width="140" align="left" label="元素名称"></el-table-column>
<el-table-column prop="itemType" show-overflow-tooltip header-align="center" align="left" label="类型"></el-table-column>
<el-table-column prop="itemLabel" show-overflow-tooltip header-align="center" align="left" label="选中项描述"></el-table-column>
<el-table-column prop="itemValue" show-overflow-tooltip header-align="center" align="left" label="选中项值"></el-table-column>
</el-table>
<el-footer style="height:30px;margin-top:10px;text-align:center">
<el-button type="primary" @click="partDrawingDetailDialogVisible = false">关闭</el-button>
</el-footer>
</el-dialog>
</div>
</template>
@ -1007,12 +1037,15 @@ import {
import DictDataSelect from "../../sys/dict-data-select.vue"
import ProjectPartUpload from "./project_part_upload.vue";
import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/partInformation";
import {searchDrawingDetailList} from "../../../../api/code/codeDrawing";
import CodeGeneration from "../../code/generation.vue";
export default {
components: {
ProjectPartUpload,
DictDataSelect,
Chooselist,
CodeGeneration,
},
watch: {
modalData: {
@ -1077,6 +1110,7 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
plmPartNo: '',
finalPartNo: '',
customerPartNo: '',
drawingNo: '',
page: 1,
limit: 10,
page2: 1,
@ -1156,6 +1190,22 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 101002001,
serialNumber: '101002001Table4DrawingNo',
tableId: "101002001Table4",
tableName: "项目物料",
columnProp: "drawingNo",
headerAlign: "center",
align: "left",
columnLabel: "编码",
columnHidden: false,
columnImage: false,
status: true,
fixed: '',
columnWidth: 130
},
{
userId: this.$store.state.user.name,
functionId: 101002001,
@ -1532,6 +1582,10 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
},
modalFlag: false,
modalDisableFlag: false,
drawingNoDialogVisible: false,
partDrawingDetailList: [],
partDrawingDetailDialogVisible: false,
partDrawingDetailLoading: false,
rules: {
partNo: [
{
@ -2107,6 +2161,7 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
this.searchData.finalPartNo = ''
this.searchData.customerPartNo = ''
this.searchData.partDesc = ''
this.searchData.drawingNo = ''
this.pageIndex2 = 1
this.searchTable()
},
@ -2382,7 +2437,8 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
costsInfoFlag: false, // costs
manufacturingInfoFlag: false, // Manufacturing
planningInfoFlag: false, // planning
partItemInfoFlag: false //
partItemInfoFlag: false, //
drawingNo: data.rows.drawingNo || ''
}
this.resetFlags() //
this.setupWatchers() //
@ -3778,6 +3834,28 @@ import {downLoadFile, queryFileId, readPartFromFile} from "../../../../api/part/
}
})
},
handleCodeGenerated(drawingNo) {
this.modalData.drawingNo = drawingNo;
this.drawingNoDialogVisible = false;
},
handlePartDrawingDetail(row) {
this.partDrawingDetailLoading = true;
this.partDrawingDetailList = [];
this.partDrawingDetailDialogVisible = true;
searchDrawingDetailList({ drawingNo: row.drawingNo }).then(({data}) => {
if (data && data.code === 0) {
this.partDrawingDetailList = data.rows;
} else {
this.$message.warning(data.msg);
}
this.partDrawingDetailLoading = false;
}).catch((error) => {
this.$message.error(error);
this.partDrawingDetailLoading = false;
});
},
},
}
</script>

Loading…
Cancel
Save