|
|
@@ -0,0 +1,235 @@
|
|
|
+<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="获评信息详情" :fixed="false" border></ut-navbar>
|
|
|
+ </template>
|
|
|
+ <view v-if="form?.swyqRes == '2'" class="pd-24 c-#FC333F f-s-24 bg-#F8E7E8">审核不通过理由:{{form?.msg}}</view>
|
|
|
+ <view class="p-rtv">
|
|
|
+ <!-- 基本信息 -->
|
|
|
+ <image v-if="form?.res !== '0'" class="gap_res_image w-160 h-160" :src="`/static/images/common/base_res_logo${form.swyqRes}.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">三无一全</span>
|
|
|
+ </view>
|
|
|
+ <view class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <span class="c-#666">获评品种:</span>
|
|
|
+ <span class="c-#333">{{ form?.swyqVarietyName || '-' }}</span>
|
|
|
+ </view>
|
|
|
+ <view class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <span class="c-#666">获评日期:</span>
|
|
|
+ <span class="c-#333">{{ form?.swyqRatedDate || '-' }}</span>
|
|
|
+ </view>
|
|
|
+ <view v-if="form?.swyqCertFile" class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <view class="f-s-30 c-#666 mb-10">官方公示证明材料</view>
|
|
|
+ <ut-album :urls="form?.swyqCertFile"></ut-album>
|
|
|
+ </view>
|
|
|
+ <view v-if="form?.swyqUrl" class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <span class="c-#666">官方公示网址:</span>
|
|
|
+ <span class="c-#333">{{ form?.swyqUrl || '-' }}</span>
|
|
|
+ </view>
|
|
|
+ <view class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <span class="c-#666">基地名称:</span>
|
|
|
+ <span class="c-#333">{{ form?.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?.baseType) || '-' }}</span>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="f-s-30 pd2-16-0 info-border-bottom">
|
|
|
+ <span class="c-#666">基地所在地区:</span>
|
|
|
+ <span class="c-#333">{{ form?.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?.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?.gapInfo?.basePic" :src="form?.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?.gapInfo?.area || '-' }}{{ form?.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?.gapInfo?.lng || '-' }}, N{{ form?.gapInfo?.lat || '-' }}</span>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <template v-if="form.swyqRes == '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>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import { useClientRequest } from '@/utils/request';
|
|
|
+import { getUrlParams, recursiveDecodeURIComponent } from '@/utils/ruoyi';
|
|
|
+const props = defineProps({
|
|
|
+ id: {
|
|
|
+ type: String,
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
+});
|
|
|
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
+const { pt_base_type } = toRefs<any>(proxy?.useDict('pt_base_type'));
|
|
|
+const paging = ref<any>(null);
|
|
|
+const form = ref<any>({});
|
|
|
+const did = ref('');
|
|
|
+
|
|
|
+// 获取详情(GAP获评信息)
|
|
|
+const getDetailById = async () => {
|
|
|
+ if (!props.id) return;
|
|
|
+ const res = await useClientRequest.get(`/plt-api/app/base/getInfoById/${props.id}`);
|
|
|
+ if (res && res.code === 200) {
|
|
|
+ form.value = res.data || {};
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const onRefresh = () => {
|
|
|
+ getDetailById();
|
|
|
+ paging.value?.complete();
|
|
|
+};
|
|
|
+onMounted(() => {
|
|
|
+ getDetailById();
|
|
|
+});
|
|
|
+// 预览基地范围图片
|
|
|
+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,
|
|
|
+ });
|
|
|
+ await useClientRequest.post(`/plt-api/app/base/approvalSwyq`, {
|
|
|
+ targetId: props.id,
|
|
|
+ res: '1',
|
|
|
+ });
|
|
|
+ uni.hideLoading();
|
|
|
+ uni.showToast({
|
|
|
+ title: '操作成功',
|
|
|
+ icon: 'success',
|
|
|
+ });
|
|
|
+ paging.value?.reload();
|
|
|
+ uni.$emit('refreshSwyqListAudit');
|
|
|
+ //返回上一页
|
|
|
+ uni.navigateBack({
|
|
|
+ delta: 1,
|
|
|
+ });
|
|
|
+ } 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 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: props.id,
|
|
|
+ res: '2',
|
|
|
+ ...formNoPass.value,
|
|
|
+ });
|
|
|
+ uni.hideLoading();
|
|
|
+ uni.showToast({
|
|
|
+ title: '操作成功',
|
|
|
+ icon: 'success',
|
|
|
+ });
|
|
|
+ showNoPass.value = false;
|
|
|
+ paging.value?.reload();
|
|
|
+ uni.$emit('refreshSwyqListAudit');
|
|
|
+ //返回上一页
|
|
|
+ uni.navigateBack({
|
|
|
+ delta: 1,
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ console.error('不通过基地审核失败:', error);
|
|
|
+ }
|
|
|
+};
|
|
|
+</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>
|