173 lines
6.1 KiB
Vue
173 lines
6.1 KiB
Vue
<template>
|
|
<div>
|
|
<div class="basic-info-title">
|
|
<img src="@/assets/enterpriseLibrary/basic-info.png" alt="基本信息">
|
|
<span>基本信息</span>
|
|
</div>
|
|
<el-form :model="form" :rules="rules" ref="basicInfoForm" label-width="110px" label-position="top">
|
|
<!-- 营业执照 -->
|
|
<el-form-item label="营业执照" prop="fileList">
|
|
<UploadFile :fileList="form.fileList" :fileUploadRule="fileUploadRule" @file-change="handleFileChange"/>
|
|
</el-form-item>
|
|
<el-form-item label="企业名称" prop="enterpriseName">
|
|
<el-input v-model="form.enterpriseName" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="统一社会信用代码" prop="enterpriseCode">
|
|
<el-input v-model="form.enterpriseCode" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="注册资本" prop="registeredCapital">
|
|
<el-input v-model="form.registeredCapital" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="营业期限" prop="businessTerm">
|
|
<el-input v-model="form.businessTerm" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="住所" prop="residence">
|
|
<el-input v-model="form.residence" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="经营范围" prop="businessScope">
|
|
<el-input v-model="form.businessScope" placeholder="自动提取"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import UploadFile from '@/views/common/UploadFile.vue'
|
|
export default {
|
|
name: 'BasicInfo',
|
|
components: {
|
|
UploadFile
|
|
},
|
|
dicts: ['identification_tag'],
|
|
data() {
|
|
return {
|
|
form: {
|
|
name: '',
|
|
enterpriseName: '',
|
|
enterpriseCode: '',
|
|
registeredCapital: '',
|
|
businessTerm: '',
|
|
residence: '',
|
|
businessScope: '',
|
|
fileList: []
|
|
},
|
|
// OCR 识别规则
|
|
// ocrRuleList: ['business_license', 'face_id_card_portrait', 'national_emblem_id_card', 'account_opening_license'],
|
|
ocrRuleList: ['business_license'],
|
|
fileUploadList: [],
|
|
ocrResult: {
|
|
"企业名称": "enterpriseName",
|
|
"统一社会信用代码": "enterpriseCode",
|
|
"注册资本": "registeredCapital",
|
|
"营业期限": "businessTerm",
|
|
"住所": "residence",
|
|
"经营范围": "businessScope",
|
|
},
|
|
rules: {
|
|
fileList: [
|
|
{ required: true, message: '请上传营业执照', trigger: 'blur' }
|
|
],
|
|
enterpriseName: [
|
|
{ required: true, message: '请输入企业名称', trigger: 'blur' }
|
|
],
|
|
enterpriseCode: [
|
|
{ required: true, message: '请输入统一社会信用代码', trigger: 'blur' }
|
|
],
|
|
registeredCapital: [
|
|
{ required: true, message: '请输入注册资本', trigger: 'blur' }
|
|
],
|
|
businessTerm: [
|
|
{ required: true, message: '请输入营业期限', trigger: 'blur' }
|
|
],
|
|
residence: [
|
|
{ required: true, message: '请输入住所', trigger: 'blur' }
|
|
],
|
|
businessScope: [
|
|
{ required: true, message: '请输入经营范围', trigger: 'blur' }
|
|
],
|
|
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
|
|
},
|
|
methods: {
|
|
// 校验规则
|
|
validate() {
|
|
return new Promise((resolve, reject) => {
|
|
this.$refs.basicInfoForm.validate((valid) => {
|
|
if (valid) {
|
|
resolve(this.form) // 校验成功返回表单数据
|
|
} else {
|
|
reject(new Error('基本信息未填写完整'))
|
|
}
|
|
})
|
|
})
|
|
},
|
|
// ocr文件识别规则
|
|
ocrRule(type) {
|
|
const foundItem = this.dict.type.identification_tag.find(item => item.value === type);
|
|
const item = foundItem ? {
|
|
fileUploadType: foundItem.value,
|
|
fields_json: foundItem.raw.remark,
|
|
suffix: 'mainDatabase'
|
|
} : null;
|
|
|
|
this.fileUploadList.push(item)
|
|
},
|
|
// 添加ocr文件识别规则
|
|
addOcrRule() {
|
|
this.ocrRuleList.forEach(item => {
|
|
this.ocrRule(item)
|
|
})
|
|
},
|
|
// 文件变化
|
|
handleFileChange(file) {
|
|
this.form.fileList = file;
|
|
console.log(file[0].response);
|
|
if(file instanceof Array && file.length > 0){
|
|
// 文件上传成功
|
|
const response = file[0].response;
|
|
if(response.ocrResult){
|
|
// ocr识别成功
|
|
this.ocrResult.forEach(item => {
|
|
this.form[item.value] = response.ocrResult[item.label];
|
|
});
|
|
}
|
|
this.$refs.basicInfoForm.validate();
|
|
}
|
|
|
|
}
|
|
},
|
|
computed: {
|
|
fileUploadRule() {
|
|
return this.fileUploadList[0] || {};
|
|
}
|
|
},
|
|
watch: {
|
|
// 监听字典数据加载完成
|
|
'dict.type.identification_tag': {
|
|
handler(newVal) {
|
|
if (newVal && newVal.length > 0) {
|
|
this.addOcrRule();
|
|
}
|
|
},
|
|
immediate: true // 立即执行一次
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.basic-info-title {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 10px 0;
|
|
|
|
span {
|
|
margin: 0 5px;
|
|
font-size: 20px;
|
|
}
|
|
}
|
|
</style> |