huangxw 1 viikko sitten
vanhempi
säilyke
bb9e0b76a2

+ 90 - 0
src/plant/models/warehouseCard/fresh-goods-card.vue

@@ -0,0 +1,90 @@
+<template>
+    <view class="d-flex j-sb a-c li-item-head">
+        <view class="li-left-tag" :class="{ [`bg-instore-${item?.instoreType}`]: true }">{{ selectDictLabel(pt_fresh_instore_type, item?.instoreType) }}</view>
+        <view class="f-s-22 c-#666 mr-30">{{ item?.instoreBizInfo?.instoreDate }}</view>
+    </view>
+    <view class="pd-20">
+        <view class="d-flex flex1 mb-10">
+            <view class="flex1">
+                <span class="f-s-34 c-#333 f-w-500 mr-10">{{ item?.variety }}</span>
+                <span v-if="item?.partName" class="f-s-24 c-#666">{{ item?.level || '' }}{{ item?.partName }}</span>
+            </view>
+            <view>
+                <view v-if="item?.examinReport?.length" class="tag-span c-primary bg-#EBF6EE">已检验</view>
+                <view v-else class="tag-span c-danger bg-#F9ECEA">未检验</view>
+            </view>
+        </view>
+        <template v-if="item?.instoreType == '2'">
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">入库批号:</span>
+                <span class="c-#333 f-w-500">{{ item?.batchCode || '-' }}</span>
+            </view>
+            <view v-if="item?.supplierId" class="pd2-4-0 f-s-28">
+                <span class="c-#666">供应商:</span>
+                <span class="c-#333 f-w-500">{{ item?.supplierInfo?.cusName || '-' }}</span>
+            </view>
+        </template>
+        <template v-if="item?.instoreType == '3'">
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">采收批号:</span>
+                <span class="c-#333 f-w-500">{{ item?.harvestInfo?.harvestCode || '-' }}</span>
+            </view>
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">采收基地:</span>
+                <span class="c-#333 f-w-500">
+                    {{ item?.harvestInfo?.baseInfo?.baseName || '-' }}
+                </span>
+            </view>
+        </template>
+
+        <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
+            <span class="c-#666">存放库房:</span>
+            <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
+        </view>
+        <view class="pd2-4-0 f-s-28">
+            <span class="c-#666">入库量:</span>
+            <span class="c-#333 f-w-500">{{ item?.capacity }}{{ item?.unit }}</span>
+        </view>
+        <view class="d-flex">
+            <view v-if="item?.inputAmount" class="pd2-4-0 f-s-28 flex1">
+                <span class="c-#666">出库量:</span>
+                <span class="c-#333 f-w-500">{{ item?.inputAmount || '0' }}{{ item?.unit }}</span>
+            </view>
+            <view v-if="item?.restAmount" class="pd2-4-0 f-s-28 flex1">
+                <span class="c-danger">剩余量:</span>
+                <span class="c-danger f-w-500">{{ item?.restAmount || '0' }}{{ item?.unit }}</span>
+            </view>
+        </view>
+        <slot></slot>
+    </view>
+</template>
+<script setup lang="ts" name="FreshGoodsCard">
+import { selectDictListClass } from '@/utils/ruoyi';
+import { getStorageRoomNames } from '@/utils/common';
+// 种源展示卡片
+const props = defineProps({
+    item: {
+        type: Object,
+        default: () => ({}),
+    },
+    dict: {
+        type: Object,
+        default: () => ({}),
+    },
+});
+const { pt_fresh_instore_type } = toRefs<any>(props.dict);
+</script>
+<style lang="scss" scoped>
+.li-left-tag {
+    padding: 6rpx 16rpx;
+    color: #fff;
+    border-radius: 16rpx 0 16rpx 0;
+    font-size: 20rpx;
+    font-weight: 500;
+}
+.tag-span {
+    padding: 4rpx 12rpx;
+    font-size: 20rpx;
+    border-radius: 18rpx;
+}
+</style>

+ 101 - 0
src/plant/models/warehouseCard/seed-source-card.vue

