002201 hace 1 año
padre
commit
c83b0c0113

+ 7 - 3
src/views/purchase/apply/index.vue

@@ -93,7 +93,7 @@ export default {
       @submit="useQuery(params, page)"
     ></el-super-search>
     <div style="padding: 0 20px; text-align: right">
-      <el-button-group style="margin: 0 10px 0 0">
+      <el-button-group>
         <add-button
           :size="size"
           :select-data="[]"
@@ -110,13 +110,13 @@ export default {
         >
         </add-button>
       </el-button-group>
-      <el-button-group style="margin: 0 10px 0 0">
+      <el-button-group>
         <see-button
           v-show="false"
-          ref="SeeButton"
           :size="size"
           :dict="dict"
           :select-data="selectData"
+          ref="SeeButton"
           @success="useQuery(params, page)"
         ></see-button>
         <add-button
@@ -158,6 +158,7 @@ export default {
       :page.sync="page.pageNum"
       :limit.sync="page.pageSize"
       @pagination="useQuery(params, page)"
+      style="margin: 20px"
     />
   </el-card>
 </template>
@@ -168,4 +169,7 @@ export default {
   margin: 10px;
   padding: 0 0 20px 0;
 }
+.el-button-group + .el-button-group {
+  margin: 0 0 0 10px;
+}
 </style>

+ 5 - 1
src/views/purchase/catalogue/dicts.js

@@ -4,7 +4,11 @@ const columns = [];
 modules.keys().forEach((fileName) => {
   const defa = modules(fileName).default;
   for (const key in defa) {
-    columns.push(...defa[key]);
+    if (key === "TabColumns") {
+      columns.push(...defa[key].map((item) => item.TableColumns).flat());
+    } else {
+      columns.push(...defa[key]);
+    }
   }
 });
 export const dicts = initDicts(columns);

+ 3 - 3
src/views/purchase/catalogue/export/index.vue

@@ -2,7 +2,7 @@
 export default {
   name: "ExportDialog",
   props: {
-    params: {
+    data: {
       type: Object,
       require: true,
     },
@@ -30,12 +30,12 @@ export default {
             try {
               // try
               const {
-                params,
+                data,
                 page: { pageNum, pageSize },
               } = this.$props;
               await this.download(
                 "pu/price/catalogue/export",
-                { ...params, pageNum, pageSize },
+                { ...data, pageNum, pageSize },
                 `catalogue_${new Date().getTime()}.xlsx`
               );
               await done();

+ 1 - 1
src/views/purchase/catalogue/index.vue

@@ -125,7 +125,7 @@ export default {
         <exp-button
           :size="size"
           :page="page"
-          :params="params"
+          :data="params"
           @success="useQuery(params, page)"
         ></exp-button>
       </el-button-group>

+ 0 - 0
src/views/purchase/contract/add/column.js → src/views/purchase/contract/add/columns.js


+ 1 - 1
src/views/purchase/contract/add/index.vue

@@ -1,5 +1,5 @@
 <script>
-import useColumns from "./column";
+import useColumns from "./columns";
 import { initParams, initRules } from "@/utils/init.js";
 import { REFER } from "@/components/popover-select/api";
 import { ADD, CODE } from "@/api/business/purchase/contract";

+ 7 - 2
src/views/purchase/contract/column.js → src/views/purchase/contract/columns.js

@@ -225,7 +225,7 @@ export const TableColumns = [
   item: { ...item, hidden: true, fixed: false },
 }));
 
-export const FormColumns = [
+export const SearchColumns = [
   {
     item: {
       key: "contractName",
@@ -252,4 +252,9 @@ export const FormColumns = [
       dictName: "sys_yes_no",
     },
   },
-];
+].map(({ item, attr }) => ({
+  attr,
+  item: { ...item, hidden: true, span: item.span || 6 },
+}));
+
+export default { TableColumns, SearchColumns };

+ 34 - 57
src/views/purchase/contract/delete/index.vue

@@ -12,8 +12,6 @@ export default {
   data() {
     return {
       title: "删 除",
-      visible: false,
-      loading: false,
     };
   },
   computed: {
@@ -40,30 +38,40 @@ export default {
   methods: {
     //
     open() {
-      this.visible = true;
-    },
-    //
-    hide() {
-      this.visible = false;
-    },
-    //
-    async submit(prop) {
-      try {
-        // try
-        this.loading = true;
-        const { msg, code } = await REMOVE(prop);
-        if (code === 200) {
-          this.hide();
-          this.$emit("success");
-          this.$notify.success(msg);
-        }
-      } catch (err) {
-        // catch
-        console.error(err);
-      } finally {
-        // finally
-        this.loading = false;
-      }
+      this.$confirm("是否删除数据项?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "info",
+        beforeClose: async (action, instance, done) => {
+          if (action === "confirm") {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = "执行中...";
+            try {
+              // try
+              const {
+                selectData: [{ id }],
+              } = this.$props;
+              const { msg, code } = await REMOVE(id);
+              if (code === 200) {
+                done();
+                this.$emit("success");
+                this.$notify.success(msg);
+              }
+            } catch (err) {
+              // catch
+              console.error(err);
+              instance.confirmButtonText = "确认";
+            } finally {
+              // finally
+              instance.confirmButtonLoading = false;
+            }
+          } else {
+            done();
+          }
+        },
+      })
+        .then(() => {})
+        .catch(() => {});
     },
   },
   created() {},
@@ -79,36 +87,5 @@ export default {
     @click="open"
   >
     {{ title }}
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      width="25%"
-      append-to-body
-      @close="hide"
-    >
-      <div slot="footer">
-        <el-button
-          :size="$attrs.size"
-          :loading="loading"
-          @click="visible = false"
-          >取 消</el-button
-        >
-        <el-button
-          type="primary"
-          :size="$attrs.size"
-          :loading="loading"
-          @click="submit(selectData[0].id)"
-          >确 认</el-button
-        >
-      </div>
-      <el-alert
-        title="是否删除数据项?"
-        type="info"
-        show-icon
-        :closable="false"
-        style="margin-bottom: 10px"
-      >
-      </el-alert>
-    </el-dialog>
   </el-button>
 </template>

+ 14 - 0
src/views/purchase/contract/dicts.js

@@ -0,0 +1,14 @@
+import { initDicts } from "@/utils/init.js";
+const modules = require.context("./", true, /columns.js$/);
+const columns = [];
+modules.keys().forEach((fileName) => {
+  const defa = modules(fileName).default;
+  for (const key in defa) {
+    if (key === "TabColumns") {
+      columns.push(...defa[key].map((item) => item.TableColumns).flat());
+    } else {
+      columns.push(...defa[key]);
+    }
+  }
+});
+export const dicts = initDicts(columns);

+ 0 - 0
src/views/purchase/contract/edit/column.js → src/views/purchase/contract/edit/columns.js


+ 1 - 1
src/views/purchase/contract/edit/index.vue

@@ -1,5 +1,5 @@
 <script>
-import useColumns from "./column";
+import useColumns from "./columns";
 import { initParams, initRules } from "@/utils/init.js";
 import { REFER } from "@/components/popover-select/api";
 import {

+ 30 - 69
src/views/purchase/contract/export/index.vue

@@ -14,8 +14,6 @@ export default {
   data() {
     return {
       title: "导 出",
-      visible: false,
-      loading: false,
     };
   },
   computed: {},
@@ -23,48 +21,41 @@ export default {
   methods: {
     //
     open() {
-      this.visible = true;
-    },
-    //
-    hide() {
-      this.visible = false;
-    },
-    //
-    async submit(prop, page) {
-      try {
-        // try
-        this.loading = true;
-        const { pageNum, pageSize } = page;
-        await this.download(
-          "pu/order/generate/export",
-          { ...prop, pageNum, pageSize },
-          `task_${new Date().getTime()}.xlsx`
-        );
-        await this.hide();
-      } catch (err) {
-        // catch
-      } finally {
-        // loading
-        this.loading = false;
-      }
-    },
-    //
-    open(prop) {
       this.$confirm("是否确认导出所有数据项?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "info",
+        beforeClose: async (action, instance, done) => {
+          if (action === "confirm") {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = "下载中...";
+            try {
+              // try
+              const {
+                data,
+                page: { pageNum, pageSize },
+              } = this.$props;
+              await this.download(
+                "pu/contract/export",
+                { ...data, pageNum, pageSize },
+                `contract_${new Date().getTime()}.xlsx`
+              );
+              await done();
+            } catch (err) {
+              // catch
+              console.error(err);
+              instance.confirmButtonText = "确认";
+            } finally {
+              // finally
+              instance.confirmButtonLoading = false;
+            }
+          } else {
+            done();
+          }
+        },
       })
-        .then(() => {
-          this.download(
-            "pu/contract/export",
-            { ...prop },
-            `contract_${new Date().getTime()}.xlsx`
-          );
-        })
-        .catch((err) => {
-          console.error(err);
-        });
+        .then(() => {})
+        .catch(() => {});
     },
   },
   created() {},
@@ -75,35 +66,5 @@ export default {
 <template>
   <el-button v-bind="$attrs" v-on="$listeners" @click="open">
     {{ title }}
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      width="25%"
-      append-to-body
-      @close="hide"
-    >
-      <div slot="footer">
-        <el-button
-          :size="$attrs.size"
-          :loading="loading"
-          @click="visible = false"
-          >取 消</el-button
-        >
-        <el-button
-          type="primary"
-          :size="$attrs.size"
-          :loading="loading"
-          @click="submit(params, page)"
-          >确 认</el-button
-        >
-      </div>
-      <el-alert
-        title="是否确认导出所有数据项?"
-        type="info"
-        show-icon
-        :closable="false"
-      >
-      </el-alert>
-    </el-dialog>
   </el-button>
 </template>

+ 19 - 19
src/views/purchase/contract/index.vue

@@ -1,14 +1,11 @@
 <script>
-import { TableColumns, FormColumns as SearchColumns } from "./column";
+import { dicts } from "./dicts";
 import { LIST } from "@/api/business/purchase/contract";
-import { initDicts, initParams } from "@/utils/init.js";
+import { TableColumns, SearchColumns } from "./columns";
+console.log(dicts);
 export default {
   name: "PuchaseContract",
-  dicts: [
-    ...initDicts(SearchColumns),
-    ...initDicts(TableColumns),
-    "puarchase_contract_origin",
-  ],
+  dicts: [...dicts, "puarchase_contract_origin"],
   components: {
     AddButton: () => import("./add/index.vue"),
     SeeButton: () => import("./see/index.vue"),
@@ -22,13 +19,14 @@ export default {
     ElSuperSearch: () => import("@/components/super-search/index.vue"),
   },
   data() {
+    const params = this.$init.params(SearchColumns);
     return {
       size: "mini",
       loading: false,
-      SearchColumns: SearchColumns,
-      params: initParams(SearchColumns),
+      params: params,
       tableData: [],
       selectData: [],
+      SearchColumns: SearchColumns,
       TableColumns: TableColumns,
       page: { pageNum: 1, pageSize: 10, total: 0 },
     };
@@ -73,7 +71,7 @@ export default {
     useReset() {
       this.page.pageNum = 1;
       this.page.pageSize = 10;
-      this.params = initParams(SearchColumns);
+      this.params = this.$init.params(SearchColumns);
       this.useQuery(this.params, this.page);
     },
     // 选 择
@@ -86,12 +84,6 @@ export default {
       const { open } = this.$refs.SeeButton;
       await open(id);
     },
-    // 导 出
-    async useExport(prop, page) {
-      const { pageNum, pageSize } = page;
-      const { open } = this.$refs.ExportButton;
-      await open({ ...prop, pageNum, pageSize });
-    },
   },
 };
 </script>
@@ -107,22 +99,26 @@ export default {
       @submit="useQuery(params, page)"
     ></el-super-search>
     <div style="padding: 0 20px; text-align: right">
-      <el-button-group style="margin: 0 10px 0 0">
+      <el-button-group>
         <add-button
           :size="size"
+          :dict="dict"
+          :add-type="'add'"
           :select-data="selectData"
           @success="useQuery(params, page)"
         ></add-button>
         <add-button
           :size="size"
+          :dict="dict"
           :add-type="'record'"
           :select-data="selectData"
           @success="useQuery(params, page)"
         ></add-button>
       </el-button-group>
-      <el-button-group style="margin: 0 10px 0 0">
+      <el-button-group>
         <edit-button
           :size="size"
+          :dict="dict"
           :select-data="selectData"
           @success="useQuery(params, page)"
         ></edit-button>
@@ -134,11 +130,12 @@ export default {
         <see-button
           v-show="false"
           :size="size"
+          :dict="dict"
           :select-data="selectData"
           ref="SeeButton"
         ></see-button
       ></el-button-group>
-      <el-button-group style="margin: 0 10px 0 0">
+      <el-button-group>
         <subm-button
           :size="size"
           :select-data="selectData"
@@ -192,4 +189,7 @@ export default {
   margin: 10px;
   padding: 0 0 20px 0;
 }
+.el-button-group + .el-button-group {
+  margin: 0 0 0 10px;
+}
 </style>

+ 0 - 0
src/views/purchase/contract/see/column.js → src/views/purchase/contract/see/columns.js


+ 1 - 1
src/views/purchase/contract/see/index.vue

@@ -1,5 +1,5 @@
 <script>
-import useColumns from "./column";
+import useColumns from "./columns";
 import { initParams } from "@/utils/init.js";
 import { ITEM } from "@/api/business/purchase/contract";
 

+ 34 - 56
src/views/purchase/contract/submit/index.vue

@@ -12,8 +12,6 @@ export default {
   data() {
     return {
       title: "提交OA",
-      visible: false,
-      loading: false,
     };
   },
   computed: {
@@ -40,30 +38,40 @@ export default {
   methods: {
     //
     open() {
-      this.visible = true;
-    },
-    //
-    hide() {
-      this.visible = false;
-    },
-    //
-    async submit(prop) {
-      try {
-        // try
-        this.loading = true;
-        const { msg, code } = await SUBMIT(prop);
-        if (code === 200) {
-          this.hide();
-          this.$emit("success");
-          this.$notify.success(msg);
-        }
-      } catch (err) {
-        // catch
-        console.error(err);
-      } finally {
-        // finally
-        this.loading = false;
-      }
+      this.$confirm("是否提交数据项至OA系统?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "info",
+        beforeClose: async (action, instance, done) => {
+          if (action === "confirm") {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = "执行中...";
+            try {
+              // try
+              const {
+                selectData: [{ id }],
+              } = this.$props;
+              const { msg, code } = await SUBMIT(id);
+              if (code === 200) {
+                done();
+                this.$emit("success");
+                this.$notify.success(msg);
+              }
+            } catch (err) {
+              // catch
+              console.error(err);
+              instance.confirmButtonText = "确认";
+            } finally {
+              // finally
+              instance.confirmButtonLoading = false;
+            }
+          } else {
+            done();
+          }
+        },
+      })
+        .then(() => {})
+        .catch(() => {});
     },
   },
   created() {},
@@ -79,35 +87,5 @@ export default {
     @click="open"
   >
     {{ title }}
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      width="25%"
-      append-to-body
-      @close="hide"
-    >
-      <div slot="footer">
-        <el-button
-          :size="$attrs.size"
-          :loading="loading"
-          @click="visible = false"
-          >取 消</el-button
-        >
-        <el-button
-          type="primary"
-          :size="$attrs.size"
-          :loading="loading"
-          @click="submit(selectData[0].id)"
-          >确 认</el-button
-        >
-      </div>
-      <el-alert
-        title="是否提交数据项至OA系统?"
-        type="info"
-        show-icon
-        :closable="false"
-      >
-      </el-alert>
-    </el-dialog>
   </el-button>
 </template>

+ 34 - 49
src/views/purchase/contract/termination/index.vue

@@ -40,30 +40,40 @@ export default {
   methods: {
     //
     open() {
-      this.visible = true;
-    },
-    //
-    hide() {
-      this.visible = false;
-    },
-    //
-    async submit(prop) {
-      try {
-        // try
-        this.loading = true;
-        const { msg, code } = await TERMINATION({ id: prop });
-        if (code === 200) {
-          this.hide();
-          this.$emit("success");
-          this.$notify.success(msg);
-        }
-      } catch (err) {
-        // catch
-        console.error(err);
-      } finally {
-        // finally
-        this.loading = false;
-      }
+      this.$confirm("是否终止数据项?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "info",
+        beforeClose: async (action, instance, done) => {
+          if (action === "confirm") {
+            instance.confirmButtonLoading = true;
+            instance.confirmButtonText = "执行中...";
+            try {
+              // try
+              const {
+                selectData: [{ id }],
+              } = this.$props;
+              const { msg, code } = await TERMINATION({ id });
+              if (code === 200) {
+                done();
+                this.$emit("success");
+                this.$notify.success(msg);
+              }
+            } catch (err) {
+              // catch
+              console.error(err);
+              instance.confirmButtonText = "确认";
+            } finally {
+              // finally
+              instance.confirmButtonLoading = false;
+            }
+          } else {
+            done();
+          }
+        },
+      })
+        .then(() => {})
+        .catch(() => {});
     },
   },
   created() {},
@@ -79,30 +89,5 @@ export default {
     @click="open"
   >
     {{ title }}
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      width="25%"
-      append-to-body
-      @close="hide"
-    >
-      <div slot="footer">
-        <el-button
-          :size="$attrs.size"
-          :loading="loading"
-          @click="visible = false"
-          >取 消</el-button
-        >
-        <el-button
-          type="primary"
-          :size="$attrs.size"
-          :loading="loading"
-          @click="submit(selectData[0].id)"
-          >确 认</el-button
-        >
-      </div>
-      <el-alert title="是否终止数据项?" type="info" show-icon :closable="false">
-      </el-alert>
-    </el-dialog>
   </el-button>
 </template>