feat(ear-tag): 新增耳标登记功能

- 添加耳标登记页面,支持新增和编辑功能
- 实现养殖场、养殖舍、养殖栏的级联选择- 添加耳标信息的详细录入,包括生物芯片耳标号、电子耳标号等
-优化列表页面,增加搜索和筛选功能
- 重构表格组件,支持更多列类型和操作
This commit is contained in:
aixianling
2024-12-25 12:12:47 +08:00
parent 06fa7b636e
commit ee15427e88
5 changed files with 156 additions and 82 deletions

View File

@@ -21,33 +21,17 @@
:is="colConfig.component"
:col-config="colConfig">
</component>
<el-table-column
v-else-if="colConfig.dict"
:key="colConfig.id"
v-bind="colConfig">
<span slot-scope="{row}" :style="{color:colConfig.color||dict.getColor(colConfig.dict, row[colConfig.prop])}">
{{ dict.getLabel(colConfig.dict, row[colConfig.prop]) }}
</span>
</el-table-column>
<el-table-column
v-else-if="colConfig.openType"
:key="colConfig.id"
v-bind="colConfig">
<template v-slot="{row}">
<ai-open-data :type="colConfig.openType" :openid="row[colConfig.prop]"/>
</template>
</el-table-column>
<el-table-column
v-else-if="colConfig.type"
:key="colConfig.id"
v-bind="colConfig"
:width="colConfig.width || 100"/>
<el-table-column v-else v-bind="colConfig" :key="colConfig.id"
:show-overflow-tooltip="colConfig['show-overflow-tooltip'] != false">
<template slot-scope="scope">
<render-slot v-if="colConfig.render" :render="colConfig.render" :row="scope.row" :index="scope.$index"
:column="colConfig"/>
<span v-else>{{ getValue(colConfig, scope.row) }}</span>
<el-table-column v-else-if="colConfig.type" v-bind="colConfig" :width="colConfig.width||80" align="center"/>
<el-table-column v-else v-bind="colConfig">
<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==1" v-model="row[colConfig.prop]" :index="$index"/>
<el-input v-else-if="colConfig.num==1" v-model.number="row[colConfig.prop]" :index="$index"/>
<ai-select v-else-if="colConfig.select==1" v-model="row[colConfig.prop]" v-bind="colConfig"/>
<ai-uploader v-else-if="colConfig.upload==1" v-model="row[colConfig.prop]" v-bind="colConfig"/>
<ai-open-data v-else-if="colConfig.openType" :type="colConfig.openType" :openid="row[colConfig.prop]"/>
<span v-else>{{ getValue(colConfig, row) }}</span>
</template>
</el-table-column>
</template>
@@ -88,6 +72,7 @@
<script>
import moment from 'dayjs'
import dict from "../../lib/js/dict"
import AiUploader from "./AiUploader.vue";
export default {
name: 'AiTable',
@@ -121,6 +106,7 @@ export default {
}
},
components: {
AiUploader,
renderSlot: {
functional: true,
props: {

View File

@@ -70,6 +70,11 @@ export default {
}
&.blank {
width: 100%;
overflow-y: auto;
}
&.hasFooter {
padding-bottom: 64px;
}

View File

@@ -3,7 +3,7 @@
<div ref="AiSearchBarZone" class="searchLeftZone">
<slot name="left"/>
</div>
<div class="searchRightZone" ref="searchRightZone">
<div class="searchRightZone" ref="searchRightZone" v-if="$slots.right">
<slot name="right"/>
</div>
<ai-pull-down v-if="!isSingleRow" v-model="expand"/>
@@ -30,14 +30,6 @@ export default {
}
},
methods: {
handlePullDown(style) {
this.searchBarStyle = style
if (style.height == 'auto') {
this.searchBarStyle.marginBottom = '16px'
} else {
this.searchBarStyle.marginBottom = '0'
}
},
initSize() {
this.height = this.$refs?.AiSearchBarZone?.offsetHeight
this.rightHeight = this.$refs?.searchRightZone?.offsetHeight + 12