diff --git a/stdiet-ui/src/components/BodySignView/ACFComT/SimpleIngredientListViewT/index.vue b/stdiet-ui/src/components/BodySignView/ACFComT/SimpleIngredientListViewT/index.vue
deleted file mode 100644
index e68c109b3..000000000
--- a/stdiet-ui/src/components/BodySignView/ACFComT/SimpleIngredientListViewT/index.vue
+++ /dev/null
@@ -1,147 +0,0 @@
-<template>
-  <div class="simple_igd_view_wrapper">
-    <el-row :gutter="12">
-      <el-form :model="queryParams" ref="queryForm" :inline="true">
-        <el-col :span="8">
-          <el-form-item label="名称" prop="name" size="mini">
-            <el-input
-              v-model="queryParams.name"
-              placeholder="请输入食材名称"
-              clearable
-              size="mini"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="类别" prop="type" size="mini" width="130px">
-            <el-select
-              v-model="queryParams.type"
-              placeholder="请选择食材类别"
-              clearable
-              size="mini"
-            >
-              <el-option
-                v-for="dict in ingTypeOptions"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item size="mini">
-            <el-button
-              type="cyan"
-              icon="el-icon-search"
-              size="mini"
-              @click="handleQuery"
-              >搜索
-            </el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-              >重置
-            </el-button>
-          </el-form-item>
-        </el-col>
-      </el-form>
-    </el-row>
-    <el-table
-      v-loading="loading"
-      border
-      :data="ingredientList"
-      :cell-style="{ padding: 0 }"
-      :header-cell-style="{ padding: 0, height: 'unset' }"
-    >
-      <el-table-column label="食材名称" align="center" prop="name" />
-      <el-table-column
-        label="食材类别"
-        align="center"
-        prop="type"
-        :formatter="typeFormat"
-      />
-      <el-table-column label="操作" align="center">
-        <template slot-scope="scope">
-          <el-button type="text" size="mini" @click="handleOnSelect(scope.row)"
-            >选用</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total > 0"
-      :background="false"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-      layout="total, prev, pager, next"
-    />
-  </div>
-</template>
-<script>
-import { listIngredient } from "@/api/custom/ingredient";
-export default {
-  name: "SimpleIngredientListViewT",
-  data() {
-    return {
-      loading: false,
-      total: 0,
-      ingredientList: [],
-      ingTypeOptions: [],
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        name: null,
-        type: null,
-        area: null,
-        reviewStatus: "yes",
-      },
-    };
-  },
-  created() {
-    this.getDicts("cus_ing_type").then((response) => {
-      this.ingTypeOptions = response.data;
-    });
-  },
-  watch: {},
-  methods: {
-    getList() {
-      this.loading = true;
-      listIngredient(this.queryParams).then((response) => {
-        this.ingredientList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    reset() {
-      this.resetForm("queryForm");
-    },
-    // 食材类别字典翻译
-    typeFormat(row, column) {
-      return this.selectDictLabel(this.ingTypeOptions, row.type);
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    handleOnSelect(data) {
-      this.$emit("onSelect", data);
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.simple_igd_view_wrapper {
-  /deep/ .el-input {
-    width: 130px;
-  }
-}
-</style>
diff --git a/stdiet-ui/src/components/BodySignView/ACFComT/index.vue b/stdiet-ui/src/components/BodySignView/ACFComT/index.vue
deleted file mode 100644
index bc891bc2c..000000000
--- a/stdiet-ui/src/components/BodySignView/ACFComT/index.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-<template>
-  <div class="avoid_certain_food_com_wrapper">
-    <el-popover
-      placement="right"
-      trigger="click"
-      width="600"
-      title="忌口"
-      @hide="handleOnHide"
-    >
-      <SimpleIngredientListView @onSelect="handleOnSelect" />
-      <span slot="reference" class="trigger">忌口: </span>
-    </el-popover>
-    <div class="content">
-      <el-tag
-        v-for="item in data"
-        :key="item.id"
-        closable
-        size="mini"
-        type="danger"
-        @close="handleOnClose(item)"
-      >
-        {{ item.name }}
-      </el-tag>
-    </div>
-  </div>
-</template>
-<script>
-import { createNamespacedHelpers } from "vuex";
-const { mapMutations } = createNamespacedHelpers("recipes");
-import SimpleIngredientListViewT from "./SimpleIngredientListViewT";
-import { editPhysicalSigns } from "@/api/custom/healthy";
-
-export default {
-  name: "ACFComT",
-  props: ["value", "id"],
-  components: {
-    SimpleIngredientListViewT,
-  },
-  data() {
-    return {
-      data: [],
-    };
-  },
-  watch: {
-    value(val) {
-      this.data = val;
-    },
-  },
-  methods: {
-    handleOnSelect(data) {
-      // console.log(data);
-      if (!this.data.some((obj) => obj.id === data.id)) {
-        this.data.push({
-          id: data.id,
-          name: data.name,
-        });
-        // console.log(this.data);
-        this.$emit("update:value", this.data);
-        this.updateAvoidFoodIds({
-          avoidFoodIds: this.data.map((obj) => obj.id),
-        });
-      }
-    },
-    handleOnClose(data) {
-      // console.log(data);
-      this.data = this.data.filter((obj) => data.id !== obj.id);
-      this.$emit("update:value", this.data);
-      this.updateAvoidFoodIds({ avoidFoodIds: this.data.map((obj) => obj.id) });
-      // 删除后更新
-      this.handleOnHide();
-    },
-    handleOnHide() {
-      editPhysicalSigns({ id: this.id, avoidFood: this.data }).then((res) => {
-        if (res.code === 200) {
-          this.$message.success("忌口修改成功");
-        }
-      });
-    },
-    ...mapMutations(["updateAvoidFoodIds"]),
-  },
-};
-</script>
-<style lang="scss" scoped>
-.avoid_certain_food_com_wrapper {
-  display: flex;
-  margin-bottom: 8px;
-
-  .trigger {
-    font-size: 14px;
-    width: 42px;
-    color: #8c8c8c;
-    cursor: pointer;
-  }
-
-  .content {
-    flex: 1;
-
-    & > span {
-      margin: 0 4px 4px 4px;
-    }
-  }
-}
-</style>
diff --git a/stdiet-ui/src/components/BodySignView/RemarkComT/index.vue b/stdiet-ui/src/components/BodySignView/RemarkComT/index.vue
deleted file mode 100644
index 217597a51..000000000
--- a/stdiet-ui/src/components/BodySignView/RemarkComT/index.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-<template>
-  <div class="simple_remark_com_wrapper">
-    <el-popover
-      placement="right"
-      trigger="click"
-      width="400"
-      title="备注"
-      @hide="handleOnHide"
-    >
-      <el-input
-        type="textarea"
-        v-model="nData"
-        rows="6"
-        placeholder="请输入备注信息"
-        maxlength="300"
-        show-word-limit
-      />
-      <span slot="reference" class="trigger">备注: </span>
-    </el-popover>
-    <div class="content">
-      <span v-if="newLine">
-        <div v-for="v in mValue" :key="v">
-          {{ v }}
-        </div>
-      </span>
-      <span v-else>{{ mValue }}</span>
-    </div>
-  </div>
-</template>
-<script>
-import { editPhysicalSigns } from "@/api/custom/healthy";
-
-export default {
-  name: "RemarkComT",
-  props: ["value", "id"],
-  components: {},
-  data() {
-    return {
-      newLine: false,
-      nData: "",
-    };
-  },
-  watch: {
-    value(val) {
-      this.nData = val;
-    },
-    nData(val) {
-      this.$emit("updata:value", val);
-    },
-  },
-  computed: {
-    mValue: function () {
-      if (
-        this.nData &&
-        typeof this.nData === "string" &&
-        (this.nData.includes("</br>") || this.nData.includes("\n"))
-      ) {
-        this.newLine = true;
-        if (this.nData.includes("</br>")) {
-          return this.nData.split("</br>");
-        } else if (this.nData.includes("\n")) {
-          return this.nData.split("\n");
-        }
-        this.newLine = false;
-        return this.nData;
-      }
-      this.newLine = false;
-      return this.nData;
-    },
-  },
-  methods: {
-    handleOnHide() {
-      // console.log("handleOnHide");
-      editPhysicalSigns({ id: this.id, remark: this.nData }).then((res) => {
-        if (res.code === 200) {
-          this.$message.success("备注修改成功");
-        }
-      });
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-.simple_remark_com_wrapper {
-  display: flex;
-  margin-bottom: 8px;
-  font-size: 14px;
-
-  .trigger {
-    width: 42px;
-    color: #8c8c8c;
-    cursor: pointer;
-  }
-
-  .content {
-    flex: 1;
-  }
-}
-</style>
diff --git a/stdiet-ui/src/components/BodySignView/index.vue b/stdiet-ui/src/components/BodySignView/index.vue
index 7d1ff98d1..baa172dea 100644
--- a/stdiet-ui/src/components/BodySignView/index.vue
+++ b/stdiet-ui/src/components/BodySignView/index.vue
@@ -10,14 +10,23 @@
         extraclass="text-info-extra"
       />
     </div>
-    <RemarkComT v-if="dev" :value.sync="data.remark" :id="data.id" />
-    <ACFComT v-if="dev" :value.sync="data.avoidFood" :id="data.id" />
+    <RemarkCom
+      v-if="dev"
+      :value.sync="data.remark"
+      @onConfirm="handleOnConfirm"
+    />
+    <ACFCom
+      v-if="dev"
+      :value.sync="data.avoidFood"
+      @onConfirm="handleOnConfirm"
+    />
   </div>
 </template>
 <script>
 import TextInfo from "@/components/TextInfo";
-import ACFComT from "./ACFComT";
-import RemarkComT from "./RemarkComT";
+import ACFCom from "@/components/HealthyView/ACFCom";
+import RemarkCom from "@/components/HealthyView/RemarkCom";
+import { editPhysicalSigns } from "@/api/custom/healthy";
 
 export default {
   name: "BodySignView",
@@ -33,8 +42,8 @@ export default {
   },
   components: {
     "text-info": TextInfo,
-    ACFComT,
-    RemarkComT,
+    ACFCom,
+    RemarkCom,
   },
   data() {
     const basicInfo = [
@@ -89,22 +98,27 @@ export default {
       basicInfo.splice(6, 0, [
         { title: "不运动总热量", value: "notSportHeat" },
       ]);
+      // basicInfo.splice(basicInfo.length, 0, [
+      //   { title: "备注", value: "remark" },
+      // ]);
     }
     return {
       basicInfo,
     };
   },
+  methods: {
+    handleOnConfirm(data) {
+      editPhysicalSigns({ id: this.data.id, ...data }).then((res) => {
+        if (res.code === 200) {
+          this.$message.success("修改成功");
+        }
+      });
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
 .body_sign_view_wrapper {
-  position: relative;
-
-  .remark_btn {
-    position: absolute;
-    top: 0;
-    right: 16px;
-  }
   .msg-info {
     display: flex;
     margin-bottom: 8px;
diff --git a/stdiet-ui/src/components/HealthyView/ACFCom/index.vue b/stdiet-ui/src/components/HealthyView/ACFCom/index.vue
index 3bb94d9cb..397e48cb4 100644
--- a/stdiet-ui/src/components/HealthyView/ACFCom/index.vue
+++ b/stdiet-ui/src/components/HealthyView/ACFCom/index.vue
@@ -33,10 +33,16 @@ const {
   mapGetters,
 } = createNamespacedHelpers("recipes");
 import SimpleIngredientListView from "./SimpleIngredientListView";
-import { updateHealthy } from "@/api/custom/healthy";
 export default {
   name: "ACFCom",
-  props: ["value", "id"],
+  props: {
+    value: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+  },
   components: {
     SimpleIngredientListView,
   },
@@ -47,7 +53,7 @@ export default {
   },
   watch: {
     value(val) {
-      this.data = val;
+      this.data = val || [];
     },
   },
   methods: {
@@ -74,11 +80,7 @@ export default {
       this.handleOnHide();
     },
     handleOnHide() {
-      updateHealthy({ id: this.id, avoidFood: this.data }).then((res) => {
-        if (res.code === 200) {
-          this.$message.success("忌口修改成功");
-        }
-      });
+      this.$emit("onConfirm", { avoidFood: this.data });
     },
     ...mapMutations(["updateAvoidFoodIds"]),
   },
diff --git a/stdiet-ui/src/components/HealthyView/RemarkCom/index.vue b/stdiet-ui/src/components/HealthyView/RemarkCom/index.vue
index b01ec78d0..74081b18f 100644
--- a/stdiet-ui/src/components/HealthyView/RemarkCom/index.vue
+++ b/stdiet-ui/src/components/HealthyView/RemarkCom/index.vue
@@ -28,11 +28,14 @@
   </div>
 </template>
 <script>
-import { updateHealthy } from "@/api/custom/healthy";
-
 export default {
   name: "RemarkCom",
-  props: ["value", "id"],
+  props: {
+    value: {
+      type: String,
+      default: "",
+    },
+  },
   components: {},
   data() {
     return {
@@ -42,6 +45,7 @@ export default {
   },
   watch: {
     value(val) {
+      console.log(val);
       this.nData = val;
     },
     nData(val) {
@@ -70,12 +74,7 @@ export default {
   },
   methods: {
     handleOnHide() {
-      // console.log("handleOnHide");
-      updateHealthy({ id: this.id, remark: this.nData }).then((res) => {
-        if (res.code === 200) {
-          this.$message.success("备注修改成功");
-        }
-      });
+      this.$emit("onConfirm", { remark: this.nData });
     },
   },
 };
diff --git a/stdiet-ui/src/components/HealthyView/index.vue b/stdiet-ui/src/components/HealthyView/index.vue
index 37632082f..8d90762df 100644
--- a/stdiet-ui/src/components/HealthyView/index.vue
+++ b/stdiet-ui/src/components/HealthyView/index.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="health_view_wrapper">
     <div>
-      <h2>{{ this.data.name }}</h2>
+      <h2>{{ data.name }}</h2>
       <div class="msg-info" v-for="(info, idx) in basicInfo" :key="idx">
         <text-info
           v-for="i in info"
@@ -11,8 +11,16 @@
           extraclass="text-info-extra"
         />
       </div>
-      <RemarkCom v-if="dev" :value.sync="data.remark" :id="data.id" />
-      <ACFCom v-if="dev" :value.sync="data.avoidFood" :id="data.id" />
+      <RemarkCom
+        v-if="dev"
+        :value.sync="data.remark"
+        @onConfirm="handleOnConfirm"
+      />
+      <ACFCom
+        v-if="dev"
+        :value.sync="data.avoidFood"
+        @onConfirm="handleOnConfirm"
+      />
     </div>
     <el-collapse>
       <el-collapse-item
@@ -47,6 +55,7 @@
 import TextInfo from "@/components/TextInfo";
 import ACFCom from "./ACFCom";
 import RemarkCom from "./RemarkCom";
+import { updateHealthy } from "@/api/custom/healthy";
 
 export default {
   name: "HealthyView",
@@ -220,18 +229,18 @@ export default {
     getImgUrl(path) {
       return `${window.location.origin}${path}`;
     },
+    handleOnConfirm(data) {
+      updateHealthy({ id: this.data.id, ...data }).then((res) => {
+        if (res.code === 200) {
+          this.$message.success("修改成功");
+        }
+      });
+    },
   },
 };
 </script>
 <style lang="scss" scoped>
 .health_view_wrapper {
-  position: relative;
-  .remark_btn {
-    position: absolute;
-    top: 0;
-    right: 16px;
-  }
-
   .msg-info {
     display: flex;
     margin-bottom: 8px;
diff --git a/stdiet-ui/src/views/custom/recipesBuild/InfoView/index.vue b/stdiet-ui/src/views/custom/recipesBuild/InfoView/index.vue
index e18a0633b..894a09f20 100644
--- a/stdiet-ui/src/views/custom/recipesBuild/InfoView/index.vue
+++ b/stdiet-ui/src/views/custom/recipesBuild/InfoView/index.vue
@@ -8,8 +8,16 @@
       </el-tab-pane>
       <el-tab-pane label="客户信息" name="2" v-else>
         <div class="content">
-          <HealthyView :data="healthyData" v-if="healthyDataType === 0" dev />
-          <BodySignView :data="healthyData" v-else dev />
+          <HealthyView
+            dev
+            :data="healthyDataType === 0 ? healthyData : {}"
+            v-show="healthyDataType === 0"
+          />
+          <BodySignView
+            dev
+            :data="healthyDataType === 1 ? healthyData : {}"
+            v-show="healthyDataType === 1"
+          />
         </div>
       </el-tab-pane>
       <el-tab-pane label="食谱分析" name="0" v-if="showChart">
@@ -60,6 +68,11 @@ export default {
     ]),
     ...mapGetters(["analyseData"]),
   },
+  watch: {
+    healthyData(val) {
+      console.log({ val });
+    },
+  },
   methods: {
     handleOnTabClick(tab) {
       this.activeName = tab.name;