From 80a36677aa6464eb8c67e6c144738efe5716a716 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 28 五月 2026 13:06:18 +0800
Subject: [PATCH] 厂家管理接口对接

---
 src/views/inventoryManagement/stockManagement/New.vue                  |   26 ++++
 src/views/inventoryManagement/manufacturer/components/HomeTab.vue      |   81 +++++++++-------
 src/api/inspectionManagement/manufacturerManageFile.js                 |   82 ++++++++++++++++
 src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue |   77 ++++++++------
 4 files changed, 193 insertions(+), 73 deletions(-)

diff --git a/src/api/inspectionManagement/manufacturerManageFile.js b/src/api/inspectionManagement/manufacturerManageFile.js
new file mode 100644
index 0000000..349dca1
--- /dev/null
+++ b/src/api/inspectionManagement/manufacturerManageFile.js
@@ -0,0 +1,82 @@
+// 渚涘簲鍟嗘。妗堥〉闈㈡帴鍙�
+import request from "@/utils/request";
+
+// 鍒嗛〉鏌ヨ
+export function listManufacturer(query) {
+  return request({
+    url: "/stock/manufacturer/listPage",
+    method: "get",
+    params: query,
+  });
+}
+// 鏌ヨ渚涘簲鍟嗕俊鎭缁�
+export function getManufacturer(id) {
+  return request({
+    url: "/stock/manufacturer/" + id,
+    method: "get",
+  });
+}
+// 鏂板渚涘簲鍟嗕俊鎭�
+export function addManufacturer(data) {
+  return request({
+    url: "/stock/manufacturer/add",
+    method: "post",
+    data: data,
+  });
+}
+// 淇敼渚涘簲鍟嗕俊鎭�
+export function updateManufacturer(data) {
+  return request({
+    url: "/stock/manufacturer/update",
+    method: "post",
+    data: data,
+  });
+}
+// 瀵煎嚭渚涘簲鍟嗕俊鎭�
+export function exportManufacturer(query) {
+  return request({
+    url: "/stock/manufacturer/export",
+    method: "get",
+    params: query,
+    responseType: "blob",
+  });
+}
+// 鍒犻櫎渚涘簲鍟嗕俊鎭�
+export function delManufacturer(ids) {
+  return request({
+    url: "/stock/manufacturer/del",
+    method: "delete",
+    data: ids,
+  });
+}
+// 鑾峰彇渚涘簲鍟嗛�夐」鍒楄〃
+export function getManufacturerOptions() {
+  return request({
+    url: "/stock/manufacturer/getOptions",
+    method: "get",
+  });
+}
+// 鏌ヨ闄勪欢鍒楄〃
+export function fileListPage(query) {
+  return request({
+    url: "/basic/manufacturerManageFile/listPage",
+    method: "get",
+    params: query,
+  });
+}
+// 淇濆瓨闄勪欢鍒楄〃
+export function fileAdd(query) {
+  return request({
+    url: "/basic/supplierManageFile/add",
+    method: "post",
+    data: query,
+  });
+}
+// 鍒犻櫎闄勪欢鍒楄〃
+export function fileDel(query) {
+  return request({
+    url: "/basic/manufacturerManageFile/del",
+    method: "delete",
+    data: query,
+  });
+}
diff --git a/src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue b/src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue
index 3c2e01d..66df189 100644
--- a/src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue
+++ b/src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue
@@ -3,7 +3,7 @@
     <div class="search_form">
       <div>
         <span class="search_title">鍘傚妗f锛�</span>
-        <el-input v-model="searchForm.supplierName"
+        <el-input v-model="searchForm.name"
                   style="width: 240px"
                   placeholder="杈撳叆鍘傚鍚嶇О鎼滅储"
                   @change="handleQuery"
@@ -42,8 +42,8 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍘傚鍚嶇О锛�"
-                          prop="supplierName">
-              <el-input v-model="form.supplierName"
+                          prop="name">
+              <el-input v-model="form.name"
                         placeholder="璇疯緭鍏�"
                         clearable />
             </el-form-item>
@@ -142,8 +142,8 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍘傚绫诲瀷锛�"
-                          prop="supplierType">
-              <el-select v-model="form.supplierType"
+                          prop="type">
+              <el-select v-model="form.type"
                          placeholder="璇烽�夋嫨"
                          clearable>
                 <el-option label="鐢�"
@@ -218,23 +218,29 @@
     </el-dialog>
     <FileList v-if="fileListDialogVisible"
               v-model:visible="fileListDialogVisible"
-              record-type="supplier_manage"
+              record-type="manufacturer"
               :record-id="recordId" />
   </div>
 </template>
 
 <script setup>
