Przeglądaj źródła

fix:bug修复,物料导入导出优化

lupeng 1 rok temu
rodzic
commit
cf25835b12

+ 168 - 1
src/views/base/materials/index.vue

@@ -83,6 +83,8 @@ import ButtonPermKeys from "@/common/configs/buttonPermission";
 import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
 import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 import { columns } from "./columns";
 import { columns } from "./columns";
+const { dicts } = useDictionaryStoreHook();
+
 
 
 const test = () => {
 const test = () => {
   isShowTable.value = true;
   isShowTable.value = true;
@@ -143,7 +145,172 @@ const importExcelData = () => {
 // 设置表格列或者其他自定义的option
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
 option.value = Object.assign(option.value, {
   selection: true,
   selection: true,
-  column: columns,
+  column: [
+    { label: "物料编码", prop: "materialCode", width: 130,overHidden: true,search: true ,rules: [{
+        required: true,
+        editDisabled:false,
+        message: "请填写物料编码",
+        trigger: "blur"
+      }],},
+    { label: "物料名称", prop: "materialName", width: 140,overHidden: true,search: true ,rules: [{
+        required: true,
+        message: "请填写物料名称",
+        trigger: "blur"
+      }],},
+    {
+      label: "物料属性",
+      prop: "attributeDictValue",
+      search: true,
+      filterable: true,
+      type: 'select',
+      width: 100,overHidden: true,
+      dicData:dicts.material_properties,
+      props: { label: "dictLabel", value: "dictValue" },
+      rules: [{
+        required: true,
+        message: "请选择物料属性",
+        trigger: "blur"
+      }],
+    },
+    { label: "物料规格", prop: "spec", width: 100,overHidden: true,rules: [{
+        required: true,
+        message: "请填写物料规格",
+        trigger: "blur"
+      }], },
+    {
+      label: "单位",
+      prop: "unitDictValue",
+      filterable: true,
+      type: "select",
+      dicData:dicts.danwei_type,
+      props: { label: "dictLabel", value: "dictValue" },
+      rules: [{
+        required: true,
+        message: "请选择单位",
+        trigger: "blur"
+      }],
+    },
+    {
+      label: "物料级别",
+      prop: "levelDictValue",
+      search: true,
+      filterable: true,
+      type: "select",
+      width: 100,overHidden: true,
+      dicData:dicts.material_level,
+      props: { label: "dictLabel", value: "dictValue" },
+      rules: [{
+        required: true,
+        message: "请选择物料级别",
+        trigger: "blur"
+      }],
+    },
+    { label: "生产厂家", prop: "manufacturer",width: 100,overHidden: true ,rules: [{
+        required: true,
+        message: "请填写生产厂家",
+        trigger: "blur"
+      }],},
+    {
+      label: "质检方案",
+      prop: "inspectDictValue",
+      search: true,
+      filterable: true,
+      type: "select",
+      width: 100,overHidden: true,
+      dicData:dicts.quality_testing_plan,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "适用平台",
+      prop: "applicablePlatformsDictValue",
+      search: true,
+      filterable: true,
+      type: "select",
+      width: 100,overHidden: true,
+      dicData:dicts.applicable_platforms,
+      props: { label: "dictLabel", value: "dictValue" },
+      rules: [{
+        required: true, message: "请选择适用平台",
+        trigger: "blur"
+      }],
+    },
+    {
+      label: "质量等级",
+      prop: "qualityLevelDictValue",
+      search: true,
+      width: 100,overHidden: true,
+      filterable: true,
+      type: "select",
+      dicData:dicts.quality_grade,
+      props: { label: "dictLabel", value: "dictValue" },
+      rules: [{
+        required: true,
+        message: "请选择质量等级",
+        trigger: "blur"
+      }],
+    },
+    {
+      label: "选用类型",
+      prop: "selectionDictValue",
+      search: true,
+      filterable: true,
+      width: 100,overHidden: true,
+      type: "select",
+      dicData:dicts.selection_type,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "产品阶段",
+      prop: "stageDictValue",
+      search: true,
+      filterable: true,
+      width: 100,overHidden: true,
+      type: "select",
+      dicData:dicts.stage,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    { label: "客户型号", prop: "customerModel",width: 100,overHidden: true,  },
+    { label: "保质期(天)", prop: "qualityGuaranteePeriod",width: 100,overHidden: true,type:"number" ,min:0 },
+    {
+      label: "封装方法",
+      prop: "packageDictValue",
+      search: true,
+      width: 100,overHidden: true,
+      filterable: true,
+      type: "select",
+      dicData:dicts.packaging_method,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+
+    {
+      label: "是否工装",
+      prop: "frock",
+      search: true,
+      width: 90,overHidden: true,
+      filterable: true,
+      type: "radio", //类型为单选框
+      dicData: [
+        {
+          label: "是",
+          value: "1",
+        },
+        {
+          label: "否",
+          value: "0",
+        },
+
+      ],
+      value: "1",
+      rules: [{
+        required: true,
+        message: "是否工装",
+        trigger: "blur"
+      }],
+    },
+    { label: "筛选规范", prop: "selectionSpec",width: 150,overHidden: true,  type: "textarea",span:18},
+
+    { label: "备注", prop: "remark", width: 150,overHidden: true,type: "textarea", span:18 },
+  ],
 });
 });
 
 
 </script>
 </script>

+ 166 - 0
src/views/plan/finishProduct/index.vue

@@ -0,0 +1,166 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-update="updateRow"
+      @row-del="deleteRow"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
+    >
+
+
+        <template #menu="{row,index,type}">
+          <el-button @click="editSkills(row)"
+                     icon="el-icon-edit"
+                     text
+                     type="primary"
+          >编辑</el-button>
+        </template>
+
+    </avue-crud>
+    <el-dialog
+      v-model="dialog.visible"
+      :title="dialog.title"
+      width="800px"
+      :destroy-on-close="true"
+      @close="dialog.visible = false"
+    >
+      <user-skill   :dialog="dialog"/>
+    </el-dialog>
+
+    <el-dialog
+      v-model="editDialog.visible"
+      :title="editDialog.title"
+      width="800px"
+      :destroy-on-close="true"
+      @close="editClose"
+    >
+      <editSkill   :editDialog="editDialog" :skillId="editUser.id" :postId="editUser.postId"/>
+    </el-dialog>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import editSkill from "@/views/base/skill/components/edit-skill.vue"
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+// 数据字典相关
+const { dicts } = useDictionaryStoreHook();
+
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+const dialog = reactive({
+  title: "员工技能",
+  visible: false,
+});
+
+const editDialog = reactive({
+  title: "编辑",
+  visible: false,
+});
+const editClose=()=>{
+  editDialog.visible = false;
+  dataList();
+}
+const addRow=()=>{
+  dialog.visible=true;
+}
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/plan/workOrder/finishProductIn",
+  });
+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,
+// });
+
+
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+
+
+
+/**
+ * 上传excel相关
+ */
+const uploadRef = ref(null);
+const uploadFinished = () => {
+  // 上传完成后的刷新操作
+  page.currentPage = 1;
+  dataList();
+};
+
+const editUser=ref(null);
+const editSkills=(row)=>{
+  editDialog.visible=true;
+  editUser.value=row;
+
+}
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  selection: false,
+  addBtn:false,
+  viewBtn:false,
+  columnBtn: false,
+  gridBtn: false,
+  refreshBtn:false,
+  editBtn:false,
+  column: [
+
+
+    { label: "产品名称", prop: "materialName",
+      search: true,
+      overHidden: true,
+
+    },
+    { label: "产品编码", prop: "materialCode", width: 140,overHidden: true,search: true
+    },
+    {
+      label: "订单编码",
+      prop: "orderCode",
+      search: true,
+    },
+    { label: "工单号", prop: "workOrderCode",
+      search: true,
+      overHidden: true
+
+    },
+    { label: "完工时间", prop: "updated", overHidden: true,
+      disabled:true, },
+    {
+      label: "物料数量",
+      prop: "completeNum",
+    },
+    {
+      label: "入库数量",
+      prop: "inventoryNum",
+    },
+  ],
+});
+
+
+</script>

