zhangwencui
3 天以前 80a36677aa6464eb8c67e6c144738efe5716a716
厂家管理接口对接
已添加1个文件
已修改3个文件
266 ■■■■ 文件已修改
src/api/inspectionManagement/manufacturerManageFile.js 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/manufacturer/components/HomeTab.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/New.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,
  });
}
src/views/inventoryManagement/manufacturer/components/BlacklistTab.vue
@@ -3,7 +3,7 @@
    <div class="search_form">
      <div>
        <span class="search_title">厂家档案:</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 },
          "厂家档案.xlsx"
        );
@@ -543,7 +552,7 @@
    })
      .then(() => {
        tableLoading.value = true;
        delSupplier(ids)
        delManufacturer(ids)
          .then(res => {
            proxy.$modal.msgSuccess("删除成功");
            getList();
src/views/inventoryManagement/manufacturer/components/HomeTab.vue
@@ -3,7 +3,7 @@
    <div class="search_form">
      <div style="margin-bottom: 10px;">
        <span class="search_title">厂家档案:</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 },
          "厂家档案.xlsx"
        );
@@ -549,7 +558,7 @@
    })
      .then(() => {
        tableLoading.value = true;
        delSupplier(ids)
        delManufacturer(ids)
          .then(res => {
            proxy.$modal.msgSuccess("删除成功");
            getList();
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(