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:
@@ -161,8 +161,8 @@
|
||||
|
||||
<div class="items-table-wrap">
|
||||
<el-table :data="form.items" border size="small" class="items-table">
|
||||
<el-table-column type="index" width="44" label="#" />
|
||||
<el-table-column label="物料名称" width="200">
|
||||
<el-table-column type="index" width="40" label="#" />
|
||||
<el-table-column label="物料名称" width="170">
|
||||
<template slot-scope="s">
|
||||
<el-autocomplete
|
||||
v-model="s.row.materialName"
|
||||
@@ -191,47 +191,47 @@
|
||||
</el-autocomplete>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格型号" width="150">
|
||||
<el-table-column label="规格型号" width="130">
|
||||
<template slot-scope="s">
|
||||
<el-input v-model="s.row.spec" size="mini" placeholder="规格型号" @change="s.row.modelNo = s.row.spec" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" width="60">
|
||||
<el-table-column label="单位" width="50">
|
||||
<template slot-scope="s">
|
||||
<el-input v-model="s.row.unit" size="mini" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" width="80">
|
||||
<el-table-column label="数量" width="70">
|
||||
<template slot-scope="s">
|
||||
<el-input-number v-model="s.row.quantity" :min="0" size="mini" controls-position="right" style="width:100%" @change="calcRow(s.row)" />
|
||||
<el-input v-model="s.row.quantity" size="mini" placeholder="0" @input="calcRow(s.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="成本价(元)" width="100">
|
||||
<el-table-column label="成本价" width="80">
|
||||
<template slot-scope="s">
|
||||
<el-input-number v-model="s.row.costPrice" :min="0" :precision="2" size="mini" controls-position="right" style="width:100%" @change="calcRow(s.row)" />
|
||||
<el-input v-model="s.row.costPrice" size="mini" placeholder="0.00" @input="calcRow(s.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报价(元)" width="100">
|
||||
<el-table-column label="报价" width="80">
|
||||
<template slot-scope="s">
|
||||
<el-input-number v-model="s.row.unitPrice" :min="0" :precision="2" size="mini" controls-position="right" style="width:100%" @change="calcRow(s.row)" />
|
||||
<el-input v-model="s.row.unitPrice" size="mini" placeholder="0.00" @input="calcRow(s.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额(元)" width="100" align="right">
|
||||
<el-table-column label="金额" width="75" align="right">
|
||||
<template slot-scope="s">
|
||||
<strong style="color:#409EFF">¥{{ itemTotal(s.row) }}</strong>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="毛利率" width="70" align="center">
|
||||
<el-table-column label="毛利率" width="60" align="center">
|
||||
<template slot-scope="s">
|
||||
<span :style="{ color: marginColor(s.row) }">{{ calcMargin(s.row) }}%</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="交期(天)" width="70">
|
||||
<el-table-column label="交期" width="95">
|
||||
<template slot-scope="s">
|
||||
<el-input-number v-model="s.row.deliveryDays" :min="0" size="mini" controls-position="right" style="width:100%" />
|
||||
<el-input v-model="s.row.deliveryDays" size="mini" placeholder="0" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="50" align="center">
|
||||
<el-table-column label="操作" width="55" align="center">
|
||||
<template slot-scope="s">
|
||||
<el-button type="text" icon="el-icon-delete" style="color:#f56c6c" @click="form.items.splice(s.$index, 1)" />
|
||||
</template>
|
||||
@@ -429,27 +429,14 @@ export default {
|
||||
|
||||
// ===== 新建 =====
|
||||
handleAdd() {
|
||||
this.form = { items: [], currency: "CNY", status: "draft", clientName: "", validityDate: "", remark: "" };
|
||||
this.dialogTitle = "新建甲方报价单";
|
||||
this.dialogOpen = true;
|
||||
// 跳转到 detail.vue 页面进行新增
|
||||
this.$router.push('/bid/clientquote/detail');
|
||||
},
|
||||
|
||||
// ===== 编辑 =====
|
||||
handleUpdate(row) {
|
||||
getClientQuote(row.quoteId).then(r => {
|
||||
const data = r.data || {};
|
||||
this.form = {
|
||||
quoteId: data.quoteId,
|
||||
clientName: data.clientName,
|
||||
status: data.status,
|
||||
validityDate: data.validityDate,
|
||||
currency: data.currency,
|
||||
remark: data.remark,
|
||||
items: (data.items || []).map(i => ({ ...i }))
|
||||
};
|
||||
this.dialogTitle = "编辑报价单 - " + data.quoteNo;
|
||||
this.dialogOpen = true;
|
||||
});
|
||||
// 跳转到 detail.vue 页面进行编辑,传递 quoteId
|
||||
this.$router.push({ path: '/bid/clientquote/detail', query: { quoteId: row.quoteId } });
|
||||
},
|
||||
|
||||
// ===== 保存 =====
|
||||
@@ -495,19 +482,9 @@ export default {
|
||||
this.$modal.msgSuccess("已创建新报价单草稿");
|
||||
this.getList();
|
||||
this.getStats();
|
||||
// 打开编辑
|
||||
if (res.data) {
|
||||
this.form = {
|
||||
quoteId: res.data.quoteId,
|
||||
clientName: res.data.clientName,
|
||||
status: res.data.status,
|
||||
validityDate: res.data.validityDate,
|
||||
currency: res.data.currency,
|
||||
remark: res.data.remark,
|
||||
items: (res.data.items || []).map(i => ({ ...i }))
|
||||
};
|
||||
this.dialogTitle = "编辑新建报价单 - " + res.data.quoteNo;
|
||||
this.dialogOpen = true;
|
||||
// 跳转到 detail.vue 编辑新创建的报价单
|
||||
if (res.data && res.data.quoteId) {
|
||||
this.$router.push({ path: '/bid/clientquote/detail', query: { quoteId: res.data.quoteId } });
|
||||
}
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user