@@ -0,0 +1,101 @@
+<template>
+    <view class="d-flex j-sb a-c li-item-head">
+        <view class="li-left-tag" :class="{ [`bg-instore-${item?.instoreType}`]: true }">{{ selectDictLabel(pt_seed_instore_type, item?.instoreType) }}</view>
+        <view class="f-s-22 c-#666 mr-24">{{ item?.instoreBizInfo?.instoreDate }}</view>
+    </view>
+    <view class="pd-20">
+        <view class="d-flex flex1 mb-10">
+            <view class="flex1">
+                <span class="f-s-34 c-#333 f-w-500 mr-10">{{ item?.variety }}</span>
+                <span class="f-s-24 c-#666">{{ item?.seedLevel }}{{ selectDictLabel(pt_seed_type, item?.seedType) }}</span>
+            </view>
+            <view>
+                <view v-if="item?.examinReport?.length" class="tag-span c-primary bg-#EBF6EE">已检验</view>
+                <view v-else class="tag-span c-danger bg-#F9ECEA">未检验</view>
+            </view>
+        </view>
+        <template v-if="item?.instoreType == '2'">
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">入库批号:</span>
+                <span class="c-#333 f-w-500">{{ item?.batchCode }}</span>
+            </view>
+            <view v-if="['A3', 'A4'].includes(item?.seedType)" class="pd2-4-0 f-s-28">
+                <span class="c-#666">菌种/菌株编号:</span>
+                <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, item?.fungusCodeType) }}/{{ item?.fungusCode }}</span>
+            </view>
+            <view v-if="item?.supplierId" class="pd2-4-0 f-s-28">
+                <span class="c-#666">供应商:</span>
+                <span class="c-#333 f-w-500">{{ item?.supplierInfo?.cusName || '-' }}</span>
+            </view>
+            <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
+                <span class="c-#666">存放库房:</span>
+                <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
+            </view>
+        </template>
+        <template v-if="item?.instoreType == '3'">
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">采收批号:</span>
+                <span class="c-#333 f-w-500">{{ item?.harvestInfo?.harvestCode || '-' }}</span>
+            </view>
+            <view class="pd2-4-0 f-s-28">
+                <span class="c-#666">采收基地:</span>
+                <span class="c-#333 f-w-500">
+                    {{ item?.harvestInfo?.baseInfo?.baseName || '-' }}
+                </span>
+            </view>
+            <view v-if="['A3', 'A4'].includes(item?.seedType)" class="pd2-4-0 f-s-28">
+                <span class="c-#666">菌种/菌株编号:</span>
+                <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, item?.fungusCodeType) }}/{{ item?.fungusCode }}</span>
+            </view>
+            <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
+                <span class="c-#666">存放库房:</span>
+                <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
+            </view>
+        </template>
+        <view class="pd2-4-0 f-s-28">
+            <span class="c-#666">入库量:</span>
+            <span class="c-#333 f-w-500">{{ item?.capacity }}{{ item?.unit }}</span>
+        </view>
+        <view class="d-flex">
+            <view v-if="item?.inputAmount" class="pd2-4-0 f-s-28 flex1">
+                <span class="c-#666">出库量:</span>
+                <span class="c-#333 f-w-500">{{ item?.inputAmount || '0' }}{{ item?.unit }}</span>
+            </view>
+            <view v-if="item?.restAmount" class="pd2-4-0 f-s-28 flex1">
+                <span class="c-danger">剩余量:</span>
+                <span class="c-danger f-w-500">{{ item?.restAmount || '0' }}{{ item?.unit }}</span>
+            </view>
+        </view>
+        <slot></slot>
+    </view>
+</template>
+<script setup lang="ts" name="SeedSourceCard">
+import { selectDictListClass } from '@/utils/ruoyi';
+import { getStorageRoomNames } from '@/utils/common';
+// 种源展示卡片
+const props = defineProps({
+    item: {
+        type: Object,
+        default: () => ({}),
+    },
+    dict: {
+        type: Object,
+        default: () => ({}),
+    },
+});
+const { pt_seed_instore_type, pt_seed_type, pt_fungus_code_type } = toRefs<any>(props.dict);
+</script>
+<style lang="scss" scoped>
+.li-left-tag {
+    padding: 6rpx 16rpx;
+    color: #fff;
+    border-radius: 16rpx 0 16rpx 0;
+    font-size: 20rpx;
+    font-weight: 500;
+}
+.tag-span {
+    padding: 4rpx 12rpx;
+    font-size: 20rpx;
+    border-radius: 18rpx;
+}
+</style>

+ 17 - 76
src/plant/storage/fresh-goods/detail/index.vue

@@ -1,6 +1,5 @@
 <template>
-    <z-paging ref="paging" bgColor="#F7F7F7" safe-area-inset-bottom paging-class="paging-btm-shadow"
-        scroll-with-animation>
+    <z-paging ref="paging" bgColor="#F7F7F7" safe-area-inset-bottom paging-class="paging-btm-shadow" scroll-with-animation>
         <template #top>
             <ut-navbar title="鲜货详情" :fixed="false" border></ut-navbar>
         </template>
@@ -12,68 +11,18 @@
                 </view>
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
-                        <image class="w-30 h-30 mr-10"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png"
-                            mode="widthFix" />
+                        <image class="w-30 h-30 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>
                 </view>
             </view>