-  import { onMounted, ref } from "vue";
+  import {
+    onMounted,
+    ref,
+    defineAsyncComponent,
+    getCurrentInstance,
+    reactive,
+  } from "vue";
   import { Search } from "@element-plus/icons-vue";
-  import { delSupplier } from "@/api/basicData/supplierManageFile.js";
+  import { delManufacturer } from "@/api/inspectionManagement/manufacturerManageFile.js";
   import { ElMessageBox } from "element-plus";
   import { userListNoPage } from "@/api/system/user.js";
   import {
-    addSupplier,
-    getSupplier,
-    listSupplier,
-    updateSupplier,
-  } from "@/api/basicData/supplierManageFile.js";
+    addManufacturer,
+    getManufacturer,
+    listManufacturer,
+    updateManufacturer,
+  } from "@/api/inspectionManagement/manufacturerManageFile.js";
   import useUserStore from "@/store/modules/user";
   import { getToken } from "@/utils/auth.js";
   const FileList = defineAsyncComponent(() =>
@@ -246,12 +252,12 @@
   const tableColumn = ref([
     {
       label: "鍘傚鍚嶇О",
-      prop: "supplierName",
+      prop: "name",
       width: 250,
     },
     {
       label: "鍘傚绫诲瀷",
-      prop: "supplierType",
+      prop: "type",
       width: 120,
     },
     {
@@ -339,10 +345,10 @@
   const dialogFormVisible = ref(false);
   const data = reactive({
     searchForm: {
-      supplierName: "",
+      name: "",
     },
     form: {
-      supplierName: "",
+      name: "",
       taxpayerIdentificationNum: "",
       companyAddress: "",
       companyPhone: "",
@@ -352,11 +358,11 @@
       contactUserPhone: "",
       maintainUserId: "",
       maintainTime: "",
-      supplierType: "",
+      type: "",
       isWhite: "",
     },
     rules: {
-      supplierName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      name: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       taxpayerIdentificationNum: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
       ],
@@ -364,13 +370,12 @@
       companyPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       bankAccountName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       bankAccountNum: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      contactUserName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-      contactUserPhone: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-      maintainUserId: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-      maintainTime: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-      supplierType: [
-        { required: true, message: "璇烽�夋嫨鍘傚绫诲瀷", trigger: "change" },
-      ],
+      contactUserName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      contactUserPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      maintainUserId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      maintainTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      type: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      isWhite: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     },
   });
   const { searchForm, form, rules } = toRefs(data);
@@ -393,7 +398,7 @@
   }
   const getList = () => {
     tableLoading.value = true;
-    listSupplier({ ...searchForm.value, ...page, isWhite: 1 }).then(res => {
+    listManufacturer({ ...searchForm.value, ...page, isWhite: 1 }).then(res => {
       tableLoading.value = false;
       tableData.value = res.data.records;
       page.total = res.data.total;
@@ -411,7 +416,7 @@
     // 璁剧疆涓婁紶鐨勮姹傚ご閮�
     headers: { Authorization: "Bearer " + getToken() },
     // 涓婁紶鐨勫湴鍧�
-    url: import.meta.env.VITE_APP_BASE_API + "/system/supplier/import",
+    url: import.meta.env.VITE_APP_BASE_API + "/stock/manufacturer/import",
   });
   /** 瀵煎叆鎸夐挳鎿嶄綔 */
   function handleImport() {
@@ -420,7 +425,11 @@
   }
   /** 涓嬭浇妯℃澘 */
   function importTemplate() {
-    proxy.download("/system/supplier/downloadTemplate", {}, "鍘傚瀵煎叆妯℃澘.xlsx");
+    proxy.download(
+      "/stock/manufacturer/downloadTemplate",
+      {},
+      "鍘傚瀵煎叆妯℃澘.xlsx"
+    );
   }
 
   /**鏂囦欢涓婁紶涓鐞� */
@@ -462,7 +471,7 @@
       userList.value = res.data;
     });
     if (type === "edit") {
-      getSupplier(row.id).then(res => {
+      getManufacturer(row.id).then(res => {
         form.value = { ...res.data };
       });
     }
@@ -482,7 +491,7 @@
   };
   // 鎻愪氦鏂板
   const submitAdd = () => {
-    addSupplier(form.value).then(res => {
+    addManufacturer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
       closeDia();
       getList();
@@ -490,7 +499,7 @@
   };
   // 鎻愪氦淇敼
   const submitEdit = () => {
-    updateSupplier(form.value).then(res => {
+    updateManufacturer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
       closeDia();
       getList();
@@ -510,7 +519,7 @@
     })
       .then(() => {
         proxy.download(
-          "/system/supplier/export",
+          "/stock/manufacturer/export",
           { isWhite: 1 },
           "鍘傚妗f.xlsx"
         );
@@ -543,7 +552,7 @@
     })
       .then(() => {
         tableLoading.value = true;
-        delSupplier(ids)
+        delManufacturer(ids)
           .then(res => {
             proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
             getList();
diff --git a/src/views/inventoryManagement/manufacturer/components/HomeTab.vue b/src/views/inventoryManagement/manufacturer/components/HomeTab.vue
index 08985ae..cc6ed9b 100644
--- a/src/views/inventoryManagement/manufacturer/components/HomeTab.vue
+++ b/src/views/inventoryManagement/manufacturer/components/HomeTab.vue
@@ -3,7 +3,7 @@
     <div class="search_form">
       <div style="margin-bottom: 10px;">
         <span class="search_title">鍘傚妗f锛�</span>
-        <el-input v-model="searchForm.supplierName"
+        <el-input v-model="searchForm.name"
                   style="width: 240px"
                   placeholder="杈撳叆鍘傚鍚嶇О鎼滅储"
                   @change="handleQuery"
@@ -48,8 +48,8 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍘傚鍚嶇О锛�"
-                          prop="supplierName">
-              <el-input v-model="form.supplierName"
+                          prop="name">
+              <el-input v-model="form.name"
                         placeholder="璇疯緭鍏�"
                         clearable />
             </el-form-item>
@@ -148,8 +148,8 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍘傚绫诲瀷锛�"
-                          prop="supplierType">
-              <el-select v-model="form.supplierType"
+                          prop="type">
+              <el-select v-model="form.type"
                          placeholder="璇烽�夋嫨"
                          clearable>
                 <el-option label="鐢�"
@@ -224,23 +224,29 @@
     </el-dialog>
     <FileList v-if="fileListDialogVisible"
               v-model:visible="fileListDialogVisible"
-              record-type="supplier_manage"
+              record-type="manufacturer"
               :record-id="recordId" />
   </div>
 </template>
 
 <script setup>
-  import { onMounted, ref } from "vue";
+  import {
+    onMounted,
+    ref,
+    defineAsyncComponent,
+    getCurrentInstance,
+    reactive,
+  } from "vue";
   import { Search } from "@element-plus/icons-vue";
-  import { delSupplier } from "@/api/basicData/supplierManageFile.js";
+  import { delManufacturer } from "@/api/inspectionManagement/manufacturerManageFile.js";
   import { ElMessageBox } from "element-plus";
   import { userListNoPage } from "@/api/system/user.js";
   import {
-    addSupplier,
-    getSupplier,
-    listSupplier,
-    updateSupplier,
-  } from "@/api/basicData/supplierManageFile.js";
+    addManufacturer,
+    getManufacturer,
+    listManufacturer,
+    updateManufacturer,
+  } from "@/api/inspectionManagement/manufacturerManageFile.js";
   import useUserStore from "@/store/modules/user";
   import { getToken } from "@/utils/auth.js";
   const FileList = defineAsyncComponent(() =>
@@ -252,12 +258,12 @@
   const tableColumn = ref([
     {
       label: "鍘傚鍚嶇О",
-      prop: "supplierName",
+      prop: "name",
       width: 250,
     },
     {
       label: "鍘傚绫诲瀷",
-      prop: "supplierType",
+      prop: "type",
       width: 120,
     },
     {
@@ -333,22 +339,22 @@
   const selectedRows = ref([]);
   const userList = ref([]);
   const tableLoading = ref(false);
-  const fileListDialogVisible = ref(false);
-  const recordId = ref();
   const page = reactive({
     current: 1,
     size: 100,
     total: 0,
   });
+  const fileListDialogVisible = ref(false);
+  const recordId = ref();
   // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
   const operationType = ref("");
   const dialogFormVisible = ref(false);
   const data = reactive({
     searchForm: {
-      supplierName: "",
+      name: "",
     },
     form: {
-      supplierName: "",
+      name: "",
       taxpayerIdentificationNum: "",
       companyAddress: "",
       companyPhone: "",
@@ -358,11 +364,11 @@
       contactUserPhone: "",
       maintainUserId: "",
       maintainTime: "",
-      supplierType: "",
+      type: "",
       isWhite: "",
     },
     rules: {
-      supplierName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      name: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       taxpayerIdentificationNum: [
         { required: true, message: "璇疯緭鍏�", trigger: "blur" },
       ],
@@ -370,13 +376,12 @@
       companyPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       bankAccountName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       bankAccountNum: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      contactUserName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-      contactUserPhone: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-      maintainUserId: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-      maintainTime: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-      supplierType: [
-        { required: true, message: "璇烽�夋嫨鍘傚绫诲瀷", trigger: "change" },
-      ],
+      contactUserName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      contactUserPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      maintainUserId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      maintainTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      type: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      isWhite: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     },
   });
   const { searchForm, form, rules } = toRefs(data);
@@ -399,7 +404,7 @@
   }
   const getList = () => {
     tableLoading.value = true;
-    listSupplier({ ...searchForm.value, ...page, isWhite: 0 }).then(res => {
+    listManufacturer({ ...searchForm.value, ...page, isWhite: 0 }).then(res => {
       tableLoading.value = false;
       tableData.value = res.data.records;
       page.total = res.data.total;
@@ -417,7 +422,7 @@
     // 璁剧疆涓婁紶鐨勮姹傚ご閮�
     headers: { Authorization: "Bearer " + getToken() },
     // 涓婁紶鐨勫湴鍧�
-    url: import.meta.env.VITE_APP_BASE_API + "/system/supplier/import",
+    url: import.meta.env.VITE_APP_BASE_API + "/stock/manufacturer/import",
   });
   /** 瀵煎叆鎸夐挳鎿嶄綔 */
   function handleImport() {
@@ -426,7 +431,11 @@
   }
   /** 涓嬭浇妯℃澘 */
   function importTemplate() {
-    proxy.download("/system/supplier/downloadTemplate", {}, "鍘傚瀵煎叆妯℃澘.xlsx");
+    proxy.download(
+      "/stock/manufacturer/downloadTemplate",
+      {},
+      "鍘傚瀵煎叆妯℃澘.xlsx"
+    );
   }
 
   /**鏂囦欢涓婁紶涓鐞� */
@@ -468,7 +477,7 @@
       userList.value = res.data;
     });
     if (type === "edit") {
-      getSupplier(row.id).then(res => {
+      getManufacturer(row.id).then(res => {
         form.value = { ...res.data };
       });
     }
@@ -488,7 +497,7 @@
   };
   // 鎻愪氦鏂板
   const submitAdd = () => {
-    addSupplier(form.value).then(res => {
+    addManufacturer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
       closeDia();
       getList();
@@ -496,7 +505,7 @@
   };
   // 鎻愪氦淇敼
   const submitEdit = () => {
-    updateSupplier(form.value).then(res => {
+    updateManufacturer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
       closeDia();
       getList();
@@ -516,7 +525,7 @@
     })
       .then(() => {
         proxy.download(
-          "/system/supplier/export",
+          "/stock/manufacturer/export",
           { isWhite: 0 },
           "鍘傚妗f.xlsx"
         );
@@ -549,7 +558,7 @@
     })
       .then(() => {
         tableLoading.value = true;
-        delSupplier(ids)
+        delManufacturer(ids)
           .then(res => {
             proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
             getList();
diff --git a/src/views/inventoryManagement/stockManagement/New.vue b/src/views/inventoryManagement/stockManagement/New.vue
index 0b50731..065ce39 100644
--- a/src/views/inventoryManagement/stockManagement/New.vue
+++ b/src/views/inventoryManagement/stockManagement/New.vue
@@ -34,8 +34,16 @@
         </el-form-item>
         <el-form-item label="鍘傚"
                       prop="manufacturer">
-          <el-input v-model="formState.manufacturer"
-                    placeholder="璇疯緭鍏ュ巶瀹�" />
+          <el-select v-model="formState.manufacturer"
+                     placeholder="璇烽�夋嫨鍘傚"
+                     clearable
+                     filterable
+                     style="width: 100%">
+            <el-option v-for="item in manufacturerOptions"
+                       :key="item.id"
+                       :label="item.name"
+                       :value="item.id" />
+          </el-select>
         </el-form-item>
         <el-form-item label="搴撳瓨绫诲瀷"
                       prop="type"
@@ -119,10 +127,11 @@
 </template>
 
 <script setup>
-  import { ref, computed, watch, getCurrentInstance } from "vue";
+  import { ref, computed, watch, getCurrentInstance, onMounted } from "vue";
   import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
   import { addStockInRecordOnly } from "@/api/inventoryManagement/stockInventory.js";
   import { createStockUnInventory } from "@/api/inventoryManagement/stockUninventory.js";
+  import { getManufacturerOptions } from "@/api/inspectionManagement/manufacturerManageFile.js";
 
   const props = defineProps({
     visible: {
@@ -181,6 +190,17 @@
   });
 
   const showProductSelectDialog = ref(false);
+  const manufacturerOptions = ref([]);
+
+  const loadManufacturerOptions = () => {
+    getManufacturerOptions().then(res => {
+      manufacturerOptions.value = res.data || [];
+    });
+  };
+
+  onMounted(() => {
+    loadManufacturerOptions();
+  });
 
   // 鎵瑰彿涓虹┖鏃惰浆涓� null
   watch(

--
Gitblit v1.9.3