Prechádzať zdrojové kódy

fix:订单数据包生成下载,bom外层导入

lupeng 9 mesiacov pred
rodič
commit
af6dd73378

+ 8 - 0
src/api/order/index.ts

@@ -249,3 +249,11 @@ export function zipWorkOrder(data: object): AxiosPromise<any> {
     data:data,
   });
 }
+
+export function zipOrder(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/workOrder/data/order/zip",
+    method: "post",
+    data:data,
+  });
+}

+ 2 - 0
src/common/configs/buttonPermission.ts

@@ -53,6 +53,8 @@ const ButtonPermKeys = {
       order_del: "plan:order:del",
       order_import: "plan:order:import",
       order_export: "plan:order:export",
+      order_data: "plan:order:data",
+      order_downLoad: "plan:order:downLoad",
       work_order_add: "plan:workOrder:add",
       work_order_edit: "plan:workOrder:edit",
       work_order_del: "plan:workOrder:del",

+ 10 - 2
src/views/base/bom/index.vue

@@ -9,13 +9,14 @@
       <div class="title-detail">
         物料属性 : {{ dataDetail.attributeDictValue }}
       </div>
-      <div class="title-detail">物料规格 : {{ dataDetail.spec }}</div>
+
       <div class="title-detail">单位 : {{ dataDetail.unitDictValue }}</div>
       <div class="title-detail">物料级别 : {{ dataDetail.levelDictValue }}</div>
       <div class="title-detail">产品阶段 : {{ dataDetail.stageDictValue }}</div>
       <div class="title-detail">生产厂家 : {{ dataDetail.manufacturer }}</div>
       <div class="title-detail">创建时间 : {{ dataDetail.created }}</div>
-      <div class="title-detail">备注 : {{ dataDetail.remark }}</div>
+      <div class="title-text">物料规格 : {{ dataDetail.spec }}</div>
+      <div class="title-text">备注 : {{ dataDetail.remark }}</div>
     </div>
     <avue-crud
       ref="crudRef"
@@ -456,6 +457,13 @@ const selectedFinish = (selectedValue) => {
   margin: 5px 20px 5px 0;
   float: left;
 }
+.title-text{
+  width: 100%;
+  height: 30px;
+  line-height: 50px;
+  margin: 5px 20px 5px 0;
+  float: left;
+}
 .detail {
   margin: 0 auto 30px;
   width: 100%;

+ 2 - 2
src/views/base/craftManagement/route/bindConfig.ts

@@ -188,10 +188,10 @@ export const formOption = {
       span: 24,
       type: "textarea",
     },
-    {
+   /* {
       label: "tbom文件",
       prop: "tbomUrl",
       span: 24,
-    },
+    },*/
   ],
 };

+ 2 - 2
src/views/base/craftManagement/route/bindProcess.vue

@@ -102,12 +102,12 @@
             v-model="currentProcess"
             style="padding: 10px; background-color: white"
           >
-            <template #tbomUrl>
+           <!-- <template #tbomUrl>
               <FilesUpload
                 v-model:src="currentProcess.tbomUrl"
                 :show-tip="false"
               />
-            </template>
+            </template>-->
           </avue-form>
           <div class="editProcces">
             <el-button type="primary" :icon="Grid" @click="editProComponent"

+ 5 - 1
src/views/base/excel/template/index.vue

@@ -79,8 +79,10 @@
                   v-model="materialValue"
                   multiple
                   @remove-tag="setFormMaterial"
+                  ref="selectBom"
                   placeholder="请选择物料"
                   @click="startCreat"
+                  @focus="startCreat"
                 >
                   <el-option
                     v-for="item in formVlaue.materialList"
@@ -320,8 +322,10 @@ const showPosition = () => {
 const multipleRow = ref(true);
 const ctableRef = ref(null);
 const ctableRefKey = ref(false);
+const selectBom = ref({});
 const startCreat = () => {
-  ctableRef.value.mergeOption({
+  selectBom.value.blur();
+  ctableRef.value?.mergeOption({
     selection: true,
     reserveSelection: true,
   });

+ 23 - 2
src/views/base/materials/index.vue

@@ -39,7 +39,7 @@
 
       <template #menu-right="{}">
         <el-dropdown split-button
-          >导入
+          >物料导入
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item
@@ -53,11 +53,26 @@
             </el-dropdown-menu>
           </template>
         </el-dropdown>
+        <el-dropdown split-button style="margin-left: 10px"
+        >BOM导入
+          <template #dropdown>
+            <el-dropdown-menu>
+              <el-dropdown-item
+                @click="downloadTemplate('/api/v1/base/materialBom/bom/template')"
+              >
+                <i-ep-download />下载模板
+              </el-dropdown-item>
+              <el-dropdown-item @click="importBomExcelData">
+                <i-ep-top />导入数据
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </template>
+        </el-dropdown>
         <el-button
           class="ml-3"
           @click="exportData('/api/v1/base/material/export')"
         >
-          <template #icon> <i-ep-download /> </template>导出
+          <template #icon> <i-ep-download /> </template>物料导出
         </el-button>
       </template>
     </avue-crud>
@@ -146,6 +161,12 @@ const importExcelData = () => {
     uploadRef.value.show("/api/v1/base/material/import");
   }
 };
+
+const importBomExcelData = () => {
+  if (uploadRef.value) {
+    uploadRef.value.show("/api/v1/base/materialBom/bom/import");
+  }
+};
 option.value = Object.assign(option.value, {
   selection: true,
   column: [

+ 46 - 3
src/views/plan/order/index.vue

@@ -26,7 +26,7 @@
           >导入
           <template #dropdown>
             <el-dropdown-menu>
-              <el-dropdown-item @click="downloadTemplate">
+              <el-dropdown-item @click="downloadTemplateExcel">
                 <i-ep-download />
                 下载模板
               </el-dropdown-item>
@@ -94,6 +94,26 @@
           @click="handleScanCode(row.id)"
           >二维码生成
         </el-button>
+        <el-button
+          icon="el-icon-notebook"
+          text
+          v-if="row.orderState === '5' && row.packageUrl === '0'"
+          @click="zipData(row.orderCode)"
+          type="primary"
+          v-hasPerm="[buttonPermission.PLAN.BTNS.order_data]"
+          :size="size"
+        >生成数据包</el-button
+        >
+        <el-button
+          icon="el-icon-download"
+          text
+          v-if="row.orderState === '5' && row.packageUrl !== '0'"
+          @click="downloadTemplate('/api/v1/plan/order/zip/' + row.id)"
+          type="primary"
+          v-hasPerm="[buttonPermission.PLAN.BTNS.order_downLoad]"
+          :size="size"
+        >下载数据包</el-button
+        >
       </template>
     </avue-crud>
     <el-dialog
@@ -254,7 +274,14 @@ import {
 import { ref } from "vue";
 import _ from "lodash-es";
 import ChoiceItemPage from "@/views/base/materials/components/choice-item-page.vue";
+import { zipOrder } from "../../../api/order";
+import { useCrud } from "../../../hooks/userCrud";
 
+const {Utils } =
+  useCrud({
+    src: "/api/v1/plan/order",
+  });
+const {downloadTemplate} = Utils; //按钮权限等工具
 // 弹窗对象
 const dialog = reactive({
   visible: false,
@@ -266,9 +293,9 @@ const ctableRef = ref(null);
 const search = ref({});
 const option = ref({});
 const pageData = ref([]);
+const loading = ref(false);
 const form = ref({});
 const page = ref({ total: 0, currentPage: 1, pageSize: 10 });
-const loading = ref(false);
 const uploadRef = ref<UploadInstance>(); // 上传组件
 const resetChange = () => {
   handleQuery(null, null);
@@ -302,6 +329,21 @@ const permission = reactive({
   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
   menu: true,
 });
+const zipOder = ref({});
+const zipData = (orderCode) => {
+  loading.value = true;
+  zipOder.value.orderCode = orderCode;
+  zipOrder(zipOder.value).then((data) => {
+    if (data.code === "200") {
+      loading.value = false;
+      ElMessage.success(data.msg);
+      handleQuery(null, null);
+    } else {
+      loading.value = false;
+      ElMessage.error(data.msg);
+    }
+  });
+};
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 option.value = {
   border: true,
@@ -814,7 +856,7 @@ const closeDialog = () => {
     importData.fileList = [];
   }
 };
-const downloadTemplate = () => {
+const downloadTemplateExcel = () => {
   if (window.openHarmonyBridge) {
     //适配鸿蒙下载
     window.openHarmonyBridge.download(
@@ -831,6 +873,7 @@ const downloadTemplate = () => {
     });
   }
 };
+
 const handleEdit = (row: any, index: any) => {
   crudRef.value && crudRef.value.rowEdit(row, index);
 };