+ 53 - 3
src/views/quality/faultHandle/components/fault-detail.vue

@@ -54,6 +54,15 @@
       处理结果:&nbsp;&nbsp;{{faultDetails1.disposalMeasures}}
       处理结果:&nbsp;&nbsp;{{faultDetails1.disposalMeasures}}
     </div>
     </div>
   </div>
   </div>
+  <div class="mainContentBox" v-if="faultDetails1!=null&&faultDetails1.currentState==5">
+    <avue-crud
+      ref="formRef"
+      v-model="form"
+      :data="data2"
+      :option="option2"
+    >
+    </avue-crud>
+  </div>
 </template>
 </template>
 <script setup>
 <script setup>
   import { ref, getCurrentInstance } from "vue";
   import { ref, getCurrentInstance } from "vue";
@@ -61,7 +70,7 @@
   import ButtonPermKeys from "@/common/configs/buttonPermission";
   import ButtonPermKeys from "@/common/configs/buttonPermission";
   import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
   import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
   const { isShowTable, tableType } = toRefs(useCommonStoreHook());
   const { isShowTable, tableType } = toRefs(useCommonStoreHook());
-  import {getFault,getFaultDetails} from "@/api/fault"
+  import {getFault,getFaultDetails,getSeqNoList} from "@/api/fault"
   import dictDataUtil from "@/common/configs/dictDataUtil";
   import dictDataUtil from "@/common/configs/dictDataUtil";
   // 数据字典相关
   // 数据字典相关
   const { dicts } = useDictionaryStoreHook();
   const { dicts } = useDictionaryStoreHook();
