<template>
     <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="获评信息详情" :fixed="false" border></ut-navbar>
            </template>
            <view v-if="formRes?.res == '2'" class="pd-24 c-#FC333F f-s-24 bg-#F8E7E8">审核不通过理由：{{formRes?.msg}}</view>
            <view class="p-rtv">
                <!-- 基本信息 -->
                <image v-if="formRes?.res !== '0'" class="gap_res_image w-160 h-160" :src="`https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images-plt/common/base_res_logo${formRes.res}.png`" mode="widthFix" />
                <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">{{ selectDictLabel(pt_base_form, formRes?.type) || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">获评品种：</span>
                        <span class="c-#333">{{ formRes.medicineName || '-' }}</span>
                    </view>
                    <view class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">获评日期：</span>
                        <span class="c-#333">{{ formRes?.ratedDate || '-' }}</span>
                    </view>
                    <view v-if="formRes.certFile" class="f-s-30 pd2-16-0 info-border-bottom">
                        <view class="f-s-30 c-#666 mb-10">官方公示证明材料</view>
                        <ut-album :urls="formRes.certFile"></ut-album>
                    </view>
                    <view v-if="formRes.certUrl" class="f-s-30 pd2-16-0 info-border-bottom">
                        <span class="c-#666">官方公示网址：</span>
                        <span class="c-#333">{{ formRes.certUrl || '-' }}</span>
                    </view>
                    <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">
                        <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">
                        <view class="f-s-30 c-#666 mb-10">基地范围：</view>
                        <view class="bg-#f7f7f7 d-flex ov-hd p-rtv">
                            <image class="w-full" v-if="form?.baseInfo?.gapInfo?.basePic" :src="form?.baseInfo?.gapInfo?.basePic" mode="widthFix" @click="previewBasePic"></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 || '亩' }}</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 v-if="formRes.res == '0'" #bottom>
                <view class="pd-20 d-flex">
                    <up-button @click="passAudit" class="mr-30" type="primary">审核通过</up-button>
                    <up-button @click="showNoPass = true" type="error">审核不通过</up-button>
                </view>
            </template>
        </z-paging>
        <ut-confirm-dialog v-model:show="showNoPass" width="680rpx">
            <view>
                <up-form ref="upFormNoPassRef" :model="formNoPass" :rules="noPassRules" labelWidth="auto" class="p-rtv" labelPosition="top">
                    <up-form-item label="不通过原因" prop="msg" required>
                        <up-textarea v-model="formNoPass.msg" :maxlength="200" placeholder="请输入不通过原因" auto-height></up-textarea>
                    </up-form-item>
                </up-form>
            </view>
            <template #footer>
                <view class="d-flex j-c pd-30">
                    <up-button @click="showNoPass = false" class="mr-30">取消</up-button>
                    <up-button @click="noPassAudit" type="error">确认不通过</up-button>
                </view>
            </template>
        </ut-confirm-dialog>
</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 paging = ref<any>(null);
const form = ref<any>({});
const did = ref('');

// 获取详情（GAP获评信息）
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 previewBasePic = () => {
    const url = form.value?.gapInfo.basePic;
    if (!url) return;
    uni.previewImage({ urls: [url], current: 0 });
};
const passAudit = async () => {
    try {
        const res = await uni.showModal({
            title: '通过提示',
            content: '确认通过该基地审核吗？',
            confirmColor: '#37A954',
            confirmText: '确认',
        });
        if (!res.confirm && !res.content) return;
        await uni.showLoading({
            title: '通过中...',
            mask: true,
        });
         const resq: any = await useClientRequest.post(`/plt-api/app/base/approvalSwyq`, {
            targetId: did.value,
            res: '1',
            targetType: formRes.value.type,
        });
        if (!resq || resq.code !== 200) return;
        uni.hideLoading();
        uni.showToast({
            title: '操作成功',
            icon: 'success',
        });
        paging.value?.reload();
        uni.$emit('refreshGapBaseListAudit');
        uni.$emit('refreshSwyqListAudit');
        //返回上一页
        setTimeout(() => uni.navigateBack({
            delta: 1,
        }), 300);
    } catch (error) {
        console.error('通过基地审核失败:', error);
    }
};
const showNoPass = ref(false);
const upFormNoPassRef = ref<any>(null);
const noPassRules = {
    msg: [
        { required: true, message: '请输入不通过原因' },
        { min: 2, max: 200, message: '不通过原因长度在2到200个字符之间' },
    ],
};
const formRes = ref<any>({
    type: '',
    medicineCode: undefined,
    medicineName: '',
    ratedDate: '',
    certFile: '',
    certUrl: '',
});
const formNoPass = ref({
    msg: '',
});
const noPassAudit = async () => {
    try {
        const valid = await upFormNoPassRef.value?.validate();
        if (!valid) return;
    } catch (error) {
        return;
    }
    try {
     
        await uni.showLoading({
            title: '提交中...',
            mask: true,
        });
        await useClientRequest.post(`/plt-api/app/base/approvalSwyq`, {
            targetId: did.value,
            res: '2',
            ...formNoPass.value,
            targetType: formRes.value.type,
        });
        uni.hideLoading();
        uni.showToast({
            title: '操作成功',
            icon: 'success',
        });
        showNoPass.value = false;
        paging.value?.reload();
        uni.$emit('refreshSwyqBaseListAudit');
        //返回上一页
        uni.navigateBack({
            delta: 1,
        });
    } catch (error) {
        console.error('不通过基地审核失败:', error);
    }
};

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);
}

.gap_res_image {
    position: absolute;
    right: 30rpx;
    top: 30rpx;
}
</style>