-            <view class="bg-#fff pd-24">
-                <view class="d-flex j-sb a-c li-item-head mb-16">
-                    <view class="li-left-tag" :class="{ [`bg-instore-${form?.instoreType}`]: true }">{{
-                        selectDictLabel(pt_seed_instore_type, form?.instoreType) }}</view>
-                    <view class="f-s-22 c-#666">{{ form?.instoreBizInfo?.instoreDate }}</view>
-                </view>
-                <view class="mb-10">
-                    <span class="f-s-34 c-#333 f-w-500 mr-10">{{ form?.variety }}</span>
-                    <span v-if="form?.partName" class="f-s-24 c-#666">{{ form?.level || '' }}{{ form?.partName }}</span>
-                </view>
-                <template v-if="form?.instoreType == '2'">
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">入库批号:</span>
-                        <span class="c-#333 f-w-500">{{ form?.batchCode || '-' }}</span>
-                    </view>
-                    <view v-if="form?.supplierId" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">供应商:</span>
-                        <span class="c-#333 f-w-500">{{ form?.supplierInfo?.cusName || '-' }}</span>
-                    </view>
-                </template>
-                <template v-if="form?.instoreType == '3'">
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">采收批号:</span>
-                        <span class="c-#333 f-w-500">{{ form?.harvestInfo?.harvestCode || '-' }}</span>
-                    </view>
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">采收基地:</span>
-                        <span class="c-#333 f-w-500">
-                            {{ form?.harvestInfo?.baseInfo?.baseName || '-' }}
-                        </span>
-                    </view>
-                </template>
-                <view v-if="form?.warehouses?.length" class="pd2-4-0 f-s-28">
-                    <span class="c-#666">存放库房:</span>
-                    <span class="c-#333 f-w-500">{{ getStorageRoomNames(form?.warehouses) || '-' }}</span>
-                </view>
-                <view class="pd2-4-0 f-s-28">
-                    <span class="c-#666">入库量:</span>
-                    <span class="c-#333 f-w-500">{{ form?.capacity }}{{ form?.unit }}</span>
-                </view>
-                <view class="d-flex">
-                    <view v-if="form?.inputAmount" class="pd2-4-0 f-s-28 flex1">
-                        <span class="c-#666">出库量:</span>
-                        <span class="c-#333 f-w-500">{{ form?.inputAmount || '0' }}{{ form?.unit }}</span>
-                    </view>
-                    <view v-if="form?.restAmount" class="pd2-4-0 f-s-28 flex1">
-                        <span class="c-primary">剩余量:</span>
-                        <span class="c-primary f-w-500">{{ form?.restAmount || '0' }}{{ form?.unit }}</span>
+
+            <view class="bg-#fff">
+                <FreshGoodsCard :item="form" :dict="{ pt_fresh_instore_type }">
+                    <view v-if="+form?.restAmount" class="pd3-20-40-0">
+                        <up-button @click="navigateToInventoryLoss" type="warning" plain :customStyle="{ background: '#FFF9EF', borderColor: '#F9D9A3' }">库存有消耗?库存损耗登记{{ '>' }}</up-button>
                     </view>
-                </view>
-                <view v-if="+form?.restAmount" class="pd3-20-40-0">
-                    <up-button @click="navigateToInventoryLoss" type="warning" plain
-                        :customStyle="{ background: '#FFF9EF', borderColor: '#F9D9A3' }">库存有消耗?库存损耗登记{{ '>'
-                        }}</up-button>
-                </view>
+                </FreshGoodsCard>
             </view>
             <view class="pd-24">
                 <view class="startline-title">鲜货信息</view>
@@ -91,9 +40,7 @@
                             <span class="f-s-28 c-#333 f-w-5 mr-16">{{ form?.varietyInfo?.genusName || '' }}</span>
                             <span class="f-s-24 c-#666">{{ form?.varietyInfo?.genusLatinName || '' }}</span>
                         </view>
-                        <view class="f-s-24 c-#666" v-if="form?.varietyInfo?.medicineName">产出:{{
-                            form?.varietyInfo?.medicineName }}
-                        </view>
+                        <view class="f-s-24 c-#666" v-if="form?.varietyInfo?.medicineName">产出:{{ form?.varietyInfo?.medicineName }} </view>
                     </view>
                     <view v-else class="c-#333 f-w-600">{{ form?.variety || '-' }}</view>
                 </view>
@@ -105,15 +52,12 @@
 
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">鲜货来源:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_medicine_source_tag, form?.sourceType) || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_medicine_source_tag, form?.sourceType) || '-' }}</span>
                 </view>
 
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">入库量:</span>
-                    <span class="c-#333 f-w-600">{{ form?.capacity || '-' }}{{ selectDictLabel(pt_medicine_unit,
-                        form?.unit) ||
-                        form?.unit || '' }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.capacity || '-' }}{{ selectDictLabel(pt_medicine_unit, form?.unit) || form?.unit || '' }}</span>
                 </view>
 
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
@@ -133,8 +77,7 @@
                     </view>
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">供应商是否是生产商:</span>
-                        <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.supplierProducerFlag) || '-'
-                            }}</span>
+                        <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.supplierProducerFlag) || '-' }}</span>
                     </view>
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">生产商:</span>
@@ -165,8 +108,7 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">入库类型:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_seed_instore_type, form?.instoreType) || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_fresh_instore_type, form?.instoreType) || '-' }}</span>
                 </view>
                 <template v-if="form.instoreType == '2'">
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
@@ -196,13 +138,11 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">最后修改人:</span>
-                    <span class="c-#333 f-w-600">{{ form?.operatorName || form?.updateByName || form?.createByName ||
-                        '-' }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.operatorName || form?.updateByName || form?.createByName || '-' }}</span>
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">最后修改时间:</span>
-                    <span class="c-#333 f-w-600">{{ form?.operateTime || form?.updateTime || form?.createTime || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.operateTime || form?.updateTime || form?.createTime || '-' }}</span>
                 </view>
             </view>
         </template>
@@ -219,9 +159,10 @@ import { formItemBtnStyle } from '@/assets/styles/uview-plus';
 import { getStorageRoomNames } from '@/utils/common';
 import { useClientRequest } from '@/utils/request';
 import { selectDictListClass } from '@/utils/ruoyi';
