8 Commits

Author SHA1 Message Date
aixianling
a599566b20 refactor(535): 调整耳标照片上传逻辑
- 将 earPhoto 属性改为 picture
- 添加 upload 配置项,限制上传数量为 1- 优化 columns 数据结构,移除冗余定义
2025-01-14 11:58:59 +08:00
aixianling
1a7031342f refactor(536): 优化 AiTable 组件的输入框使用
- 将 el-input 替换为 ai-input 组件,统一输入框样式
- 为数字类型输入框添加 type="number" 属性,提高输入准确性
2025-01-14 11:55:14 +08:00
aixianling
516a8edb5e refactor(537): 优化体重输入框类型
- 将体重输入框的类型从默认改为 number,确保只能输入数字
-移除 v-model.number 修饰符,因 type="number" 已
2025-01-14 11:52:50 +08:00
aixianling
f4e2100882 fix(542): 修复添加页面接口参数和布局
- 在 AppDeathManage 和 AppOutManage 的 add.vue 文件中,为 ai-eartag-remote 组件添加 class="row",优化布局
- 在 AppOutManage 的 add.vue 文件中,修正出栏接口参数 outTime 之前错误使用 deathTime
- 在 AiEartagRemote 组件中,简化 API 请求参数结构
2025-01-14 11:50:45 +08:00
aixianling
9f6998e042 refactor(BUG 541): 优化治疗时间初始化
- 在 AppImmunityManage 和 AppTreatmentManage 组件中,移除了治疗时间的自动初始化
- 在 AppTreatmentManage 组件中,将治疗时间初始化为当前时间的字符串格式
2025-01-14 11:37:19 +08:00
aixianling
f730850d93 feat(BUG 540): 新增免疫登记功能
- 添加免疫登记对话框和相关表单
- 实现免疫信息的添加和更新功能
- 优化表单样式,调整标签宽度和对齐方式
2025-01-14 11:28:46 +08:00
aixianling
0ef83a945f refactor(BUG 538): 调整字典数据加载时机
- 移除 add.vue 中的 created 钩子中的字典加载逻辑
- 在 AppWeightManage.vue 中添加 created 钩子,统一处理字典加载
2025-01-14 11:26:01 +08:00
aixianling
cbfd68f50c refactor(BUG 539): 为药物和疫苗的剂量添加单位 ml- 在 AppBreedArchive、AppImmunityManage 和 AppTreatmentManage组件中
- 将"药量"列的标题修改为"药量(ml)"
- 此修改提高了数据的准确性和可读性
2025-01-14 11:10:02 +08:00
10 changed files with 29 additions and 31 deletions

View File

