From b533c4205cfb3df5f7925450a291e24a281f3a72 Mon Sep 17 00:00:00 2001
From: bicey <bocchi163@163.com>
Date: Sun, 23 Jun 2024 15:47:51 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E8=A6=81=E6=B1=82=E4=BF=AE=E6=94=B9v1?=
 =?UTF-8?q?.2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/ZooAnimalFormDialog.vue       |  10 +-
 src/components/ZooArchiveFormDialog.vue      | 104 ++++++++++++++-----
 src/components/ZooArchiveTimeline.vue        |   5 +-
 src/components/ZooBreedingPlanFormDialog.vue |  10 +-
 src/components/ZooHealthFormDialog.vue       |  41 +++++---
 src/pages/ZooBreeding.vue                    |   8 +-
 src/store/index.js                           |   9 ++
 src/utils/request.js                         |   3 +
 8 files changed, 137 insertions(+), 53 deletions(-)

diff --git a/src/components/ZooAnimalFormDialog.vue b/src/components/ZooAnimalFormDialog.vue
index 3f67add..2a16a8b 100644
--- a/src/components/ZooAnimalFormDialog.vue
+++ b/src/components/ZooAnimalFormDialog.vue
@@ -209,7 +209,7 @@ export default {
           font-size: 13px;
         "
           >
-        roleId :{{ item.id }}
+        用户ID :{{ item.id }}
       </span>
         </el-option>
       </el-select>
@@ -222,10 +222,10 @@ export default {
     </el-form-item>
     <el-form-item label="生命阶段">
       <el-select v-model="form.phase" placeholder="生命阶段" :disabled="detail">
-        <el-option label="幼年期" :value="0"/>
-        <el-option label="成长期" :value="1"/>
-        <el-option label="成年期" :value="2"/>
-        <el-option label="老年期" :value="3"/>
+        <el-option label="幼年期" value="幼年期"/>
+        <el-option label="成长期" value="成长期"/>
+        <el-option label="成年期" value="成年期"/>
+        <el-option label="老年期" value="老年期"/>
       </el-select>
     </el-form-item>
     <div class="right">
diff --git a/src/components/ZooArchiveFormDialog.vue b/src/components/ZooArchiveFormDialog.vue
index 5111f15..1f3eea0 100644
--- a/src/components/ZooArchiveFormDialog.vue
+++ b/src/components/ZooArchiveFormDialog.vue
@@ -1,6 +1,6 @@
 <script>
 import {copy} from "@/utils/common.js";
-import {mapState} from "vuex";
+import {mapState, mapGetters} from "vuex";
 
 export default {
   name: "ZooArchiveFormDialog",
@@ -17,6 +17,7 @@ export default {
         time: '',//字符,档案记录时间
         roleId: null,//负责录入档案的人的id,身份不限
         description: '',//字符 档案的描述
+        breedingId: null
       },
     }
   },
@@ -33,16 +34,17 @@ export default {
       default: false
     }
   },