+import FreshGoodsCard from '@/plant/models/warehouseCard/fresh-goods-card.vue';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-const { pt_seed_instore_type, yes_no, pt_medicine_source_tag, pt_medicine_unit } = toRefs<any>(proxy?.useDict('pt_seed_instore_type', 'yes_no', 'pt_medicine_source_tag', 'pt_medicine_unit'));
+const { pt_fresh_instore_type, yes_no, pt_medicine_source_tag, pt_medicine_unit } = toRefs<any>(proxy?.useDict('pt_fresh_instore_type', 'yes_no', 'pt_medicine_source_tag', 'pt_medicine_unit'));
 const paging = ref<any>(null);
 const form = ref<any>({});
 const did = ref('');

+ 3 - 56
src/plant/storage/fresh-goods/list/index.vue

@@ -26,62 +26,8 @@
         <view class="pd-24 bg-#f7f7f7">
             <up-swipe-action>
                 <up-swipe-action-item v-for="(item, index) in list" :key="index" :name="item?.id" :options="optionsActionTemp" @click="clickTempSwipe($event, item)" class="mb-20 b-radius">
-                    <view class="b-radius bg-#fff pd-20 p-rtv" @click.stop="$u.route({ url: '/plant/storage/fresh-goods/detail/index', params: { id: item.id } })">
-                        <view class="d-flex j-sb a-c li-item-head mb-16">
-                            <view class="li-left-tag" :class="{ [`bg-instore-${item?.instoreType}`]: true }">{{ selectDictLabel(pt_fresh_instore_type, item?.instoreType) }}</view>
-                            <view class="f-s-22 c-#666">{{ item?.instoreBizInfo?.instoreDate }}</view>
-                        </view>
-                        <view class="d-flex flex1 mb-10">
-                            <view class="flex1">
-                                <span class="f-s-34 c-#333 f-w-500 mr-10">{{ item?.variety }}</span>
-                                <span v-if="item?.partName" class="f-s-24 c-#666">{{ item?.level || '' }}{{ item?.partName }}</span>
-                            </view>
-                            <view>
-                                <view v-if="item?.examinReport?.length" class="tag-span c-primary bg-#EBF6EE">已检验</view>
-                                <view v-else class="tag-span c-danger bg-#F9ECEA">未检验</view>
-                            </view>
-                        </view>
-                        <template v-if="item?.instoreType == '2'">
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">入库批号:</span>
-                                <span class="c-#333 f-w-500">{{ item?.batchCode || '-' }}</span>
-                            </view>
-                            <view v-if="item?.supplierId" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">供应商:</span>
-                                <span class="c-#333 f-w-500">{{ item?.supplierInfo?.cusName || '-' }}</span>
-                            </view>
-                        </template>
-                        <template v-if="item?.instoreType == '3'">
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">采收批号:</span>
-                                <span class="c-#333 f-w-500">{{ item?.harvestInfo?.harvestCode || '-' }}</span>
-                            </view>
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">采收基地:</span>
-                                <span class="c-#333 f-w-500">
-                                    {{ item?.harvestInfo?.baseInfo?.baseName || '-' }}
-                                </span>
-                            </view>
-                        </template>
-
-                        <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
-                            <span class="c-#666">存放库房:</span>
-                            <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
-                        </view>
-                        <view class="pd2-4-0 f-s-28">
-                            <span class="c-#666">入库量:</span>
-                            <span class="c-#333 f-w-500">{{ item?.capacity }}{{ item?.unit }}</span>
-                        </view>
-                        <view class="d-flex">
-                            <view v-if="item?.inputAmount" class="pd2-4-0 f-s-28 flex1">
-                                <span class="c-#666">出库量:</span>
-                                <span class="c-#333 f-w-500">{{ item?.inputAmount || '0' }}{{ item?.unit }}</span>
-                            </view>
-                            <view v-if="item?.restAmount" class="pd2-4-0 f-s-28 flex1">
-                                <span class="c-danger">剩余量:</span>
-                                <span class="c-danger f-w-500">{{ item?.restAmount || '0' }}{{ item?.unit }}</span>
-                            </view>
-                        </view>
+                    <view class="b-radius bg-#fff p-rtv" @click.stop="$u.route({ url: '/plant/storage/fresh-goods/detail/index', params: { id: item.id } })">
+                        <FreshGoodsCard :item="item" :dict="{ pt_fresh_instore_type }"></FreshGoodsCard>
                     </view>
                 </up-swipe-action-item>
             </up-swipe-action>
@@ -102,6 +48,7 @@ import { useClientRequest } from '@/utils/request';
 import { selectDictListClass } from '@/utils/ruoyi';
 import { getStorageRoomNames } from '@/utils/common';
 import FreshGoodsBottom from './model/fresh-goods-bottom.vue';
+import FreshGoodsCard from '@/plant/models/warehouseCard/fresh-goods-card.vue';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { pt_fresh_instore_type } = toRefs<any>(proxy?.useDict('pt_fresh_instore_type'));
 const list = ref<any[]>();

+ 30 - 121
src/plant/storage/seed-source/detail/index.vue

@@ -1,6 +1,5 @@
 <template>