@@ -13,7 +13,7 @@ const columns = {
{label: "序号", type: "index"},
{label: "疫苗名称", prop: "vaccineName"},
{label: "用药方式", prop: "method"},
{label: "药量", prop: "dosage"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "免疫时间", prop: "immunityTime"},
@@ -23,7 +23,7 @@ const columns = {
treatmentList: [
{label: "序号", type: "index"},
{label: "药品名称", prop: "drugName"},
{label: "药量", prop: "dosage"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "疾病名称", prop: "diseaseName"},

View File

@@ -89,7 +89,7 @@ export default {
<el-form size="small" label-width="120px" :model="detail" ref="detail">
<ai-card title="基础信息">
<div class="grid c-4">
<ai-eartag-remote :instance="instance" @enter="handlerAutocomplete"/>
<ai-eartag-remote :instance="instance" @enter="handlerAutocomplete" class="row"/>
<el-form-item label="生物芯片耳标号">
<b v-text="detail.biochipEarNumber"/>
</el-form-item>

View File

@@ -1,17 +1,6 @@
<script>
import {mapState} from "vuex"
const columns = [
{label: "序号", type: "index"},
{label: "生物芯片耳标号", prop: "biochipEarNumber", edit: 1},
{label: "电子耳标号", prop: "electronicEarNumber", edit: 1},
{label: "原厂耳标号", prop: "originalEarNumber", edit: 1},
{label: "戴耳标照片", prop: "picture", upload: {valueIsUrl: !0}},
{label: "品种", prop: "variety", select: {dict: "variety"}},
{label: "类别", prop: "category", select: {dict: "category"}},
{label: "日龄/天", prop: "age", num: 1},
{label: "体重/公斤", prop: "weight", num: 1},
]
export default {
name: "etAdd",
props: {
@@ -22,7 +11,6 @@ export default {
data() {
return {
detail: {detailList: []},
columns,
}
},
computed: {
@@ -34,6 +22,17 @@ export default {
const appName = v.$parent.menuName || v.$parent.$options.label
return v.$route.query.id ? v.isEdit ? `编辑${appName}` : `${appName}详情` : `新增${appName}`
},
columns: v => [
{label: "序号", type: "index"},
{label: "生物芯片耳标号", prop: "biochipEarNumber", edit: 1},
{label: "电子耳标号", prop: "electronicEarNumber", edit: 1},
{label: "原厂耳标号", prop: "originalEarNumber", edit: 1},
{label: "戴耳标照片", prop: "picture", upload: {valueIsUrl: !0, instance: v.instance, limit: 1}},
{label: "品种", prop: "variety", select: {dict: "variety"}},
{label: "类别", prop: "category", select: {dict: "category"}},
{label: "日龄/天", prop: "age", num: 1},
{label: "体重/公斤", prop: "weight", num: 1},
]
},
methods: {
back(params = {}) {

View File

@@ -6,7 +6,7 @@ const columns = [
{label: "序号", type: "index"},
{label: "疫苗名称", prop: "vaccineName"},
{label: "用药方式", prop: "method"},
{label: "药量", prop: "dosage"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "免疫时间", prop: "immunityTime"},
@@ -75,7 +75,8 @@ export default {
},
submit() {
this.$refs.detail.validate().then(() => {
this.instance.post("/api/breed/immunity/update", this.form).then(res => {
const action = !this.form.id ? "/api/breed/immunity/add" : "/api/breed/immunity/update"
this.instance.post(action, this.form).then(res => {
if (res?.code == 0) {
this.dialog = false
this.getDetail()
@@ -86,7 +87,6 @@ export default {
},
created() {
this.dict.load("yesOrNo", "category", "variety", "source")
this.detail.treatmentTime = new Date()
this.getDetail()
}
}
@@ -163,7 +163,7 @@ export default {
</template>
</ai-card>
<ai-dialog v-model="dialog" title="免疫登记" @closed="form={}" @confirm="submit">
<el-form size="small" label-width="120px" class="grid">
<el-form size="small" label-width="120px" class="grid">
<el-form-item label="免疫日期" prop="immunityTime" :rules="{required:true,message:'请选择 免疫日期'}">
<el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="form.immunityTime"/>
</el-form-item>

View File

@@ -56,7 +56,7 @@ export default {
this.$refs.detail.validate().then(() => {
const {biochipEarNumber, id, outTime, heightPic, biochipPic, preventionPic, otherPic, reason, remarks} = this.detail
this.instance.post("/api/breed/out/addOrEdit", {
biochipEarNumber, id, deathTime, picture: JSON.stringify({heightPic, biochipPic, preventionPic, otherPic}), reason, remarks
biochipEarNumber, id, outTime, picture: JSON.stringify({heightPic, biochipPic, preventionPic, otherPic}), reason, remarks
}).then(res => {
if (res?.code == 0 && res?.data != 1) {
this.$confirm("是否返回列表页?", "提交成功").then(() => this.back()).catch(() => this.getDetail(biochipEarNumber))
@@ -91,7 +91,7 @@ export default {
<el-form size="small" label-width="120px" :model="detail" ref="detail">
<ai-card title="基础信息">
<div class="grid c-4">
<ai-eartag-remote :instance="instance" @enter="handlerAutocomplete"/>
<ai-eartag-remote :instance="instance" @enter="handlerAutocomplete" class="row"/>
<el-form-item label="生物芯片耳标号">
<b v-text="detail.biochipEarNumber"/>
</el-form-item>

View File

@@ -5,7 +5,7 @@ import AiEartagPicker from "../components/AiEartagPicker.vue";
const columns = [
{label: "序号", type: "index"},
{label: "药品名称", prop: "drugName"},
{label: "药量", prop: "dosage"},
{label: "药量(ml)", prop: "dosage"},
{label: "生产厂家", prop: "factory"},
{label: "厂家批号", prop: "batchNumber"},
{label: "疾病名称", prop: "diseaseName"},
@@ -95,7 +95,7 @@ export default {
},
created() {
this.dict.load("yesOrNo")
this.detail.treatmentTime = new Date()
this.detail.treatmentTime = this.$moment().format("YYYY-MM-DD HH:mm:ss")
this.getDetail()
}
}

View File

@@ -16,9 +16,9 @@ export default {
return hash == "#add" ? add : list
}
},
data() {
return {}
}
created() {
this.dict.load( "yesOrNo", "category", "variety", "dataSources")
},
}
</script>

View File

@@ -72,7 +72,6 @@ export default {
}
},
created() {
this.dict.load("yesOrNo", "category", "variety", "dataSources")
this.getDetail()
}
}
@@ -128,7 +127,7 @@ export default {
<el-date-picker v-model="form.createTime" :readonly="form.id" value-format="yyyy-MM-dd HH:mm:ss"/>
</el-form-item>
<el-form-item label="体重(公斤)" prop="weight" :rules="[{required:true,message:'请输入体重(公斤)'}]">
<ai-input v-model.number="form.weight"/>
<ai-input type="number" v-model="form.weight"/>
</el-form-item>
</el-form>
</ai-dialog>

View File

@@ -14,7 +14,7 @@ export default {
methods: {
getText(biochipEarNumber) {
this.info = {}
return this.instance.post("/api/breed/earTag/page", {params: {biochipEarNumber, pageSize: 10, pageNum: 1}}).then(res => {
return this.instance.post("/api/breed/earTag/page", {biochipEarNumber, pageSize: 10, pageNum: 1}).then(res => {
if (res?.data?.records) {
this.info = res.data.records[0]
this.$emit('enter', this.info)

View File

@@ -26,8 +26,8 @@
<template slot-scope="{row,$index}">
<span v-if="colConfig.dict" :style="{color:colConfig.color||dict.getColor(colConfig.dict, row[colConfig.prop])}" v-text="dict.getLabel(colConfig.dict, row[colConfig.prop])"/>
<render-slot v-else-if="colConfig.render" :render="colConfig.render" :row="row" :index="$index" :column="colConfig"/>
<el-input v-else-if="colConfig.edit" v-model="row[colConfig.prop]" size="small" placeholder="请输入" clearable/>
<el-input v-else-if="colConfig.num" v-model.number="row[colConfig.prop]" size="small" placeholder="请输入" clearable/>
<ai-input v-else-if="colConfig.edit" v-model="row[colConfig.prop]"/>
<ai-input v-else-if="colConfig.num" type="number" v-model="row[colConfig.prop]"/>
<ai-select v-else-if="colConfig.select" v-model="row[colConfig.prop]" v-bind="colConfig.select"/>
<ai-uploader v-else-if="colConfig.upload" v-model="row[colConfig.prop]" :limit="1" v-bind="colConfig.upload"/>
<ai-open-data v-else-if="colConfig.openType" :type="colConfig.openType" :openid="row[colConfig.prop]"/>