feat: 页面功能完善
3.1 供货商管理页面 - 移除了右侧面板的"供货清单"Tab - 报价历史板块新增搜索功能(物料名称/报价单号/状态/日期范围) - 后端 Mapper 改造支持动态 SQL 过滤 3.2 报价请求与供应商报价关联 - 新增"供应商报价汇总"弹窗,展示 RFQ 下所有供应商的报价对比 - 报价单号改为可点击链接,跳转到供应商报价列表并按单号搜索 3.3 智慧比价详情页 - 修复了比价详情页路由(在 router/index.js 中补充) - 移除了评分维度展示(价格/交期/质量/服务评分条、综合分标签) - 精简为纯粹的供应商价格对比视图 3.4 其他修复 - 首页快捷操作路径修正(/bid/xxx → /xxx) - 停用 bid 目录后受影响的 router.push 路径全部修复 - biz_tenant 表缺失修复(创建建表 SQL 并执行) - 比价详情页路由注册补充 - goCompare 跳转路径修正
This commit is contained in:
@@ -35,6 +35,9 @@
|
||||
<!-- ── 搜索栏 ── -->
|
||||
<el-card shadow="never" class="search-card">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form-item label="报价单号">
|
||||
<el-input v-model="queryParams.quoteNo" placeholder="报价单号" clearable style="width:150px" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="RFQ单号">
|
||||
<el-input v-model="queryParams.rfqNo" placeholder="询价单号" clearable style="width:150px" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
@@ -110,9 +113,9 @@
|
||||
<el-button size="mini" type="text" style="color:#67C23A" icon="el-icon-upload2"
|
||||
@click="handleSubmit(s.row)" v-if="s.row.status==='draft'">提交</el-button>
|
||||
<el-button size="mini" type="text" style="color:#67C23A" icon="el-icon-check"
|
||||
@click="handleAccept(s.row)" v-if="s.row.status==='submitted'">采纳</el-button>
|
||||
@click="handleAccept(s.row)" v-if="s.row.status==='submitted' && !isSupplier">采纳</el-button>
|
||||
<el-button size="mini" type="text" style="color:#F56C6C" icon="el-icon-close"
|
||||
@click="handleReject(s.row)" v-if="s.row.status==='submitted'">拒绝</el-button>
|
||||
@click="handleReject(s.row)" v-if="s.row.status==='submitted' && !isSupplier">拒绝</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" style="color:#f56c6c"
|
||||
@click="handleDelete(s.row)" v-if="s.row.status==='draft'">删除</el-button>
|
||||
</template>
|
||||
@@ -375,7 +378,7 @@ export default {
|
||||
rfqItemsLoading: false,
|
||||
rfqOptions: [], supplierOptions: [],
|
||||
logoSrc: logoImg,
|
||||
queryParams: { pageNum: 1, pageSize: 10, status: null, rfqNo: null, supplierName: null },
|
||||
queryParams: { pageNum: 1, pageSize: 10, status: null, rfqNo: null, quoteNo: null, supplierName: null },
|
||||
form: { items: [], currency: "CNY", validDays: 30, deliveryDays: null },
|
||||
rules: {
|
||||
rfqId: [{ required: true, message: "请选择询价单", trigger: "change" }],
|
||||
@@ -384,14 +387,26 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
/** 是否为供应商用户 */
|
||||
isSupplier() {
|
||||
return this.$store.getters.roles && this.$store.getters.roles.includes('supplier');
|
||||
},
|
||||
formTotal() {
|
||||
return (this.form.items || []).reduce((s, i) => s + (parseFloat(i.quantity || 0) * parseFloat(i.unitPrice || 0)), 0).toFixed(2);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 读取 URL 查询参数,实现跨页面跳转自动搜索
|
||||
const query = this.$route.query;
|
||||
if (query.rfqNo) this.queryParams.rfqNo = query.rfqNo;
|
||||
if (query.supplierName) this.queryParams.supplierName = query.supplierName;
|
||||
if (query.quoteNo) this.queryParams.quoteNo = query.quoteNo;
|
||||
this.getList();
|
||||
// 供应商只需加载自己可见的RFQ,无需加载全部供应商列表
|
||||
listRfq({ pageSize: 200 }).then(r => { this.rfqOptions = r.rows || []; });
|
||||
listSupplier({ pageSize: 200 }).then(r => { this.supplierOptions = r.rows || []; });
|
||||
if (!this.isSupplier) {
|
||||
listSupplier({ pageSize: 200 }).then(r => { this.supplierOptions = r.rows || []; });
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
@@ -408,7 +423,11 @@ export default {
|
||||
}).catch(() => { this.loading = false; });
|
||||
},
|
||||
handleQuery() { this.queryParams.pageNum = 1; this.getList(); },
|
||||
resetQuery() { this.resetForm("queryForm"); this.handleQuery(); },
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.queryParams.quoteNo = null;
|
||||
this.handleQuery();
|
||||
},
|
||||
handleAdd() {
|
||||
this.form = { items: [], currency: "CNY", validDays: 30, deliveryDays: null, status: "draft" };
|
||||
this.dialogTitle = "新建报价单";
|
||||
|
||||
Reference in New Issue
Block a user