-    <z-paging ref="paging" bgColor="#F7F7F7" safe-area-inset-bottom paging-class="paging-btm-shadow"
-        scroll-with-animation>
+    <z-paging ref="paging" bgColor="#F7F7F7" safe-area-inset-bottom paging-class="paging-btm-shadow" scroll-with-animation>
         <template #top>
             <ut-navbar title="种源详情" :fixed="false" border></ut-navbar>
         </template>
@@ -12,86 +11,17 @@
                 </view>
                 <view>
                     <up-button @click="navigateToInOutRecords" type="primary" :customStyle="formItemBtnStyle">
-                        <image class="w-30 h-30 mr-10"
-                            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png"
-                            mode="widthFix" />
+                        <image class="w-30 h-30 mr-10" src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/plant/storage/ckcrkjl_icon.png" mode="widthFix" />
                         <span>查看出入库记录</span>
                     </up-button>
                 </view>
             </view>
-            <view class="bg-#fff pd-24">
-                <view class="d-flex j-sb a-c li-item-head mb-16">
-                    <view class="li-left-tag" :class="{ [`bg-instore-${form?.instoreType}`]: true }">{{ form?.seedLevel
-                        }}{{ selectDictLabel(pt_seed_instore_type, form?.instoreType) }}</view>
-                    <view class="f-s-22 c-#666">{{ form?.instoreBizInfo?.instoreDate }}</view>
-                </view>
-                <view class="mb-10">
-                    <span class="f-s-34 c-#333 f-w-500 mr-10">{{ form?.variety }}</span>
-                    <span class="f-s-24 c-#666">{{ selectDictLabel(pt_seed_type, form?.seedType) }}</span>
-                </view>
-                <template v-if="form?.instoreType == '2'">
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">入库批号:</span>
-                        <span class="c-#333 f-w-500">{{ form?.batchCode }}</span>
-                    </view>
-                    <!-- <view class="pd2-4-0 f-s-28">
-                            <span class="c-#666">溯源批号:</span>
-                            <span class="c-#333 f-w-500">暂无</span>
-                        </view> -->
-                    <view v-if="['A3', 'A4'].includes(form?.seedType)" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">菌种/菌株编号:</span>
-                        <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{
-                            form?.fungusCode }}</span>
-                    </view>
-                    <view v-if="form?.supplierId" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">供应商:</span>
-                        <span class="c-#333 f-w-500">{{ form?.supplierInfo?.cusName || '-' }}</span>
-                    </view>
-                    <view v-if="form?.warehouses?.length" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">存放库房:</span>
-                        <span class="c-#333 f-w-500">{{ getStorageRoomNames(form?.warehouses) || '-' }}</span>
-                    </view>
-                </template>
-                <template v-if="form?.instoreType == '3'">
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">采收批号:</span>
-                        <span class="c-#333 f-w-500">{{ form?.harvestInfo?.harvestCode || '-' }}</span>
+            <view v-if="form" class="bg-#fff">
+                <SeedSourceCard :item="form" :dict="{ pt_seed_instore_type, pt_seed_type, pt_fungus_code_type }">
+                    <view v-if="+form?.restAmount" class="pd3-20-40-0">
+                        <up-button @click="navigateToInventoryLoss" type="warning" plain :customStyle="{ background: '#FFF9EF', borderColor: '#F9D9A3' }">库存有消耗?库存损耗登记{{ '>' }}</up-button>
                     </view>
-                    <view class="pd2-4-0 f-s-28">
-                        <span class="c-#666">采收基地:</span>
-                        <span class="c-#333 f-w-500">
-                            {{ form?.harvestInfo?.baseInfo?.baseName || '-' }}
-                        </span>
-                    </view>
-                    <view v-if="['A3', 'A4'].includes(form?.seedType)" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">菌种/菌株编号:</span>
-                        <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{
-                            form?.fungusCode }}</span>
-                    </view>
-                    <view v-if="form?.warehouses?.length" class="pd2-4-0 f-s-28">
-                        <span class="c-#666">存放库房:</span>
-                        <span class="c-#333 f-w-500">{{ getStorageRoomNames(form?.warehouses) || '-' }}</span>
-                    </view>
-                </template>
-                <view class="pd2-4-0 f-s-28">
-                    <span class="c-#666">入库量:</span>
-                    <span class="c-#333 f-w-500">{{ form?.capacity }}{{ form?.unit }}</span>
-                </view>
-                <view class="d-flex">
-                    <view v-if="form?.inputAmount" class="pd2-4-0 f-s-28 flex1">
-                        <span class="c-#666">出库量:</span>
-                        <span class="c-#333 f-w-500">{{ form?.inputAmount || '0' }}{{ form?.unit }}</span>
-                    </view>
-                    <view v-if="form?.restAmount" class="pd2-4-0 f-s-28 flex1">
-                        <span class="c-primary">剩余量:</span>
-                        <span class="c-primary f-w-500">{{ form?.restAmount || '0' }}{{ form?.unit }}</span>
-                    </view>
-                </view>
-                <view v-if="+form?.restAmount" class="pd3-20-40-0">
-                    <up-button @click="navigateToInventoryLoss" type="warning" plain
-                        :customStyle="{ background: '#FFF9EF', borderColor: '#F9D9A3' }">库存有消耗?库存损耗登记{{ '>'
-                        }}</up-button>
-                </view>
+                </SeedSourceCard>
             </view>
             <template v-if="form?.instoreType == '3'">
                 <view class="pd-24">
