This commit is contained in:
2026-01-27 16:26:51 +08:00
parent e6cbedbc01
commit 3c14bbbebf
2 changed files with 141 additions and 5 deletions

View File

@@ -184,7 +184,10 @@ export const certificationApi = {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}),
// 管理员代用户完成认证(暂不关联合同)
adminCompleteWithoutContract: (data) => request.post('/certifications/admin/complete-without-contract', data)
}
// API相关接口

View File

@@ -546,6 +546,11 @@
<el-icon class="text-4xl text-gray-300 mb-2"><warning /></el-icon>
<div class="text-lg font-medium text-gray-600">该用户尚未完成企业认证</div>
<div class="text-sm text-gray-500 mt-1">完成企业认证后可查看详细信息</div>
<div class="mt-4">
<el-button type="primary" @click="openAdminCompleteCertDialog" size="small">
代用户完成认证
</el-button>
</div>
</div>
</div>
</el-dialog>
@@ -641,12 +646,61 @@
</div>
</template>
</el-dialog>
<!-- 管理员代用户完成认证弹窗 -->
<el-dialog v-model="adminCertDialogVisible" title="代用户完成企业认证" :width="isMobile ? '90%' : '600px'"
class="enterprise-dialog">
<div v-if="selectedUser" class="space-y-4">
<div class="user-info mb-4">
<div class="info-item">
<span class="info-label">用户手机:</span>
<span class="info-value">{{ formatPhone(selectedUser.phone) }}</span>
</div>
</div>
<el-form ref="adminCertFormRef" :model="adminCertForm" :rules="adminCertRules" label-width="120px">
<el-form-item label="企业名称" prop="company_name">
<el-input v-model="adminCertForm.company_name" placeholder="请输入企业名称" />
</el-form-item>
<el-form-item label="统一社会信用代码" prop="unified_social_code">
<el-input v-model="adminCertForm.unified_social_code" placeholder="请输入统一社会信用代码" />
</el-form-item>
<el-form-item label="法定代表人姓名" prop="legal_person_name">
<el-input v-model="adminCertForm.legal_person_name" placeholder="请输入法定代表人姓名" />
</el-form-item>
<el-form-item label="法定代表人身份证" prop="legal_person_id">
<el-input v-model="adminCertForm.legal_person_id" placeholder="请输入法定代表人身份证号码" />
</el-form-item>
<el-form-item label="法人手机号" prop="legal_person_phone">
<el-input v-model="adminCertForm.legal_person_phone" placeholder="请输入法人手机号" />
</el-form-item>
<el-form-item label="企业地址" prop="enterprise_address">
<el-input v-model="adminCertForm.enterprise_address" placeholder="请输入企业地址" />
</el-form-item>
<el-form-item label="操作原因" prop="reason">
<el-input v-model="adminCertForm.reason" type="textarea" :rows="3" placeholder="请填写本次代用户完成认证的原因,便于审计" />
</el-form-item>
</el-form>
</div>
<template #footer>
<div :class="['dialog-footer', isMobile ? 'flex-col' : '']">
<el-button :class="isMobile ? 'w-full' : ''" @click="adminCertDialogVisible = false">
取消
</el-button>
<el-button type="primary" :class="isMobile ? 'w-full' : ''" @click="handleSubmitAdminCert"
:loading="adminCertLoading">
确认完成认证
</el-button>
</div>
</template>
</el-dialog>
</template>
</ListPageLayout>
</template>
<script setup>
import { financeApi, userApi } from '@/api'
import { certificationApi, financeApi, userApi } from '@/api'
import FilterItem from '@/components/common/FilterItem.vue'
import FilterSection from '@/components/common/FilterSection.vue'
import ListPageLayout from '@/components/common/ListPageLayout.vue'
@@ -673,6 +727,30 @@ const selectedUser = ref(null)
const rechargeLoading = ref(false)
const rechargeFormRef = ref(null)
// 管理员代用户完成认证
const adminCertDialogVisible = ref(false)
const adminCertLoading = ref(false)
const adminCertFormRef = ref(null)
const adminCertForm = reactive({
company_name: '',
unified_social_code: '',
legal_person_name: '',
legal_person_id: '',
legal_person_phone: '',
enterprise_address: '',
reason: ''
})
const adminCertRules = {
company_name: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
unified_social_code: [{ required: true, message: '请输入统一社会信用代码', trigger: 'blur' }],
legal_person_name: [{ required: true, message: '请输入法定代表人姓名', trigger: 'blur' }],
legal_person_id: [{ required: true, message: '请输入法定代表人身份证号码', trigger: 'blur' }],
legal_person_phone: [{ required: true, message: '请输入法人手机号', trigger: 'blur' }],
enterprise_address: [{ required: true, message: '请输入企业地址', trigger: 'blur' }],
reason: [{ required: true, message: '请填写本次操作原因', trigger: 'blur' }]
}
// 统计数据
const stats = ref({
total_users: 0,
@@ -738,14 +816,14 @@ onMounted(() => {
if (route.query.company_name) {
filters.company_name = route.query.company_name
}
// 如果有手机号参数,设置为搜索条件
if (route.query.phone) {
filters.phone = route.query.phone
}
loadUsers()
loadStats()
})
@@ -862,6 +940,61 @@ const handleViewUser = (user) => {
userDialogVisible.value = true
}
// 打开管理员代用户完成认证弹窗
const openAdminCompleteCertDialog = () => {
if (!selectedUser.value) return
// 如果用户已有部分企业信息,做回显
if (selectedUser.value.enterprise_info) {
const info = selectedUser.value.enterprise_info
adminCertForm.company_name = info.company_name || ''
adminCertForm.unified_social_code = info.unified_social_code || ''
adminCertForm.legal_person_name = info.legal_person_name || ''
adminCertForm.legal_person_id = info.legal_person_id || ''
adminCertForm.legal_person_phone = info.legal_person_phone || ''
adminCertForm.enterprise_address = info.enterprise_address || ''
} else {
adminCertForm.company_name = ''
adminCertForm.unified_social_code = ''
adminCertForm.legal_person_name = ''
adminCertForm.legal_person_id = ''
adminCertForm.legal_person_phone = ''
adminCertForm.enterprise_address = ''
}
adminCertForm.reason = ''
adminCertDialogVisible.value = true
}
// 提交管理员代用户完成认证
const handleSubmitAdminCert = async () => {
if (!adminCertFormRef.value || !selectedUser.value) return
try {
await adminCertFormRef.value.validate()
adminCertLoading.value = true
const payload = {
user_id: selectedUser.value.id,
company_name: adminCertForm.company_name,
unified_social_code: adminCertForm.unified_social_code,
legal_person_name: adminCertForm.legal_person_name,
legal_person_id: adminCertForm.legal_person_id,
legal_person_phone: adminCertForm.legal_person_phone,
enterprise_address: adminCertForm.enterprise_address,
reason: adminCertForm.reason
}
await certificationApi.adminCompleteWithoutContract(payload)
ElMessage.success('已代用户完成企业认证')
adminCertDialogVisible.value = false
userDialogVisible.value = false
// 重新加载用户列表和统计
await loadUsers()
await loadStats()
} catch (error) {
console.error('代用户完成认证失败:', error)
ElMessage.error(error?.response?.data?.message || '代用户完成认证失败')
} finally {
adminCertLoading.value = false
}
}
// 查看合同
const handleViewContract = (contract) => {
if (contract.contract_file_url) {