Compare commits

...

2 Commits

Author SHA1 Message Date
Wayne f44c42e7af Merge branch 'master' of http://47.101.195.94:3000/wangchangjiu/xys-FTA-Ui
# Conflicts:
#	src/utils/dict.ts
2024-05-14 11:00:50 +08:00
Wayne 263f90c918 1、新增企业变更页面及详细信息
2、企业信息新增时新增各类证书信息插入
2024-05-14 11:00:07 +08:00
11 changed files with 1446 additions and 4 deletions

View File

@ -0,0 +1,57 @@
import request from '@/config/axios'
// 企业信息变更 VO
export interface EnterpriseChangeVO {
id: number // 编号
oldEnterpriseJson: string // 变更前企业信息Json字符串
oldEnterpriseName: string // 变更前企业名称
oldLegalPerson: string // 变更前企业法定代表人
name: string // 企业名称
legalPerson: string // 企业法定代表人
unifiedCreditCode: string // 统一社会信用代码
telephone: string // 电话
mailbox: string // 邮箱
registerAddress: string // 注册地址
communicationAddress: string // 通信地址
operateState: number // 经营状态
establishDate: Date // 成立日期
enterpriseType: number // 企业类型
enterpriseBelongingToRegion: string // 企业所属地区
enterpriseBelongingToIndustry: string // 企业所属行业
registerOffice: string // 登记机关
operatePermitRange: string // 经营许可范围
isSecure: number // 是否涉及危化证
}
// 企业信息变更 API
export const EnterpriseChangeApi = {
// 查询企业信息变更分页
getEnterpriseChangePage: async (params: any) => {
return await request.get({ url: `/fta/enterprise-change/page`, params })
},
// 查询企业信息变更详情
getEnterpriseChange: async (id: number) => {
return await request.get({ url: `/fta/enterprise-change/get?id=` + id })
},
// 新增企业信息变更
createEnterpriseChange: async (data: EnterpriseChangeVO) => {
return await request.post({ url: `/fta/enterprise-change/create`, data })
},
// 修改企业信息变更
updateEnterpriseChange: async (data: EnterpriseChangeVO) => {
return await request.put({ url: `/fta/enterprise-change/update`, data })
},
// 删除企业信息变更
deleteEnterpriseChange: async (id: number) => {
return await request.delete({ url: `/fta/enterprise-change/delete?id=` + id })
},
// 导出企业信息变更 Excel
exportEnterpriseChange: async (params) => {
return await request.download({ url: `/fta/enterprise-change/export-excel`, params })
},
}

View File

@ -18,6 +18,29 @@ export interface EnterpriseInformationVO {
enterpriseBelongingToIndustry: string // 企业所属行业 enterpriseBelongingToIndustry: string // 企业所属行业
registerOffice: string // 登记机关 registerOffice: string // 登记机关
operatePermitRange: string // 经营许可范围 operatePermitRange: string // 经营许可范围
principalImageUrl: undefined // 主要负责人证图片
securityImageUrl: undefined // 安全员证图片
dangerImageUrl: undefined // 危化证图片
principalCertificateNumber: undefined // 负责人证号
principalName: undefined // 负责人姓名
principalPersonnelType: undefined // 负责人员类型
principalSex: undefined // 负责人性别
principalCategoryOfEmployment: undefined // 负责人行业类别
principalDateOfIssue: undefined // 负责人证初领日期
principalExpiryDate: undefined // 负责人证到期日期
principalLicenceIssuingAuthority: undefined // 负责人证签发机关
securityCertificateNumber: undefined // 安全员证号
securityName: undefined // 安全员姓名
securityPersonnelType: undefined // 安全员人员类型
securitySex: undefined // 安全员性别
securityCategoryOfEmployment: undefined // 安全员行业类别
securityDateOfIssue: undefined // 安全员初领日期
securityExpiryDate: undefined // 安全员证到期日期
securityLicenceIssuingAuthority: undefined // 安全员证签发机关
dangerBusinessPattern: undefined // 危化证经营方式
dangerLicenceIssuingAuthority: undefined // 危化证发证机关
dangerDateOfIssue: undefined // 危化证初领日期
dangerExpiryDate: undefined // 危化证到期日期
} }
// 企业信息 API // 企业信息 API
@ -27,6 +50,11 @@ export const EnterpriseInformationApi = {
return await request.get({ url: `/fta/enterprise-information/page`, params }) return await request.get({ url: `/fta/enterprise-information/page`, params })
}, },
// 查询已经通过审核的企业信息分页
getEnterpriseInformationPassPage: async (params: any) => {
return await request.get({ url: `/fta/enterprise-information/passPage`, params })
},
// 查询企业信息详情 // 查询企业信息详情
getEnterpriseInformation: async (id: number) => { getEnterpriseInformation: async (id: number) => {
return await request.get({ url: `/fta/enterprise-information/get?id=` + id }) return await request.get({ url: `/fta/enterprise-information/get?id=` + id })

View File

@ -333,7 +333,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
noCache: true, noCache: true,
hidden: true, hidden: true,
canTo: true, canTo: true,
title: '发起 企业信息填报 请假', title: '发起 企业信息 填报',
activeMenu: '/enterpriseInformation/enterprise-information' activeMenu: '/enterpriseInformation/enterprise-information'
} }
}, },
@ -345,9 +345,33 @@ const remainingRouter: AppRouteRecordRaw[] = [
noCache: true, noCache: true,
hidden: true, hidden: true,
canTo: true, canTo: true,
title: '查看 企业信息填报 请假', title: '查看 企业信息 填报',
activeMenu: '/enterpriseInformation/enterprise-information' activeMenu: '/enterpriseInformation/enterprise-information'
} }
},
{
path: 'fta/enterprisechange/create',
component: () => import('@/views/fta/enterprisechange/create.vue'),
name: 'FtaEnterpriseChangeCreate',
meta: {
noCache: true,
hidden: true,
canTo: true,
title: '发起 企业信息 变更',
activeMenu: '/enterpriseInformation/enterprise-change'
}
},
{
path: 'fta/enterprisechange/detail',
component: () => import('@/views/fta/enterprisechange/detail.vue'),
name: 'FtaEnterpriseChangeDetail',
meta: {
noCache: true,
hidden: true,
canTo: true,
title: '查看 企业信息 变更',
activeMenu: '/enterpriseInformation/enterprise-change'
}
} }
] ]
}, },