@@ -100,8 +30,7 @@
                 <view class="bg-#fff pd-24" v-if="form?.harvestInfo">
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">采收日期:</span>
-                        <span class="c-#333 f-w-600">{{ form?.harvestInfo?.harvestDate || '-' }}至{{
-                            form?.harvestInfo?.harvestDateEnd || '-' }}</span>
+                        <span class="c-#333 f-w-600">{{ form?.harvestInfo?.harvestDate || '-' }}至{{ form?.harvestInfo?.harvestDateEnd || '-' }}</span>
                     </view>
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">采收批号:</span>
@@ -150,25 +79,18 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom" v-if="form?.instoreBizInfo?.motherFatherFlag">
                     <span class="c-#666">父母本情况:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_mother_father_flag,
-                        form?.instoreBizInfo?.motherFatherFlag)
-                        || '-' }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_mother_father_flag, form?.instoreBizInfo?.motherFatherFlag) || '-' }}</span>
                 </view>
-                <view v-if="form?.instoreBizInfo?.motherFatherFlag == '2' && form?.instoreBizInfo?.fatherVarietyInfo"
-                    class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="form?.instoreBizInfo?.motherFatherFlag == '2' && form?.instoreBizInfo?.fatherVarietyInfo" class="f-s-30 pd2-16-0 info-border-bottom">
                     <view class="c-#666 mb-10">父本品种:</view>
                     <view class="bg-#FBFDFB card-info-block pd-24 p-rtv">
                         <view class="mb-10">
-                            <span class="f-s-34 c-#333 f-w-5 mr-16">{{
-                                form?.instoreBizInfo?.fatherVarietyInfo?.varietyName
-                                }}</span>
+                            <span class="f-s-34 c-#333 f-w-5 mr-16">{{ form?.instoreBizInfo?.fatherVarietyInfo?.varietyName }}</span>
                             <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.fatherVarietyInfo?.latinName }}</span>
                         </view>
                         <view>
-                            <span class="f-s-28 c-#333 f-w-5 mr-16">{{
-                                form?.instoreBizInfo?.fatherVarietyInfo?.genusName }}</span>
-                            <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.fatherVarietyInfo?.genusLatinName
-                                }}</span>
+                            <span class="f-s-28 c-#333 f-w-5 mr-16">{{ form?.instoreBizInfo?.fatherVarietyInfo?.genusName }}</span>
+                            <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.fatherVarietyInfo?.genusLatinName }}</span>
                         </view>
                     </view>
                 </view>
@@ -176,16 +98,12 @@
                     <view class="c-#666 mb-10">母本品种:</view>
                     <view class="bg-#FBFDFB card-info-block pd-24 p-rtv">
                         <view class="mb-10">
-                            <span class="f-s-34 c-#333 f-w-5 mr-16">{{
-                                form?.instoreBizInfo?.motherVarietyInfo?.varietyName
-                                }}</span>
+                            <span class="f-s-34 c-#333 f-w-5 mr-16">{{ form?.instoreBizInfo?.motherVarietyInfo?.varietyName }}</span>
                             <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.motherVarietyInfo?.latinName }}</span>
                         </view>
                         <view>
-                            <span class="f-s-28 c-#333 f-w-5 mr-16">{{
-                                form?.instoreBizInfo?.motherVarietyInfo?.genusName }}</span>
-                            <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.motherVarietyInfo?.genusLatinName
-                                }}</span>
+                            <span class="f-s-28 c-#333 f-w-5 mr-16">{{ form?.instoreBizInfo?.motherVarietyInfo?.genusName }}</span>
+                            <span class="f-s-24 c-#666">{{ form?.instoreBizInfo?.motherVarietyInfo?.genusLatinName }}</span>
                         </view>
                     </view>
                 </view>
@@ -194,8 +112,7 @@
                         <span class="c-#666">{{ genCountMap[form?.seedType as 'A3' | 'A4'] }}:</span>
                         <span class="c-#333 f-w-600">
                             {{ form?.instoreBizInfo?.genCount || '-' }}
-                            <text v-if="form?.instoreBizInfo?.genUnit">{{ selectDictLabel(pt_gen_unit,
-                                form?.instoreBizInfo?.genUnit) }}</text>
+                            <text v-if="form?.instoreBizInfo?.genUnit">{{ selectDictLabel(pt_gen_unit, form?.instoreBizInfo?.genUnit) }}</text>
                         </span>
                     </view>
                 </template>
@@ -204,8 +121,7 @@
                         <span class="c-#666">繁衍世代:</span>
                         <span class="c-#333 f-w-600">
                             {{ form?.instoreBizInfo?.genCount || '-' }}
-                            <text v-if="form?.instoreBizInfo?.genUnit">{{ selectDictLabel(pt_gen_unit,
-                                form?.instoreBizInfo?.genUnit) }}</text>
+                            <text v-if="form?.instoreBizInfo?.genUnit">{{ selectDictLabel(pt_gen_unit, form?.instoreBizInfo?.genUnit) }}</text>
                         </span>
                     </view>
                 </template>
@@ -237,16 +153,13 @@
                 </view>
                 <view v-if="['A4', 'A8'].includes(form?.seedType as string)" class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">{{ selectDictLabel(pt_seed_type, form?.seedType as string) }}编号:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{
