<template>
    <view class="ksqulc">
        <z-paging ref="paging" bgColor="#F7F7F7" safe-area-inset-bottom paging-class="paging-btm-shadow" refresher-only @onRefresh="onRefresh" scroll-with-animation>
            <template #top>
                <ut-navbar :title="`标记为${selectDictLabel(pt_base_form, formRes.type)}基地`" :fixed="false" border></ut-navbar>
            </template>
            <view class="p-rtv">
                <view ref="baseRef" class="pd-24" id="base12345">
                    <view class="startline-title">证明材料</view>
                </view>
                <view class="pd-24 bg-#fff mb-10">
                    <up-form class="p-rtv" labelPosition="top" :model="formRes" :rules="rulesSwyq" labelWidth="auto" ref="upFormRef">
                        <!-- 校验定位：基地类型 -->
                        <!-- 基地信息部分 -->
                        <view>
                            <!-- 选择获评品种 -->
                            <view class="h-1" id="medicineCodepppp"></view>
                            <up-form-item @click="selectMedicine" borderBottom label="获评品种" required prop="medicineCode">
                                <view v-if="formRes.medicineCode" class="f-s-30 c-333 f-w-5 flex1">{{ formRes.medicineName }}</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>
                            <!-- 校验定位：建设时间 -->
                            <view class="h-1" id="ratedDatepppp"></view>
                            <ut-datetime-picker v-model="formRes.ratedDate" mode="date" dateFields="day">
                                <up-form-item borderBottom label="获评基地时间" required prop="ratedDate">
                                    <up-input v-model="formRes.ratedDate" placeholder="请选择获评基地时间" border="none" clearable></up-input>
                                    <template #right>
                                        <up-icon size="22rpx" color="#2A6D52" name="arrow-down-fill"></up-icon>
                                    </template>
                                </up-form-item>
                            </ut-datetime-picker>
                            <!-- 官方公示证明材料 -->
                            <view class="h-1" id="certFilepppp"></view>
                            <up-form-item borderBottom required prop="certFile">
                                <view class="flex1">
                                    <view style="margin-bottom: 10rpx">
                                        <span class="c-666 f-s-30">官方公示证明材料</span>
                                        <span class="f-s-26 c-999">（可上传9张）</span>
                                    </view>
                                    <ut-upload v-model="formRes.certFile" :max-count="9"></ut-upload>
                                </view>
                            </up-form-item>
                            <!-- 官方公示网址 -->
                            <view class="h-1" id="certUrlpppp"></view>
                            <up-form-item borderBottom label="官方公示网址" prop="certUrl" required>
                                <up-input v-model="formRes.certUrl" placeholder="请输入官方公示网址" border="none" clearable></up-input>
                            </up-form-item>
                        </view>
                    </up-form>
                </view>
                <view ref="baseRef" class="pd-24" id="base12345">
                    <view class="startline-title">所标记的基本信息如下，请核对</view>
                </view>
                <view class="pd-24 bg-#fff mb-10">
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">基地名称：</span>
                        <span class="c-#333">{{ form?.baseInfo?.baseName || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">基地类型：</span>
                        <span class="c-#333">{{ selectDictLabel(pt_base_type, form?.baseInfo?.baseType) || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <view class="f-s-30 c-#666 mb-10">基地范围：</view>
                        <view class="bg-#f7f7f7 d-flex ov-hd p-rtv">
                            <image @click="previewImage([form?.baseInfo?.gapInfo?.basePic])" class="w-full" v-if="form?.baseInfo?.gapInfo?.basePic" preview :src="form?.baseInfo?.gapInfo?.basePic" mode="'widthFix'"></image>
                            <view v-else class="w-full h-120 d-flex a-c j-c c-999">暂无基地范围</view>
                        </view>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">基地面积：</span>
                        <span class="c-#333">{{ form?.baseInfo?.gapInfo?.area || '-' }}{{ form?.baseInfo?.gapInfo?.areaUnit || mapUnitByBaseType[form?.baseInfo?.baseType || '1'] }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">基地所在地区：</span>
                        <span class="c-#333">{{ form?.baseInfo?.gapInfo?.adcodeName || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">详细地址：</span>
                        <span class="c-#333">{{ form?.baseInfo?.gapInfo?.address || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">基地经纬度：</span>
                        <span class="c-#333">E{{ form?.baseInfo?.gapInfo?.lng || '-' }}, N{{ form?.baseInfo?.gapInfo?.lat || '-' }}</span>
                    </view>
                </view>
            </view>
            <template #bottom>
                <view class="pd-20 d-flex">
                    <up-button type="primary" @click="submitForm">确认并提交</up-button>
                </view>
            </template>
        </z-paging>
    </view>
</template>
<script setup lang="ts">
import { useClientRequest } from '@/utils/request';
import { getUrlParams, recursiveDecodeURIComponent } from '@/utils/ruoyi';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const {  pt_base_type, pt_base_form } = toRefs<any>(proxy?.useDict( 'pt_base_type', 'pt_base_form' ));
const tabs = reactive([
    { label: '基本信息', value: 'base' },
    { label: '地块信息', value: 'plot' },
    { label: '选址依据及环境信息', value: 'environment' },
]);
const activeTab = ref('base');
const paging = ref<any>(null);
const mapUnitByBaseType: any = {
    '1': '亩',
    '2': '平方米',
    '3': '平方米',
};
const form = ref<any>({});
const formRes = ref<any>({
    type: '',
    medicineCode: undefined,
    medicineName: '',
    ratedDate: '',
    certFile: '',
    certUrl: '',
});
const rulesSwyq = reactive<any>({
    medicineCode: [{ required: true, message: '请选择获评品种' }],
    ratedDate: [{ required: true, message: '请选择获评基地时间' }],
    certFile: [{ required: true, message: '请上传官方公示证明材料' }],
    certUrl: [{ required: true, message: '请输入官方公示网址' }],
});
// 改成去选择获评品种页面
const selectMedicine = () => {
    uni.$on('medicineSelected', (medicine: any) => {
        formRes.value.medicineCode = medicine.medicineCode;
        formRes.value.medicineName = medicine.medicineName;
        uni.$off('medicineSelected');
    });
    uni.$u.route({
        type: 'navigateTo',
        url: '/tools/select-medicine/index',
        params: {
            singleSelect: true,
        },
    });
};
const did = ref('');
// 根据id获取基地详情
const getDetailById = async (id: string) => {
    const res = await useClientRequest.get(`/plt-api/app/base/getInfoAllById/${id}`);
    if (!res || res.code !== 200) return;
    form.value = res.data || {};
    res?.data?.baseInfo?.resInfo?.forEach((item: any) => {
        if (item?.type === formRes.value.type) {
            formRes.value = {
                ...item
            }
        }
    });
};
const onRefresh = () => {
    getDetailById(did.value);
    paging.value?.complete();
};
const upFormRef = ref<any>(null);
const submitForm = async () => {
    uni.$u.debounce(
        async () => {
            try {
                await upFormRef.value?.validate();
            } catch (error: any) {
                // 滚动到第一个错误字段
                const firstErrorField = error && error[0].prop + 'pppp';
                paging.value?.scrollIntoViewById(firstErrorField, 30, true);
                return;
            }
            // 提交表单
            uni.showLoading({
                title: '提交中...',
            });
            try {
                const res = formRes.value?.res ? await useClientRequest.post('/plt-api/app/base/updateSwyqBase', {
                    ...formRes.value,
                    id: did.value,
                }) : await useClientRequest.post('/plt-api/app/base/addSwyqBase', {
                    ...formRes.value,
                    id: did.value,
                });
                if (!res || res.code !== 200) return;
                uni.hideLoading();
                uni.showToast({
                    title: '提交成功',
                    icon: 'success',
                });

                uni.$emit('refreshBase');
                uni.$emit('refreshBaseList');
                // 返回上一页
                uni.$u.route({
                    type: 'redirect',
                    url: '/plant/base/mark-base-detail/index',
                    params: {
                        id: did.value,
                        type: formRes.value.type,
                    },
                });
            } catch (error) {
                
            }
        },
        500,
        true
    );
};
// 判断节点是否在可视区域内如果在则切换tab createIntersectionObserver
onLoad((options: any) => {
    did.value = options?.id || getUrlParams(recursiveDecodeURIComponent(options?.q))?.id || '';
    formRes.value.type = options?.type || getUrlParams(recursiveDecodeURIComponent(options?.q))?.type || '';
    getDetailById(did.value);
});
</script>
<style lang="scss" scoped>
.z-paging-wrap {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    left: 0;
}

.btn-aree-center {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}

.plot-item {
    border: 1rpx solid rgba($u-primary, 0.4);
    border-radius: 10rpx;
}
.gap-info-card {
    border: 1rpx solid rgba($u-primary, 0.4);
}
.ksqulc {
    position: relative;
    height: 100vh;
}
</style>
