<template> 
 | 
  <LoadingLayout> 
 | 
    <AppContainer> 
 | 
      <PageFormLayout title="材料审核"> 
 | 
        <DetailView :form="state.detail" :has-form="true"> 
 | 
          <template #table> 
 | 
            <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView> 
 | 
          </template> 
 | 
          <template #form> 
 | 
            <ProForm :model="state.form" ref="formRef" label-width="120px"> 
 | 
              <ProFormCol> 
 | 
                <ProFormColItem :span="12"> 
 | 
                  <ProFormItemV2 
 | 
                    label="申报审核:" 
 | 
                    prop="status" 
 | 
                    :check-rules="[{ message: '请选择审核状态' }]" 
 | 
                  > 
 | 
                    <ProFormRadio v-model="state.form.status" :value-enum="DataRangeEnumText" /> 
 | 
                  </ProFormItemV2> 
 | 
                </ProFormColItem> 
 | 
              </ProFormCol> 
 | 
              <ProFormCol> 
 | 
                <ProFormColItem> 
 | 
                  <ProFormItemV2 label="驳回原因:" prop="remark"> 
 | 
                    <ProFormTextArea 
 | 
                      v-model="state.form.remark" 
 | 
                      placeholder="请输入" 
 | 
                      show-word-limit 
 | 
                      :maxlength="200" 
 | 
                    ></ProFormTextArea> 
 | 
                  </ProFormItemV2> 
 | 
                </ProFormColItem> 
 | 
              </ProFormCol> 
 | 
            </ProForm> 
 | 
          </template> 
 | 
        </DetailView> 
 | 
        <template #footer> 
 | 
          <el-button @click="handleBack">关闭</el-button> 
 | 
          <el-button type="primary" @click="handleConfirm()">提交</el-button> 
 | 
        </template> 
 | 
      </PageFormLayout> 
 | 
    </AppContainer> 
 | 
  </LoadingLayout> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
import { 
 | 
  AppContainer, 
 | 
  ProForm, 
 | 
  ProFormCol, 
 | 
  ProFormColItem, 
 | 
  ProFormItemV2, 
 | 
  ProFormTextArea, 
 | 
  ProFormRadio, 
 | 
  LoadingLayout, 
 | 
  UploadUserFile, 
 | 
  PageFormLayout, 
 | 
} from '@bole-core/components'; 
 | 
import { DataRangeEnum, DataRangeEnumText } from '@/constants'; 
 | 
import DetailView from '@/components/commonView/DetailView.vue'; 
 | 
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue'; 
 | 
import { useQuery } from '@tanstack/vue-query'; 
 | 
import * as informationServices from '@/services/api/Information'; 
 | 
import { convertApi2FormUrlOnlyOne } from '@/utils'; 
 | 
import { useRouteView } from '@/hooks'; 
 | 
import { FormInstance } from 'element-plus'; 
 | 
  
 | 
defineOptions({ 
 | 
  name: 'MaterialReviewAudit', 
 | 
}); 
 | 
  
 | 
const route = useRoute(); 
 | 
const { closeViewPush } = useRouteView(); 
 | 
const id = route.params?.id as string; 
 | 
const state = reactive({ 
 | 
  detail: { 
 | 
    categoryName: '', 
 | 
    amount: 0, 
 | 
    url: [] as UploadUserFile[], 
 | 
  }, 
 | 
  form: { 
 | 
    status: '' as any as DataRangeEnum, 
 | 
    remark: '', 
 | 
  }, 
 | 
}); 
 | 
  
 | 
const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>(); 
 | 
  
 | 
const { data: detail, isLoading } = useQuery({ 
 | 
  queryKey: ['informationServices/getInformationShowDetail', id], 
 | 
  queryFn: async () => { 
 | 
    return await informationServices.getInformationShowDetail( 
 | 
      { id: id }, 
 | 
      { 
 | 
        showLoading: false, 
 | 
      } 
 | 
    ); 
 | 
  }, 
 | 
  placeholderData: () => ({} as API.InformationShowDetailDto), 
 | 
  onSuccess(data) { 
 | 
    state.detail.categoryName = data.categoryName; 
 | 
    state.detail.amount = data.attentionCount; 
 | 
    state.detail.url = convertApi2FormUrlOnlyOne(data.avatarUrl); 
 | 
  
 | 
    tableRef.value?.getList(); 
 | 
  }, 
 | 
}); 
 | 
  
 | 
function handleBack() { 
 | 
  closeViewPush(route, { 
 | 
    name: 'MaterialReviewList', 
 | 
  }); 
 | 
} 
 | 
  
 | 
const formRef = ref<FormInstance>(); 
 | 
function handleConfirm() { 
 | 
  if (!formRef.value) return; 
 | 
  formRef.value.validate((valid) => { 
 | 
    if (valid) { 
 | 
      confirm(); 
 | 
    } else { 
 | 
      return; 
 | 
    } 
 | 
  }); 
 | 
} 
 | 
  
 | 
function confirm() {} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
@use '@/style/common.scss' as *; 
 | 
</style> 
 |