dengrui 8 mesi fa
parent
commit
52a6851823

+ 13 - 0
src/api/plan/index.ts

@@ -0,0 +1,13 @@
+import request from "@/utils/request";
+export function getStockList(id: string) {
+  return request({
+    url: `/api/v1/erp/materialPreparation/${id}`,
+    method: "get",
+  });
+}
+export function getReturnList(id: string) {
+  return request({
+    url: `/api/v1/erp/materialReceive/${id}`,
+    method: "get",
+  });
+}

+ 63 - 0
src/views/plan/order/components/returnPre.vue

@@ -0,0 +1,63 @@
+<template>
+  <el-dialog
+    v-model="dialog.visible"
+    :title="dialog.title"
+    width="950px"
+    @close="
+      dialog.visible = false;
+      emits('update:modelValue', false);
+    "
+  >
+    <el-collapse accordion>
+      <el-collapse-item
+        v-for="item in tableData"
+        :title="item.docNo"
+        :key="item"
+      >
+        <el-table id="table" :data="item.lineList" border>
+          <el-table-column prop="productCode" label="物料编码" />
+          <el-table-column prop="productName" label="物料名称" />
+          <el-table-column prop="productModel" label="规格" />
+          <el-table-column prop="supplyNum" label="数量" />
+          <el-table-column prop="batchNo" label="批号" />
+          <el-table-column prop="bomRemark" label="BOM备注" />
+        </el-table>
+      </el-collapse-item>
+    </el-collapse>
+  </el-dialog>
+</template>
+<script setup>
+import { defineProps, ref } from "vue";
+import { getReturnList } from "@/api/plan";
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+const props = defineProps({
+  modelValue: {
+    type: [Boolean],
+  },
+  orderCode: {
+    type: [String],
+  },
+});
+const dialog = reactive({
+  title: "领料",
+  visible: false,
+});
+const tableData = ref([]);
+const emits = defineEmits(["update:modelValue"]);
+// 设置表格列或者其他自定义的option
+const getList = async () => {
+  const { data } = await getReturnList(props.orderCode);
+  tableData.value = data;
+};
+watch(
+  () => props.modelValue,
+  (newValue) => {
+    dialog.visible = newValue;
+    if (newValue) {
+      getList();
+    }
+  },
+  { immediate: true }
+);
+</script>

+ 59 - 0
src/views/plan/order/components/stockPre.vue

@@ -0,0 +1,59 @@
+<template>
+  <el-dialog
+    v-model="dialog.visible"
+    :title="dialog.title"
+    width="950px"
+    @close="
+      dialog.visible = false;
+      emits('update:modelValue', false);
+    "
+  >
+    <el-table id="table" :data="tableData" border>
+      <el-table-column prop="productCode" label="物料编码" />
+      <el-table-column prop="productName" label="物料名称" />
+      <el-table-column prop="productModel" label="规格" />
+      <el-table-column prop="needNum" label="需求数量" />
+      <el-table-column prop="grantNum" label="已发放数量" />
+      <el-table-column prop="stockNum" label="库存数量" />
+      <el-table-column prop="secondSieves" label="是否二筛">
+        <template #default="{ row }">
+          {{ row.secondSieves ? "是" : "否" }}
+        </template>
+      </el-table-column>
+    </el-table>
+  </el-dialog>
+</template>
+<script setup>
+import { defineProps, ref } from "vue";
+import { getStockList } from "@/api/plan";
+const props = defineProps({
+  modelValue: {
+    type: [Boolean],
+  },
+  orderCode: {
+    type: [String],
+  },
+});
+const dialog = reactive({
+  title: "备料",
+  visible: false,
+});
+const tableData = ref([]);
+const emits = defineEmits(["update:modelValue"]);
+// 设置表格列或者其他自定义的option
+const getList = async () => {
+  const { data } = await getStockList(props.orderCode);
+  tableData.value = data;
+};
+
+watch(
+  () => props.modelValue,
+  (newValue) => {
+    dialog.visible = newValue;
+    if (newValue) {
+      getList();
+    }
+  },
+  { immediate: true }
+);
+</script>

+ 29 - 1
src/views/plan/order/index.vue

@@ -78,6 +78,20 @@
           @click="rowDel(row, 0)"
           ><i-ep-edit />删除
         </el-button>
+        <el-button
+          type="primary"
+          link
+          size="small"
+          @click="toStock(row.orderCode)"
+          ><i-ep-edit />备料
+        </el-button>
+        <el-button
+          type="primary"
+          link
+          size="small"
+          @click="toReturn(row.orderCode)"
+          ><i-ep-edit />领料
+        </el-button>
         <!--        <el-button
           type="primary"
           size="small"
@@ -213,6 +227,8 @@
         </el-scrollbar>
       </div>
     </el-dialog>
+    <StockPre v-model="stockState" :orderCode="orderCode" />
+    <ReturnPre v-model="returnState" :orderCode="orderCode" />
     <CommonTable
       ref="ctableRef"
       tableTitle="报故单"
@@ -243,7 +259,19 @@ import {
 import { ref } from "vue";
 import _ from "lodash-es";
 import ChoiceItemPage from "@/views/base/materials/components/choice-item-page.vue";
-
+import ReturnPre from "./components/returnPre.vue";
+import StockPre from "./components/stockPre.vue";
+const stockState = ref(false);
+const returnState = ref(false);
+const orderCode = ref("");
+const toStock = (code: string) => {
+  orderCode.value = code;
+  stockState.value = true;
+};
+const toReturn = (code: string) => {
+  orderCode.value = code;
+  returnState.value = true;
+};
 // 弹窗对象
 const dialog = reactive({
   visible: false,