index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <z-paging ref="paging" v-model="list" bgColor="#f7f7f7" @query="query" safe-area-inset-bottom>
  3. <template #top>
  4. <ut-navbar title="创建种养殖任务" :fixed="false"></ut-navbar>
  5. </template>
  6. <view class="pt-26">
  7. <up-form class="p-rtv" labelPosition="top" :model="form" :rules="rules" labelWidth="auto" ref="upFormRef">
  8. <view class="startline-title pl-24 ml-26 mb-16">基地信息</view>
  9. <view class="bg-#fff pd-26">
  10. <view class="b-radius bg-#EBF6EE c-primary f-s-24 pd-26 pb-16"> 注意:关联时请确保已添加到地块;关联时必须选到地块/圈舍/组培架。</view>
  11. </view>
  12. <view class="bg-#fff pd-26 mb-20 pt-0">
  13. <up-form-item :borderBottom="false" label="种养殖所在基地" required prop="plantBase">
  14. <view v-if="!deawerData" class="w-100% d-flex a-c j-c pd-26 b-radius bg-#FBFDFB border-#AFDDBB" @click="openDrawer">
  15. <view class=""></view>
  16. <view class="f-s-34 c-primary">请选择种养殖所在的基地</view>
  17. </view>
  18. <view class="w-100%" v-else>
  19. <Baseinfo :modeValue="deawerData" @close="handleBaseinfoClose" :baseType="form.baseType" />
  20. </view>
  21. </up-form-item>
  22. </view>
  23. <view class="startline-title pl-24 ml-26 mb-16">种养殖信息</view>
  24. <view class="bg-#fff pd-26 mb-20">
  25. <ut-action-sheet v-model="form.queryType" :tabs="pt_task_type" title="选择任务类型">
  26. <up-form-item borderBottom label="任务类型" required prop="baseType">
  27. <view class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabel(pt_task_type, form.baseType) }}</view>
  28. </up-form-item>
  29. </ut-action-sheet>
  30. <ut-action-sheet v-model="form.queryType1" :tabs="pt_org_type" title="选择溯源级别">
  31. <up-form-item borderBottom label="溯源级别" required prop="orgType">
  32. <view v-if="form.queryType1" class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabel(pt_org_type, form.queryType1) }}</view>
  33. <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择溯源级别</view>
  34. <template #right>
  35. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
  36. </template>
  37. </up-form-item>
  38. </ut-action-sheet>
  39. <up-form-item borderBottom label="符合要求" required prop="gapFlag">
  40. <view v-if="form.queryType2" class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabel(pt_org_type, form.queryType1) }}</view>
  41. <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择符合要求</view>
  42. <template #right>
  43. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
  44. </template>
  45. </up-form-item>
  46. <up-form-item borderBottom label="动物名称" required prop="plantBase">
  47. <view class="w-100% d-flex a-c j-c pd-26 b-radius bg-#FBFDFB border-#AFDDBB">
  48. <view class=""></view>
  49. <view class="f-s-34 c-primary">请选择养植的动物名称</view>
  50. </view>
  51. </up-form-item>
  52. <up-form-item borderBottom label="养殖批号" required prop="plantBase">
  53. <view class="d-flex a-c j-sb w-100%">
  54. <up-input v-model="form.queryType3" placeholder="请输入养殖批号" border="none"></up-input>
  55. <up-button class="c-#fff" type="primary" style="height: 50rpx; width: 130rpx">随机生成</up-button>
  56. </view>
  57. </up-form-item>
  58. <up-form-item label="请选择养殖技术规程文件" prop="environmentInfo.report" borderBottom>
  59. <ut-upload v-model="form.queryType4" :max-count="9" valueType="array" accept="file"></ut-upload>
  60. </up-form-item>
  61. <ut-action-sheet v-model="form.queryType5" :tabs="pt_task_type" title="选择任务类型">
  62. <up-form-item borderBottom label="任务类型" required prop="baseType">
  63. <view v-if="form.queryType1" class="f-s-30 c-333 f-w-5 flex1">{{ selectDictLabel(pt_org_type, form.baseType) }}</view>
  64. <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择养殖方式</view>
  65. <template #right>
  66. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
  67. </template>
  68. </up-form-item>
  69. </ut-action-sheet>
  70. <up-form-item :borderBottom="false" label="养殖时间" required prop="queryType6">
  71. <ut-datetime-picker v-model="form.queryType6.startDate" mode="date" dateFields="month">
  72. <view class="d-flex mr-20">
  73. <up-input v-model="form.queryType6.startDate" placeholder="请选择养殖开始时间" border="bottom" :customStyle="{ paddingLeft: '0rpx' }"></up-input>
  74. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill" style="margin-left: -20rpx"></up-icon>
  75. </view>
  76. </ut-datetime-picker>
  77. <ut-datetime-picker v-model="form.queryType6.endDate" mode="date" dateFields="month">
  78. <view class="d-flex">
  79. <up-input v-model="form.queryType6.endDate" placeholder="请选择养殖结束时间" border="bottom" :customStyle="{ paddingLeft: '0rpx' }"></up-input>
  80. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill" style="margin-left: -20rpx"></up-icon>
  81. </view>
  82. </ut-datetime-picker>
  83. </up-form-item>
  84. <up-form-item borderBottom label="养殖面积" required prop="plantBaseArea">
  85. <view class="d-flex a-c j-sb w-100%">
  86. <up-input style="padding-left: 0" v-model="form.plantBaseArea" placeholder="请输入养殖批号" border="none"></up-input>
  87. <view class="c-#333 f-s-32 f-w-5">平方米</view>
  88. </view>
  89. </up-form-item>
  90. <up-form-item borderBottom label="养殖区域" required prop="BreedingArea">
  91. <view class="d-flex a-c j-sb w-100%">
  92. <up-input v-model="form.BreedingArea" placeholder="请输入养殖区域" border="none"></up-input>
  93. <view class="c-#333 f-s-32 f-w-5">个</view>
  94. </view>
  95. </up-form-item>
  96. <up-form-item borderBottom label="养殖量" required prop="orgType">
  97. <up-input v-model="form.breedingVolume" placeholder="请输入养殖区域" border="none"></up-input>
  98. <ut-action-sheet v-model="form.breedingVolume" :tabs="pt_org_type" title="选择单位">
  99. <view class="d-flex a-c">
  100. <view v-if="form.queryType1" class="f-s-30 c-333 f-w-5 w-100">{{ selectDictLabel(pt_org_type, form.queryType1) }}</view>
  101. <view v-else class="f-s-30 c-ccc f-w-4 w-100">单位</view>
  102. <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
  103. </view>
  104. </ut-action-sheet>
  105. </up-form-item>
  106. <up-form-item borderBottom label="备注" required prop="BreedingArea">
  107. <up-input v-model="form.BreedingArea" placeholder="请输入备注" border="none"></up-input>
  108. </up-form-item>
  109. </view>
  110. </up-form>
  111. </view>
  112. </z-paging>
  113. <!-- 添加drawer组件 -->
  114. <Drawer v-if="drawerVisible" :baseType="form.baseType" v-model="drawerVisible" @open="onDrawerOpen" @close="onDrawerClose" @confirm="onDrawerConfirm" />
  115. </template>
  116. <script setup lang="ts">
  117. import { ref } from 'vue';
  118. import Drawer from './models/drawer.vue';
  119. import Baseinfo from './models/baseinfo.vue';
  120. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  121. const { pt_task_type, pt_org_type, yes_no } = toRefs<any>(proxy?.useDict('pt_task_type', 'pt_org_type', 'yes_no'));
  122. const form = ref({
  123. baseType: '',
  124. queryType: '',
  125. queryType1: '',
  126. queryType2: '',
  127. queryType3: '',
  128. queryType4: '',
  129. queryType5: '',
  130. queryType6: {
  131. startDate: '',
  132. endDate: '',
  133. },
  134. plantBaseArea: '',
  135. BreedingArea: '',
  136. breedingVolume: '',
  137. });
  138. const paging = ref<unknown>('paging');
  139. const list = ref<unknown>([]);
  140. // 控制抽屉显示状态
  141. const drawerVisible = ref(false);
  142. // 打开抽屉
  143. function openDrawer() {
  144. drawerVisible.value = true;
  145. }
  146. // 关闭抽屉
  147. function closeDrawer() {
  148. drawerVisible.value = false;
  149. }
  150. // 处理抽屉打开事件
  151. function onDrawerOpen() {
  152. console.log('抽屉打开了');
  153. }
  154. // 处理抽屉关闭事件
  155. function onDrawerClose() {
  156. console.log('抽屉关闭了');
  157. }
  158. const deawerData = ref<any>(null);
  159. // 处理抽屉确认事件
  160. function onDrawerConfirm(data: any) {
  161. console.log('收到基地选择数据:', data);
  162. deawerData.value = data;
  163. // 这里可以将数据赋值给表单的相应字段
  164. // 例如:form.value.plantBase = data.baseName;
  165. // 可以根据需要添加其他处理逻辑
  166. }
  167. // 处理Baseinfo组件的关闭事件
  168. function handleBaseinfoClose() {
  169. deawerData.value = null;
  170. }
  171. onLoad((options) => {
  172. console.log(options?.baseType, '??????');
  173. form.value.baseType = options?.baseType;
  174. });
  175. </script>