Compare commits
2 Commits
71973ad191
...
2797934736
Author | SHA1 | Date | |
---|---|---|---|
2797934736 | |||
303f890550 |
400
src/views/biosafety/diagnosis/add.vue
Normal file
400
src/views/biosafety/diagnosis/add.vue
Normal file
@ -0,0 +1,400 @@
|
||||
<template>
|
||||
<div class="add-treatment">
|
||||
<el-container style="height: 100vh; display: flex; flex-direction: column;">
|
||||
<el-main style="padding: 0; flex: 1; display: flex; flex-direction: column;">
|
||||
<div class="content-wrapper">
|
||||
<h2 class="page-title">添加治疗记录</h2>
|
||||
|
||||
<div class="treatment-container">
|
||||
<!-- 羊只信息只读展示 -->
|
||||
<div class="sheep-info-section">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>耳号:</strong>{{ sheepInfo.sheepNo || '–' }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>性别:</strong>{{ sheepInfo.gender }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>品种:</strong>{{ sheepInfo.variety || '–' }}
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>羊只类别:</strong>{{ sheepInfo.sheepType || '–' }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>月龄:</strong>{{ sheepInfo.monthAge ?? '–' }} 月
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="info-item">
|
||||
<strong>胎次:</strong>{{ sheepInfo.parity ?? '–' }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<el-form ref="treatmentRef" :model="form" :rules="rules" label-width="140px" status-icon
|
||||
size="large" class="treatment-form">
|
||||
<!-- 疾病和诊疗信息 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="事件日期" prop="datetime">
|
||||
<el-date-picker v-model="form.datetime" type="date" placeholder="选择日期"
|
||||
style="width: 100%;" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发病日期" prop="begindate">
|
||||
<el-date-picker v-model="form.begindate" type="date" placeholder="选择日期"
|
||||
style="width: 100%;" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="疾病类型" prop="diseasePName">
|
||||
<span>{{ form.diseasePName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="疾病子类型" prop="diseaseName">
|
||||
<span>{{ form.diseaseName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="治疗结束日期" prop="enddate">
|
||||
<el-date-picker v-model="form.enddate" type="date" placeholder="选择日期"
|
||||
style="width: 100%" :disabled-date="disabledDate" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="治疗天数">
|
||||
<span>{{ treatDay || 0}} 天</span>
|
||||
<!-- <el-input :value="treatDay" readonly style="width: 100%;" /> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="治疗结果" prop="result">
|
||||
<el-select v-model="form.result" placeholder="请选择治疗结果" style="width: 100%;">
|
||||
<el-option v-for="item in diag_status" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="转入羊舍" prop="sheepfoldId">
|
||||
<el-select v-model="form.sheepfoldId" placeholder="请选择转入羊舍"
|
||||
style="width: 100%;">
|
||||
<el-option v-for="item in sheepfolds" :key="item.id" :label="item.name"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="备注" prop="comments">
|
||||
<el-input type="textarea" :rows="3" v-model="form.comments" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<div class="form-footer">
|
||||
<el-button @click="goBack">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, computed, getCurrentInstance } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import useTagsViewStore from "@/store/modules/tagsView.js"
|
||||
import request from '@/utils/request'
|
||||
import { listDisease } from '@/api/biosafety/disease'
|
||||
import { getTreatment } from '@/api/biosafety/treatment'
|
||||
import { listSheepfold_management } from "@/api/fileManagement/sheepfold_management"
|
||||
import { addDiagnosis } from "@/api/biosafety/diagnosis"
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const { diag_status } = proxy.useDict( "diag_status")
|
||||
|
||||
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const { tId, sId } = route.query
|
||||
|
||||
const sheepInfo = ref({
|
||||
sheepNo: null,
|
||||
gender: '',
|
||||
variety: '',
|
||||
sheepType: '',
|
||||
monthAge: null,
|
||||
parity: null,
|
||||
breed: '',
|
||||
lactDay: null,
|
||||
gestDay: null
|
||||
})
|
||||
const sheepfolds = ref([])
|
||||
|
||||
function getSheepInfo() {
|
||||
if (!sId) return
|
||||
request.get(`/sheep_file/sheep_file/${sId}`).then(response => {
|
||||
const data = response.data
|
||||
sheepInfo.value = {
|
||||
sheepNo: data.bsManageTags,
|
||||
gender: data.gender,
|
||||
variety: data.variety,
|
||||
sheepType: data.name,
|
||||
monthAge: data.monthAge,
|
||||
parity: data.parity,
|
||||
breed: data.breed,
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
function getTreatmentInfo() {
|
||||
if (!tId) return
|
||||
getTreatment(tId).then(response => {
|
||||
const data = response.data
|
||||
form.treatId = tId
|
||||
form.datetime = new Date()
|
||||
form.begindate = new Date(data.datetime)
|
||||
form.diseasePName = data.diseasePName
|
||||
form.diseaseId = data.diseaseId
|
||||
form.diseasePid = data.diseasePid
|
||||
form.diseaseName = data.diseaseName
|
||||
})
|
||||
}
|
||||
|
||||
const parentDiseaseOptions = ref([])
|
||||
const childDiseaseOptions = ref([])
|
||||
|
||||
function getDiseases() {
|
||||
listDisease().then(response => {
|
||||
const diseases = proxy.handleTree(response.data, "id", "pid")
|
||||
parentDiseaseOptions.value = diseases.filter(item => item.pid === 0)
|
||||
})
|
||||
}
|
||||
|
||||
function handleDiseaseTypeChange(parentId) {
|
||||
if (!parentId) {
|
||||
childDiseaseOptions.value = []
|
||||
form.diseaseName = null
|
||||
return
|
||||
}
|
||||
listDisease({ pid: parentId }).then(response => {
|
||||
childDiseaseOptions.value = response.data
|
||||
form.diseaseName = null
|
||||
})
|
||||
}
|
||||
|
||||
const form = reactive({
|
||||
datetime: new Date(),
|
||||
begindate: null,
|
||||
eventType: '',
|
||||
diseasePName: null,
|
||||
diseaseName: null,
|
||||
result: '',
|
||||
enddate: null,
|
||||
comments: '',
|
||||
sheepId: sId
|
||||
|
||||
})
|
||||
|
||||
const rules = {
|
||||
datetime: { required: true, message: '事件日期不能为空', trigger: 'change' },
|
||||
enddate: { required: true, message: '治疗日期不能为空', trigger: 'change' },
|
||||
sheepfoldId: { required: true, message: '转入羊舍不能为空', trigger: 'change' },
|
||||
result: { required: true, message: '治疗结果不能为空', trigger: 'change' }
|
||||
}
|
||||
|
||||
const treatDay = computed(() => {
|
||||
if (!form.begindate || !form.enddate) return ''
|
||||
const onset = new Date(form.begindate)
|
||||
const end = new Date(form.enddate)
|
||||
const diffTime = end.getTime() - onset.getTime()
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
|
||||
return diffDays
|
||||
})
|
||||
|
||||
function submitForm() {
|
||||
proxy.$refs.treatmentRef.validate((valid) => {
|
||||
if (valid) {
|
||||
const submitData = {
|
||||
...form,
|
||||
datetime: form.datetime ? new Date(form.datetime).getTime() : null,
|
||||
begindate: form.begindate ? new Date(form.begindate).getTime() : null,
|
||||
endDate: form.endDate ? new Date(form.endDate).getTime() : null,
|
||||
treatDay: treatDay.value
|
||||
}
|
||||
addDiagnosis(submitData).then(response => {
|
||||
proxy.$modal.msgSuccess("诊断成功")
|
||||
open.value = false
|
||||
goBack()
|
||||
})
|
||||
} else {
|
||||
ElMessage.error("请完整填写表单信息!")
|
||||
return false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 禁止选择今天以前的日期
|
||||
const disabledDate = (time) => {
|
||||
return time.getTime() < Date.now() - 8.64e7 // 8.64e7 = 24*60*60*1000
|
||||
}
|
||||
|
||||
const useTagsStore = useTagsViewStore()
|
||||
const currentTag = router.currentRoute.value
|
||||
const goBack = () => {
|
||||
router.go(-1)
|
||||
useTagsStore.delVisitedView(currentTag)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getDiseases()
|
||||
getTreatmentInfo()
|
||||
getSheepInfo()
|
||||
listSheepfold_management().then(res => {
|
||||
sheepfolds.value = res.rows.map(item => ({ id: item.id, name: item.sheepfoldName }))
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.add-treatment {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.el-container {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
margin: 0 0 24px;
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.treatment-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.sheep-info-section {
|
||||
background-color: #f5f7fa;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.info-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.info-item strong {
|
||||
color: #606266;
|
||||
font-weight: 500;
|
||||
margin-right: 8px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.info-item span {
|
||||
color: #303133;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.treatment-form {
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.el-form-item {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.el-input,
|
||||
.el-textarea,
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-footer {
|
||||
margin-top: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form-footer .el-button {
|
||||
padding: 12px 40px;
|
||||
font-size: 16px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.el-col {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.el-row {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.info-item {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.info-item strong {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -109,8 +109,7 @@
|
||||
|
||||
<el-table v-loading="loading" :data="diagnosisList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="治疗记录id" align="center" prop="treatId" />
|
||||
<el-table-column label="羊只id" align="center" prop="sheepId" />
|
||||
<el-table-column label="耳号" align="center" prop="sheepNo" />
|
||||
<el-table-column label="时间日期" align="center" prop="datetime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
|
||||
@ -137,6 +136,7 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['diagnosis:diagnosis:edit']">修改</el-button>
|
||||
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['diagnosis:diagnosis:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -213,7 +213,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Diagnosis">
|
||||
import { listDiagnosis, getDiagnosis, delDiagnosis, addDiagnosis, updateDiagnosis } from "@/api/diagnosis/diagnosis"
|
||||
import { listDiagnosis, getDiagnosis, delDiagnosis, addDiagnosis, updateDiagnosis } from "@/api/biosafety/diagnosis"
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
||||
<template #default="scope"><dict-tag :options="quar_status" :value="scope.row.status" /></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="comment" />
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['bisosafety:quarantine:edit']">检疫</el-button>
|
||||
|
@ -57,9 +57,10 @@
|
||||
<el-table-column label="疾病类型" align="center" prop="diseaseName" />
|
||||
<el-table-column label="兽医" align="center" prop="veterinary" />
|
||||
<el-table-column label="备注" align="center" prop="comment" />
|
||||
<el-table-column label="操作" align="center" width="180">
|
||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button>
|
||||
<el-button link type="primary" @click="gotDiag(scope.row)">诊断</el-button>
|
||||
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -215,12 +216,12 @@
|
||||
<el-form-item label="品种:">
|
||||
<el-text>{{ editForm.variety }}</el-text>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="羊只类别:">
|
||||
<el-text>{{ editForm.sheepType }}</el-text>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
@ -233,12 +234,12 @@
|
||||
<el-text>{{ editForm.parity }}</el-text>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="繁殖状态">
|
||||
<el-text>{{ editForm.breed }}</el-text>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="泌乳天数">
|
||||
<el-text>{{ editForm.lactDay }}天</el-text>
|
||||
</el-form-item>
|
||||
@ -249,7 +250,7 @@
|
||||
<el-form-item label="怀孕天数">
|
||||
<el-text>{{ editForm.gestDay }}天</el-text>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 可编辑内容 -->
|
||||
@ -304,9 +305,9 @@
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用量">
|
||||
<el-table-column label="用量" width="160">
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.dosage" :min="0" :precision="1" />
|
||||
<el-input-number v-model="scope.row.dosage" :min="0" :precision="1" style="width: 120px;" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位">
|
||||
@ -373,6 +374,9 @@ import { listUnit } from '@/api/biosafety/unit'
|
||||
import { listUsage } from '@/api/biosafety/usage'
|
||||
import { listMedicine } from '@/api/biosafety/medicine'
|
||||
import request from '@/utils/request'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const { sheep_gender } = proxy.useDict("sheep_gender")
|
||||
@ -640,6 +644,12 @@ function handleSelectionChange(selection) {
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
|
||||
/* 跳转诊疗 */
|
||||
function gotDiag(row) {
|
||||
router.push({ path: '/biosafety/diagnosis/add', query: { tId: row.id, sId: row.sheepId } })
|
||||
}
|
||||
|
||||
|
||||
/* ---------- 初始化 ---------- */
|
||||
onMounted(() => {
|
||||
getList()
|
||||
|
Loading…
x
Reference in New Issue
Block a user