@@ -72,7 +81,7 @@
   };
   };
   const props = defineProps({
   const props = defineProps({
     escalationFaultId: {
     escalationFaultId: {
-      type: Number,
+      type: String,
       default: () => {
       default: () => {
         return 0;
         return 0;
       }
       }
@@ -111,6 +120,9 @@
 
 
   const faultImg1=ref(null);
   const faultImg1=ref(null);
   const formData1=ref({});
   const formData1=ref({});
+  const data2=ref([]);
+  const option2=ref([]);
+  const formFault=ref({});
   const faultDetails1=ref(null);
   const faultDetails1=ref(null);
 
 
   onMounted(() => {
   onMounted(() => {
@@ -118,10 +130,11 @@
     search.value.escalationFaultId=props.escalationFaultId;
     search.value.escalationFaultId=props.escalationFaultId;
     dataNoPageList();
     dataNoPageList();
     formData1.value.escalationFaultId=props.escalationFaultId;
     formData1.value.escalationFaultId=props.escalationFaultId;
+    formFault.value.escalationFaultId=props.escalationFaultId;
     getFault(formData1.value).then((data) => {
     getFault(formData1.value).then((data) => {
 
 
       faultImg1.value=data.data;
       faultImg1.value=data.data;
-      console.info(faultImg1.value);
+
     });
     });
     getFaultDetails(props.escalationFaultId).then((data) => {
     getFaultDetails(props.escalationFaultId).then((data) => {
 
 
@@ -131,8 +144,17 @@
           faultDetails1.value.disposalMeasures=dicts.disposal_measures_type[i].dictLabel;
           faultDetails1.value.disposalMeasures=dicts.disposal_measures_type[i].dictLabel;
         }
         }
       }
       }
+      getSeqNoList(formFault.value).then((data) => {
+
+        data2.value=data.data;
+        for(let i=0;i<data2.value.length;i++){
+          data2.value[i].$cellEdit=true;
+        }
+      });
+      console.info(faultDetails1.value);
     });
     });
 
 
+
   });
   });
 
 
 
 
@@ -144,6 +166,8 @@
     delBtn:false,
     delBtn:false,
     viewBtn:false,
     viewBtn:false,
     menu:false,
     menu:false,
+    columnBtn: false,
+    gridBtn: false,
     column: [
     column: [
       {
       {
         label: "缺陷大类",
         label: "缺陷大类",
@@ -159,6 +183,32 @@
   });
   });
 
 
 
 
+  // 设置表格列或者其他自定义的option
+  option2.value = {
+    addBtn: false,
+    editBtn:false,
+    delBtn:false,
+    viewBtn:false,
+    menu:false,
+    columnBtn: false,
+    gridBtn: false,
+    refreshBtn:false,
+    column: [
+      {
+        label: "跟踪卡号",
+        prop: "seqNo",
+        labelWidth:130,
+      },
+      {
+        label: "返工工序",
+        prop: "reworkOperationName",
+        labelWidth:130,
+        type:"select",
+      },
+
+    ],
+  };
+
 </script>
 </script>
 <style>
 <style>
   .title-fault{
   .title-fault{

+ 8 - 2
src/views/quality/faultHandle/components/fault-page.vue

@@ -177,9 +177,15 @@
 const listData=(row)=>{
 const listData=(row)=>{
 
 
   postDetail.value[row.$index].reworkProcessId=value.value[row.$index];
   postDetail.value[row.$index].reworkProcessId=value.value[row.$index];
-  postDetail.value[row.$index].workOrderCode=props.workOrderCode;
 
 
-}
+  postDetail.value[row.$index].workOrderCode=props.workOrderCode;
+  for(let i=0;i<optionFault.value[row.$index].length;i++){
+    if(value.value[row.$index]==optionFault.value[row.$index][i].id){
+      postDetail.value[row.$index].reworkOperationName=optionFault.value[row.$index][i].operationName;
+    }
+  }
+  console.info(postDetail.value[row.$index]);
+ }
 const faultHandle=ref({});
 const faultHandle=ref({});
  const onHandle=()=>{
  const onHandle=()=>{
    for(let i=0;i<postDetail.value.length;i++){
    for(let i=0;i<postDetail.value.length;i++){

+ 9 - 2
src/views/report/statistics/dailystorage/index.vue

@@ -183,12 +183,12 @@ data1.value.option = Object.assign(data1.value.option, {
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "计划总共用时",
+      label: "计划总共用时(秒)",
       prop: "planTotalTime",
       prop: "planTotalTime",
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "实际总共用时",
+      label: "实际总共用时(秒)",
       prop: "realTotalTime",
       prop: "realTotalTime",
       search: false,
       search: false,
     },
     },
@@ -215,6 +215,13 @@ data2.value.option = Object.assign(data2.value.option, {
   delBtn: false,
   delBtn: false,
   column: [
   column: [
     {
     {
+      label: "流转卡号",
+      prop: "seqNo",
+      search: false,
+      width:150,
+      overHidden:true,
+    },
+    {
       label: "交付日期",
       label: "交付日期",
       prop: "deliverTime",
       prop: "deliverTime",
       search: false,
       search: false,

+ 2 - 2
src/views/report/statistics/outputstatistics/index.vue

@@ -171,12 +171,12 @@ data1.value.option = Object.assign(data1.value.option, {
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "标准用时",
+      label: "标准用时(秒)",
       prop: "standardWorktime",
       prop: "standardWorktime",
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "总共用时",
+      label: "总共用时(秒)",
       prop: "totalTime",
       prop: "totalTime",
       search: false,
       search: false,
     },
     },

+ 2 - 2
src/views/report/statistics/stationbeat/index.vue

@@ -132,12 +132,12 @@ data1.value.option = Object.assign(data1.value.option, {
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "标准用时",
+      label: "标准用时(秒)",
       prop: "standardWorktime",
       prop: "standardWorktime",
       search: false,
       search: false,
     },
     },
     {
     {
-      label: "总共用时",
+      label: "总共用时(秒)",
       prop: "totalTime",
       prop: "totalTime",
       search: false,
       search: false,
     },
     },