-                        form?.fungusCode }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_fungus_code_type, form?.fungusCodeType) }}/{{ form?.fungusCode }}</span>
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom" v-if="form?.instoreBizInfo?.idFlag">
                     <span class="c-#666">是否有个体标识:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.instoreBizInfo?.idFlag) || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(yes_no, form?.instoreBizInfo?.idFlag) || '-' }}</span>
                 </view>
-                <view v-if="form?.instoreBizInfo?.animals && form?.instoreBizInfo?.animals.length"
-                    class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="form?.instoreBizInfo?.animals && form?.instoreBizInfo?.animals.length" class="f-s-30 pd2-16-0 info-border-bottom">
                     <view class="c-#666 mb-10">个体标识号:</view>
                     <template v-for="(animal, index) in form?.instoreBizInfo?.animals" :key="index">
                         <view class="bg-#FBFDFB card-info-block pd-24 p-rtv mb-10 f-s-28 c-#333 f-w-500">
@@ -272,8 +185,7 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">繁殖材料:</span>
-                    <span class="c-#333 f-w-600">{{ form?.generationMaterial ? selectDictLabels(pt_breeding_materials,
-                        form?.generationMaterial, ',') : '-' }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.generationMaterial ? selectDictLabels(pt_breeding_materials, form?.generationMaterial, ',') : '-' }}</span>
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">繁殖地点/采集地点:</span>
@@ -287,8 +199,7 @@
                     <span class="c-#666">种源检疫证号:</span>
                     <span class="c-#333 f-w-600">{{ form?.seedCheckSn || '-' }}</span>
                 </view>
-                <view v-if="form?.seedCheckCert && form?.seedCheckCert.length"
-                    class="f-s-30 pd2-16-0 info-border-bottom">
+                <view v-if="form?.seedCheckCert && form?.seedCheckCert.length" class="f-s-30 pd2-16-0 info-border-bottom">
                     <view class="c-#666 mb-10">种源检疫证书:</view>
                     <ut-album :urls="form?.seedCheckCert"></ut-album>
                 </view>
@@ -303,10 +214,9 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">入库类型:</span>
-                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_seed_instore_type, form?.instoreType) || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ selectDictLabel(pt_seed_instore_type, form?.instoreType) || '-' }}</span>
                 </view>
-                <template v-if="form.instoreType == '2'">
+                <template v-if="form?.instoreType == '2'">
                     <view class="f-s-30 pd2-16-0 info-border-bottom">
                         <span class="c-#666">入库日期:</span>
                         <span class="c-#333 f-w-600">{{ form?.instoreBizInfo?.instoreDate || '-' }}</span>
@@ -334,13 +244,11 @@
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">最后修改人:</span>
-                    <span class="c-#333 f-w-600">{{ form?.operatorName || form?.updateByName || form?.createByName ||
-                        '-' }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.operatorName || form?.updateByName || form?.createByName || '-' }}</span>
                 </view>
                 <view class="f-s-30 pd2-16-0 info-border-bottom">
                     <span class="c-#666">最后修改时间:</span>
-                    <span class="c-#333 f-w-600">{{ form?.operateTime || form?.updateTime || form?.createTime || '-'
-                        }}</span>
+                    <span class="c-#333 f-w-600">{{ form?.operateTime || form?.updateTime || form?.createTime || '-' }}</span>
                 </view>
             </view>
         </template>
@@ -356,12 +264,13 @@
 import { formItemBtnStyle } from '@/assets/styles/uview-plus';
 import { getStorageRoomNames } from '@/utils/common';
 import { useClientRequest } from '@/utils/request';
-import { selectDictListClass } from '@/utils/ruoyi';
+
+import SeedSourceCard from '@/plant/models/warehouseCard/seed-source-card.vue';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
 const { pt_seed_instore_type, pt_seed_type, pt_seed_source, pt_mother_father_flag, pt_fungus_code_type, pt_breeding_materials, yes_no, pt_gen_unit } = toRefs<any>(proxy?.useDict('pt_seed_instore_type', 'pt_seed_type', 'pt_seed_source', 'pt_mother_father_flag', 'pt_fungus_code_type', 'pt_breeding_materials', 'yes_no', 'pt_gen_unit'));
 const paging = ref<any>(null);
-const form = ref<any>({});
+const form = ref<any>(null);
 const did = ref('');
 
 // 繁衍世代显示文案

+ 4 - 89
src/plant/storage/seed-source/list/index.vue

@@ -26,77 +26,8 @@
         <view class="pd-24 bg-#f7f7f7">
             <up-swipe-action>
                 <up-swipe-action-item v-for="(item, index) in list" :key="index" :name="item?.id" :options="optionsActionTemp" @click="clickTempSwipe($event, item)" class="mb-20 b-radius">
