瀏覽代碼

缺料反馈

lupeng 6 月之前
父節點
當前提交
129660404b

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

@@ -264,6 +264,14 @@ export function addShortage(data: object): AxiosPromise<any> {
     data: data,
   });
 }
+
+export function handleShortage(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/planShortage/handle",
+    method: "post",
+    data: data,
+  });
+}
 export function zipOrder(data: object): AxiosPromise<any> {
   return request({
     url: "/api/v1/workOrder/data/order/zip",
@@ -271,3 +279,10 @@ export function zipOrder(data: object): AxiosPromise<any> {
     data: data,
   });
 }
+
+export function getShortageItem(shortageId: number): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/planShortageItem/getShortageItem/" + shortageId,
+    method: "get",
+  });
+}

+ 118 - 0
src/views/plan/shortage/components/shortage-detail.vue

@@ -0,0 +1,118 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-click="rowClick"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @row-update="updateRow"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { defineProps, ref } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import { getShortageItem } from "@/api/order/index";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/planShortageItem",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+const emit = defineEmits(["orderInfo"]);
+const rowClick = (row) => {
+  emit("orderInfo", row);
+};
+const dataTable = ref([]);
+const props = defineProps({
+  shortage: {
+    type: Object,
+    default: () => {
+      return "0";
+    },
+  },
+  dialog: {
+    type: Object,
+    default: () => {
+      return "0";
+    },
+  },
+});
+const userList = ref([]);
+import { getUserList } from "@/api/system/user";
+const queryUserList = () => {
+  getUserList({}).then((data) => {
+    userList.value = data.data;
+  });
+};
+onMounted(() => {
+  search.value.shortageId = props.shortage.id;
+  dataList();
+});
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  selection: false,
+  search: false,
+  addBtn: false,
+  viewBtn: false,
+  column: [
+    {
+      label: "物料编号",
+      prop: "materialCode",
+      search: true,
+      width: 150,
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "物料名称",
+      prop: "materialName",
+      search: true,
+      width: 150,
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "数量",
+      prop: "materialNum",
+      width: 150,
+      overHidden: true,
+    },
+    {
+      label: "单位",
+      prop: "unit",
+      width: 150,
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "物料规格",
+      prop: "materialModel",
+      width: 150,
+      overHidden: true,
+      disabled: true,
+    },
+  ],
+});
+</script>

+ 114 - 0
src/views/plan/shortage/components/shortage-view.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-click="rowClick"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @row-update="updateRow"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { defineProps, ref } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+
+import { useCommonStoreHook } from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import { getShortageItem } from "@/api/order/index";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/planShortageItem",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+const emit = defineEmits(["orderInfo"]);
+const rowClick = (row) => {
+  emit("orderInfo", row);
+};
+const dataTable = ref([]);
+const props = defineProps({
+  shortage: {
+    type: Object,
+    default: () => {
+      return "0";
+    },
+  },
+  dialog: {
+    type: Object,
+    default: () => {
+      return "0";
+    },
+  },
+});
+const userList = ref([]);
+import { getUserList } from "@/api/system/user";
+const queryUserList = () => {
+  getUserList({}).then((data) => {
+    userList.value = data.data;
+  });
+};
+onMounted(() => {
+  search.value.shortageId = props.shortage.id;
+  dataList();
+});
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  selection: false,
+  search: false,
+  addBtn: false,
+  viewBtn: false,
+  menu: false,
+  column: [
+    {
+      label: "物料编号",
+      prop: "materialCode",
+      search: true,
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "物料名称",
+      prop: "materialName",
+      search: true,
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "数量",
+      prop: "materialNum",
+      overHidden: true,
+    },
+    {
+      label: "单位",
+      prop: "unit",
+      overHidden: true,
+      disabled: true,
+    },
+    {
+      label: "物料规格",
+      prop: "materialModel",
+      overHidden: true,
+      disabled: true,
+    },
+  ],
+});
+</script>

