Ver Fonte

fix:bom加版本,料箱等级和物料关联

lupeng há 1 ano atrás
pai
commit
edd95b0f52

+ 1 - 1
src/store/modules/dictionary.ts

@@ -24,7 +24,7 @@ export const useDictionaryStore = defineStore("dictionaryStore", () => {
     "trace_type",
     "skill_type",
     "drawing_type",
-    "enable",
+    "vehicle_level",
   ];
   const dicts = ref<{ [key: string]: any[] }>({});
   function checkDicts() {

+ 6 - 0
src/views/base/bom/columns.ts

@@ -40,6 +40,12 @@ export const columns = [
     type: "number",
     precision: 2,
   },
+  {
+    label: "版本号",
+    prop: "bomVersion",
+    type: "number",
+    precision: 1,
+  },
 
 
 ];

+ 26 - 8
src/views/base/bom/components/version-page.vue

@@ -20,21 +20,29 @@
       :option="option"
       v-model:page="page"
       @row-save="createRow"
+      @row-click="rowClick"
       @row-update="updateRow"
       @row-del="deleteRow"
       @search-change="searchChange"
       @search-reset="resetChange"
       @size-change="dataList"
       @current-change="dataList"
-      @selection-change="selectionChange"
       search-option="false"
     >
 
 
     </avue-crud>
+    <div class="detail-footer">
+      <el-button type="primary" @click="onSelected"> 确定 </el-button>
+      <el-button @click="cancelWindow">取消</el-button>
+
+    </div>
   </div>
 
+
+
 </template>
+
 <script setup>
   import { ref, getCurrentInstance } from "vue";
   import { useCrud } from "@/hooks/userCrud";
@@ -43,9 +51,6 @@
 
   const { isShowTable, tableType } = toRefs(useCommonStoreHook());
   import { useDictionaryStoreHook } from "@/store";
-  import {
-    addStationDevice,
-  } from "@/api/station";
   const test = () => {
     isShowTable.value = true;
     tableType.value = tableType.value == 1 ? 2 : 1;
@@ -56,6 +61,7 @@
     useCrud({
       src: "/api/v1/base/bomVersion",
     });
+  const commonTableEmits = defineEmits(["selectedSure"]);
   const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
     Methords; //增删改查
   const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
@@ -78,7 +84,7 @@
   const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 
   onMounted(() => {
-    // console.log("crudRef", crudRef)
+    console.log(props)
     search.value.materialCode=props.materialCode;
     dataList();
   });
@@ -95,14 +101,16 @@
 
   // 设置表格列或者其他自定义的option
   option.value = Object.assign(option.value, {
-    selection: true,
+    highlightCurrentRow: true,
+    align:'center',
+    menuAlign:'center',
     column: [
       {
         label: "版本号",
         prop: "bomVersion",
         type:"number",
         controlsPosition: '',
-        min:1,
+        min:1.0,
         precision: 1,
       },
       { label: "物料编码", prop: "materialCode", width: 130,overHidden: true,display:false,hide:true},
@@ -127,6 +135,16 @@
       }
     }
   })
-
+  const selectRowValue = ref({});
+  const rowClick = (row) => {
+    selectRowValue.value = row;
+  };
+  const onSelected = () => {
+    commonTableEmits("selectedSure", selectRowValue.value);
+    props.dialog.visible = false;
+  };
+  const cancelWindow=()=>{
+    props.dialog.visible = false;
+  }
 </script>
 

+ 20 - 6
src/views/base/bom/index.vue

@@ -26,7 +26,7 @@
           icon="el-icon-plus"
           @click="openMaterial"
           >新增</el-button>
-           <el-select v-model="value" placeholder="请选择BOM版本" style="width:150px;margin-left:15px" @click="openBomVersion">
+           <el-select v-model="version" placeholder="请选择BOM版本" style="width:150px;margin-left:15px" @click="openBomVersion">
           <el-option
             v-for="item in options"
             :key="item.value"
@@ -65,7 +65,7 @@
             <el-dropdown-menu>
 
               <el-dropdown-item
-                @click="downloadTemplate('/api/v1/plan/order/template')"
+                @click="downloadTemplate('/api/v1/base/materialBom/template')"
               >
                 <i-ep-download />下载模板
               </el-dropdown-item>
@@ -89,7 +89,7 @@
       width="900px"
       @close="dialog.visible = false"
     >
-      <version-page  :materialCode="route.materialCode" :dialog="dialog"/>
+      <version-page  :materialCode="route.params.materialCode" :dialog="dialog"  @selected-sure="selectedFinish"/>
     </el-dialog>
   </div>
 </template>
@@ -127,15 +127,16 @@ const openMaterial=()=>{
 }
 const openBomVersion=()=>{
 
+
   dialog.visible=true;
 }
-const value=ref({
+const version=ref({
     value: '0',
     label: '请选择BOM版本',
 });
 const options=ref([]);
 const dataBomLists=()=>{
-  search.value.materialCode=route.value.materialCode;
+  search.value.materialCode=route.params.materialCode;
   dataNoPageList();
 }
 
@@ -144,6 +145,7 @@ const dialog = reactive({
   title: "BOM版本",
   visible: false,
 });
+const material=ref(null);
 const binding = (row) => {
   if (ctableRef.value) {
     ctableRef.value.startSelect();
@@ -151,6 +153,7 @@ const binding = (row) => {
 };
 const onSelected=()=>{
   for(var i=0;i<data.value.length;i++){
+
     if(data.value[i].bomMaterialNumber<=0){
       ElMessage({
         message: data.value[i].bomMaterialName+"数量不能为0",
@@ -220,8 +223,9 @@ const uploadFinished = () => {
   dataNoPageList();
 };
 const importExcelData = () => {
+
   if (uploadRef.value) {
-    uploadRef.value.show("/api/v1/plan/order/import");
+    uploadRef.value.show("/api/v1/base/materialBom/import?"+route.params.materialCode);
   }
 };
 
@@ -239,6 +243,7 @@ const routeBack =()=>{
   router.back();
 }
 const onSelectedFinish = (selectedValue) => {
+
   for(var i=0;i<data.value.length;i++){
     if(data.value[i].bomMaterialCode===selectedValue.materialCode){
       ElMessage({
@@ -252,6 +257,7 @@ const onSelectedFinish = (selectedValue) => {
     materialCode:route.params.materialCode,
     bomMaterialCode:selectedValue.materialCode,
     bomMaterialName:selectedValue.materialName,
+    bomVersion:version.value.value,
     bomMaterialAttribute:selectedValue.attributeDictValue,
     bomMaterialNumber:0,
     $cellEdit:true,
@@ -273,6 +279,14 @@ const queryMaterialDetail = () => {
     }
   );
 };
+
+const selectedFinish=(selectedValue)=> {
+
+  version.value.value=selectedValue.bomVersion;
+  version.value.label=selectedValue.bomVersion;
+  search.value.bomVersion = version.value.value;
+  dataNoPageList();
+}
 </script>
 <style type="text/css">
   .title-detail{

+ 1 - 1
src/views/base/information/index.vue

@@ -16,7 +16,7 @@
       @current-change="dataList"
       @selection-change="selectionChange"
     >
-      <template #fileUrl-form="scope">
+      <template #drawingPath-form="scope">
         <single-upload v-model="form.drawingPath" />
       </template>
       <template #menu="{row,index,type}">

+ 180 - 0
src/views/storage/vehicleMaterial/index.vue

@@ -0,0 +1,180 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-save="rowSave"
+      @row-update="updateRow"
+      @row-del="deleteRow"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
+    >
+      <template #menu-left="{ size }">
+        <el-button
+          :disabled="toDeleteIds.length < 1"
+          type="danger"
+          icon="el-icon-delete"
+          :size="size"
+          @click="multipleDelete"
+        >删除</el-button
+        >
+      </template>
+
+    </avue-crud>
+    <CommonTable
+      ref="ctableRef"
+      tableTitle="BOM添加"
+      tableType="MARTERIAL"
+      @selected-sure="onSelectedFinish"
+    />
+  </div>
+</template>
+<script setup="ts">
+  import { ref, getCurrentInstance } from "vue";
+  import { useCrud } from "@/hooks/userCrud";
+  import ButtonPermKeys from "@/common/configs/buttonPermission";
+  import { useCommonStoreHook } from "@/store";
+
+  const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+  import { useDictionaryStoreHook } from "../../../store/index";
+  const { dicts } = useDictionaryStoreHook();
+  const test = () => {
+    isShowTable.value = true;
+    tableType.value = tableType.value == 1 ? 2 : 1;
+  };
+  const ctableRef = ref(null);
+  // 传入一个url,后面不带/
+  const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+    useCrud({
+      src: "/api/v1/wms/vehicleMaterial",
+    });
+  const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+    Methords; //增删改查
+  const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+  const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+  // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
+  // const permission = reactive({
+  //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
+  //   addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
+  //   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
+  //   menu: true,
+  // });
+  function rowSave(form,done,loading) {
+    console.info(form);
+    createRow(form,done,loading);
+
+  }
+  const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+  onMounted(() => {
+    // console.log("crudRef", crudRef)
+    dataList();
+  });
+
+  /**
+   * 上传excel相关
+   */
+  const uploadRef = ref(null);
+  const uploadFinished = () => {
+    // 上传完成后的刷新操作
+    page.currentPage = 1;
+    dataList();
+  };
+  const importExcelData = () => {
+    if (uploadRef.value) {
+      uploadRef.value.show("/api/v1/base/station");
+    }
+  };
+
+  // 设置表格列或者其他自定义的option
+  option.value = Object.assign(option.value, {
+    selection: true,
+    column: [
+
+      {
+        label: "料箱等级",
+        prop: "vehicleLevel",
+        search: true,
+        rules: [{
+          required: true,
+          message: "请选择工位类型",
+          trigger: "blur"
+        }],
+        type: 'select',
+        dicData:dicts.vehicle_level,
+        filterable: true, //添加filterable属性即可启用搜索功能
+        props: {
+          label: "dictLabel", // 下拉菜单显示的字段
+          value: "dictValue" // 下拉菜单值的字段
+        },
+      },
+
+      {
+        label: "物料编号",
+        prop: "materialCode",
+        display:false,
+        search:true,
+        rules: [{
+          required: true,
+          message: "请填选择物料编码",
+          trigger: "blur",
+        }],
+      },
+      {
+        label: "物料编号",
+        prop: "code",
+        hide:true,
+        click:({ value, column }) => {
+          ctableRef.value.startSelect();
+        },
+        rules: [{
+          required: true,
+          message: "请填选择物料编码",
+          trigger: "blur",
+        }],
+      },
+      {
+        label: "物料名称",
+        prop: "materialName",
+        search:true,
+        disabled:true,
+
+      },
+      {
+        label: "规格",
+        prop: "spec",
+        disabled:true,
+      },
+      {
+        label: "描述",
+        prop: "remark",
+        type: 'textarea',
+        span: 24,
+      },
+      {
+        label: "创建人",
+        prop: "creator",
+        display:false
+      },
+      {
+        label: "创建时间",
+        prop: "created",
+        display:false
+      },
+    ],
+  });
+  const onSelectedFinish = (selectedValue) => {
+    form.value.materialCode=selectedValue.materialCode;
+    form.value.code=selectedValue.materialCode;
+    form.value.materialName=selectedValue.materialName;
+    form.value.spec=selectedValue.spec;
+  }
+</script>
+