ysy 2 лет назад
Родитель
Сommit
830950e943

+ 12 - 0
src/api/technology/version/version.js

@@ -25,6 +25,18 @@ export async function versionDetail(id) {
   return Promise.reject(new Error(res.data.message));
 }
 
+
+// 生产版本新增、编辑
+
+export async function versionSave(data) {
+  const res = await request.post('/main/produceversion/save', data);
+  if (res.data.code == 0) {
+    return res.data.message;
+  }
+}
+
+
+
 // 根据工艺路线编码获取工序
 export async function getProcessByRoute(data) {
   const res = await request.post('/main/producerouting/taskinstance/page', data);

+ 113 - 0
src/views/technology/version/components/BOM-search.vue

@@ -0,0 +1,113 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="77px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row :gutter="10">
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="BOM编码">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="BOM名称">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="产品编码">
+          <el-input
+            clearable
+            v-model="where.categoryCode"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="产品名称">
+          <el-input
+            clearable
+            v-model="where.categoryName"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="状态">
+          <el-select
+            clearable
+            v-model="where.status"
+            placeholder="请选择"
+            class="w100"
+          >
+            <el-option
+              v-for="item in Object.entries(statusOpt)"
+              :key="item[0]"
+              :label="item[1]"
+              :value="item[0]"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 18 } : { span: 18 }">
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+
+          <el-button @click="reset" icon="el-icon-refresh" class="ele-btn-icon"
+            >重置</el-button
+          >
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+  export default {
+    props: {
+      statusOpt: Object
+    },
+    data () {
+      // 默认表单数据
+      const defaultWhere = {
+        name: '',
+        code: '',
+        categoryCode: '',
+        categoryName: '',
+        status: ''
+      };
+      return {
+        defaultWhere,
+        // 表单数据
+        where: { ...defaultWhere }
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive () {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      /* 搜索 */
+      search () {
+        this.$emit('search', this.where);
+      },
+      /*  重置 */
+      reset () {
+        this.where = { ...this.defaultWhere };
+        this.search();
+      }
+    }
+  };
+</script>

+ 197 - 0
src/views/technology/version/components/bomModal.vue

@@ -0,0 +1,197 @@
+<template>
+    <el-dialog title="选择物料BOM" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false"
+        :close-on-press-escape="false" append-to-body width="80%">
+        <el-card shadow="never">
+            <bomSearch @search="reload" />
+
+
+            <!-- 表格 -->
+
+            <ele-pro-table ref="table" :columns="columns" :datasource="datasource" height="calc(100vh - 350px)"
+                :need-page="false" class="dict-table" @cell-click="cellClick">
+
+
+                <!-- 表头工具栏 -->
+                <template v-slot:action="{ row }">
+                    <el-radio class="radio" v-model="radio" :label="row.id"><i></i></el-radio>
+                </template>
+            </ele-pro-table>
+
+
+        </el-card>
+        <div class="btns">
+            <el-button type="primary" size="small" @click="selected">选择</el-button>
+            <el-button size="small" @click="handleClose">关闭</el-button>
+        </div>
+    </el-dialog>
+</template>
+  
+<script>
+import AssetTree from '@/components/AssetTree';
+import bomSearch from './BOM-search.vue'
+import { getPage } from '@/api/material/BOM';
+export default {
+    components: { AssetTree, bomSearch },
+    data() {
+        return {
+            visible: false,
+            // 表格列配置
+            columns: [
+
+
+
+                {
+                    label: '序号',
+                    columnKey: 'index',
+                    type: 'index',
+                    width: 55,
+                    align: 'center',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'code',
+                    label: 'BOM编码',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'name',
+                    label: 'BOM名称',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'categoryCode',
+                    label: '产品编码',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'categoryName',
+                    label: '产品名称',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'version',
+                    label: '版本'
+                },
+                {
+                    prop: 'status ',
+                    label: '状态',
+                    formatter: (row) => {
+                        return this.statusOpt[row.status];
+                    }
+                },
+                {
+                    prop: 'createUserName',
+                    label: '创建人',
+                    showOverflowTooltip: true
+                },
+                {
+                    prop: 'createTime',
+                    label: '创建日期',
+                    showOverflowTooltip: true
+                },
+
+                {
+                    action: 'action',
+                    slot: 'action',
+                    align: 'center',
+                    label: '选择'
+                }
+
+            ],
+
+            statusOpt: {
+                '-1': '草稿',
+                0: '已停用',
+                1: '已发布'
+            },
+
+            radio: null,
+
+        }
+    },
+
+    watch: {
+
+    },
+    methods: {
+        /* 表格数据源 */
+        async datasource({ page, limit, where, order }) {
+            return getPage({
+                ...where,
+                pageNum: page,
+                size: limit
+            });
+        },
+
+
+
+        /* 刷新表格 */
+        reload() {
+            this.$refs.table.reload();
+        },
+        open(item) {
+            if (item) {
+                this.current = {
+                    id: item.routingId,
+                    name: item.routingName,
+                    code: item.routingCode
+                }
+                this.radio = item.routingId
+            }
+            this.visible = true
+        },
+
+        // 单击获取id
+        cellClick(row) {
+            this.current = row
+            this.radio = row.id
+        },
+        handleClose() {
+            this.visible = false
+            this.current = null
+            this.radio = ''
+        },
+        selected() {
+            console.log(this.current)
+            if (!this.current) {
+                return this.$message.warning('请选择物料BOM')
+            }
+            this.$emit('changeBom', this.current)
+            this.handleClose()
+        },
+    }
+}
+</script>
+  
+<style lang="scss" scoped>
+.tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+}
+
+.table_col {
+    padding-left: 10px;
+
+    ::v-deep .el-table th.el-table__cell {
+        background: #f2f2f2;
+    }
+}
+
+.pagination {
+    text-align: right;
+    padding: 10px 0;
+}
+
+.btns {
+    text-align: center;
+    padding: 10px 0;
+}
+
+.topsearch {
+    margin-bottom: 15px;
+}
+</style>
+  

+ 1 - 1
src/views/technology/version/components/routeModal.vue

@@ -95,7 +95,7 @@ export default {
 
 
             ],
-            categoryLevelId: '9',
+
             radio: null,
 
             statusList: [

+ 48 - 11
src/views/technology/version/components/user-edit.vue

@@ -63,6 +63,28 @@
           </el-form-item>
         </el-col>
 
+
+        <el-col :span="8">
+          <el-form-item label="BOM编码:" prop="bomCode">
+            <el-input v-model="form.bomCode" @click.native="chooseBom" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8">
+          <el-form-item label="BOM名称:" prop="bomName">
+            <el-input placeholder="自动带入" disabled v-model="form.bomName" />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8">
+          <el-form-item label="BOM版本:" prop="bomVersion">
+            <el-input placeholder="自动带入" disabled v-model="form.bomVersion" />
+          </el-form-item>
+        </el-col>
+
+
+
+
       </el-row>
 
     </el-form>
@@ -77,19 +99,24 @@
     <ProductModal ref="productRefs" @changeProduct='determineChoose' />
     <!-- 选择工艺路线 -->
     <routeModal ref="routeRefs" @changeRoute='changeRoute'></routeModal>
+
+    <!-- 选择物料BOM -->
+    <bomModal ref="bomRefs" @changeBom="changeBom"></bomModal>
   </ele-modal>
 </template>
 
 <script>
 import ProductModal from '@/views/technology/route/components/ProductModal.vue';
 import routeModal from './routeModal.vue'
+import bomModal from './bomModal.vue'
 import route from '@/api/technology/route';
-import { addUsers, putUsers } from '@/api/system/user';
+import { versionSave } from '@/api/technology/version/version.js';
 
 export default {
   components: {
     ProductModal,
-    routeModal
+    routeModal,
+    bomModal
   },
   props: {
     // 弹窗是否打开
@@ -108,7 +135,8 @@ export default {
       categoryCode: '',
       categoryName: '',
 
-      routingId: ''
+      routingId: '',
+      bomId: ''
     };
     return {
       defaultForm,
@@ -126,10 +154,10 @@ export default {
           { required: true, message: '请输入版本名称', trigger: 'blur' }
         ],
         code: [
-          { required: true, message: '请输入请输入版本号', trigger: 'blur' }
+          { required: true, message: '请输入版本号', trigger: 'blur' }
         ],
         factoryId: [
-          { required: true, message: '请输入工艺路线', trigger: 'blur' }
+          { required: true, message: '请输入所属工厂', trigger: 'blur' }
         ],
         categoryCode: [
           { required: true, message: '请选择产品编码', trigger: 'change' }
@@ -138,7 +166,7 @@ export default {
           { required: true, message: '请选择产品名称', trigger: 'change' }
         ],
 
-        routingId: [
+        routingCode: [
           { required: true, message: '请输入工艺路线编码', trigger: 'blur' }
         ]
       },
@@ -167,6 +195,10 @@ export default {
       this.$set(this.form, 'categoryCode', row.code)
     },
 
+    chooseRoute() {
+      this.$refs.routeRefs.open(this.form)
+    },
+    
     changeRoute(row) {
       this.$set(this.form, 'routingName', row.name)
       this.$set(this.form, 'routingId', row.id)
@@ -175,8 +207,15 @@ export default {
       
     },
 
-    chooseRoute() {
-      this.$refs.routeRefs.open(this.form)
+    chooseBom() {
+      this.$refs.bomRefs.open(this.form)
+    },
+
+    changeBom(row) {
+      this.$set(this.form, 'bomName', row.name)
+      this.$set(this.form, 'bomId', row.id)
+      this.$set(this.form, 'bomCode', row.code)
+      this.$set(this.form, 'bomVersion', row.version)
     },
     /* 保存编辑 */
     save() {
@@ -191,9 +230,7 @@ export default {
         this.loading = true;
         let title = this.isUpdate ? '修改' : '新建'; // 提交的名称或编号是否有效率有用的标识,
 
-
-        route
-          .save(this.form)
+        versionSave(this.form)
           .then((msg) => {
             this.form = {};
             this.categoryName = '';