2025-03-06 13:08:28 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
:title="title + ' - 原料'"
|
|
|
|
|
|
:visible.sync="visible"
|
2025-05-15 15:00:09 +08:00
|
|
|
|
width="1330px"
|
2025-03-06 13:08:28 +08:00
|
|
|
|
append-to-body
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
:destroy-on-close="true"
|
|
|
|
|
|
@close="handleClose"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<div style="width: 100%;height: 600px;overflow-y: auto;">
|
|
|
|
|
|
<el-tabs v-model="activeTab">
|
|
|
|
|
|
<el-tab-pane label="基础信息" name="basic">
|
|
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
|
|
|
|
|
<el-row>
|
2025-05-28 10:28:52 +08:00
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<el-form-item label="原料编号" prop="materialCode">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="form.materialCode"
|
|
|
|
|
|
placeholder="请输入原料编号"
|
|
|
|
|
|
maxlength="40"
|
|
|
|
|
|
show-word-limit
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<el-form-item label="原料名称" prop="materialName">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="form.materialName"
|
|
|
|
|
|
placeholder="请输入原料名称"
|
|
|
|
|
|
maxlength="40"
|
|
|
|
|
|
show-word-limit
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
2025-05-28 10:28:52 +08:00
|
|
|
|
<el-form-item label="原料类别" prop="materialTypeId">
|
|
|
|
|
|
<el-cascader v-model="form.materialTypeId"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
:options="treeTypeOptions" :filterable="true" style="width: 100%;" :show-all-levels="false"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
:props="{
|
2025-03-12 15:28:36 +08:00
|
|
|
|
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
|
|
|
|
|
checkStrictly: true,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
|
|
|
|
|
value:'id',label:'categoryName'
|
|
|
|
|
|
}" clearable >
|
|
|
|
|
|
</el-cascader>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
2025-05-15 15:00:09 +08:00
|
|
|
|
<el-form-item label="所属区域" prop="areaId">
|
|
|
|
|
|
<el-cascader v-model="form.areaId"
|
|
|
|
|
|
:options="treeAreaOptions" :filterable="true" style="width: 100%;" :show-all-levels="false"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
:props="{
|
2025-05-15 15:00:09 +08:00
|
|
|
|
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
|
|
|
|
|
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
|
|
|
|
|
value:'id',label:'label'
|
|
|
|
|
|
}" clearable @change="handleAreaChange">
|
|
|
|
|
|
</el-cascader>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
2025-05-28 10:28:52 +08:00
|
|
|
|
<el-col :span="12">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-form-item label="计量类型" prop="salesMode" >
|
|
|
|
|
|
<el-select v-model="form.salesMode" placeholder="请选择计量类型" style="width: 100%" @change="getDrpUnitList">
|
|
|
|
|
|
<el-option label="按份" value="1" />
|
|
|
|
|
|
<el-option label="称重" value="2" />
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="12">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-form-item label="原料单位" prop="unitId">
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-select v-model="form.unitId" placeholder="请选择原料单位" style="width: 100%">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-option v-for="item in this.unitOptions"
|
|
|
|
|
|
:key="item.unitId"
|
|
|
|
|
|
:label="item.unitName"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
:value="item.unitId"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
></el-option>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-08-13 14:12:24 +08:00
|
|
|
|
<el-col :span="12">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-form-item label="原料进价" prop="unitPrice">
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-input
|
2025-03-12 15:28:36 +08:00
|
|
|
|
v-model="form.unitPrice"
|
2025-03-07 17:24:51 +08:00
|
|
|
|
placeholder="请输入原料进价"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
@input="handleNumericInput('unitPrice', $event)"
|
|
|
|
|
|
@blur="formatNumericValue('unitPrice')"
|
2025-03-07 17:24:51 +08:00
|
|
|
|
>
|
|
|
|
|
|
<template slot="append">元</template>
|
|
|
|
|
|
</el-input>
|
|
|
|
|
|
</el-form-item>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-08-13 14:12:24 +08:00
|
|
|
|
<!--
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="12">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-form-item label="条码" prop="barCode">
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-input
|
2025-03-12 15:28:36 +08:00
|
|
|
|
v-model="form.barCode"
|
2025-03-07 17:24:51 +08:00
|
|
|
|
placeholder="请输入条码"
|
|
|
|
|
|
maxlength="20"
|
|
|
|
|
|
show-word-limit
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
2025-05-15 15:00:09 +08:00
|
|
|
|
</el-col> -->
|
2025-08-22 14:10:58 +08:00
|
|
|
|
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
|
<el-form-item label="临期天数" prop="shelfLifeDays">
|
|
|
|
|
|
<el-input v-model="form.shelfLifeDays"
|
|
|
|
|
|
placeholder="请输入临期天数"
|
|
|
|
|
|
maxlength="6" @input="(v)=>(form.shelfLifeDays=v.replace(/[^\d]/g,''))"
|
|
|
|
|
|
><template slot="append">天</template>
|
|
|
|
|
|
</el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="12">
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-form-item label="营养信息类别" prop="nutritionTypeId">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-cascader
|
2025-05-28 10:28:52 +08:00
|
|
|
|
v-model="form.nutritionTypeId"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
:options="cascaderOptions"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
:props="{
|
2025-04-16 18:29:28 +08:00
|
|
|
|
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
2025-04-14 19:01:51 +08:00
|
|
|
|
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
2025-05-28 10:28:52 +08:00
|
|
|
|
value:'id',label:'label'
|
2025-04-14 19:01:51 +08:00
|
|
|
|
}"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
placeholder="请选择营养信息类别"
|
|
|
|
|
|
clearable style="width: 100%;"
|
|
|
|
|
|
@change="handleNutritionChange"
|
|
|
|
|
|
/>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-form-item>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="12">
|
2025-05-28 10:28:52 +08:00
|
|
|
|
<el-form-item label="营养信息" prop="nutritionId">
|
|
|
|
|
|
<el-select v-model="form.nutritionId" placeholder="请选择营养信息" style="width: 100%" clearable @change="chosenNutrition">
|
2025-03-12 15:28:36 +08:00
|
|
|
|
<el-option v-for="item in this.nutritionOptions"
|
2025-05-28 10:28:52 +08:00
|
|
|
|
:key="item.nutritionId"
|
|
|
|
|
|
:label="item.nutritionName"
|
2025-08-06 18:18:17 +08:00
|
|
|
|
:value="item.nutritionId"
|
2025-03-12 15:28:36 +08:00
|
|
|
|
></el-option>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
<el-col :span="24">
|
|
|
|
|
|
<h3>营养信息</h3>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-row class="nutrition-info">
|
2025-05-15 15:00:09 +08:00
|
|
|
|
<el-col :span="24">
|
|
|
|
|
|
<el-table :data="formTable" size="mini" >
|
|
|
|
|
|
<el-table-column label="加工时间(min)" prop="processingTime" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="可食部分(g/100g)" prop="edible" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="水分(g/100g)" prop="water" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="热量(千卡/100g)" prop="calories" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="蛋白质(g/100g)" prop="protein" align="center" width="140"></el-table-column>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-table-column label="脂肪(g/100g)" prop="fat" align="center" width="140"></el-table-column>
|
2025-05-15 15:00:09 +08:00
|
|
|
|
<el-table-column label="碳水化合物(g/100g)" prop="carbohydrate" align="center" width="150"></el-table-column>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-table-column label="膳食纤维(g/100g)" prop="dietaryFiber" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="胆固醇(mg/100g)" prop="cholesterol" align="center" width="140"></el-table-column>
|
2025-05-15 15:00:09 +08:00
|
|
|
|
</el-table>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="24">
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-table :data="formTable" size="mini" >
|
2025-05-15 15:00:09 +08:00
|
|
|
|
<el-table-column label="灰分(g/100g)" prop="ash" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="维生素A(μg/100g)" prop="vitaminA" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="胡萝卜素(μg/100g)" prop="carotene" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="视黄醇(μg/100g)" prop="retinol" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="硫胺素(mg/100g)" prop="thiamine" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="核黄素(mg/100g)" prop="riboflavin" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="烟酸/尼克酸(mg/100g)" prop="niacin" align="center" width="150"></el-table-column>
|
|
|
|
|
|
<el-table-column label="维生素C(mg/100g)" prop="vitaminC" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="维生素D(μg/100g)" prop="vitaminD" align="center" width="140"></el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="24">
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-table :data="formTable" size="mini" >
|
2025-05-15 15:00:09 +08:00
|
|
|
|
<el-table-column label="维生素E(mg/100g)" prop="vitaminE" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="钙(mg/100g)" prop="calcium" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="磷(mg/100g)" prop="phosphorus" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="钾(mg/100g)" prop="kalium" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="钠 (mg/100g)" prop="sodium" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="镁(mg/100g)" prop="magnesium" align="center" width="140"></el-table-column>
|
|
|
|
|
|
<el-table-column label="铁 (mg/100g)" prop="iron" align="center" width="150"></el-table-column>
|
|
|
|
|
|
<el-table-column label="锌(mg/100g)" prop="zinc" align="center" width="140"></el-table-column>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
<el-table-column label="硒(μg/100g)" prop="selenium" align="center" width="140"></el-table-column>
|
2025-05-15 15:00:09 +08:00
|
|
|
|
</el-table>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-col>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</el-form>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</el-tab-pane>
|
2025-03-07 17:24:51 +08:00
|
|
|
|
</el-tabs>
|
2025-08-06 18:18:17 +08:00
|
|
|
|
</div>
|
2025-03-06 13:08:28 +08:00
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
|
|
|
<el-button @click="cancel">取 消</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2025-04-09 09:07:42 +08:00
|
|
|
|
import { systemAreaTreeApi } from "@/api/base/area";
|
|
|
|
|
|
import { systemMaterialTreeApi,getDrpUnitListApi } from "@/api/dish/material";
|
2025-05-27 17:53:00 +08:00
|
|
|
|
import { nutritionTypeListApi,nutritionAllListApi,getNutritionInfo } from "@/api/dish/nutritionInfo";
|
2025-03-06 13:08:28 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
name: "MaterialDialog",
|
|
|
|
|
|
props: {
|
|
|
|
|
|
title: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: '新增'
|
|
|
|
|
|
},
|
|
|
|
|
|
visible: {
|
|
|
|
|
|
type: Boolean,
|
|
|
|
|
|
default: false
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
activeTab: 'basic',
|
2025-03-12 15:28:36 +08:00
|
|
|
|
treeAreaOptions:[],//区域树
|
|
|
|
|
|
treeTypeOptions:[],//类型树
|
2025-08-06 18:18:17 +08:00
|
|
|
|
unitOptions:[],//单位下拉
|
2025-03-12 15:28:36 +08:00
|
|
|
|
nutritionTypeTreeData:[],//类别接口返回数据(未处理)
|
|
|
|
|
|
cascaderOptions: [], // 级联选择器的选项(已处理)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
nutritionOptions:[],
|
2025-05-15 15:00:09 +08:00
|
|
|
|
menuMaterialNutritionDTO:{
|
|
|
|
|
|
processingTime: '0',//加工时间(min)
|
|
|
|
|
|
edible: '0',//可食部分(g/100g)
|
|
|
|
|
|
water: '0',//水分(g/100g)
|
|
|
|
|
|
calories: '0',//热量(千卡/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
protein: '0',//蛋白质(g/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
fat: '0',//脂肪(g/100g)
|
|
|
|
|
|
carbohydrate: '0',//碳水化合物(g/100g)
|
|
|
|
|
|
dietaryFiber: '0',//膳食纤维(g/100g)
|
|
|
|
|
|
cholesterol: '0',//胆固醇(mg/100g)
|
|
|
|
|
|
ash: '0',//灰分(g/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
vitaminA: '0',//维生素a(μg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
carotene: '0',//胡萝卜素(μg/100g)
|
|
|
|
|
|
retinol: '0',//视黄醇(μg/100g)
|
|
|
|
|
|
thiamine: '0',//硫胺素(mg/100g)
|
|
|
|
|
|
riboflavin: '0',//核黄素(mg/100g)
|
|
|
|
|
|
niacin: '0',//烟酸/尼克酸(mg/100g)
|
|
|
|
|
|
vitaminC: '0',//维生素c(mg/100g)
|
|
|
|
|
|
vitaminE: '0',//维生素e(g/100g)
|
|
|
|
|
|
calcium: '0',//钙(mg/100g)
|
|
|
|
|
|
phosphorus: '0',//磷(mg/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
kalium: '0',//钾(mg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
sodium: '0',//钠(mg/100g)
|
|
|
|
|
|
magnesium: '0',//镁(mg/100g)
|
|
|
|
|
|
iron: '0',//铁(mg/100g)
|
|
|
|
|
|
zinc: '0',//锌(mg/100g)
|
|
|
|
|
|
selenium: '0',//硒(μg/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
cuprum: '0',//铜(mg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
manganese: '0',//锰(mg/100g)
|
|
|
|
|
|
iodine: '0'
|
|
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
form: {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
materialCode: '',//原料名称
|
2025-03-12 15:28:36 +08:00
|
|
|
|
materialName: '',//原料名称
|
|
|
|
|
|
areaId: null,//所属区域
|
2025-08-06 18:18:17 +08:00
|
|
|
|
materialTypeId: null,//原料类别
|
2025-08-22 14:10:58 +08:00
|
|
|
|
salesMode: '2',//计量类型
|
2025-03-12 15:28:36 +08:00
|
|
|
|
unitId: '',//原料单位
|
2025-08-22 14:10:58 +08:00
|
|
|
|
unitPrice: '0',//原料进价(元)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
barCode: '',//条码
|
2025-08-22 14:10:58 +08:00
|
|
|
|
shelfLifeDays:0,//临期天数
|
2025-05-28 10:28:52 +08:00
|
|
|
|
nutritionTypeId:null,//营养信息类型
|
2025-08-06 18:18:17 +08:00
|
|
|
|
nutritionId:null,//营养信息
|
2025-03-12 15:28:36 +08:00
|
|
|
|
//营养信息
|
2025-05-15 15:00:09 +08:00
|
|
|
|
menuMaterialNutritionDTO: {}
|
2025-03-06 13:08:28 +08:00
|
|
|
|
},
|
2025-05-15 15:00:09 +08:00
|
|
|
|
formTable:[
|
2025-08-06 18:18:17 +08:00
|
|
|
|
{
|
2025-05-15 15:00:09 +08:00
|
|
|
|
processingTime: '0',//加工时间(min)
|
|
|
|
|
|
edible: '0',//可食部分(g/100g)
|
|
|
|
|
|
water: '0',//水分(g/100g)
|
|
|
|
|
|
calories: '0',//热量(千卡/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
protein: '0',//蛋白质(g/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
fat: '0',//脂肪(g/100g)
|
|
|
|
|
|
carbohydrate: '0',//碳水化合物(g/100g)
|
|
|
|
|
|
dietaryFiber: '0',//膳食纤维(g/100g)
|
|
|
|
|
|
cholesterol: '0',//胆固醇(mg/100g)
|
|
|
|
|
|
ash: '0',//灰分(g/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
vitaminA: '0',//维生素a(μg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
carotene: '0',//胡萝卜素(μg/100g)
|
|
|
|
|
|
retinol: '0',//视黄醇(μg/100g)
|
|
|
|
|
|
thiamine: '0',//硫胺素(mg/100g)
|
|
|
|
|
|
riboflavin: '0',//核黄素(mg/100g)
|
|
|
|
|
|
niacin: '0',//烟酸/尼克酸(mg/100g)
|
|
|
|
|
|
vitaminC: '0',//维生素c(mg/100g)
|
|
|
|
|
|
vitaminE: '0',//维生素e(g/100g)
|
|
|
|
|
|
calcium: '0',//钙(mg/100g)
|
|
|
|
|
|
phosphorus: '0',//磷(mg/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
kalium: '0',//钾(mg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
sodium: '0',//钠(mg/100g)
|
|
|
|
|
|
magnesium: '0',//镁(mg/100g)
|
|
|
|
|
|
iron: '0',//铁(mg/100g)
|
|
|
|
|
|
zinc: '0',//锌(mg/100g)
|
|
|
|
|
|
selenium: '0',//硒(μg/100g)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
cuprum: '0',//铜(mg/100g)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
manganese: '0',//锰(mg/100g)
|
|
|
|
|
|
iodine: '0'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
2025-03-06 13:08:28 +08:00
|
|
|
|
rules: {
|
2025-06-24 13:14:28 +08:00
|
|
|
|
materialCode: [{ required: true, message: '请输入原料编码', trigger: 'blur' }],
|
2025-03-06 13:08:28 +08:00
|
|
|
|
materialName: [{ required: true, message: '请输入原料名称', trigger: 'blur' }],
|
2025-03-12 15:28:36 +08:00
|
|
|
|
areaId: [{ required: true, message: '请选择所属区域', trigger: 'change' }],
|
2025-05-28 10:28:52 +08:00
|
|
|
|
materialTypeId: [{ required: true, message: '请选择原料类别', trigger: 'change' }],
|
2025-08-06 18:18:17 +08:00
|
|
|
|
salesMode: [{ required: true, message: '请选择计量类型', trigger: 'change' }],
|
2025-08-22 14:10:58 +08:00
|
|
|
|
shelfLifeDays: [{ required: true, message: '请输入临期天数', trigger: 'change' }],
|
2025-06-11 09:58:37 +08:00
|
|
|
|
nutritionTypeId: [{ required: true, message: '请选择营养信息类别', trigger: 'change' }],
|
|
|
|
|
|
nutritionId: [{ required: true, message: '请选择营养信息', trigger: 'change' }],
|
2025-03-06 13:08:28 +08:00
|
|
|
|
},
|
|
|
|
|
|
nutritionFields: [
|
2025-04-29 13:58:42 +08:00
|
|
|
|
{ label: '可食部分', prop: 'edible', unit: 'g/100g' },
|
2025-03-06 13:08:28 +08:00
|
|
|
|
{ label: '水分', prop: 'water', unit: 'g/100g' },
|
2025-04-29 13:58:42 +08:00
|
|
|
|
{ label: '热量', prop: 'calories', unit: '千卡/100g' },
|
2025-03-06 13:08:28 +08:00
|
|
|
|
{ label: '蛋白质', prop: 'protein', unit: 'g/100g' },
|
|
|
|
|
|
{ label: '脂肪', prop: 'fat', unit: 'g/100g' },
|
|
|
|
|
|
{ label: '碳水化合物', prop: 'carbohydrate', unit: 'g/100g' },
|
|
|
|
|
|
{ label: '膳食纤维', prop: 'dietaryFiber', unit: 'g/100g' },
|
|
|
|
|
|
{ label: '胆固醇', prop: 'cholesterol', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '灰分', prop: 'ash', unit: 'g/100g' },
|
|
|
|
|
|
{ label: '维生素A', prop: 'vitaminA', unit: 'μg/100g' },
|
2025-03-12 15:28:36 +08:00
|
|
|
|
|
2025-03-06 13:08:28 +08:00
|
|
|
|
{ label: '胡萝卜素', prop: 'carotene', unit: 'μg/100g' },
|
|
|
|
|
|
{ label: '视黄醇', prop: 'retinol', unit: 'μg/100g' },
|
|
|
|
|
|
{ label: '硫胺素', prop: 'thiamine', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '核黄素', prop: 'riboflavin', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '烟酸/尼克酸', prop: 'niacin', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '维生素C', prop: 'vitaminC', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '维生素E', prop: 'vitaminE', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '钙', prop: 'calcium', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '磷', prop: 'phosphorus', unit: 'mg/100g' },
|
2025-03-12 15:28:36 +08:00
|
|
|
|
{ label: '钾', prop: 'kalium', unit: 'mg/100g' },
|
|
|
|
|
|
|
2025-03-06 13:08:28 +08:00
|
|
|
|
{ label: '钠', prop: 'sodium', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '镁', prop: 'magnesium', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '铁', prop: 'iron', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '锌', prop: 'zinc', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '硒', prop: 'selenium', unit: 'μg/100g' },
|
2025-03-12 15:28:36 +08:00
|
|
|
|
{ label: '铜', prop: 'cuprum', unit: 'mg/100g' },
|
2025-03-06 13:08:28 +08:00
|
|
|
|
{ label: '锰', prop: 'manganese', unit: 'mg/100g' },
|
|
|
|
|
|
{ label: '碘', prop: 'iodine', unit: 'μg/100g' }
|
|
|
|
|
|
]
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
computed: {
|
|
|
|
|
|
// Remove dialogVisible computed property
|
|
|
|
|
|
},
|
2025-03-12 15:28:36 +08:00
|
|
|
|
created() {
|
|
|
|
|
|
this.getAreaTreeData();//获取区域树
|
|
|
|
|
|
this.getTypeTreeData();//获取原料类别树
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.getDrpUnitList();//获取单位类型下拉
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.getNutritionTypeList()//获取营养信息类别树
|
2025-03-12 15:28:36 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
methods: {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
//区域树
|
|
|
|
|
|
getAreaTreeData() {
|
|
|
|
|
|
systemAreaTreeApi({}).then((response) => {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.treeAreaOptions = response.data;
|
2025-03-12 15:28:36 +08:00
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
//基础设置-选择区域
|
2025-08-06 18:18:17 +08:00
|
|
|
|
handleAreaChange(val){
|
2025-05-28 10:28:52 +08:00
|
|
|
|
// this.form.categoryId=null
|
|
|
|
|
|
// this.getTypeTreeData()
|
|
|
|
|
|
// this.getDrpUnitList()
|
2025-03-12 15:28:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
//类型树
|
|
|
|
|
|
getTypeTreeData() {
|
|
|
|
|
|
let param = {
|
2025-06-30 18:16:08 +08:00
|
|
|
|
areaId:this.form.areaId,
|
|
|
|
|
|
goodsType:1
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
systemMaterialTreeApi(param).then((response) => {
|
|
|
|
|
|
this.treeTypeOptions = response.data;
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
//单位类型拉下选
|
|
|
|
|
|
getDrpUnitList() {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
let param = {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
"weighType":this.form.salesMode,
|
2025-08-06 18:18:17 +08:00
|
|
|
|
"pageNum": 1,
|
2025-05-28 10:28:52 +08:00
|
|
|
|
"pageSize": 100
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
this.form.unitId=null
|
|
|
|
|
|
getDrpUnitListApi(param).then((response) => {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.unitOptions = response.rows;
|
2025-03-12 15:28:36 +08:00
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
|
|
|
|
|
//获取营养信息类别
|
2025-05-28 10:28:52 +08:00
|
|
|
|
getNutritionTypeList() {
|
2025-04-14 19:01:51 +08:00
|
|
|
|
nutritionTypeListApi().then(response => {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.typeTreeData = response.data;
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.cascaderOptions = this.cascaderOptionsMethod();
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}).catch(error => {
|
|
|
|
|
|
console.error("Failed to fetch food types:", error);
|
|
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-12 15:28:36 +08:00
|
|
|
|
//生成级联选择器的选项数据
|
|
|
|
|
|
cascaderOptionsMethod() {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
if (this.typeTreeData.length==0) {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
return [];
|
|
|
|
|
|
}
|
2025-05-28 10:28:52 +08:00
|
|
|
|
return this.typeTreeData.map(item => ({
|
|
|
|
|
|
id: item.id,
|
|
|
|
|
|
label: item.name,
|
2025-04-14 19:01:51 +08:00
|
|
|
|
parentId:0,
|
2025-05-28 10:28:52 +08:00
|
|
|
|
level:0,
|
2025-03-12 15:28:36 +08:00
|
|
|
|
children: item.littleTypeList.map(subItem => ({
|
2025-05-28 10:28:52 +08:00
|
|
|
|
id: subItem.id,//父子类别value一致时选中识别不出来,加个#号区分
|
|
|
|
|
|
label: subItem.name,
|
|
|
|
|
|
bigType: item.name,
|
2025-04-14 19:01:51 +08:00
|
|
|
|
parentId:item.id,
|
2025-05-28 10:28:52 +08:00
|
|
|
|
level:1
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}))
|
|
|
|
|
|
}));
|
|
|
|
|
|
},
|
|
|
|
|
|
//选中营养信息类别
|
|
|
|
|
|
handleNutritionChange(value) {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
console.log("选中营养信息类别",value)
|
|
|
|
|
|
this.nutritionAllList(value)
|
|
|
|
|
|
},
|
2025-03-12 15:28:36 +08:00
|
|
|
|
//获取营养信息下拉
|
2025-05-28 10:28:52 +08:00
|
|
|
|
nutritionAllList(value){
|
2025-03-12 15:28:36 +08:00
|
|
|
|
let param = {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
categoryId:value
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}
|
2025-08-06 18:18:17 +08:00
|
|
|
|
nutritionAllListApi(param).then((response) => {
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.$set(this.form,"nutritionId",null)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.nutritionOptions = response.data;
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
//选中营养信息
|
|
|
|
|
|
chosenNutrition(){
|
2025-08-06 18:18:17 +08:00
|
|
|
|
console.log("选中营养信息",this.form.nutritionId)
|
|
|
|
|
|
if (!this.form.nutritionId) {
|
|
|
|
|
|
// 清空选择时重置为默认值
|
|
|
|
|
|
this.resetNutritionTable();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-05-28 10:28:52 +08:00
|
|
|
|
getNutritionInfo({nutritionId: this.form.nutritionId}).then((response) => {
|
2025-05-09 15:53:57 +08:00
|
|
|
|
if(response.data){
|
|
|
|
|
|
this.form.menuMaterialNutritionDTO = response.data
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.formTable = [this.form.menuMaterialNutritionDTO]
|
2025-05-09 15:53:57 +08:00
|
|
|
|
}else{
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.form.menuMaterialNutritionDTO = this.menuMaterialNutritionDTO
|
|
|
|
|
|
this.formTable = [this.menuMaterialNutritionDTO]
|
2025-08-06 18:18:17 +08:00
|
|
|
|
}
|
2025-03-12 15:28:36 +08:00
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
handleNumericInput(field, event) {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
// const value = event.target.value;
|
|
|
|
|
|
const value = event;
|
2025-03-06 13:08:28 +08:00
|
|
|
|
// 只允许输入数字和小数点
|
|
|
|
|
|
let newValue = value.replace(/[^\d.]/g, '');
|
|
|
|
|
|
|
|
|
|
|
|
// 确保只有一个小数点
|
|
|
|
|
|
const parts = newValue.split('.');
|
|
|
|
|
|
if (parts.length > 2) {
|
|
|
|
|
|
newValue = parts[0] + '.' + parts.slice(1).join('');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 限制小数点后最多两位
|
|
|
|
|
|
if (parts.length === 2 && parts[1].length > 2) {
|
|
|
|
|
|
newValue = parts[0] + '.' + parts[1].substring(0, 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 设置字段值
|
|
|
|
|
|
if (field.includes('.')) {
|
|
|
|
|
|
const [obj, prop] = field.split('.');
|
2025-03-25 15:48:23 +08:00
|
|
|
|
this.form[obj][prop] = newValue;
|
2025-08-06 18:18:17 +08:00
|
|
|
|
} else {
|
2025-03-25 15:48:23 +08:00
|
|
|
|
this.form[field] = newValue;
|
2025-03-06 13:08:28 +08:00
|
|
|
|
}
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
formatNumericValue(field) {
|
|
|
|
|
|
let value;
|
|
|
|
|
|
if (field.includes('.')) {
|
2025-08-06 18:18:17 +08:00
|
|
|
|
const [obj, prop] = field.split('.');
|
2025-03-06 13:08:28 +08:00
|
|
|
|
value = this.form[obj][prop];
|
|
|
|
|
|
} else {
|
|
|
|
|
|
value = this.form[field];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!value || value === '' || value === '.') {
|
|
|
|
|
|
value = '0.00';
|
|
|
|
|
|
} else {
|
|
|
|
|
|
value = parseFloat(value).toFixed(2);
|
|
|
|
|
|
}
|
2025-03-25 15:48:23 +08:00
|
|
|
|
console.log(value)
|
2025-03-06 13:08:28 +08:00
|
|
|
|
if (field.includes('.')) {
|
|
|
|
|
|
const [obj, prop] = field.split('.');
|
2025-03-25 15:48:23 +08:00
|
|
|
|
this.form[obj][prop] = value;
|
2025-03-06 13:08:28 +08:00
|
|
|
|
} else {
|
2025-03-25 15:48:23 +08:00
|
|
|
|
this.form[field] = value;
|
2025-03-06 13:08:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
addProcessingMethod() {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.form.firstProcessList.push('');
|
2025-03-06 13:08:28 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
removeProcessingMethod(index) {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.form.firstProcessList.splice(index, 1);
|
2025-03-06 13:08:28 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
addCuttingMethod() {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.form.cutProcessList.push('');
|
2025-03-06 13:08:28 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
removeCuttingMethod(index) {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.form.cutProcessList.splice(index, 1);
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
setFormData(row){
|
|
|
|
|
|
console.log(row)
|
2025-05-28 10:28:52 +08:00
|
|
|
|
// this.getTypeTreeData()
|
2025-08-06 18:18:17 +08:00
|
|
|
|
// this.getDrpUnitList()
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.$set(this.form,"areaId",row.areaId)
|
|
|
|
|
|
this.$set(this.form,"areaName",row.areaName)
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.$set(this.form,"materialTypeId",row.materialTypeId)
|
|
|
|
|
|
this.$set(this.form,"materialTypeName",row.materialTypeName)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.$set(this.form,"materialCode",row.materialCode)
|
|
|
|
|
|
this.$set(this.form,"materialId",row.materialId)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.$set(this.form,"materialName",row.materialName)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.$set(this.form,"salesMode",row.salesMode+'')
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.getDrpUnitList()
|
2025-03-12 15:28:36 +08:00
|
|
|
|
this.$set(this.form,"unitId",row.unitId)
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.$set(this.form,"salePrice",Number((row.salePrice/100).toFixed(2)))
|
|
|
|
|
|
this.$set(this.form,"unitPrice",Number((row.unitPrice/100).toFixed(2)))
|
|
|
|
|
|
this.$set(this.form,"barCode",row.barCode)
|
2025-08-22 14:10:58 +08:00
|
|
|
|
this.$set(this.form,"shelfLifeDays",row.shelfLifeDays)
|
2025-05-28 10:28:52 +08:00
|
|
|
|
if(row.nutritionTypeId){
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.$set(this.form,"nutritionTypeId",Number(row.nutritionTypeId))
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.nutritionAllList(this.form.nutritionTypeId)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
setTimeout(()=>{
|
2025-05-28 10:28:52 +08:00
|
|
|
|
this.$set(this.form,"nutritionId",row.nutritionId)
|
|
|
|
|
|
if(this.form.nutritionId){
|
|
|
|
|
|
getNutritionInfo({nutritionId: this.form.nutritionId}).then((response) => {
|
2025-05-14 17:42:57 +08:00
|
|
|
|
if(response.data){
|
|
|
|
|
|
this.form.menuMaterialNutritionDTO = response.data
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.formTable = [this.form.menuMaterialNutritionDTO]
|
2025-05-14 17:42:57 +08:00
|
|
|
|
}else{
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.form.menuMaterialNutritionDTO = this.menuMaterialNutritionDTO
|
|
|
|
|
|
this.formTable = [this.menuMaterialNutritionDTO]
|
2025-08-06 18:18:17 +08:00
|
|
|
|
}
|
2025-03-12 15:28:36 +08:00
|
|
|
|
});
|
|
|
|
|
|
}else{
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.form.menuMaterialNutritionDTO = this.menuMaterialNutritionDTO
|
|
|
|
|
|
this.formTable = [this.menuMaterialNutritionDTO]
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}
|
2025-05-28 10:28:52 +08:00
|
|
|
|
},600)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
}else{
|
2025-04-16 18:29:28 +08:00
|
|
|
|
this.$set(this.form,"nutritionType",null)
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.form.menuMaterialNutritionDTO = this.menuMaterialNutritionDTO
|
|
|
|
|
|
this.formTable = [this.menuMaterialNutritionDTO]
|
2025-08-06 18:18:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
submitForm() {
|
|
|
|
|
|
this.$refs.form.validate(valid => {
|
|
|
|
|
|
if (valid) {
|
2025-07-04 14:02:57 +08:00
|
|
|
|
this.form.salePrice = Number(this.form.salePrice);
|
2025-08-06 18:18:17 +08:00
|
|
|
|
this.form.unitPrice = Number(this.form.unitPrice);
|
2025-03-06 13:08:28 +08:00
|
|
|
|
this.$emit('submit', this.form);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
handleClose() {
|
|
|
|
|
|
this.$emit('update:visible', false);
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
this.reset();
|
|
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
cancel() {
|
|
|
|
|
|
this.$emit('update:visible', false);
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
this.reset();
|
|
|
|
|
|
});
|
2025-08-06 18:18:17 +08:00
|
|
|
|
},
|
2025-03-06 13:08:28 +08:00
|
|
|
|
reset() {
|
|
|
|
|
|
this.form = {
|
2025-03-12 15:28:36 +08:00
|
|
|
|
materialName: '',//原料名称
|
|
|
|
|
|
areaId: null,//所属区域
|
2025-08-06 18:18:17 +08:00
|
|
|
|
materialTypeId: null,//原料类别
|
2025-08-22 14:10:58 +08:00
|
|
|
|
salesMode: '2',//计量类型
|
2025-03-12 15:28:36 +08:00
|
|
|
|
unitId: '',//原料单位
|
2025-08-22 14:10:58 +08:00
|
|
|
|
unitPrice: '0',//原料进价(元)
|
2025-03-12 15:28:36 +08:00
|
|
|
|
barCode: '',//条码
|
2025-08-22 14:10:58 +08:00
|
|
|
|
shelfLifeDays:0,
|
2025-04-16 18:29:28 +08:00
|
|
|
|
nutritionType:null,//营养信息类型
|
2025-05-28 10:28:52 +08:00
|
|
|
|
nutritionId:null,//营养信息
|
2025-03-12 15:28:36 +08:00
|
|
|
|
//营养信息
|
2025-05-15 15:00:09 +08:00
|
|
|
|
menuMaterialNutritionDTO: this.menuMaterialNutritionDTO
|
2025-03-06 13:08:28 +08:00
|
|
|
|
};
|
2025-05-15 15:00:09 +08:00
|
|
|
|
this.formTable = [this.menuMaterialNutritionDTO]
|
2025-03-06 13:08:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
|
|
|
|
|
|
</style>
|