fix: 材料"材料单位名称"文案统一改为"供应商"

- 模型 verbose_name、Excel 导入别名(兼容历史表头)、导出表头、
  前端材料列表列和表单 label 一并同步

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
caoqianming 2026-04-23 22:04:38 +08:00
parent 85ed7a20c1
commit 1245fb3da8
5 changed files with 29 additions and 5 deletions

View File

@ -25,7 +25,7 @@ HEADER_ALIASES = {
"material_category": ("细分种类", "材料分类"),
"material_subcategory": ("材料子类", "材料子分类"),
"material_name": ("材料名称",),
"unit_name": ("材料单位名称", "所属工厂", "品牌"),
"unit_name": ("供应商", "材料单位名称", "所属工厂", "品牌"),
"factory_name": ("工厂全称", "生产工厂全称"),
"stage": ("阶段",),
"importance_level": ("重要等级",),

View File

@ -0,0 +1,24 @@
# 修改 Material.factory 的 verbose_name材料单位名称 → 供应商
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('factory', '0004_rename_brand_to_short_name'),
('material', '0008_populate_brand'),
]
operations = [
migrations.AlterField(
model_name='material',
name='factory',
field=models.ForeignKey(
on_delete=models.deletion.CASCADE,
related_name='materials',
to='factory.factory',
verbose_name='供应商',
),
),
]

View File

@ -86,7 +86,7 @@ class Material(models.Model):
connection_method = models.CharField(max_length=255, blank=True, null=True, verbose_name='连接方式')
construction_method = models.CharField(max_length=255, blank=True, null=True, verbose_name='施工工艺')
limit_condition = models.TextField(blank=True, null=True, verbose_name='限制条件')
factory = models.ForeignKey('factory.Factory', on_delete=models.CASCADE, related_name='materials', verbose_name='材料单位名称')
factory = models.ForeignKey('factory.Factory', on_delete=models.CASCADE, related_name='materials', verbose_name='供应商')
brand = models.ForeignKey('brand.Brand', on_delete=models.PROTECT, null=True, blank=True, related_name='materials', verbose_name='品牌')
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft', verbose_name='状态')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

View File

@ -355,7 +355,7 @@ class MaterialViewSet(ModelViewSet):
worksheet.title = "材料"
headers = [
"材料名称","材料大类", "细分种类", "材料子类", "阶段", "重要等级",
"落地项目", "对接人", "对接人联系方式", "经办人", "材料单位名称", "工厂全称", "规格型号",
"落地项目", "对接人", "对接人联系方式", "经办人", "供应商", "工厂全称", "规格型号",
"符合标准", "应用场景", "应用说明", "替代材料类型", "竞争优势", "优势说明",
"成本对比(%)", "成本说明", "案例", "质量等级", "耐久等级", "环保等级",
"低碳等级", "总评分", "连接方式", "施工工艺", "限制条件", "备注",

View File

@ -44,7 +44,7 @@
<el-table-column prop="contact_phone" label="对接人联系方式" width="130px"/>
<el-table-column prop="handler" label="经办人" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="factory_short_name" label="材料单位名称" />
<el-table-column prop="factory_short_name" label="供应商" />
<el-table-column prop="brand_name" label="品牌" />
<el-table-column prop="status_display" label="状态" width="120" />
<el-table-column label="操作" width="320">
@ -202,7 +202,7 @@
<el-form-item label="限制条件">
<el-input v-model="form.limit_condition" type="textarea" />
</el-form-item>
<el-form-item label="材料单位名称" v-if="isAdmin">
<el-form-item label="供应商" v-if="isAdmin">
<el-select v-model="form.factory">
<el-option v-for="item in factories" :key="item.id" :label="item.short_name" :value="item.id" />
</el-select>