Kaynağa Gözat

Merge remote-tracking branch 'origin/dev' into dev

001295 1 yıl önce
ebeveyn
işleme
d5eecfc67f

+ 15 - 7
src/views/material/requisition/fun-button/pi-liang-shan-chu/index.vue

@@ -17,13 +17,9 @@ export default {
     disabled: {
       get() {
         let { selectData } = this.$props;
-        // 单据状态:0-自由态;3-已驳回;9-已回退
-        let delStatus = ["0", "3", "9"];
+
         if (selectData.length > 0) {
-          let del = selectData.filter(
-            (item) => delStatus.findIndex((d) => d == item.status) === -1
-          );
-          return del.length > 0;
+          return false;
         }
         return true;
       },
@@ -32,6 +28,18 @@ export default {
   },
   methods: {
     async onClick() {
+      // 单据状态:0-自由态;3-已驳回;9-已回退
+      let delStatus = ["0", "3", "9"];
+      let { selectData } = this.$props;
+      let del = selectData.filter(
+        (item) => delStatus.findIndex((d) => d == item.status) === -1
+      );
+      if (del.length > 0) {
+        return this.$notify.warning({
+          message: "不允许删除非[自由态、已驳回、已退回]的单据!",
+        });
+      }
+
       this.$confirm("确认批量删除?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -40,7 +48,7 @@ export default {
         .then(async () => {
           try {
             this.$modal.loading("处理中...");
-            let ids = this.$props.selectData.map((item) => item.id);
+            let ids = selectData.map((item) => item.id);
             console.log(ids, "ids");
             let { code, msg } = await deleteApplies({ ids });
             if (code == 200) {

+ 4 - 2
src/views/purchase/purchase-order/column.js

@@ -1880,14 +1880,16 @@ export const SearchColumns = [
 
   {
     item: {
-      key: "status",
+      // key: "status",
+      key: "statusList",
       title: "单据状态",
     },
     attr: {
       is: "el-select",
       dictName: "documents_status",
       clearable: true,
-      // multiple: true,
+      multiple: true,
+      collapseTags: true,
     },
   },
   {

+ 17 - 4
src/views/purchase/purchase-order/index.vue

@@ -38,6 +38,7 @@ export default {
     HdkButton: () => import("./close/itemOpen.vue"),
     CounterApprove: () => import("./fs/index.vue"),
     QueryScheme: () => import("@/components/query-scheme/index.vue"),
+    thButton: () => import("./tui-hui/index.vue"),
   },
   data() {
     const initTabColumns = () => TabColumns;
@@ -722,12 +723,17 @@ export default {
           style="margin-left: 10px"
           :key="checkedList.length + 1"
         >
-          <el-button
+          <!-- <el-button
             :size="size"
             @click="handleAllReturn"
             :disabled="judgeIsAllReturn()"
             >整单退回</el-button
-          >
+          > -->
+          <th-button
+            :size="size"
+            :main-data="checkedList"
+            @success="handleRefreshList"
+          ></th-button>
           <zdgb-button
             :select-data="checkedList"
             :size="size"
@@ -847,12 +853,19 @@ export default {
 
     <div style="position: relative" v-loading="tabLoading">
       <el-row style="position: absolute; top: 5px; right: 20px; z-index: 10">
-        <el-button
+        <th-button
+          :size="size"
+          type="line"
+          :main-data="[...primaryResource]"
+          :subtabulation="checkedTabList"
+          @success="handleRefreshList"
+        ></th-button>
+        <!-- <el-button
           :size="size"
           @click="handleLineReturn"
           :disabled="judgeIsLineReturn()"
           >行退回</el-button
-        >
+        > -->
         <hgb-button
           :select-data="checkedTabList"
           :size="size"

+ 107 - 0
src/views/purchase/purchase-order/tui-hui/index.vue

@@ -0,0 +1,107 @@
+<script>
+import orderApi from "@/api/business/purchase/purchase-order";
+export default {
+  name: "TuiHui",
+  props: {
+    // 主表
+    mainData: {
+      type: Array,
+      require: true,
+    },
+    // 子表
+    subtabulation: {
+      type: Array,
+      default: () => [],
+    },
+    // 退回类型 all-整单退回;line-行退回
+    type: {
+      type: String,
+      default: "all",
+    },
+  },
+  data() {
+    return {};
+  },
+  computed: {
+    title: {
+      get() {
+        let { type } = this.$props;
+        if (type === "line") return "行退回";
+        return "整单退回";
+      },
+      set() {},
+    },
+    disabled: {
+      get() {
+        let { mainData, subtabulation, type } = this.$props;
+        if (type === "line") {
+          // 行退回
+          if (subtabulation.length > 0) {
+            return this.judgeNot(mainData[0]);
+          }
+          return true;
+        }
+        // 整单退回
+        if (mainData.length > 0) {
+          let notList = mainData.filter((item) => this.judgeNot(item));
+          return notList.length > 0;
+        }
+        return true;
+      },
+      set() {},
+    },
+  },
+  methods: {
+    onClick() {
+      this.$prompt("请输入退回原因", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\s*\S+?/,
+        inputErrorMessage: "退回原因不能为空",
+      })
+        .then(async ({ value }) => {
+          try {
+            this.$modal.loading("处理中......");
+            let { mainData, subtabulation } = this.$props;
+
+            let data = mainData.map((item) => ({
+              ...item,
+              documentIds: subtabulation.map((sub) => Number(sub.id)),
+              baskCause: value,
+            }));
+
+            let { code, msg } = await orderApi.documentsReturn(data);
+
+            if (code === 200) {
+              this.$emit("success");
+              this.$notify.success({
+                message: msg,
+              });
+            }
+          } catch (error) {
+          } finally {
+            this.$modal.closeLoading();
+          }
+        })
+        .catch(() => {});
+    },
+    judgeNot(source) {
+      // status: 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中 9=已回退
+      // source: 1=自动协议直采,2=协议直采,3=手工
+      // isEnd:整单关闭标识
+      return !(
+        source.source != 3 &&
+        source.isEnd === "N" &&
+        (source.status == 0 || source.status == 3 || source.status == "9")
+      );
+    },
+  },
+  created() {},
+};
+</script>
+
+<template>
+  <el-button :size="$attrs.size" :disabled="disabled" @click="onClick">{{
+    title
+  }}</el-button>
+</template>