Files
dvcp_v2_webapp/project/xumu/AppBreedArchive/add.vue
aixianling cbfd68f50c refactor(BUG 539): 为药物和疫苗的剂量添加单位 ml- 在 AppBreedArchive、AppImmunityManage 和 AppTreatmentManage组件中
- 将"药量"列的标题修改为"药量(ml)"
- 此修改提高了数据的准确性和可读性
2025-01-14 11:10:02 +08:00

183 lines
6.6 KiB
Vue

<script>
import {mapState} from "vuex"
const columns = {
weightList: [
{label: "序号", type: "index"},
{label: "重量", prop: "weight"},
{label: "称重时间", prop: "createTime"},
{label: "数据来源", prop: "source", dict: "dataSources"},
{label: "是否变更过", prop: "isUpdate", dict: "yesOrNo"},
],
immunityList: [
{label: "序号", type: "index"},
{label: "疫苗名称", prop: "vaccineName"},
{label: "用药方式", prop: "method"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "免疫时间", prop: "immunityTime"},
{label: "登记时间", prop: "createTime"},
{label: "防疫员", prop: "userName"},
],
treatmentList: [
{label: "序号", type: "index"},
{label: "药品名称", prop: "drugName"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "疾病名称", prop: "diseaseName"},
{label: "症状", prop: "symptom"},
{label: "兽医", prop: "userName"},
{label: "治疗时间", prop: "immunityTime"},
{label: "登记时间", prop: "createTime"},
],
outList: [
{label: "序号", type: "index"},
{label: "养殖场", prop: "userName", format: (v, row) => `${[row.farmName, row.houseName, row.penName].join("-")}`},
{label: "生物芯片耳标号", prop: "biochipEarNumber"},
{label: "类别", prop: "category", dict: "category", width: 120},
{label: "品种", prop: "variety", dict: "variety", width: 120},
{label: "日龄(天)", prop: "age", width: 80},
{label: "淘汰时间", prop: "outTime"},
{label: "淘汰原因", prop: "reason"}
],
deathList: [
{label: "序号", type: "index"},
{label: "养殖场", prop: "userName", format: (v, row) => `${[row.farmName, row.houseName, row.penName].join("-")}`},
{label: "生物芯片耳标号", prop: "biochipEarNumber"},
{label: "类别", prop: "category", dict: "category", width: 120},
{label: "品种", prop: "variety", dict: "variety", width: 120},
{label: "日龄(天)", prop: "age", width: 80},
{label: "死亡时间", prop: "deathTime"},
{label: "死亡原因", prop: "reason", dict: "deathReason", width: 80},
{label: "登记时间", prop: "createTime"},
{label: "操作人", prop: "userName", width: 100},
],
insuranceList: [
{label: "序号", type: "index"},
{label: "保险类型", prop: "insuranceType", dict: "insuranceType"},
{label: "保单编号", prop: "orderNo"},
]
}
const forms = {
device: [
{label: "当前温度", prop: "temperature"},
{label: "温度状态", prop: "temperatureStatus", dict: "temperatureStatus"},
{label: "运动状态", prop: "sportsSituation", dict: "sportsSituation"},
{label: "在栏状态", prop: "status", dict: "archiveStatus"},
],
loan: [
{label: "贷款合同编号", prop: "contractNo"},
]
}
const navs = [
{label: "体重记录", value: "weightList"},
{label: "免疫记录", value: "immunityList"},
{label: "治疗记录", value: "treatmentList"},
{label: "淘汰记录", value: "outList"},
{label: "死亡记录", value: "deathList"},
{label: "设备检测", value: "device"},
{label: "贷款信息", value: "loan"},
{label: "保险信息", value: "insuranceList"},
]
export default {
name: "baAdd",
props: {
instance: Function,
permissions: Function,
dict: Object
},
data() {
return {
detail: {detailList: []},
active: "weightList",
columns, navs, forms
}
},
computed: {
...mapState(["user"]),
userinfo: v => v.user.info || {},
isAdd: v => !v.$route.query.id,
isEdit: v => v.$route.query.edit == 1,
pageTitle: v => {
const appName = v.$parent.menuName || v.$parent.$options.label
return v.$route.query.id ? v.isEdit ? `编辑${appName}` : `${appName}详情` : `新增${appName}`
},
},
methods: {
back(params = {}) {
this.$router.push(params)
},
getDetail() {
const {id} = this.$route.query
return id && this.instance.post("/api/report/getInfo", null, {params: {biochipEarNumber: id}}).then(res => {
if (res?.data) {
const detail = res.data
Object.keys(columns).forEach(key => {
detail[key] = detail[key] || []
})
return this.detail = {...detail}
}
})
},
},
created() {
this.dict.load("auditStatus", "category", "variety")
this.getDetail()
}
}
</script>
<template>
<ai-page :title="pageTitle" class="baAdd" showBack content-string="blank">
<el-form size="small" label-width="120px" :model="detail" ref="detail">
<ai-card title="基础信息">
<div class="grid c-3">
<el-form-item label="养殖户" prop="userName" class="row">
<b v-text="detail.userName"/>
</el-form-item>
<el-form-item label="养殖场" prop="farmId">
<b v-text="detail.farmName"/>
</el-form-item>
<el-form-item label="养殖舍" prop="houseId">
<b v-text="detail.houseName"/>
</el-form-item>
<el-form-item label="养殖栏" prop="penId">
<b v-text="detail.penName"/>
</el-form-item>
<el-form-item label="生物芯片耳标号" prop="penId">
<b v-text="detail.biochipEarNumber"/>
</el-form-item>
<el-form-item label="电子耳标号" prop="penId">
<b v-text="detail.electronicEarNumber"/>
</el-form-item>
<el-form-item label="原厂耳标号" prop="penId">
<b v-text="detail.originalEarNumber"/>
</el-form-item>
</div>
</ai-card>
<el-tabs type="border-card" v-model="active">
<el-tab-pane v-for="(nav,i) in navs" :key="i" :label="nav.label" :name="nav.value" lazy>
<template v-if="active==nav.value">
<ai-table v-if="columns[nav.value]" :colConfigs="columns[nav.value]" :table-data="detail[nav.value]" :isShowPagination="!1"/>
<el-form v-if="forms[nav.value]" size="small" class="grid" label-width="120px">
<el-form-item v-for="(item,i) in forms[nav.value]" :key="i" :label="item.label" :prop="item.prop">
<b v-text="dict.getLabel(item.dict||'yesOrNo',detail[item.prop])"/>
</el-form-item>
</el-form>
</template>
</el-tab-pane>
</el-tabs>
</el-form>
<div slot="footer">
<el-button @click="back">返回</el-button>
</div>
</ai-page>
</template>
<style scoped lang="scss">
.baAdd {
}
</style>