+ 80 - 15
src/views/plan/shortage/index.vue

@@ -16,7 +16,39 @@
       @current-change="dataList"
       @selection-change="selectionChange"
     >
-      <template #menu-left="{ size }"> </template>
+      <template #menu="{ row, index, type }">
+        <el-button type="primary" link size="small" @click="viewData(row, 0)"
+          ><i-ep-view />查看
+        </el-button>
+        <el-button
+          v-if="row.state == 0"
+          type="primary"
+          link
+          size="small"
+          @click="handleEdit(row, 0)"
+          ><i-ep-edit />编辑
+        </el-button>
+        <el-button
+          v-if="row.state == 0 && userStore.user.username == row.manager"
+          type="primary"
+          link
+          size="small"
+          @click="handle(row, 2)"
+          ><i-ep-edit />确认接收
+        </el-button>
+        <el-button
+          v-if="
+            row.state == 1 &&
+            (userStore.user.username == row.alarmManager ||
+              userStore.user.username == row.manager)
+          "
+          type="primary"
+          link
+          size="small"
+          @click="handle(row, 2)"
+          ><i-ep-edit />确认接收
+        </el-button>
+      </template>
     </avue-crud>
 
     <el-dialog
@@ -26,40 +58,56 @@
       @close="dialog.visible = false"
       :destroy-on-close="true"
     >
-      <drawing-page
-        :materialCode="drawingDetail.materialCode"
-        :materialName="drawingDetail.materialName"
-        :dialog="dialog"
-      />
+      <shortage-detail :shortage="shortage" :dialog="dialog" />
+    </el-dialog>
+    <el-dialog
+      v-model="dialog2.visible"
+      :title="dialog2.title"
+      width="900px"
+      @close="dialog2.visible = false"
+      :destroy-on-close="true"
+    >
+      <shortage-view :shortage="shortage" :dialog="dialog" />
     </el-dialog>
-    <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
   </div>
 </template>
-<script setup lang="ts">
+<script setup>
 import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
 import {
   useCommonStoreHook,
   useDictionaryStore,
-  useDictionaryStoreHook,
+  useUserStoreHook,
 } from "@/store";
+import ShortageDetail from "@/views/plan/shortage/components/shortage-detail.vue";
+import { handleShortage } from "@/api/order/index";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const { dicts } = useDictionaryStore();
-
+const userStore = useUserStoreHook();
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
 };
+const shortage = ref({});
+const handleEdit = (row, index) => {
+  dialog.visible = true;
+  shortage.value = row;
+};
+const viewData = (row, index) => {
+  dialog2.visible = true;
+  shortage.value = row;
+};
 const dialog = reactive({
-  title: "图纸",
+  title: "编辑",
+  visible: false,
+});
+
+const dialog2 = reactive({
+  title: "缺料明细",
   visible: false,
 });
 const drawingDetail = ref(null);
-const drawing = (row) => {
-  drawingDetail.value = row;
-  dialog.visible = true;
-};
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
@@ -108,9 +156,24 @@ const importBomExcelData = () => {
     uploadRef.value.show("/api/v1/base/materialBom/bom/import");
   }
 };
+const handleData = ref({});
+const handle = (row, state) => {
+  handleData.value.id = row.id;
+  handleData.value.state = state;
+  handleShortage(handleData.value).then((data) => {
+    if (data.code == "200") {
+      dataList();
+      ElMessage.success("操作成功");
+    } else {
+      ElMessage.error(data.message);
+    }
+  });
+};
 option.value = Object.assign(option.value, {
   addBtn: false,
   viewBtn: false,
+  editBtn: false,
+  menuWidth: 240,
   column: [
     {
       label: "订单号",
@@ -161,6 +224,8 @@ option.value = Object.assign(option.value, {
     {
       label: "处理时间",
       prop: "handleTime",
+      format: "YYYY-MM-DD HH:mm:ss",
+      valueFormat: "YYYY-MM-DD HH:mm:ss",
       width: 120,
     },