View File

@ -217,4 +217,11 @@ export enum DICT_TYPE {
ENTERPRISE_TYPE = 'enterprise_type', // 企业类型 ENTERPRISE_TYPE = 'enterprise_type', // 企业类型
ENTERPRISE_DOCUMENT_TYPE = 'enterprise_document_type', //企业证件类型 ENTERPRISE_DOCUMENT_TYPE = 'enterprise_document_type', //企业证件类型
TYPES_OF_SECURITY_PERSONNEL = 'types_of_security_personnel', // 安全人员类型 TYPES_OF_SECURITY_PERSONNEL = 'types_of_security_personnel', // 安全人员类型
ENTERPRISE_TYPE = 'enterprise_type', // 企业类型
CREDENTIAL_SEX = 'credential_sex', // 证书性别
CREDENTIAL_PERSONNEL_TYPE = 'credential_personnel_type', // 人员类型
CREDENTIAL_CATEGORY_OF_EMPLOYMENT = 'credential_category_of_employment', //行业类别
CREDENTIAL_BUSINESS_PATTERN = 'credential_business_pattern', // 经营方式
} }

View File

@ -0,0 +1,221 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="变更前企业信息Json字符串" prop="oldEnterpriseJson">
<el-input v-model="formData.oldEnterpriseJson" placeholder="请输入变更前企业信息Json字符串" />
</el-form-item>
<el-form-item label="变更前企业名称" prop="oldEnterpriseName">
<el-input v-model="formData.oldEnterpriseName" placeholder="请输入变更前企业名称" />
</el-form-item>
<el-form-item label="变更前企业法定代表人" prop="oldLegalPerson">
<el-input v-model="formData.oldLegalPerson" placeholder="请输入变更前企业法定代表人" />
</el-form-item>
<el-form-item label="企业名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入企业名称" />
</el-form-item>
<el-form-item label="企业法定代表人" prop="legalPerson">
<el-input v-model="formData.legalPerson" placeholder="请输入企业法定代表人" />
</el-form-item>
<el-form-item label="统一社会信用代码" prop="unifiedCreditCode">
<el-input v-model="formData.unifiedCreditCode" placeholder="请输入统一社会信用代码" />
</el-form-item>
<el-form-item label="电话" prop="telephone">
<el-input v-model="formData.telephone" placeholder="请输入电话" />
</el-form-item>
<el-form-item label="邮箱" prop="mailbox">
<el-input v-model="formData.mailbox" placeholder="请输入邮箱" />
</el-form-item>
<el-form-item label="注册地址" prop="registerAddress">
<el-input v-model="formData.registerAddress" placeholder="请输入注册地址" />
</el-form-item>
<el-form-item label="通信地址" prop="communicationAddress">
<el-input v-model="formData.communicationAddress" placeholder="请输入通信地址" />
</el-form-item>
<el-form-item label="经营状态" prop="operateState">
<el-select v-model="formData.operateState" placeholder="请选择经营状态">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_OPERATE_STATE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="成立日期" prop="establishDate">
<el-date-picker
v-model="formData.establishDate"
type="date"
value-format="x"
placeholder="选择成立日期"
/>
</el-form-item>
<el-form-item label="企业类型" prop="enterpriseType">
<el-select v-model="formData.enterpriseType" placeholder="请选择企业类型">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="企业所属地区" prop="enterpriseBelongingToRegion">
<el-input v-model="formData.enterpriseBelongingToRegion" placeholder="请输入企业所属地区" />
</el-form-item>
<el-form-item label="企业所属行业" prop="enterpriseBelongingToIndustry">
<el-input v-model="formData.enterpriseBelongingToIndustry" placeholder="请输入企业所属行业" />
</el-form-item>
<el-form-item label="登记机关" prop="registerOffice">
<el-input v-model="formData.registerOffice" placeholder="请输入登记机关" />
</el-form-item>
<el-form-item label="经营许可范围" prop="operatePermitRange">
<el-input v-model="formData.operatePermitRange" placeholder="请输入经营许可范围" />
</el-form-item>
<el-form-item label="是否涉及危化证" prop="isSecure">
<el-select v-model="formData.isSecure" placeholder="请选择是否涉及危化证">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_IS_SECURE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { EnterpriseChangeApi, EnterpriseChangeVO } from '@/api/fta/enterprisechange'
/** 企业信息变更 表单 */
defineOptions({ name: 'EnterpriseChangeForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
oldEnterpriseJson: undefined,
oldEnterpriseName: undefined,
oldLegalPerson: undefined,
name: undefined,
legalPerson: undefined,
unifiedCreditCode: undefined,
telephone: undefined,
mailbox: undefined,
registerAddress: undefined,
communicationAddress: undefined,
operateState: undefined,
establishDate: undefined,
enterpriseType: undefined,
enterpriseBelongingToRegion: undefined,
enterpriseBelongingToIndustry: undefined,
registerOffice: undefined,
operatePermitRange: undefined,
isSecure: undefined,
})
const formRules = reactive({
oldEnterpriseJson: [{ required: true, message: '变更前企业信息Json字符串不能为空', trigger: 'blur' }],
oldEnterpriseName: [{ required: true, message: '变更前企业名称不能为空', trigger: 'blur' }],
oldLegalPerson: [{ required: true, message: '变更前企业法定代表人不能为空', trigger: 'blur' }],
name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
legalPerson: [{ required: true, message: '企业法定代表人不能为空', trigger: 'blur' }],
unifiedCreditCode: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
telephone: [{ required: true, message: '电话不能为空', trigger: 'blur' }],
mailbox: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }],
registerAddress: [{ required: true, message: '注册地址不能为空', trigger: 'blur' }],
communicationAddress: [{ required: true, message: '通信地址不能为空', trigger: 'blur' }],
operateState: [{ required: true, message: '经营状态不能为空', trigger: 'change' }],
establishDate: [{ required: true, message: '成立日期不能为空', trigger: 'blur' }],
enterpriseType: [{ required: true, message: '企业类型不能为空', trigger: 'change' }],
enterpriseBelongingToRegion: [{ required: true, message: '企业所属地区不能为空', trigger: 'blur' }],
enterpriseBelongingToIndustry: [{ required: true, message: '企业所属行业不能为空', trigger: 'blur' }],
registerOffice: [{ required: true, message: '登记机关不能为空', trigger: 'blur' }],
operatePermitRange: [{ required: true, message: '经营许可范围不能为空', trigger: 'blur' }],
isSecure: [{ required: true, message: '是否涉及危化证不能为空', trigger: 'change' }],
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await EnterpriseChangeApi.getEnterpriseChange(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as EnterpriseChangeVO
if (formType.value === 'create') {
await EnterpriseChangeApi.createEnterpriseChange(data)
message.success(t('common.createSuccess'))
} else {
await EnterpriseChangeApi.updateEnterpriseChange(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
oldEnterpriseJson: undefined,
oldEnterpriseName: undefined,
oldLegalPerson: undefined,
name: undefined,
legalPerson: undefined,
unifiedCreditCode: undefined,
telephone: undefined,
mailbox: undefined,
registerAddress: undefined,
communicationAddress: undefined,
operateState: undefined,
establishDate: undefined,
enterpriseType: undefined,
enterpriseBelongingToRegion: undefined,
enterpriseBelongingToIndustry: undefined,
registerOffice: undefined,
operatePermitRange: undefined,
isSecure: undefined,
}
formRef.value?.resetFields()
}
</script>

View File

@ -0,0 +1,249 @@
<template>
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="150px"
>
<el-card class="mb-10px">
<template #header>企业信息变更</template>
<el-row>
<el-col :span="22">
<el-form-item label="原企业信息名称" prop="name">
<el-input v-model="formData.name" placeholder="请选择企业信息名称" disabled />
</el-form-item>
</el-col>
<el-col :span="2">
<el-button :style="{width: 'calc(100% - 10px)', marginLeft: '10px'}" :disabled="formLoading" type="primary" @click="selectEnterpriseCom"> </el-button>
</el-col>
</el-row>
<el-form-item label="原企业法定代表人" prop="legalPerson">
<el-input v-model="formData.legalPerson" placeholder="请选择企业法定代表人" disabled />
</el-form-item>
</el-card>
<el-row :gutter="20">
<el-col :span="12">
<el-card class="mb-10px">
<template #header>原企业信息</template>
<el-form
:model="startUserSelectAssignees"
:rules="startUserSelectAssigneesFormRules"
ref="startUserSelectAssigneesFormRef"
>
<el-form-item
v-for="userTask in startUserSelectTasks"
:key="userTask.id"
:label="`任务【${userTask.name}】`"
:prop="userTask.id"
>
<el-select
v-model="startUserSelectAssignees[userTask.id]"
multiple
placeholder="请选择审批人"
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.nickname"
:value="user.id"
/>
</el-select>
</el-form-item>
</el-form>
</el-card>
</el-col>
<el-col :span="12">
<el-card class="mb-10px">
<template #header>变更后企业信息</template>
<el-form
:model="startUserSelectAssignees"
:rules="startUserSelectAssigneesFormRules"
ref="startUserSelectAssigneesFormRef"
>
<el-form-item
v-for="userTask in startUserSelectTasks"
:key="userTask.id"
:label="`任务【${userTask.name}】`"
:prop="userTask.id"
>
<el-select
v-model="startUserSelectAssignees[userTask.id]"
multiple
placeholder="请选择审批人"
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.nickname"
:value="user.id"
/>
</el-select>
</el-form-item>
</el-form>
</el-card>
</el-col>
</el-row>
<el-col v-if="startUserSelectTasks.length > 0">
<el-card class="mb-10px">
<template #header>指定审批人</template>
<el-form
:model="startUserSelectAssignees"
:rules="startUserSelectAssigneesFormRules"
ref="startUserSelectAssigneesFormRef"
>
<el-form-item
v-for="userTask in startUserSelectTasks"
:key="userTask.id"
:label="`任务【${userTask.name}】`"
:prop="userTask.id"
>
<el-select
v-model="startUserSelectAssignees[userTask.id]"
multiple
placeholder="请选择审批人"
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.nickname"
:value="user.id"
/>
</el-select>
</el-form-item>
</el-form>
</el-card>
</el-col>
<el-form-item>
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
</el-form-item>
</el-form>
<!-- 选择企业基本信息弹窗 -->
<SelectEnterprise ref="selectEnterpriseRef" :getToy="getOldEnterprise" />
</template>
<script lang="ts" setup>
import { EnterpriseInformationApi, EnterpriseInformationVO } from '@/api/fta/enterpriseinformation'
import { useTagsViewStore } from '@/store/modules/tagsView'
import * as DefinitionApi from '@/api/bpm/definition'
import * as UserApi from '@/api/system/user'
import SelectEnterprise from './selectEnterprise.vue'
defineOptions({ name: 'EnterpriseInformationCreate' })
const message = useMessage() //
const { delView } = useTagsViewStore() //
const { push, currentRoute } = useRouter() //
const formLoading = ref(false) // 12
const formData = ref({
id: undefined,
name: undefined,
legalPerson: undefined,
unifiedCreditCode: undefined,
telephone: undefined,
mailbox: undefined,
registerAddress: undefined,
communicationAddress: undefined,
operateState: undefined,
isSecure: undefined,
establishDate: undefined,
enterpriseType: undefined,
enterpriseBelongingToRegion: undefined,
enterpriseBelongingToIndustry: undefined,
registerOffice: undefined,
operatePermitRange: undefined,
})
const formRules = reactive({
name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
legalPerson: [{ required: true, message: '企业法定代表人不能为空', trigger: 'blur' }],
unifiedCreditCode: [{ required: true, message: '统一信用代码不能为空', trigger: 'blur' }],
telephone: [{ required: true, message: '电话不能为空', trigger: 'blur' }],
mailbox: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }],
registerAddress: [{ required: true, message: '注册地址不能为空', trigger: 'blur' }],
communicationAddress: [{ required: true, message: '通信地址不能为空', trigger: 'blur' }],
operateState: [{ required: true, message: '经营状态不能为空', trigger: 'change' }],
establishDate: [{ required: true, message: '成立日期不能为空', trigger: 'blur' }],
enterpriseType: [{ required: true, message: '企业类型不能为空', trigger: 'change' }],
enterpriseBelongingToRegion: [{ required: true, message: '企业所属地区不能为空', trigger: 'blur' }],
enterpriseBelongingToIndustry: [{ required: true, message: '企业所属行业不能为空', trigger: 'blur' }],
registerOffice: [{ required: true, message: '登记机关不能为空', trigger: 'blur' }],
operatePermitRange: [{ required: true, message: '经营许可范围不能为空', trigger: 'blur' }],
isSecure: [{ required: true, message: '是否涉及危化证不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
//
const processDefineKey = 'fta_enterprise' // Key
const startUserSelectTasks = ref([]) //
const startUserSelectAssignees = ref({}) //
const startUserSelectAssigneesFormRef = ref() // Ref
const startUserSelectAssigneesFormRules = ref({}) // Rules
const userList = ref<any[]>([]) //
/** 添加/修改操作 */
const selectEnterpriseRef = ref()
const selectEnterpriseCom = () => {
selectEnterpriseRef.value.open()
}
/** 获取变更前的企业信息 */
function getOldEnterprise(data:EnterpriseInformationVO){
toy.value = data
}
/** 提交表单 */
const submitForm = async () => {
//
if (!formRef) return
const valid = await formRef.value.validate()
if (!valid) return
//
if (startUserSelectTasks.value?.length > 0) {
await startUserSelectAssigneesFormRef.value.validate()
}
//
formLoading.value = true
try {
const data = { ...formData.value } as unknown as EnterpriseInformationVO
//
if (startUserSelectTasks.value?.length > 0) {
data.startUserSelectAssignees = startUserSelectAssignees.value
}
await EnterpriseInformationApi.createEnterpriseInformation(data)
message.success('发起成功')
// Tab
delView(unref(currentRoute))
await push({ name: 'EnterpriseInformation' })
} finally {
formLoading.value = false
}
}
/** 初始化 */
onMounted(async () => {
const processDefinitionDetail = await DefinitionApi.getProcessDefinition(
undefined,
processDefineKey
)
if (!processDefinitionDetail) {
message.error('创建企业信息的流程模型未配置,请检查!')
return
}
startUserSelectTasks.value = processDefinitionDetail.startUserSelectTasks
//
if (startUserSelectTasks.value?.length > 0) {
//
for (const userTask of startUserSelectTasks.value) {
startUserSelectAssignees.value[userTask.id] = []
startUserSelectAssigneesFormRules.value[userTask.id] = [
{ required: true, message: '请选择审批人', trigger: 'blur' }
]
}
//
userList.value = await UserApi.getSimpleUserList()
}
})
</script>

View File

@ -0,0 +1,84 @@
<template>
<ContentWrap>
<el-descriptions :column="1" border>
<el-descriptions-item label="企业名称">
{{ detailData.name }}
</el-descriptions-item>
<el-descriptions-item label="企业法定代表人">
{{ detailData.legalPerson }}
</el-descriptions-item>
<el-descriptions-item label="统一信用代码">
{{ detailData.unifiedCreditCode }}
</el-descriptions-item>
<el-descriptions-item label="电话">
{{ detailData.telephone }}
</el-descriptions-item>
<el-descriptions-item label="邮箱">
{{ detailData.mailbox }}
</el-descriptions-item>
<el-descriptions-item label="注册地址">
{{ detailData.registerAddress }}
</el-descriptions-item>
<el-descriptions-item label="通信地址">
{{ detailData.communicationAddress }}
</el-descriptions-item>
<el-descriptions-item label="经营状态">
<dict-tag :type="DICT_TYPE.ENTERPRISE_OPERATE_STATE" :value="detailData.operateState" />
</el-descriptions-item>
<el-descriptions-item label="成立日期">
{{ formatDate(detailData.establishDate, 'YYYY-MM-DD') }}
</el-descriptions-item>
<el-descriptions-item label="企业类型">
<dict-tag :type="DICT_TYPE.ENTERPRISE_TYPE" :value="detailData.enterpriseType" />
</el-descriptions-item>
<el-descriptions-item label="企业所属地区">
{{ detailData.enterpriseBelongingToRegion }}
</el-descriptions-item>
<el-descriptions-item label="企业所属行业">
{{ detailData.enterpriseBelongingToIndustry }}
</el-descriptions-item>
<el-descriptions-item label="登记机关">
{{ detailData.registerOffice }}
</el-descriptions-item>
<el-descriptions-item label="经营许可范围">
{{ detailData.operatePermitRange }}
</el-descriptions-item>
<el-descriptions-item label="是否涉及危化证">
<dict-tag :type="DICT_TYPE.ENTERPRISE_IS_SECURITY" :value="detailData.isSecure" />
</el-descriptions-item>
</el-descriptions>
</ContentWrap>
</template>
<script lang="ts" setup>
import { DICT_TYPE } from '@/utils/dict'
import { formatDate } from '@/utils/formatTime'
import { propTypes } from '@/utils/propTypes'
import { EnterpriseInformationApi } from '@/api/fta/enterpriseinformation'
defineOptions({ name: 'FtaEnterpriseDetail' })
const { query } = useRoute() //
const props = defineProps({
id: propTypes.number.def(undefined)
})
const detailLoading = ref(false) //
const detailData = ref<any>({}) //
const queryId = query.id as unknown as number // URL id
/** 获得数据 */
const getInfo = async () => {
detailLoading.value = true
try {
detailData.value = await EnterpriseInformationApi.getEnterpriseInformation(props.id || queryId)
} finally {
detailLoading.value = false
}
}
defineExpose({ open: getInfo }) // open
/** 初始化 **/
onMounted(() => {
getInfo()
})
</script>

View File

@ -0,0 +1,338 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="审批结果" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择审批结果"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="变更前企业名称" prop="oldEnterpriseName">
<el-input
v-model="queryParams.oldEnterpriseName"
placeholder="请输入变更前企业名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="变更前企业法定代表人" prop="oldLegalPerson">
<el-input
v-model="queryParams.oldLegalPerson"
placeholder="请输入变更前企业法定代表人"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="企业名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入企业名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="企业法定代表人" prop="legalPerson">
<el-input
v-model="queryParams.legalPerson"
placeholder="请输入企业法定代表人"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="unifiedCreditCode">
<el-input
v-model="queryParams.unifiedCreditCode"
placeholder="请输入统一社会信用代码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="经营状态" prop="operateState">
<el-select
v-model="queryParams.operateState"
placeholder="请选择经营状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_OPERATE_STATE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="企业类型" prop="enterpriseType">
<el-select
v-model="queryParams.enterpriseType"
placeholder="请选择企业类型"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="企业所属行业" prop="enterpriseBelongingToIndustry">
<el-input
v-model="queryParams.enterpriseBelongingToIndustry"
placeholder="请输入企业所属行业"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否涉及危化证" prop="isSecure">
<el-select
v-model="queryParams.isSecure"
placeholder="请选择是否涉及危化证"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.ENTERPRISE_IS_SECURE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button plain type="primary" @click="handleCreate()">
<Icon class="mr-5px" icon="ep:plus" />
新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['fta:enterprise-change:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编号" align="center" prop="id" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="流程实例编号" align="center" prop="processInstanceId" />
<el-table-column label="审批结果" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="变更前企业名称" align="center" prop="oldEnterpriseName" />
<el-table-column label="变更前企业法定代表人" align="center" prop="oldLegalPerson" />
<el-table-column label="企业名称" align="center" prop="name" />
<el-table-column label="企业法定代表人" align="center" prop="legalPerson" />
<el-table-column label="统一社会信用代码" align="center" prop="unifiedCreditCode" />
<el-table-column label="电话" align="center" prop="telephone" />
<el-table-column label="邮箱" align="center" prop="mailbox" />
<el-table-column label="注册地址" align="center" prop="registerAddress" />
<el-table-column label="通信地址" align="center" prop="communicationAddress" />
<el-table-column label="经营状态" align="center" prop="operateState">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ENTERPRISE_OPERATE_STATE" :value="scope.row.operateState" />
</template>
</el-table-column>
<el-table-column label="成立日期" align="center" prop="establishDate" />
<el-table-column label="企业类型" align="center" prop="enterpriseType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ENTERPRISE_TYPE" :value="scope.row.enterpriseType" />
</template>
</el-table-column>
<el-table-column label="企业所属地区" align="center" prop="enterpriseBelongingToRegion" />
<el-table-column label="企业所属行业" align="center" prop="enterpriseBelongingToIndustry" />
<el-table-column label="登记机关" align="center" prop="registerOffice" />
<el-table-column label="经营许可范围" align="center" prop="operatePermitRange" />
<el-table-column label="是否涉及危化证" align="center" prop="isSecure">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ENTERPRISE_IS_SECURE" :value="scope.row.isSecure" />
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['fta:enterprise-change:update']"
>
编辑
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['fta:enterprise-change:delete']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<EnterpriseChangeForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { EnterpriseChangeApi, EnterpriseChangeVO } from '@/api/fta/enterprisechange'
import EnterpriseChangeForm from './EnterpriseChangeForm.vue'
/** 企业信息变更 列表 */
defineOptions({ name: 'EnterpriseChange' })
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter() //
const loading = ref(true) //
const list = ref<EnterpriseChangeVO[]>([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
createTime: [],
status: undefined,
oldEnterpriseName: undefined,
oldLegalPerson: undefined,
name: undefined,
legalPerson: undefined,
unifiedCreditCode: undefined,
operateState: undefined,
enterpriseType: undefined,
enterpriseBelongingToIndustry: undefined,
isSecure: undefined,
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await EnterpriseChangeApi.getEnterpriseChangePage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 添加操作 */
const handleCreate = () => {
router.push({ name: 'FtaEnterpriseChangeCreate' })
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await EnterpriseChangeApi.deleteEnterpriseChange(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await EnterpriseChangeApi.exportEnterpriseChange(queryParams)
download.excel(data, '企业信息变更.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

View File

@ -0,0 +1,113 @@
<template>
<Dialog title="选择企业信息" v-model="dialogVisible">
<el-row>
<el-col :span="24">
<el-form ref="queryRef" :inline="true" label-width="68px" :model="params">
<el-form-item label="企业名称" prop="name">
<el-input v-model="params.name" placeholder="请输入企业名称" clearable size="small" style="width: 200px" @keyup.enter="handleCurrentChange" />
</el-form-item>
<el-form-item label="企业法人" prop="legalPerson">
<el-input v-model="params.legalPerson" placeholder="请输入企业法人代表名称" clearable size="small" style="width: 200px" @keyup.enter="handleCurrentChange" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="small" @click="getList">搜索</el-button>
<el-button type="primary" icon="Refresh" size="small" @click="resetQuery">确定</el-button>
<el-button icon="Refresh" size="small" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table :data="list" border style="width: 100%" highlight-current-row @current-change="handleCurrentChange" >
<el-table-column label="编号" align="center" prop="id" />
<el-table-column align="center" label="状态" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="企业名称" align="center" prop="name" />
<el-table-column label="企业法定代表人" align="center" prop="legalPerson" />
<el-table-column label="统一信用代码" align="center" prop="unifiedCreditCode" />
<el-table-column label="电话" align="center" prop="telephone" />
<el-table-column label="邮箱" align="center" prop="mailbox" />
</el-table>
<el-row>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="params.pageNo"
v-model:limit="params.pageSize"
@pagination="getList"
/>
</el-row>
</Dialog>
</template>
<script setup lang="ts">
import {DICT_TYPE} from '@/utils/dict'
import {EnterpriseInformationApi, EnterpriseInformationVO} from "@/api/fta/enterpriseinformation";
import {dateFormatter} from "@/utils/formatTime";
/** 选择已经通过审核的企业基本信息 */
defineOptions({ name: 'SelectEnterprise' })
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
const list = ref<EnterpriseInformationVO[]>([]) //
const total = ref(0) //
const currentRow = ref() //
const queryRef = ref() //
const params = reactive({
pageNo: 1,
pageSize: 10,
name: undefined,
legalPerson: undefined,
})
const handleCurrentChange = (val: EnterpriseInformationVO | undefined) => {
currentRow.value = val
} //
/** 打开弹窗 */
const open = async () => {
dialogVisible.value = true
params.name = undefined
params.legalPerson = undefined
params.pageNo = 1
//
await getList()
}
/** 搜索按钮操作 */
const handleQuery = () => {
params.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryRef.value.resetFields()
handleQuery()
}
/** 获取已经办结的表单数据 */
const getList = async () => {
formLoading.value = true
try {
const data = await EnterpriseInformationApi.getEnterpriseInformationPassPage(params)
list.value = data.list
total.value = data.total
} finally {
formLoading.value = true
}
}
defineExpose({ open }) // open
</script>

View File

@ -0,0 +1,106 @@
<template>
<Dialog v-model="dialogVisible" title="上传文件">
<el-upload
ref="uploadRef"
v-model:file-list="fileList"
:action="uploadUrl"
:auto-upload="false"
:data="data"
:disabled="formLoading"
:limit="1"
:on-change="handleFileChange"
:on-error="submitFormError"
:on-exceed="handleExceed"
:on-success="submitFormSuccess"
:http-request="httpRequest"
accept=".jpg, .png, .gif"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text"> 将文件拖到此处 <em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip" style="color: red">
提示仅允许导入 jpgpnggif 格式文件
</div>
</template>
</el-upload>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitFileForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script lang="ts" setup>
import { useUpload } from '@/components/UploadFile/src/useUpload'
defineOptions({ name: 'ImageFileForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const fileList = ref([]) //
const data = ref({ path: '' })
const uploadRef = ref()
const { uploadUrl, httpRequest } = useUpload()
const props = defineProps({
imageType: {
type: Number,
required: true
}
})
/** 打开弹窗 */
const open = async () => {
dialogVisible.value = true
resetForm()
}
defineExpose({ open }) // open
/** 处理上传的文件发生变化 */
const handleFileChange = (file) => {
data.value.path = file.name
}
/** 提交表单 */
const submitFileForm = () => {
if (fileList.value.length == 0) {
message.error('请上传文件')
return
}
unref(uploadRef)?.submit()
}
/** 文件上传成功处理 */
const emit = defineEmits(['success']) // success
const submitFormSuccess = (data) => {
//
dialogVisible.value = false
formLoading.value = false
unref(uploadRef)?.clearFiles()
//
message.success(t('common.createSuccess'))
emit('success',data.data,props.imageType)
}
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
formLoading.value = false
}
/** 重置表单 */
const resetForm = () => {
//
formLoading.value = false
uploadRef.value?.clearFiles()
}
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
}
</script>

View File

@ -6,6 +6,8 @@
:rules="formRules" :rules="formRules"
label-width="100px" label-width="100px"
> >
<el-card class="mb-10px">
<template #header>企业基本信息</template>
<el-form-item label="企业名称" prop="name"> <el-form-item label="企业名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入企业名称" /> <el-input v-model="formData.name" placeholder="请输入企业名称" />
</el-form-item> </el-form-item>
@ -77,6 +79,140 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-card>
<el-card class="mb-10px">
<template #header>主要负责人证</template>
<el-form-item label="证号" prop="principalCertificateNumber">
<el-input v-model="formData.principalCertificateNumber" placeholder="请输入负责人证号" />
</el-form-item>
<el-form-item label="姓名" prop="principalName">
<el-input v-model="formData.principalName" placeholder="请输入负责人证姓名" />
</el-form-item>
<el-form-item label="人员类型" prop="principalPersonnelType">
<el-select v-model="formData.principalPersonnelType" placeholder="请选择人员类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CREDENTIAL_PERSONNEL_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="性别" prop="principalSex">
<el-select v-model="formData.principalSex" placeholder="请选择性别">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CREDENTIAL_SEX)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="行业类别" prop="principalCategoryOfEmployment">
<el-select v-model="formData.principalCategoryOfEmployment" placeholder="请选择行业类别">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CREDENTIAL_CATEGORY_OF_EMPLOYMENT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="初领日期" prop="principalDateOfIssue">
<el-date-picker v-model="formData.principalDateOfIssue" type="date" value-format="YYYY-MM-DD" placeholder="请选择证件初领日期"/>
</el-form-item>
<el-form-item label="到期日期" prop="principalExpiryDate">
<el-date-picker v-model="formData.principalExpiryDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择证件初领日期"/>
</el-form-item>
<el-form-item label="签发机关" prop="principalLicenceIssuingAuthority">
<el-input v-model="formData.principalLicenceIssuingAuthority" placeholder="请输入证件签发机关" />
</el-form-item>
<el-form-item label="图片" prop="principalImageUrl">
<el-button v-if="formData.principalImageUrl == undefined" type="primary" plain @click="fileOpenForm(1)"><Icon icon="ep:upload" class="mr-5px" /> 上传文件</el-button>
<el-image v-if="formData.principalImageUrl != undefined" style="width: 100px; height: 100px" :src="formData.principalImageUrl" :preview-src-list="[formData.principalImageUrl]" fit="fill" />
<el-button v-if="formData.principalImageUrl != undefined" type="danger" plain @click="deletedImageUrl(1)">删除图片</el-button>
</el-form-item>
</el-card>
<el-card class="mb-10px">
<template #header>安全员证</template>
<el-form-item label="证号" prop="securityCertificateNumber">
<el-input v-model="formData.securityCertificateNumber" placeholder="请输入安全员证号" />
</el-form-item>
<el-form-item label="姓名" prop="securityName">
<el-input v-model="formData.securityName" placeholder="请输入安全员姓名" />
</el-form-item>
<el-form-item label="人员类型" prop="securityPersonnelType">
<el-select v-model="formData.securityPersonnelType" placeholder="请选择人员类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CREDENTIAL_PERSONNEL_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="性别" prop="securitySex">
<el-select v-model="formData.securitySex" placeholder="请选择性别">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.CREDENTIAL_SEX)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="行业类别" prop="securityCategoryOfEmployment">
<el-select v-model="formData.securityCategoryOfEmployment" placeholder="请选择行业类别">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CREDENTIAL_CATEGORY_OF_EMPLOYMENT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="初领日期" prop="securityDateOfIssue">
<el-date-picker v-model="formData.securityDateOfIssue" type="date" value-format="YYYY-MM-DD" placeholder="请选择证件初领日期"/>
</el-form-item>
<el-form-item label="到期日期" prop="securityExpiryDate">
<el-date-picker v-model="formData.securityExpiryDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择证件到期日期"/>
</el-form-item>
<el-form-item label="签发机关" prop="securityLicenceIssuingAuthority">
<el-input v-model="formData.securityLicenceIssuingAuthority" placeholder="请输入签发机关" />
</el-form-item>
<el-form-item label="图片" prop="securityImageUrl">
<el-button v-if="formData.securityImageUrl == undefined" type="primary" plain @click="fileOpenForm(2)"><Icon icon="ep:upload" class="mr-5px" /> 上传文件</el-button>
<el-image v-if="formData.securityImageUrl != undefined" style="width: 100px; height: 100px" :src="formData.securityImageUrl" :preview-src-list="[formData.securityImageUrl]" fit="fill" />
<el-button v-if="formData.securityImageUrl != undefined" type="danger" plain @click="deletedImageUrl(2)">删除图片</el-button>
</el-form-item>
</el-card>
<el-card class="mb-10px" v-if="formData.isSecure == 1">
<template #header>危化证</template>
<el-form-item label="经营方式" prop="dangerBusinessPattern">
<el-select v-model="formData.dangerBusinessPattern" placeholder="请选择行业类别">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.CREDENTIAL_BUSINESS_PATTERN)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="发证机关" prop="dangerLicenceIssuingAuthority">
<el-input v-model="formData.dangerLicenceIssuingAuthority" placeholder="请输入发证机关" />
</el-form-item>
<el-form-item label="发证日期" prop="dangerDateOfIssue">
<el-date-picker v-model="formData.dangerDateOfIssue" type="date" value-format="YYYY-MM-DD" placeholder="请选择发证日期"/>
</el-form-item>
<el-form-item label="到期日期" prop="dangerExpiryDate">
<el-date-picker v-model="formData.dangerExpiryDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择到期日期"/>
</el-form-item>
<el-form-item label="图片" prop="principalImageUrl">
<el-button v-if="formData.dangerImageUrl == undefined" type="primary" plain @click="fileOpenForm(3)"><Icon icon="ep:upload" class="mr-5px" /> 上传文件</el-button>
<el-image v-if="formData.dangerImageUrl != undefined" style="width: 100px; height: 100px" :src="formData.dangerImageUrl" :preview-src-list="[formData.dangerImageUrl]" fit="fill" />
<el-button v-if="formData.dangerImageUrl != undefined" type="danger" plain @click="deletedImageUrl(3)">删除图片</el-button>
</el-form-item>
</el-card>
<el-col v-if="startUserSelectTasks.length > 0"> <el-col v-if="startUserSelectTasks.length > 0">
<el-card class="mb-10px"> <el-card class="mb-10px">
<template #header>指定审批人</template> <template #header>指定审批人</template>
@ -111,13 +247,16 @@
<el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button> <el-button :disabled="formLoading" type="primary" @click="submitForm"> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 上传文件弹窗 -->
<ImageFileForm ref="fileFormRef" :imageType="imageType" @success="setImageUrl" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from '@/utils/dict'
import { EnterpriseInformationApi, EnterpriseInformationVO } from '@/api/fta/enterpriseinformation' import { EnterpriseInformationApi, EnterpriseInformationVO } from '@/api/fta/enterpriseinformation'
import { useTagsViewStore } from '@/store/modules/tagsView' import { useTagsViewStore } from '@/store/modules/tagsView'
import * as DefinitionApi from '@/api/bpm/definition' import * as DefinitionApi from '@/api/bpm/definition'
import * as UserApi from '@/api/system/user' import * as UserApi from '@/api/system/user'
import ImageFileForm from "@/views/fta/enterpriseinformation/ImageFileForm.vue";
defineOptions({ name: 'EnterpriseInformationCreate' }) defineOptions({ name: 'EnterpriseInformationCreate' })
@ -143,6 +282,29 @@ const formData = ref({
enterpriseBelongingToIndustry: undefined, enterpriseBelongingToIndustry: undefined,
registerOffice: undefined, registerOffice: undefined,
operatePermitRange: undefined, operatePermitRange: undefined,
principalImageUrl: undefined,
securityImageUrl: undefined,
dangerImageUrl: undefined,
principalCertificateNumber: undefined,
principalName: undefined,
principalPersonnelType: undefined,
principalSex: undefined,
principalCategoryOfEmployment: undefined,
principalDateOfIssue: undefined,
principalExpiryDate: undefined,
principalLicenceIssuingAuthority: undefined,
securityCertificateNumber: undefined,
securityName: undefined,
securityPersonnelType: undefined,
securitySex: undefined,
securityCategoryOfEmployment: undefined,
securityDateOfIssue: undefined,
securityExpiryDate: undefined,
securityLicenceIssuingAuthority: undefined,
dangerBusinessPattern: undefined,
dangerLicenceIssuingAuthority: undefined,
dangerDateOfIssue: undefined,
dangerExpiryDate: undefined
}) })
const formRules = reactive({ const formRules = reactive({
name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
@ -159,7 +321,30 @@ const formRules = reactive({
enterpriseBelongingToIndustry: [{ required: true, message: '企业所属行业不能为空', trigger: 'blur' }], enterpriseBelongingToIndustry: [{ required: true, message: '企业所属行业不能为空', trigger: 'blur' }],
registerOffice: [{ required: true, message: '登记机关不能为空', trigger: 'blur' }], registerOffice: [{ required: true, message: '登记机关不能为空', trigger: 'blur' }],
operatePermitRange: [{ required: true, message: '经营许可范围不能为空', trigger: 'blur' }], operatePermitRange: [{ required: true, message: '经营许可范围不能为空', trigger: 'blur' }],
isSecure: [{ required: true, message: '是否涉及危化证不能为空', trigger: 'blur' }] isSecure: [{ required: true, message: '是否涉及危化证不能为空', trigger: 'blur' }],
principalImageUrl: [{ required: true, message: '请上传主要负责人证图片', trigger: 'blur' }],
principalCertificateNumber: [{ required: true, message: '请输入负责人证号', trigger: 'blur' }],
principalName: [{ required: true, message: '请输入负责人证姓名', trigger: 'blur' }],
principalPersonnelType: [{ required: true, message: '请选择人员类型', trigger: 'blur' }],
principalSex: [{ required: true, message: '请选择性别', trigger: 'blur' }],
principalCategoryOfEmployment: [{ required: true, message: '请选择行业类别', trigger: 'blur' }],
principalDateOfIssue: [{ required: true, message: '请选择初领日期', trigger: 'blur' }],
principalExpiryDate: [{ required: true, message: '请选择证件到期日期', trigger: 'blur' }],
principalLicenceIssuingAuthority: [{ required: true, message: '请输入证件签发机关', trigger: 'blur' }],
securityCertificateNumber: [{ required: true, message: '请输入安全员证号', trigger: 'blur' }],
securityName: [{ required: true, message: '请输入安全员姓名', trigger: 'blur' }],
securityPersonnelType: [{ required: true, message: '请选择人员类型', trigger: 'blur' }],
securitySex: [{ required: true, message: '请选择性别', trigger: 'blur' }],
securityCategoryOfEmployment: [{ required: true, message: '请选择行业类别', trigger: 'blur' }],
securityDateOfIssue: [{ required: true, message: '请选择初领日期', trigger: 'blur' }],
securityExpiryDate: [{ required: true, message: '请选择到期日期', trigger: 'blur' }],
securityLicenceIssuingAuthority: [{ required: true, message: '请填写证件签发机关', trigger: 'blur' }],
securityImageUrl: [{ required: true, message: '请上传安全员证图片', trigger: 'blur' }],
dangerBusinessPattern: [{ required: true, message: '请选择经营方式', trigger: 'blur' }],
dangerLicenceIssuingAuthority: [{ required: true, message: '请输入发证机关', trigger: 'blur' }],
dangerDateOfIssue: [{ required: true, message: '请选择发证日期', trigger: 'blur' }],
dangerExpiryDate: [{ required: true, message: '请选择证件到期日期', trigger: 'blur' }],
dangerImageUrl: [{ required: true, message: '请上传危化证图片', trigger: 'blur' }]
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
@ -171,6 +356,36 @@ const startUserSelectAssigneesFormRef = ref() // 发起人选择审批人的表
const startUserSelectAssigneesFormRules = ref({}) // Rules const startUserSelectAssigneesFormRules = ref({}) // Rules
const userList = ref<any[]>([]) // const userList = ref<any[]>([]) //
/** 添加/修改操作 */
const fileFormRef = ref()
const imageType = ref() // 1 2 3
const fileOpenForm = (type: Number) => {
imageType.value = type
fileFormRef.value.open()
}
/** 删除图片 */
const deletedImageUrl = (imageType: Number) => {
if (imageType == 1){
formData.value.principalImageUrl = undefined
}else if(imageType == 2){
formData.value.securityImageUrl = undefined
}else if(imageType == 3){
formData.value.dangerImageUrl = undefined
}
}
/** 上传图片成功,设置图片地址 */
const setImageUrl = (value: String,imageType: Number) => {
if (imageType == 1){
formData.value.principalImageUrl = value
}else if(imageType == 2){
formData.value.securityImageUrl = value
}else if(imageType == 3){
formData.value.dangerImageUrl = value
}
}
/** 提交表单 */ /** 提交表单 */
const submitForm = async () => { const submitForm = async () => {
// //