-                    <view class="b-radius bg-#fff pd-20 p-rtv" @click.stop="$u.route({ url: '/plant/storage/seed-source/detail/index', params: { id: item.id } })">
-                        <view class="d-flex j-sb a-c li-item-head mb-16">
-                            <view class="li-left-tag" :class="{ [`bg-instore-${item?.instoreType}`]: true }">{{ selectDictLabel(pt_seed_instore_type, item?.instoreType) }}</view>
-                            <view class="f-s-22 c-#666">{{ item?.instoreBizInfo?.instoreDate }}</view>
-                        </view>
-                        <view class="d-flex flex1 mb-10">
-                            <view class="flex1">
-                                <span class="f-s-34 c-#333 f-w-500 mr-10">{{ item?.variety }}</span>
-                                <span class="f-s-24 c-#666">{{ item?.seedLevel }}{{ selectDictLabel(pt_seed_type, item?.seedType) }}</span>
-                            </view>
-                            <view>
-                                <view v-if="item?.examinReport?.length" class="tag-span c-primary bg-#EBF6EE">已检验</view>
-                                <view v-else class="tag-span c-danger bg-#F9ECEA">未检验</view>
-                            </view>
-                        </view>
-                        <template v-if="item?.instoreType == '2'">
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">入库批号:</span>
-                                <span class="c-#333 f-w-500">{{ item?.batchCode }}</span>
-                            </view>
-                            <!-- <view class="pd2-4-0 f-s-28">
-                            <span class="c-#666">溯源批号:</span>
-                            <span class="c-#333 f-w-500">暂无</span>
-                        </view> -->
-                            <view v-if="['A3', 'A4'].includes(item?.seedType)" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">菌种/菌株编号:</span>
-                                <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, item?.fungusCodeType) }}/{{ item?.fungusCode }}</span>
-                            </view>
-                            <view v-if="item?.supplierId" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">供应商:</span>
-                                <span class="c-#333 f-w-500">{{ item?.supplierInfo?.cusName || '-' }}</span>
-                            </view>
-                            <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">存放库房:</span>
-                                <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
-                            </view>
-                        </template>
-                        <template v-if="item?.instoreType == '3'">
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">采收批号:</span>
-                                <span class="c-#333 f-w-500">{{ item?.harvestInfo?.harvestCode || '-' }}</span>
-                            </view>
-                            <view class="pd2-4-0 f-s-28">
-                                <span class="c-#666">采收基地:</span>
-                                <span class="c-#333 f-w-500">
-                                    {{ item?.harvestInfo?.baseInfo?.baseName || '-' }}
-                                </span>
-                            </view>
-                            <view v-if="['A3', 'A4'].includes(item?.seedType)" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">菌种/菌株编号:</span>
-                                <span class="c-#333 f-w-500">{{ selectDictLabel(pt_fungus_code_type, item?.fungusCodeType) }}/{{ item?.fungusCode }}</span>
-                            </view>
-                            <view v-if="item?.warehouses?.length" class="pd2-4-0 f-s-28">
-                                <span class="c-#666">存放库房:</span>
-                                <span class="c-#333 f-w-500">{{ getStorageRoomNames(item?.warehouses) || '-' }}</span>
-                            </view>
-                        </template>
-                        <view class="pd2-4-0 f-s-28">
-                            <span class="c-#666">入库量:</span>
-                            <span class="c-#333 f-w-500">{{ item?.capacity }}{{ item?.unit }}</span>
-                        </view>
-                        <view class="d-flex">
-                            <view v-if="item?.inputAmount" class="pd2-4-0 f-s-28 flex1">
-                                <span class="c-#666">出库量:</span>
-                                <span class="c-#333 f-w-500">{{ item?.inputAmount || '0' }}{{ item?.unit }}</span>
-                            </view>
-                            <view v-if="item?.restAmount" class="pd2-4-0 f-s-28 flex1">
-                                <span class="c-danger">剩余量:</span>
-                                <span class="c-danger f-w-500">{{ item?.restAmount || '0' }}{{ item?.unit }}</span>
-                            </view>
-                        </view>
+                    <view class="b-radius bg-#fff p-rtv" @click.stop="$u.route({ url: '/plant/storage/seed-source/detail/index', params: { id: item.id } })">
+                        <SeedSourceCard :item="item" :dict="{ pt_seed_instore_type, pt_seed_type, pt_fungus_code_type }"></SeedSourceCard>
                     </view>
                 </up-swipe-action-item>
             </up-swipe-action>
@@ -115,8 +46,7 @@
 <script setup lang="ts">
 import { useClientRequest } from '@/utils/request';
 import SourceBottom from './model/source-bottom.vue';
-import { selectDictListClass } from '@/utils/ruoyi';
-import { getStorageRoomNames } from '@/utils/common';
+import SeedSourceCard from '@/plant/models/warehouseCard/seed-source-card.vue';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { pt_seed_instore_type, pt_seed_type, pt_fungus_code_type } = toRefs<any>(proxy?.useDict('pt_seed_instore_type', 'pt_seed_type', 'pt_fungus_code_type'));
 const list = ref<any[]>();
@@ -207,20 +137,5 @@ onMounted(() => {
     box-sizing: border-box;
     padding: 12rpx;
 }
-.tag-span {
-    padding: 4rpx 12rpx;
-    font-size: 20rpx;
-    border-radius: 18rpx;
-}
-.li-item-head {
-    margin-left: -24rpx;
-    margin-top: -24rpx;
-}
-.li-left-tag {
-    padding: 6rpx 16rpx;
-    color: #fff;
-    border-radius: 16rpx 0 16rpx 0;
-    font-size: 20rpx;
-    font-weight: 500;
-}
+
 </style>