|  |  |  | 
|---|
|  |  |  | <ChunkCell title="企业基本信息"> | 
|---|
|  |  |  | <ProForm :model="form" ref="formRef" label-width="140px" :is-read="isDetail"> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="企业名称:" | 
|---|
|  |  |  | prop="enterpriseName" | 
|---|
|  |  |  | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="法人姓名:" prop="legalPersonName"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 label="法人姓名:" prop="legalPerson"> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.legalPersonName" | 
|---|
|  |  |  | v-model.trim="form.legalPerson" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入法人姓名" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="法人身份证号:" prop="legalPersonIdNumber"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 label="法人身份证号:" prop="legalIdentity"> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.legalPersonIdNumber" | 
|---|
|  |  |  | v-model.trim="form.legalIdentity" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入法人身份证号" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="统一社会信用代码:" | 
|---|
|  |  |  | prop="societyCreditCode" | 
|---|
|  |  |  | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="所在省份:" prop="proviceName"> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.proviceName" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入所在省份" | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="所在地区:" | 
|---|
|  |  |  | prop="areaList" | 
|---|
|  |  |  | :check-rules="[ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | type: 'array', | 
|---|
|  |  |  | message: '请选择', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFromAddressSelectV2 | 
|---|
|  |  |  | v-model:areaList="form.areaList" | 
|---|
|  |  |  | areaListPlaceholder="请选择" | 
|---|
|  |  |  | :layer="AreaType.City" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="所属行业:" prop="belongIndustryType"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 label="所属行业:" prop="industryTypeId"> | 
|---|
|  |  |  | <ProFormSelect | 
|---|
|  |  |  | v-model="form.industryTypeCode" | 
|---|
|  |  |  | placeholder="请选择所属行业" | 
|---|
|  |  |  | :value-enum="typeList" | 
|---|
|  |  |  | enum-value-key="id" | 
|---|
|  |  |  | enum-label-key="name" | 
|---|
|  |  |  | :value-enum="dictionaryDataList" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | v-model="form.belongIndustryType" | 
|---|
|  |  |  | ></ProFormSelect> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="所在城市:" prop="cityName"> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.cityName" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入所在城市" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="24"> | 
|---|
|  |  |  | <ProFormItemV2 label="主营业务:" prop="cityName"> | 
|---|
|  |  |  | <ProFormItemV2 label="主营业务:" prop="mainBusiness"> | 
|---|
|  |  |  | <ProFormTextArea | 
|---|
|  |  |  | v-model="form.cityName" | 
|---|
|  |  |  | v-model="form.mainBusiness" | 
|---|
|  |  |  | maxlength="200" | 
|---|
|  |  |  | :rows="6" | 
|---|
|  |  |  | show-word-limit | 
|---|
|  |  |  | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="联系人:" | 
|---|
|  |  |  | prop="contact" | 
|---|
|  |  |  | prop="contacts" | 
|---|
|  |  |  | :check-rules="[{ message: '请输入联系人' }]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.contact" | 
|---|
|  |  |  | v-model.trim="form.contacts" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入联系人" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="联系电话:" | 
|---|
|  |  |  | prop="contactPhone" | 
|---|
|  |  |  | prop="contactPhoneNumber" | 
|---|
|  |  |  | :check-rules="[{ message: '请输入联系电话', type: 'phone' }]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFormText v-model.trim="form.contactPhone" placeholder="请输入联系电话" /> | 
|---|
|  |  |  | <ProFormText v-model.trim="form.contactPhoneNumber" placeholder="请输入联系电话" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormItemV2 label="邮箱:" prop="email"> | 
|---|
|  |  |  | <ProFormItemV2 label="邮箱:" prop="contactEmail"> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.email" | 
|---|
|  |  |  | v-model.trim="form.contactEmail" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入邮箱" | 
|---|
|  |  |  | :formatter="filterCN" | 
|---|
|  |  |  | 
|---|
|  |  |  | :is-read="isDetail" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFormCol> | 
|---|
|  |  |  | <ProFormColItem :span="12"> | 
|---|
|  |  |  | <ProFormColItem :span="8"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="账号:" | 
|---|
|  |  |  | prop="contact" | 
|---|
|  |  |  | prop="userName" | 
|---|
|  |  |  | :check-rules="[{ message: '请输入账号' }]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFormText v-model.trim="form.contact" :maxlength="30" placeholder="请输入账号" /> | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.userName" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入账号" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | <ProFormColItem :span="8" v-if="!isEdit"> | 
|---|
|  |  |  | <ProFormItemV2 | 
|---|
|  |  |  | label="密码:" | 
|---|
|  |  |  | prop="password" | 
|---|
|  |  |  | :check-rules="[{ message: '请输入密码' }]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProFormText | 
|---|
|  |  |  | v-model.trim="form.password" | 
|---|
|  |  |  | :maxlength="30" | 
|---|
|  |  |  | placeholder="请输入密码" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProFormColItem> | 
|---|
|  |  |  | </ProFormCol> | 
|---|
|  |  |  | 
|---|
|  |  |  | ProFormColItem, | 
|---|
|  |  |  | } from '@bole-core/components'; | 
|---|
|  |  |  | import { FormRules, FormInstance } from 'element-plus'; | 
|---|
|  |  |  | import { SearchType } from '@/constants'; | 
|---|
|  |  |  | import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; | 
|---|
|  |  |  | import { useRouteView, useGlobalEventContext, GlobalEvent, useSearchSettingType } from '@/hooks'; | 
|---|
|  |  |  | import * as enterpriseServices from '@/services/api/enterprise'; | 
|---|
|  |  |  | import { useRouteView, useGlobalEventContext, GlobalEvent } from '@/hooks'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  | import { validateFormList, filterCN } from '@/utils'; | 
|---|
|  |  |  | import { validateFormList, filterCN, removeEmptyKeys } from '@/utils'; | 
|---|
|  |  |  | import { Message, BoleRegExp } from '@bole-core/core'; | 
|---|
|  |  |  | import { useQuery } from '@tanstack/vue-query'; | 
|---|
|  |  |  | import { AreaType } from '@/constants'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ name: 'AddOrEditEnterpriseView' }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | type Props = { | 
|---|
|  |  |  | isDetail: boolean; | 
|---|
|  |  |  | id?: string; | 
|---|
|  |  |  | emitAddEvent?: keyof GlobalEvent; | 
|---|
|  |  |  | emitEditEvent?: keyof GlobalEvent; | 
|---|
|  |  |  | backRouteName?: string; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const props = withDefaults(defineProps<Props>(), { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | emitAddEvent: 'enterprise:add', | 
|---|
|  |  |  | emitEditEvent: 'enterprise:edit', | 
|---|
|  |  |  | backRouteName: 'EnterpriseManageList', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const route = useRoute(); | 
|---|
|  |  |  | const isEdit = computed(() => !!props.id); | 
|---|
|  |  |  | const id = route.params.id as string; | 
|---|
|  |  |  | const isEdit = computed(() => !!id); | 
|---|
|  |  |  | const { dictionaryDataList } = useDictionaryDataSelect({ | 
|---|
|  |  |  | categoryCode: computed(() => CategoryCode.IndustryCategory), | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const { closeViewPush } = useRouteView(); | 
|---|
|  |  |  | const eventContext = useGlobalEventContext(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { searchSettingTypeList: typeList } = useSearchSettingType({ | 
|---|
|  |  |  | searchType: SearchType.IndustryCategory, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const form = reactive({ | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | enterpriseName: '', | 
|---|
|  |  |  | legalPersonName: '', | 
|---|
|  |  |  | legalPersonIdNumber: '', | 
|---|
|  |  |  | legalPerson: '', | 
|---|
|  |  |  | legalIdentity: '', | 
|---|
|  |  |  | societyCreditCode: '', | 
|---|
|  |  |  | proviceName: '', | 
|---|
|  |  |  | cityName: '', | 
|---|
|  |  |  | belongIndustryType: '', | 
|---|
|  |  |  | contact: '', | 
|---|
|  |  |  | contactPhone: '', | 
|---|
|  |  |  | email: '', | 
|---|
|  |  |  | industryTypeCode: '', | 
|---|
|  |  |  | mainBusiness: '', | 
|---|
|  |  |  | areaList: [] as string[], | 
|---|
|  |  |  | contacts: '', | 
|---|
|  |  |  | contactPhoneNumber: '', | 
|---|
|  |  |  | contactEmail: '', | 
|---|
|  |  |  | userName: '', | 
|---|
|  |  |  | password: '', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onMounted(async () => {}); | 
|---|
|  |  |  | console.log('form: ', form); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { isLoading } = useQuery({ | 
|---|
|  |  |  | //   queryKey: ['insureSupplierService/getInsureSupplierInfoById', props.id], | 
|---|
|  |  |  | //   queryFn: async () => { | 
|---|
|  |  |  | //     return await insureSupplierService.getInsureSupplierInfoById( | 
|---|
|  |  |  | //       { id: props.id }, | 
|---|
|  |  |  | //       { | 
|---|
|  |  |  | //         showLoading: false, | 
|---|
|  |  |  | //       } | 
|---|
|  |  |  | //     ); | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | onSuccess(data) {}, | 
|---|
|  |  |  | enabled: computed(() => !!props.id), | 
|---|
|  |  |  | queryKey: ['enterpriseServices/getEnterprise', id], | 
|---|
|  |  |  | queryFn: async () => { | 
|---|
|  |  |  | return await enterpriseServices.getEnterprise( | 
|---|
|  |  |  | { id: id }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onSuccess(data) { | 
|---|
|  |  |  | form.id = data.id; | 
|---|
|  |  |  | form.enterpriseName = data.enterpriseName; | 
|---|
|  |  |  | form.legalPerson = data.legalPerson; | 
|---|
|  |  |  | form.legalIdentity = data.legalIdentity; | 
|---|
|  |  |  | form.societyCreditCode = data.societyCreditCode; | 
|---|
|  |  |  | form.industryTypeCode = data.industryTypeCode; | 
|---|
|  |  |  | form.mainBusiness = data.mainBusiness; | 
|---|
|  |  |  | form.contacts = data.contacts; | 
|---|
|  |  |  | form.contactPhoneNumber = data.contactPhoneNumber; | 
|---|
|  |  |  | form.contactEmail = data.contactEmail; | 
|---|
|  |  |  | form.userName = data.userName; | 
|---|
|  |  |  | form.areaList = [data.provinceCode, data.cityCode].filter(Boolean); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | enabled: computed(() => !!id), | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const formRef = ref<FormInstance>(); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleCreateOrEditFlexEnterprise() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.CreateOrEditFlexEnterpriseInput = { | 
|---|
|  |  |  | let params: API.SaveEnterpriseCommand = { | 
|---|
|  |  |  | enterpriseName: form.enterpriseName, | 
|---|
|  |  |  | legalPersonName: form.legalPersonName, | 
|---|
|  |  |  | legalPersonIdNumber: form.legalPersonIdNumber, | 
|---|
|  |  |  | legalPerson: form.legalPerson, | 
|---|
|  |  |  | legalIdentity: form.legalIdentity, | 
|---|
|  |  |  | societyCreditCode: form.societyCreditCode, | 
|---|
|  |  |  | proviceName: form.proviceName, | 
|---|
|  |  |  | cityName: form.cityName, | 
|---|
|  |  |  | belongIndustryType: form.belongIndustryType, | 
|---|
|  |  |  | contact: form.contact, | 
|---|
|  |  |  | contactPhone: form.contactPhone, | 
|---|
|  |  |  | // email: form.email, | 
|---|
|  |  |  | provinceCode: form.areaList[0], | 
|---|
|  |  |  | cityCode: form.areaList[1], | 
|---|
|  |  |  | industryTypeCode: form.industryTypeCode, | 
|---|
|  |  |  | mainBusiness: form.mainBusiness, | 
|---|
|  |  |  | contacts: form.contacts, | 
|---|
|  |  |  | contactPhoneNumber: form.contactPhoneNumber, | 
|---|
|  |  |  | contactEmail: form.contactEmail, | 
|---|
|  |  |  | userName: form.userName, | 
|---|
|  |  |  | password: form.password, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (isEdit.value) { | 
|---|
|  |  |  | params.id = props.id; | 
|---|
|  |  |  | params.id = id; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | let res = await flexEnterpriseServices.createOrEditFlexEnterprise(params); | 
|---|
|  |  |  | let res = await enterpriseServices.saveEnterprise(removeEmptyKeys(params)); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.successMessage(isEdit ? '编辑成功' : '发布成功'); | 
|---|
|  |  |  | eventContext.emit(isEdit ? 'enterprise:edit' : 'enterprise:add'); | 
|---|