From 6ff8faad4a183eaa35fac526e4e29a1c6176ff15 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 08 十月 2026 17:43:18 +0800
Subject: [PATCH] 采购管理系统模块优化
---
src/views/basicData/supplierManage/index.vue | 80 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 76 insertions(+), 4 deletions(-)
diff --git a/src/views/basicData/supplierManage/index.vue b/src/views/basicData/supplierManage/index.vue
index 68c51d3..e7233a0 100644
--- a/src/views/basicData/supplierManage/index.vue
+++ b/src/views/basicData/supplierManage/index.vue
@@ -11,6 +11,8 @@
clearable
:prefix-icon="Search"
/>
+ <el-input v-model="searchForm.supplierCode" style="width: 180px; margin-left: 10px" placeholder="渚涘簲鍟嗙紪鐮�" clearable />
+ <el-input v-model="searchForm.productKeyword" style="width: 180px; margin-left: 10px" placeholder="渚涘簲浜у搧" clearable />
<el-button type="primary" @click="handleQuery" style="margin-left: 10px"
>鎼滅储</el-button
>
@@ -53,6 +55,20 @@
>
<el-row :gutter="30">
<el-col :span="12">
+ <el-form-item label="渚涘簲鍟嗙紪鐮侊細" prop="supplierCode">
+ <el-input v-model="form.supplierCode" placeholder="鐣欑┖鑷姩鐢熸垚" clearable />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="渚涘簲鍟嗙畝绉帮細"><el-input v-model="form.supplierShortName" clearable /></el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12"><el-form-item label="渚涘簲鍟嗗垎绫伙細"><el-input v-model="form.supplierCategory" /></el-form-item></el-col>
+ <el-col :span="12"><el-form-item label="渚涘簲鍟嗙瓑绾э細"><el-select v-model="form.supplierLevel" clearable style="width:100%"><el-option v-for="v in ['A','B','C','D']" :key="v" :label="v" :value="v" /></el-select></el-form-item></el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
<el-form-item label="渚涘簲鍟嗗悕绉帮細" prop="supplierName">
<el-input
v-model="form.supplierName"
@@ -74,6 +90,17 @@
</el-form-item>
</el-col>
</el-row>
+ <el-row :gutter="30">
+ <el-col :span="12"><el-form-item label="鍚堜綔鐘舵�侊細"><el-select v-model="form.cooperationStatus" style="width:100%"><el-option label="鍚堜綔涓�" :value="1"/><el-option label="鏆傚仠鍚堜綔" :value="2"/><el-option label="鍋滅敤" :value="0"/></el-select></el-form-item></el-col>
+ <el-col :span="12"><el-form-item label="棣栨鍚堜綔鏃ユ湡锛�"><el-date-picker v-model="form.cooperationStartDate" value-format="YYYY-MM-DD" style="width:100%" /></el-form-item></el-col>
+ </el-row>
+ <el-form-item label="渚涘簲浜у搧锛�"><el-input v-model="form.suppliedProductsSummary" type="textarea" :rows="2" placeholder="澶氫釜浜у搧鍙敤椤垮彿鍒嗛殧" /></el-form-item>
+ <el-row :gutter="30">
+ <el-col :span="12"><el-form-item label="璧勮川鐘舵�侊細"><el-select v-model="form.qualificationStatus" style="width:100%"><el-option label="寰呭畬鍠�" :value="0"/><el-option label="鏈夋晥" :value="1"/><el-option label="鍗冲皢鍒版湡" :value="2"/><el-option label="宸茶繃鏈�" :value="3"/></el-select></el-form-item></el-col>
+ <el-col :span="12"><el-form-item label="璧勮川鍒版湡鏃ワ細"><el-date-picker v-model="form.qualificationExpiryDate" value-format="YYYY-MM-DD" style="width:100%" /></el-form-item></el-col>
+ </el-row>
+ <el-form-item label="鍚堜綔鍘嗗彶锛�"><el-input v-model="form.cooperationHistorySummary" type="textarea" :rows="2" placeholder="濉啓鍘嗗彶鍚堜綔涓庤瘎浠锋憳瑕�" /></el-form-item>
+ <el-form-item label="澶囨敞锛�"><el-input v-model="form.remark" type="textarea" :rows="2" /></el-form-item>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="鍏徃鍦板潃锛�" prop="companyAddress">
@@ -167,6 +194,25 @@
</el-form-item>
</el-col>
</el-row>
+ <el-divider content-position="left">璧勮川璇佹槑</el-divider>
+ <el-button type="primary" plain @click="form.qualifications.push({ status: 1, longTermValid: 0 })">鏂板璧勮川</el-button>
+ <el-table :data="form.qualifications" border style="margin:10px 0 20px">
+ <el-table-column label="璧勮川鍚嶇О"><template #default="{row}"><el-input v-model="row.qualificationName" /></template></el-table-column>
+ <el-table-column label="绫诲瀷"><template #default="{row}"><el-input v-model="row.qualificationType" /></template></el-table-column>
+ <el-table-column label="璇佷功缂栧彿"><template #default="{row}"><el-input v-model="row.certificateNo" /></template></el-table-column>
+ <el-table-column label="鍒版湡鏃ユ湡" width="180"><template #default="{row}"><el-date-picker v-model="row.expiryDate" value-format="YYYY-MM-DD" style="width:100%" /></template></el-table-column>
+ <el-table-column label="鎿嶄綔" width="80"><template #default="{$index}"><el-button type="danger" link @click="form.qualifications.splice($index,1)">鍒犻櫎</el-button></template></el-table-column>
+ </el-table>
+ <el-divider content-position="left">渚涘簲浜у搧</el-divider>
+ <el-button type="primary" plain @click="form.products.push({ status: 1, currency: 'CNY' })">鏂板浜у搧</el-button>
+ <el-table :data="form.products" border style="margin:10px 0 20px">
+ <el-table-column label="浜у搧鍚嶇О"><template #default="{row}"><el-input v-model="row.productName" /></template></el-table-column>
+ <el-table-column label="鍒嗙被"><template #default="{row}"><el-input v-model="row.productCategory" /></template></el-table-column>
+ <el-table-column label="瑙勬牸鍨嬪彿"><template #default="{row}"><el-input v-model="row.specificationModel" /></template></el-table-column>
+ <el-table-column label="渚涜揣鍛ㄦ湡(澶�)" width="140"><template #default="{row}"><el-input-number v-model="row.leadTimeDays" :min="0" /></template></el-table-column>
+ <el-table-column label="鍙傝�冨崟浠�" width="140"><template #default="{row}"><el-input-number v-model="row.referencePrice" :min="0" :precision="2" /></template></el-table-column>
+ <el-table-column label="鎿嶄綔" width="80"><template #default="{$index}"><el-button type="danger" link @click="form.products.splice($index,1)">鍒犻櫎</el-button></template></el-table-column>
+ </el-table>
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -231,6 +277,8 @@
getSupplier,
listSupplier,
updateSupplier,
+ getSupplierArchive,
+ saveSupplierArchive,
} from "@/api/basicData/supplierManageFile.js";
import useUserStore from "@/store/modules/user";
import { getToken } from "@/utils/auth.js";
@@ -238,6 +286,7 @@
const userStore = useUserStore();
const tableColumn = ref([
+ { label: "渚涘簲鍟嗙紪鐮�", prop: "supplierCode", width: 140 },
{
label: "渚涘簲鍟嗗悕绉�",
prop: "supplierName",
@@ -277,6 +326,10 @@
prop: "contactUserPhone",
width: 150,
},
+ { label: "渚涘簲浜у搧", prop: "suppliedProductsSummary", width: 220 },
+ { label: "绛夌骇", prop: "supplierLevel", width: 80 },
+ { label: "璧勮川鐘舵��", prop: "qualificationStatus", width: 100, formatData: v => ({0:'寰呭畬鍠�',1:'鏈夋晥',2:'鍗冲皢鍒版湡',3:'宸茶繃鏈�'}[v] || '寰呭畬鍠�') },
+ { label: "鍚堜綔鐘舵��", prop: "cooperationStatus", width: 100, formatData: v => ({0:'鍋滅敤',1:'鍚堜綔涓�',2:'鏆傚仠'}[v] || '鍚堜綔涓�') },
{
label: "缁存姢浜�",
prop: "maintainUserName",
@@ -322,8 +375,23 @@
const data = reactive({
searchForm: {
supplierName: "",
+ supplierCode: "",
+ productKeyword: "",
},
form: {
+ supplierCode: "",
+ supplierShortName: "",
+ supplierCategory: "",
+ supplierLevel: "",
+ cooperationStatus: 1,
+ cooperationStartDate: "",
+ qualificationStatus: 0,
+ qualificationExpiryDate: "",
+ suppliedProductsSummary: "",
+ cooperationHistorySummary: "",
+ remark: "",
+ qualifications: [],
+ products: [],
supplierName: "",
taxpayerIdentificationNum: "",
companyAddress: "",
@@ -418,12 +486,14 @@
form.value = {};
form.value.maintainUserId = userStore.id;
form.value.maintainTime = getCurrentDate();
+ form.value.qualifications = [];
+ form.value.products = [];
userListNoPage().then((res) => {
userList.value = res.data;
});
if (type === "edit") {
- getSupplier(row.id).then((res) => {
- form.value = { ...res.data };
+ getSupplierArchive(row.id).then((res) => {
+ form.value = { ...res.data.supplier, qualifications: res.data.qualifications || [], products: res.data.products || [] };
});
}
dialogFormVisible.value = true;
@@ -442,7 +512,8 @@
};
// 鎻愪氦鏂板
const submitAdd = () => {
- addSupplier(form.value).then((res) => {
+ const { qualifications, products, ...supplier } = form.value;
+ saveSupplierArchive({ supplier, qualifications, products }).then((res) => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
getList();
@@ -450,7 +521,8 @@
};
// 鎻愪氦淇敼
const submitEdit = () => {
- updateSupplier(form.value).then((res) => {
+ const { qualifications, products, ...supplier } = form.value;
+ saveSupplierArchive({ supplier, qualifications, products }).then((res) => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
getList();
--
Gitblit v1.9.3