|
|
@@ -42,115 +42,70 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <header-title title="物料BOM">
|
|
|
- <div>
|
|
|
- <el-button size="small" icon="el-icon-plus" class="ele-btn-icon" type="primary"
|
|
|
- @click="handleAdd">新增</el-button>
|
|
|
- </div>
|
|
|
+ <header-title title="工序">
|
|
|
</header-title>
|
|
|
+
|
|
|
+ <ele-pro-table ref="table" :needPage="false" :columns="columns" :datasource="datasource" row-key="id">
|
|
|
+
|
|
|
+ <!-- 表头工具栏 -->
|
|
|
+ <template v-slot:toolbar>
|
|
|
+ <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon"
|
|
|
+ @click="openEdit">新增</el-button>
|
|
|
+
|
|
|
+
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-slot:mouldName="{ row, $index }">
|
|
|
+
|
|
|
+ <el-input :v-model="row.mouldName" placeholder="请选择" @click.native="mouldSelect(row, $index)"></el-input>
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 操作列 -->
|
|
|
+ <template v-slot:action="{ row, $index }">
|
|
|
+
|
|
|
+ <el-popconfirm class="ele-action" title="确定要删除当前工序吗?" @confirm="handleDel(row, $index)">
|
|
|
+ <template v-slot:reference>
|
|
|
+ <el-link type="danger" :underline="false" icon="el-icon-delete">
|
|
|
+ 删除 {{ row.mouldName }}
|
|
|
+ </el-link>
|
|
|
+ </template>
|
|
|
+ </el-popconfirm>
|
|
|
+ </template>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ </ele-pro-table>
|
|
|
+
|
|
|
|
|
|
- <el-card v-for="(bomItem, index) in form.bomList" :key="index">
|
|
|
- <el-row>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="BOM编码:">
|
|
|
- {{ bomItem.code }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="BOM名称:" prop="name">
|
|
|
- {{ bomItem.name }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="版本号:" prop="version">
|
|
|
- {{ bomItem.version }}
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="状态:" prop="status">
|
|
|
- <el-select v-model="bomItem.status" placeholder="" filterable disabled>
|
|
|
- <el-option v-for="item in statusList" :key="item.value" :label="item.label"
|
|
|
- :value="item.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="生产版本:" prop="produceVersionId">
|
|
|
- <el-select v-model="bomItem.produceVersionId" filterable placeholder="请选择" disabled
|
|
|
- :style="{ width: '100%' }">
|
|
|
- <el-option v-for="item in versionList" :key="item.code" :label="item.code + '-' + item.name"
|
|
|
- :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="所属工厂:" prop="factoryId">
|
|
|
- <factorySelect v-model="bomItem.factoryId" disabled />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="基本数量:" prop="baseCount">
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- {{ bomItem.baseCount }}
|
|
|
- </el-col>
|
|
|
- <el-col :span="2"> </el-col>
|
|
|
- <el-col :span="10">
|
|
|
- <DictSelection disabled dictName="计量单位:" v-model="bomItem.baseCountUnit" />
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <div class="ele-body">
|
|
|
- <ele-pro-table ref="table" :columns="columns" :need-page="false" row-key="id"
|
|
|
- :datasource="bomItem.subDetailList" min-height="200px">
|
|
|
- <template v-slot:toolbar>
|
|
|
- <el-button type="primary" size="small" @click="openEdit(index)">编辑</el-button>
|
|
|
-
|
|
|
- <el-popconfirm class="ele-action" title="确定要删除此物料BOM?" @confirm="remove(bomItem)">
|
|
|
- <template v-slot:reference>
|
|
|
- <el-button type="danger" size="small" icon="el-icon-delete">
|
|
|
- 删除
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </el-popconfirm>
|
|
|
- </template>
|
|
|
- </ele-pro-table>
|
|
|
- </div>
|
|
|
- </el-row>
|
|
|
- </el-card>
|
|
|
</el-form>
|
|
|
|
|
|
- <!-- 物料Bom -->
|
|
|
- <MaterialAdd :visible.sync="materialShow" :data="current" :categoryId="categoryId" @done="done"
|
|
|
- ref="materialAddRef">
|
|
|
- </MaterialAdd>
|
|
|
+ <div slot="footer" class="footer">
|
|
|
+ <el-button type="primary" @click="save">保存</el-button>
|
|
|
+ <el-button @click="visible = false">返回</el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <processModal ref="processRefs" @chooseProcess="chooseProcess"></processModal>
|
|
|
+ <ProductModal ref="productRefs" @changeProduct='determineChoose' />
|
|
|
+
|
|
|
</ele-modal>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
-import MaterialAdd from './MaterialAdd.vue';
|
|
|
-import { pageList } from '@/api/technology/version/version.js';
|
|
|
-import { getCategoryBom } from '@/api/material/product';
|
|
|
-import { bomDelete } from '@/api/material/BOM';
|
|
|
-import factorySelect from '@/components/CommomSelect/factory-select.vue';
|
|
|
|
|
|
+import processModal from '@/views/technology/productParam/components/processModal.vue'
|
|
|
+import ProductModal from '@/views/technology/productParam/components/ProductModal.vue'
|
|
|
export default {
|
|
|
components: {
|
|
|
- MaterialAdd,
|
|
|
- factorySelect
|
|
|
+ processModal,
|
|
|
+ ProductModal
|
|
|
+
|
|
|
},
|
|
|
props: {
|
|
|
// 弹窗是否打开
|
|
|
@@ -169,7 +124,7 @@ export default {
|
|
|
specification: '',
|
|
|
measuringUnit: '',
|
|
|
|
|
|
- bomList: []
|
|
|
+ routeList: []
|
|
|
};
|
|
|
return {
|
|
|
defaultForm,
|
|
|
@@ -177,9 +132,6 @@ export default {
|
|
|
form: {
|
|
|
...defaultForm
|
|
|
},
|
|
|
-
|
|
|
- versionList: [],
|
|
|
-
|
|
|
// 表单验证规则
|
|
|
rules: {
|
|
|
categoryName: [
|
|
|
@@ -187,58 +139,66 @@ export default {
|
|
|
]
|
|
|
},
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ // 提交状态
|
|
|
+ loading: false,
|
|
|
+ current: null,
|
|
|
+
|
|
|
columns: [
|
|
|
+
|
|
|
{
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '子项编号',
|
|
|
- prop: 'subCode',
|
|
|
- action: 'subCode'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '物料名称',
|
|
|
- prop: 'categoryName',
|
|
|
- action: 'categoryName'
|
|
|
+ label: '模具名称',
|
|
|
+ prop: 'mouldName',
|
|
|
+ slot: 'mouldName',
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- label: '物料编码',
|
|
|
- prop: 'categoryCode'
|
|
|
+ prop: 'code',
|
|
|
+ label: '工序编码',
|
|
|
+ // sortable: 'custom',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 110
|
|
|
},
|
|
|
{
|
|
|
- label: '牌号',
|
|
|
- prop: 'brandNum'
|
|
|
+ prop: 'name',
|
|
|
+ label: '工序名称',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ align: 'center',
|
|
|
+ minWidth: 110
|
|
|
},
|
|
|
{
|
|
|
- label: '型号',
|
|
|
- prop: 'modelType'
|
|
|
+ align: 'center',
|
|
|
+ prop: 'controlName',
|
|
|
+ label: '工序控制码',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
},
|
|
|
{
|
|
|
- label: '净重',
|
|
|
- prop: 'count'
|
|
|
+ prop: 'workCenterName',
|
|
|
+ label: '所属工作中心',
|
|
|
+ align: 'center',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 110
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- label: '重量单位',
|
|
|
- prop: 'unit'
|
|
|
+ columnKey: 'action',
|
|
|
+ label: '操作',
|
|
|
+ width: 260,
|
|
|
+ align: 'center',
|
|
|
+ resizable: false,
|
|
|
+ slot: 'action',
|
|
|
+ showOverflowTooltip: true
|
|
|
}
|
|
|
],
|
|
|
|
|
|
- statusList: [
|
|
|
- { label: '草稿', value: -1 },
|
|
|
- { label: '失效', value: 0 },
|
|
|
- { label: '生效', value: 1 }
|
|
|
- ],
|
|
|
+ removeList: [],
|
|
|
|
|
|
- // 提交状态
|
|
|
- loading: false,
|
|
|
|
|
|
- categoryId: null,
|
|
|
|
|
|
- current: null,
|
|
|
|
|
|
- materialShow: false
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -248,66 +208,77 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- openEdit(index) {
|
|
|
- this.current = this.form.bomList[index];
|
|
|
- console.log(this.current);
|
|
|
- this.materialShow = true;
|
|
|
- },
|
|
|
|
|
|
/* 表格数据源 */
|
|
|
datasource({ page, limit, where }) {
|
|
|
return [];
|
|
|
},
|
|
|
|
|
|
- async getVersionList() {
|
|
|
- const res = await pageList({
|
|
|
- pageNum: 1,
|
|
|
- size: 100
|
|
|
- });
|
|
|
-
|
|
|
- this.versionList = res.list;
|
|
|
- },
|
|
|
|
|
|
- handleAdd() {
|
|
|
- this.current = null;
|
|
|
- this.materialShow = true;
|
|
|
- },
|
|
|
|
|
|
/* 更新visible */
|
|
|
updateVisible(value) {
|
|
|
this.$emit('update:visible', value);
|
|
|
},
|
|
|
|
|
|
- async getCategoryBomFn() {
|
|
|
- const res = await getCategoryBom(this.categoryId);
|
|
|
- this.form.bomList = res.bomList;
|
|
|
+ openEdit() {
|
|
|
+ this.$refs.processRefs.open(this.$refs.table.getData())
|
|
|
+ },
|
|
|
+
|
|
|
+ chooseProcess(data) {
|
|
|
+ this.$refs.table.setData([...data, ...this.$refs.table.getData()]);
|
|
|
},
|
|
|
|
|
|
- remove(row) {
|
|
|
- bomDelete([row.id])
|
|
|
- .then((message) => {
|
|
|
- this.$message.success(message);
|
|
|
- this.getCategoryBomFn();
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- this.$message.error(e.message);
|
|
|
- });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ handleDel(row, index) {
|
|
|
+ let _arr = this.$refs.table.getData()
|
|
|
+ _arr.splice(index, 1)
|
|
|
+ this.$refs.table.setData(_arr)
|
|
|
+ if (row?.id) {
|
|
|
+ this.removeList.push(row.id)
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
- done() {
|
|
|
- this.materialShow = false
|
|
|
- this.getCategoryBomFn();
|
|
|
+ mouldSelect(row, idx) {
|
|
|
+ this.$refs.productRefs.open(row, '模具', '5', idx)
|
|
|
},
|
|
|
|
|
|
+ determineChoose(title, row, idx) {
|
|
|
+
|
|
|
+ if (title == '模具') {
|
|
|
+ let _arr = this.$refs.table.getData()
|
|
|
+ let _new = _arr
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ _new[idx].mouldId = row.id
|
|
|
+ _new[idx]['mouldName'] = row.name
|
|
|
+
|
|
|
+ console.log(_new)
|
|
|
+
|
|
|
+ this.$refs.table.setData(_new);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ save() { },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
|
|
|
watch: {
|
|
|
async visible(visible) {
|
|
|
if (visible) {
|
|
|
- this.getVersionList();
|
|
|
+
|
|
|
if (this.data) {
|
|
|
- this.categoryId = this.data.id;
|
|
|
- this.getCategoryBomFn();
|
|
|
+
|
|
|
+
|
|
|
this.$util.assignObject(this.form, {
|
|
|
...this.data
|
|
|
});
|