Browse Source

优化食物营养素单位录入

wangyang 5 years ago
parent
commit
044aea1dde

+ 8 - 0
src/api/nutrient.js

@@ -43,3 +43,11 @@ export function updateSortOrder(id, data) {
     data
   })
 }
+
+// 获取营养素单位列表
+export function getNutrientUnits(id) {
+  return request({
+    url: `/api/nutrients/${id}/units`,
+    method: 'get'
+  })
+}

+ 9 - 2
src/views/food/nutrient.vue

@@ -41,7 +41,7 @@
       <el-autocomplete
         class="inline-input"
         v-model="params.unit"
-        :fetch-suggestions="queryUnits"
+        :fetch-suggestions="queryNutrientUnits"
         placeholder="单位关键词"
       />
       NRV%:
@@ -207,7 +207,7 @@
 <script>
 import { getNutrientList, addFoodNutrient, updateFoodNutrient, removeFoodNutrient,
   updateFoodNutrientSort, confirmDeleteFoodNutrient } from '@/api/food'
-import { getList } from '@/api/nutrient'
+import { getList, getNutrientUnits } from '@/api/nutrient'
 import { getList as getUnits } from '@/api/unit'
 
 export default {
@@ -318,6 +318,13 @@ export default {
         this.nutrients = []
       })
     },
