index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <z-paging class="" ref="paging" bgColor="#fff" paging-class="paging-btm-shadow" safe-area-inset-bottom scroll-with-animation>
  3. <template #top>
  4. <ut-navbar :title="did ? '编辑种源入库信息' : '添加种源入库信息'" :fixed="false" border></ut-navbar>
  5. </template>
  6. <view class="pd-24">
  7. <up-form class="p-rtv" labelPosition="top" :model="form" :rules="rules" labelWidth="auto" ref="upFormRef">
  8. <!-- 基本信息 -->
  9. <up-form-item borderBottom label="种源类型" required prop="seedType">
  10. <up-input v-model="form.seedType" placeholder="请输入种源类型" border="none" clearable></up-input>
  11. </up-form-item>
  12. <up-form-item borderBottom label="物种基原" required prop="varietyId">
  13. <up-input v-model="form.varietyId" placeholder="请输入物种基原" border="none" clearable></up-input>
  14. </up-form-item>
  15. <up-form-item borderBottom label="具体品种/品系名称" prop="seedName">
  16. <up-input v-model="form.seedName" placeholder="请输入具体品种/品系名称" border="none" clearable></up-input>
  17. </up-form-item>
  18. <up-form-item borderBottom label="种源来源" required prop="seedSource">
  19. <up-input v-model="form.seedSource" placeholder="请输入种源来源" border="none" clearable></up-input>
  20. </up-form-item>
  21. <up-form-item borderBottom label="受托单位" prop="entrustId">
  22. <up-input v-model="form.entrustId" placeholder="请输入受托单位" border="none" clearable></up-input>
  23. </up-form-item>
  24. <!-- 入库数量与单位 -->
  25. <up-form-item borderBottom label="入库量" prop="capacity">
  26. <up-input v-model="form.capacity" type="number" placeholder="请输入入库量" border="none" clearable></up-input>
  27. </up-form-item>
  28. <up-form-item borderBottom label="计量单位" prop="unit">
  29. <up-input v-model="form.unit" placeholder="请输入计量单位" border="none" clearable></up-input>
  30. </up-form-item>
  31. <!-- 检验报告与供应商信息 -->
  32. <up-form-item borderBottom label="检验报告" prop="examinReport">
  33. <up-input v-model="form.examinReport" placeholder="请输入检验报告编号或说明" border="none" clearable></up-input>
  34. </up-form-item>
  35. <up-form-item borderBottom label="供应商" prop="supplierId">
  36. <up-input v-model="form.supplierId" placeholder="请输入供应商" border="none" clearable></up-input>
  37. </up-form-item>
  38. <up-form-item borderBottom label="供应商名称" prop="supplier">
  39. <up-input v-model="form.supplier" placeholder="请输入供应商名称" border="none" clearable></up-input>
  40. </up-form-item>
  41. <up-form-item borderBottom label="生产商" prop="producer">
  42. <up-input v-model="form.producer" placeholder="请输入生产商名称" border="none" clearable></up-input>
  43. </up-form-item>
  44. <!-- 菌种编码信息 -->
  45. <up-form-item borderBottom label="菌种/菌株编号" prop="fungusCode">
  46. <up-input v-model="form.fungusCode" placeholder="请输入菌种/菌株编号" border="none" clearable></up-input>
  47. </up-form-item>
  48. <up-form-item borderBottom label="菌种编码类型" prop="fungusCodeType">
  49. <up-input v-model="form.fungusCodeType" placeholder="请输入菌种编码类型" border="none" clearable></up-input>
  50. </up-form-item>
  51. <!-- 个体标识:此处仅占位,后续可改为多选列表 -->
  52. <up-form-item borderBottom label="是否有个体标识" prop="animalIds">
  53. <up-input v-model="form.animalIds" placeholder="如有个体标识,请稍后补充明细" border="none" disabled></up-input>
  54. </up-form-item>
  55. <!-- 媒体与附件 -->
  56. <up-form-item borderBottom label="种源图片" prop="imgs">
  57. <ut-upload v-model="form.imgs" :max-count="9"></ut-upload>
  58. </up-form-item>
  59. <up-form-item borderBottom label="种源视频" prop="vedios">
  60. <ut-upload v-model="form.vedios" :max-count="3" accept="video" valueType="array"></ut-upload>
  61. </up-form-item>
  62. <!-- 产地与繁殖信息 -->
  63. <up-form-item borderBottom label="种源产地" prop="adcode">
  64. <up-input v-model="form.adcode" placeholder="请输入种源产地行政编码" border="none" clearable></up-input>
  65. </up-form-item>
  66. <up-form-item borderBottom label="繁殖材料" prop="generationMaterial">
  67. <up-input v-model="form.generationMaterial" placeholder="请输入繁殖材料" border="none" clearable></up-input>
  68. </up-form-item>
  69. <up-form-item borderBottom label="繁殖地点/采集地点" prop="generationAdcode">
  70. <up-input v-model="form.generationAdcode" placeholder="请输入繁殖/采集地点编码或名称" border="none" clearable></up-input>
  71. </up-form-item>
  72. <!-- 资质证明附件(暂按上传控件处理,可后续细化) -->
  73. <up-form-item borderBottom label="物种鉴定证书" prop="spCert">
  74. <ut-upload v-model="form.spCert" :max-count="9" valueType="array" accept="file"></ut-upload>
  75. </up-form-item>
  76. <up-form-item borderBottom label="新品种证书" prop="newSpCert">
  77. <ut-upload v-model="form.newSpCert" :max-count="9" valueType="array" accept="file"></ut-upload>
  78. </up-form-item>
  79. <up-form-item borderBottom label="引种证明" prop="importCert">
  80. <ut-upload v-model="form.importCert" :max-count="9" valueType="array" accept="file"></ut-upload>
  81. </up-form-item>
  82. <!-- 检疫信息 -->
  83. <up-form-item borderBottom label="种源检疫证号" prop="seedCheckSn">
  84. <up-input v-model="form.seedCheckSn" placeholder="请输入种源检疫证号" border="none" clearable></up-input>
  85. </up-form-item>
  86. <up-form-item borderBottom label="种源检疫证书" prop="seedCheckCert">
  87. <ut-upload v-model="form.seedCheckCert" :max-count="9" valueType="array" accept="file"></ut-upload>
  88. </up-form-item>
  89. </up-form>
  90. </view>
  91. <template #bottom>
  92. <view class="pd-20 d-flex">
  93. <up-button @click="submitForm" type="primary">保存</up-button>
  94. </view>
  95. </template>
  96. </z-paging>
  97. </template>
  98. <script setup lang="ts">
  99. import { useClientRequest } from '@/utils/request';
  100. import { seedInfoListType } from '../models/type';
  101. const paging = ref<any>(null);
  102. const upFormRef = ref<any>(null);
  103. const form = ref<seedInfoListType>({
  104. imgs: [],
  105. vedios: [],
  106. spCert: [],
  107. newSpCert: [],
  108. importCert: [],
  109. seedCheckCert: [],
  110. });
  111. const rules = reactive({});
  112. const submitForm = async () => {
  113. uni.$u.debounce(
  114. async () => {
  115. try {
  116. await upFormRef.value?.validate();
  117. } catch (error: any) {
  118. // 滚动到第一个错误字段
  119. const firstErrorField = error && error[0].prop + 'pppp';
  120. paging.value?.scrollIntoViewById(firstErrorField, 30, true);
  121. return;
  122. }
  123. // 提交表单
  124. uni.showLoading({
  125. title: '提交中...',
  126. });
  127. try {
  128. } catch (error) {
  129. uni.hideLoading();
  130. }
  131. },
  132. 500,
  133. true
  134. );
  135. };
  136. const did = ref('');
  137. onLoad((optins: any) => {
  138. if (optins.id) {
  139. // 编辑加载详
  140. did.value = optins.id;
  141. } else {
  142. }
  143. });
  144. </script>
  145. <style lang="scss" scoped></style>