huangxw 2 semanas atrás
pai
commit
0093afa862

+ 42 - 6
src/plant/storage/fresh-goods/info-update/index.vue

@@ -87,8 +87,8 @@
                         <ut-upload v-model="form.examinReport" :max-count="50" valueType="array" accept="image,file"></ut-upload>
                     </up-form-item>
                     <!-- 鲜货产地 -->
+                    <view class="h-1" id="producePlacepppp"></view>
                     <PickerAreaInput v-model="form.producePlace" v-model:full-name="form.producePlaceName" title="选择鲜货产地">
-                        <view class="h-1" id="producePlacepppp"></view>
                         <up-form-item borderBottom label="鲜货产地" prop="producePlace" required>
                             <view v-if="form.producePlace" class="f-s-30 c-333 f-w-5 flex1">{{ form.producePlaceName }}</view>
                             <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择鲜货产地</view>
@@ -211,10 +211,15 @@
                     </up-form-item>
                     <!-- 鲜货产地 -->
                     <view class="h-1" id="producePlacepppp"></view>
-                    <up-form-item borderBottom label="鲜货产地" required>
-                        <view v-if="form.producePlace" class="f-s-30 c-333 f-w-5 flex1">{{ form.producePlaceName }}</view>
-                        <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择鲜货产地</view>
-                    </up-form-item>
+                    <PickerAreaInput v-model="form.producePlace" v-model:full-name="form.producePlaceName" title="选择鲜货产地">
+                        <up-form-item borderBottom label="鲜货产地" prop="producePlace" required>
+                            <view v-if="form.producePlace" class="f-s-30 c-333 f-w-5 flex1">{{ form.producePlaceName }}</view>
+                            <view v-else class="f-s-30 c-ccc f-w-4 flex1">请选择鲜货产地</view>
+                            <template #right>
+                                <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
+                            </template>
+                        </up-form-item>
+                    </PickerAreaInput>
                     <view class="h-1" id="productDatepppp"></view>
                     <up-form-item borderBottom label="采收日期" required>
                         <up-input v-model="form.productDate" readonly placeholder="请选择采收日期" border="none" clearable></up-input>
@@ -288,7 +293,38 @@ const form = ref<FreshGoodsInfoType | any>({
         remark: '',
     },
 });
-const rules = reactive({});
+const rules = reactive({
+    varietyId: [{ required: true, message: '请选择动植物名称' }],
+    part: [{ required: true, message: '请选择药用部位/对象' }],
+    sourceType: [{ required: true, message: '请选择鲜货来源' }],
+    capacity: [
+        { required: true, message: '请输入入库量' },
+        {
+            asyncValidator: (rule: any, value: any) => {
+                if (value === 0 || value === '0') return Promise.reject('入库量需大于0');
+                if (value === undefined || value === null || value === '') return Promise.resolve();
+                const num = Number(value);
+                if (Number.isNaN(num)) return Promise.reject('入库量请输入数字');
+                if (num <= 0) return Promise.reject('入库量需大于0');
+                return Promise.resolve();
+            },
+        },
+    ],
+    unit: [{ required: true, message: '请选择单位' }],
+    supplierId: [
+        {
+            asyncValidator: (rule: any, value: any) => {
+                if (['2'].includes(form.value.sourceType as string)) {
+                    if (!value) return Promise.reject('请选择供应商');
+                }
+                return Promise.resolve();
+            },
+        },
+    ],
+    producePlace: [{ required: true, message: '请选择鲜货产地' }],
+    productDate: [{ required: true, message: '请选择采收日期' }],
+    'instoreBizInfo.instoreMg': [{ required: true, message: '请输入入库人' }],
+});
 
 // 提交:当前页面改为单条鲜货信息,直接提交合并后的对象
 const submitForm = async () => {

+ 2 - 0
src/plant/storage/seed-source/info-update/index.vue

@@ -566,6 +566,7 @@ const form = ref<seedInfoListType | any>({
         instoreDate: '',
         instoreMg: '',
         remark: '',
+        animals: [],
     },
     generationMaterial: '',
     instoreType: '2',
@@ -712,6 +713,7 @@ const getDetailById = async (id: string) => {
             instoreBizInfo: {
                 ...form.value.instoreBizInfo,
                 ...res.data.instoreBizInfo,
+                animals: res.data.instoreBizInfo?.animals || [],
             },
         };
     }

+ 2 - 0
src/plant/storage/seed-source/models/animals-input.vue

@@ -137,6 +137,8 @@ const onScan = () => {
 watch(
     () => props.modelValue,
     (newVal) => {
+        console.log(newVal, '------');
+        
         list.value = newVal;
     },
 );