+    queryNutrientUnits(query, cb) {
+      let units = []
+      getNutrientUnits(this.params.nutrientId).then(res => {
+        res.data.forEach(item => units.push({ value: item }))
+        cb(units)
+      })
+    },
     queryUnits(query, cb) {
       let units = []
       getUnits({ query }).then(res => {

+ 1 - 1
src/views/foodModifier/index.vue

@@ -160,7 +160,7 @@ export default {
           this.dialogHtml += `******************************<br>`
           for (let i=0; i < nutrients.length; i++) {
             const nutrient = nutrients[i]
-            const quantity = nutrient.normalizedQuantity * res.data.ratio * row.inInit
+            const quantity = nutrient.normalizedQuantity * res.data.ratio * row.inIni
             this.dialogHtml += `${nutrient.nutrientName}:${quantity}${nutrient.unit}。<br>`
             this.dialogHtml += `营养素计量为:${nutrient.quantity}${nutrient.unit}。Nv_Spec为:${nutrient.nvSpec}${nutrient.nvSpecUnit}。<br>`
             this.dialogHtml += `******************************<br>`

+ 13 - 60
src/views/nutrient/index.vue

@@ -62,14 +62,9 @@
           <span>{{ row.parentName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="NRV" align="center" width="150">
+      <el-table-column label="基础单位" align="center" width="150">
         <template slot-scope="{row}">
-          <span>{{ row | nutrientNrvFilter }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="NRV单位" align="center" width="80">
-        <template slot-scope="{row}">
-          <span>{{ row.nrvUnit }}</span>
+          <span>{{ row.baseUnit }}</span>
         </template>
       </el-table-column>
       <el-table-column label="创建时间" width="180px" align="center">
@@ -128,32 +123,13 @@
         <el-form-item label="编码" prop="code">
           <el-input v-model="params.code" placeholder="编码" :disabled="dialogStatus === 'edit'" />
         </el-form-item>
-        <el-form-item label="NRV类型" prop="nrvType">
-          <el-radio v-model="nrvType" :label="0" @change="nrvTypeChange">值</el-radio>
-          <el-radio v-model="nrvType" :label="1" @change="nrvTypeChange">范围</el-radio>
-        </el-form-item>
-        <el-form-item v-if="nrvType===0" prop="nrv" label="NRV">
-          <el-input v-model="params.nrv" placeholder="NRV" />
-        </el-form-item>
-        <el-form-item v-if="nrvType===1" prop="nrvMin" label="NRV大于等于:">
-          <el-input v-model="params.nrvMin" />
-        </el-form-item>
-        <el-form-item v-if="nrvType===1" prop="nrvMax" label="NRV小于等于:">
-          <el-input v-model="params.nrvMax" />
-        </el-form-item>
-        <el-form-item label="NRV单位" prop="nrvUnit">
-          <el-select
-            v-model="params.nrvUnit"
-            filterable
-            remote
-            clearable
-            reserve-keyword
-            placeholder="请选择NRV单位"
-            :remote-method="queryUnits"
-            :loading="loading"
-          >
-            <el-option v-for="item in units" :key="item.id" :label="item.name" :value="item.name" />
-          </el-select>
+        <el-form-item label="基础单位" prop="baseUnit">
+          <el-autocomplete
+            class="inline-input"
+            v-model="params.baseUnit"
+            :fetch-suggestions="queryUnits"
+            placeholder="单位关键词"
+          />
         </el-form-item>
         <el-form-item label="上级营养素" prop="parentId">
           <el-select
@@ -194,17 +170,6 @@ export default {
   name: 'NutrientList',
   components: { Pagination, SingleImage },
   filters: {
-    nutrientNrvFilter(row) {
-      if (row.nrvMin && row.nrvMax) {
-        return `${row.nrvMin} ~ ${row.nrvMax}`
-      } else if (row.nrvMin) {
-        return `≥ ${row.nrvMin}`
-      } else if (row.nrvMax) {
-        return `≤ ${row.nrvMax}`
-      } else {
-        return row.nrv
-      }
-    }
   },
   data() {
     return {
@@ -227,7 +192,6 @@ export default {
         name: [{ required: true, message: '名称不允许为空', trigger: 'blur' }]
       },
       params: { },
-      nrvType: 0,
       units: [],
       loading: false,
       parentNutrients: []
@@ -252,9 +216,6 @@ export default {
       this.queryUnits()
       this.queryNutrients()
       this.params = dialogStatus === 'create' ? {} : Object.assign({}, row)
-      if (dialogStatus !== 'create' && (row.nrvMin || row.nrvMax)) {
-        this.nrvType = 1
-      }
       this.dialogStatus = dialogStatus
       this.dialogFormVisible = true
       this.$nextTick(() => {
@@ -280,14 +241,11 @@ export default {
         this.fetchData()
       })
     },
-    queryUnits(query) {
-      this.loading = true
+    queryUnits(query, cb) {
+      let units = []
       getUnits({ query }).then(res => {
-        this.units = res.data.list
-        this.loading = false
-      }).catch(res => {
-        this.units = []
-        this.loading = false
+        res.data.list.forEach(item => units.push({ value: item.name }))
+        cb(units)
       })
     },
     queryNutrients(query) {
@@ -311,11 +269,6 @@ export default {
         this.$message.error(res.data.message)
         this.fetchData()
       })
-    },
-    nrvTypeChange(value) {
-      this.$set(this.params, 'nrv', '')
-      this.$set(this.params, 'nrvMin', '')
-      this.$set(this.params, 'nrvMax', '')
     }
   }
 }

+ 9 - 2
src/views/nutrientTemplate/detail.vue

@@ -19,7 +19,7 @@
       <el-autocomplete
         class="inline-input"
         v-model="params.unit"
-        :fetch-suggestions="queryUnits"
+        :fetch-suggestions="queryNutrientUnits"
         placeholder="单位关键词"
       />
       Nv_Spec计量:
@@ -155,7 +155,7 @@
 </template>
 
 <script>
-import { getList } from '@/api/nutrient'
+import { getList, getNutrientUnits } from '@/api/nutrient'
 import { getList as getUnits } from '@/api/unit'
 import { getNutrients, addTemplateNutrient, updateTemplateNutrient, removeNutrient,
   updateTemplateNutrientSort, updateBatchDetailSorts } from '@/api/nutrientTemplate'
@@ -277,6 +277,13 @@ export default {
         return (restaurant.value.toLowerCase().indexOf(query.toLowerCase()) === 0);
       };
     },
+    queryNutrientUnits(query, cb) {
+      let units = []
+      getNutrientUnits(this.params.nutrientId).then(res => {
+        res.data.forEach(item => units.push({ value: item }))
+        cb(units)
+      })
+    },
     setSort() {
       const el = this.$refs.detailTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
       this.sortable = Sortable.create(el, {