-  watch:{
-    'form.animalId':{
-      handler(newValue){
+  watch: {
+    'form.animalId': {
+      handler(newValue) {
         // console.log(newValue)
-        this.form.animalName = this.animals.find(e=>e.id===this.form.animalId).name
+        this.form.animalName = this.animals.find(e => e.id === this.form.animalId).name
       }
     }
   },
-  computed:{
-    ...mapState(['loginUser','animals'])
+  computed: {
+    ...mapState(['loginUser', 'animals','breedingPlans']),
+    ...mapGetters(['getKeepersAndVeterinary'])
   },
   mounted() {
     // 给表单填充传递的数据
@@ -50,8 +52,9 @@ export default {
       this.form = copy(this.data)
     } else {
       const newDate = new Date();
-      this.form.date = newDate.getFullYear() + '-' + (newDate.getMonth()+1).toString().padStart(2, '0') + '-' + newDate.getDate().toString().padStart(2, '0')
+      this.form.date = newDate.getFullYear() + '-' + (newDate.getMonth() + 1).toString().padStart(2, '0') + '-' + newDate.getDate().toString().padStart(2, '0')
       this.form.time = newDate.getHours().toString().padStart(2, '0') + ':' + newDate.getMinutes().toString().padStart(2, '0') + ':' + newDate.getSeconds().toString().padStart(2, '0')
+      this.form.roleId = this.loginUser.id
     }
   },
   beforeUnmount() {
@@ -63,10 +66,11 @@ export default {
 <template>
   <el-form label-width="auto">
     <el-form-item label="记录号">
-      <el-input v-model.number="form.id" type="number" placeholder="系统自动生成记录号" :disabled="edit || detail || true"/>
+      <el-input v-model.number="form.id" type="number" placeholder="系统自动生成记录号"
+                :disabled="edit || detail || true"/>
     </el-form-item>
     <el-form-item label="动物ID">
-<!--      <el-input v-model.number="form.animalId" type="number" placeholder="动物ID" :disabled="detail"/>-->
+      <!--      <el-input v-model.number="form.animalId" type="number" placeholder="动物ID" :disabled="detail"/>-->
       <el-select v-model="form.animalId" placeholder="动物ID" clearable :disabled="detail">
         <el-option
             v-for="item in animals"
@@ -81,7 +85,7 @@ export default {
           font-size: 13px;
         "
           >
-        animalId :{{ item.id }}
+        动物ID :{{ item.id }}
       </span>
         </el-option>
       </el-select>
@@ -91,10 +95,10 @@ export default {
     </el-form-item>
     <el-form-item label="生命阶段">
       <el-select v-model="form.phase" placeholder="生命阶段" :disabled="detail">
-        <el-option label="幼年期" :value="0"/>
-        <el-option label="成长期" :value="1"/>
-        <el-option label="成年期" :value="2"/>
-        <el-option label="老年期" :value="3"/>
+        <el-option label="幼年期" value="幼年期"/>
+        <el-option label="成长期" value="成长期"/>
+        <el-option label="成年期" value="成年期"/>
+        <el-option label="老年期" value="老年期"/>
       </el-select>
     </el-form-item>
     <el-form-item label="动物状态">
@@ -111,20 +115,68 @@ export default {
       </el-select>
     </el-form-item>
     <el-form-item label="记录日期">
-      <el-date-picker
-          v-model="form.date"
-          type="date"
-          placeholder="选择日期"
-          value-format="YYYY-MM-DD"
-          :disabled="detail"
-      />
+      <el-col :span="11">
+        <el-date-picker
+            v-model="form.date"
+            type="date"
+            placeholder="选择日期"
+            value-format="YYYY-MM-DD"
+            :disabled="detail"
+            style="width: 100%"
+        />
+      </el-col>
+      <el-col :span="2">
+
+      </el-col>
+      <el-col :span="11">
+        <el-time-picker v-model="form.time" type="time" placeholder="选择时间" value-format="HH:mm:ss"
+                        :disabled="detail" style="width: 100%"/>
+      </el-col>
+
     </el-form-item>
-    <el-form-item label="记录时间">
-      <el-time-picker v-model="form.time" type="time" placeholder="选择时间" value-format="HH:mm:ss"
-                      :disabled="detail"/>
+<!--    <el-form-item label="记录时间">-->
+<!--      -->
+<!--    </el-form-item>-->
+    <el-form-item label="关联计划">
+      <el-select v-model="form.breedingId" placeholder="选择关联计划" clearable :disabled="detail">
+        <el-option
+            v-for="item in breedingPlans"
+            :key="item.id"
+            :value="item.id"
+        >
+          <span style="float: left">{{ item.name }}</span>
+          <span
+              style="
+          float: right;
+          color: var(--el-text-color-secondary);
+          font-size: 13px;
+        "
+          >
+        计划ID :{{ item.id }}
+      </span>
+        </el-option>
+      </el-select>
     </el-form-item>
     <el-form-item label="记录人ID">
-      <el-input v-model.number="form.roleId" type="number" placeholder="记录人ID" :disabled="detail"/>
+      <!--      <el-input v-model.number="form.roleId" type="number" placeholder="记录人ID" :disabled="detail"/>-->
+      <el-select v-model="form.roleId" placeholder="记录人ID" clearable :disabled="detail">
+        <el-option
+            v-for="item in getKeepersAndVeterinary"
+            :key="item.id"
+            :value="item.id"
+        >
+          <span style="float: left">{{ item.username }} ({{ item.auth === 1 ? '饲养员' : '兽医' }})</span>
+          <span
+              style="
+          float: right;
+          color: var(--el-text-color-secondary);
+          font-size: 13px;
+        "
+          >
+        用户ID :{{ item.id }}
+      </span>
+        </el-option>
+      </el-select>
     </el-form-item>
     <el-form-item label="记录描述">
       <el-input
diff --git a/src/components/ZooArchiveTimeline.vue b/src/components/ZooArchiveTimeline.vue
index 959d5e9..df7a40a 100644
--- a/src/components/ZooArchiveTimeline.vue
+++ b/src/components/ZooArchiveTimeline.vue
@@ -132,7 +132,10 @@ export default {
             {{ a.description }}
           </el-descriptions-item>
         </el-descriptions>
-        <div class="left">记录号:{{ a.id }}</div>
+        <div class="left">
+          记录号:{{ a.id }} |
+          关联计划:{{ a.breedingId }}
+        </div>
         <div class="right">{{ a.roleId }} 记录于 {{ a.date }} {{ a.time }}</div>
       </el-timeline-item>
     </el-timeline>
diff --git a/src/components/ZooBreedingPlanFormDialog.vue b/src/components/ZooBreedingPlanFormDialog.vue
index 8894db2..391056e 100644
--- a/src/components/ZooBreedingPlanFormDialog.vue
+++ b/src/components/ZooBreedingPlanFormDialog.vue
@@ -73,10 +73,10 @@ export default {
     </el-form-item>
     <el-form-item label="生命阶段">
       <el-select v-model="form.phase" :disabled="detail">
-        <el-option label="幼年期" :value="0"/>
-        <el-option label="成长期" :value="1"/>
-        <el-option label="成年期" :value="2"/>
-        <el-option label="老年期" :value="3"/>
+        <el-option label="幼年期" value="幼年期"/>
+        <el-option label="成长期" value="成长期"/>
+        <el-option label="成年期" value="成年期"/>
+        <el-option label="老年期" value="老年期"/>
       </el-select>
     </el-form-item>
     <el-form-item label="动物状态">
@@ -101,7 +101,7 @@ export default {
           font-size: 13px;
         "
           >
-        roleId :{{ item.id }}
+        用户ID :{{ item.id }}
       </span>
         </el-option>
       </el-select>
diff --git a/src/components/ZooHealthFormDialog.vue b/src/components/ZooHealthFormDialog.vue
index 87b7390..b4520ef 100644
--- a/src/components/ZooHealthFormDialog.vue
+++ b/src/components/ZooHealthFormDialog.vue
@@ -82,7 +82,7 @@ export default {
           font-size: 13px;
         "
           >
-        animalId :{{ item.id }}
+        动物ID :{{ item.id }}
       </span>
         </el-option>
       </el-select>
@@ -113,18 +113,35 @@ export default {
       </el-radio-group>
     </el-form-item>
     <el-form-item label="记录日期">
-      <el-date-picker
-          v-model="form.date"
-          type="date"
-          placeholder="选择日期"
-          value-format="YYYY-MM-DD"
-          :disabled="detail"
-      />
-    </el-form-item>
-    <el-form-item label="记录时间">
-      <el-time-picker v-model="form.time" type="time" placeholder="选择时间" value-format="HH:mm:ss"
-                      :disabled="detail"/>
+<!--      <el-date-picker-->
+<!--          v-model="form.date"-->
+<!--          type="date"-->
+<!--          placeholder="选择日期"-->
+<!--          value-format="YYYY-MM-DD"-->
+<!--          :disabled="detail"-->
+<!--      />-->
+      <el-col :span="11">
+        <el-date-picker
+            v-model="form.date"
+            type="date"
+            placeholder="选择日期"
+            value-format="YYYY-MM-DD"
+            :disabled="detail"
+            style="width: 100%"
+        />
+      </el-col>
+      <el-col :span="2">
+
+      </el-col>
+      <el-col :span="11">
+        <el-time-picker v-model="form.time" type="time" placeholder="选择时间" value-format="HH:mm:ss"
+                        :disabled="detail" style="width: 100%"/>
+      </el-col>
     </el-form-item>
+<!--    <el-form-item label="记录时间">-->
+<!--      <el-time-picker v-model="form.time" type="time" placeholder="选择时间" value-format="HH:mm:ss"-->
+<!--                      :disabled="detail"/>-->
+<!--    </el-form-item>-->
     <el-form-item label="记录描述">
       <el-input
           v-model="form.description"
diff --git a/src/pages/ZooBreeding.vue b/src/pages/ZooBreeding.vue
index 6b4e702..9d2d2fb 100644
--- a/src/pages/ZooBreeding.vue
+++ b/src/pages/ZooBreeding.vue
@@ -81,15 +81,15 @@ export default {
       this.dialog.dialogData = data
 
       //从后端获取需要查询的数据,防止数据前后不一致
-      request.queryAnimalRequest(data.id).then(response => {
+      request.queryBreedingPlanRequest(data.id).then(response => {
         if (response.data.data===null){
           this.refresh();
           return ElMessage({
-            message: '该动物不存在,请刷新',
+            message: '该计划不存在,请刷新',
             type: 'warning',
           })
         } else {
-          request.queryArchiveRequest(null,data.id).then(response => {
+          request.queryArchiveByBreedingId(data.id).then(response => {
             if (response.data.code===1){
               this.dialog.timelineData = frontendArchives(response.data.data)
               //显示弹窗
@@ -458,7 +458,7 @@ export default {
   </el-dialog>
 
   <!--查看动物所有记录-->
-  <el-dialog v-model="dialog.timelineDialogVisible" :title="'生命周期档案:'+dialog.dialogData.id" width="600" align-center
+  <el-dialog v-model="dialog.timelineDialogVisible" :title="'计划相关档案:'+dialog.dialogData.id" width="600" align-center
              draggable overflow destroy-on-close>
     <ZooArchiveTimeline :data="dialog.timelineData">
       <!--      <template #operate="scope">-->
diff --git a/src/store/index.js b/src/store/index.js
index fd6bb1b..3872fb1 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -164,6 +164,15 @@ const getters = {
         })
         return set
     },
+    getKeepersAndVeterinary() {
+        const ka = []
+        state.users.forEach(user => {
+            if (user.auth === 1 || user.auth === 2){
+                ka.push(copy(user))
+            }
+        })
+        return ka
+    }
 }
 
 export default createStore({
diff --git a/src/utils/request.js b/src/utils/request.js
index 71effc2..6e5c8a8 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -67,6 +67,9 @@ export default {
     queryArchiveRequest(id, animallId) {
         return instance.get("/archive/info", {params: {id, animallId}})
     },
+    queryArchiveByBreedingId(breedingId) {
+        return instance.get("/archive/selectByBreedingId", {params: {breedingId}})
+    },
 
     //健康记录请求
     addHealthRequest(health) {