<template>
|
<LoadingLayout :loading="isEdit && isLoading">
|
<AppScrollContainer>
|
<ChunkCell title="企业基本信息">
|
<ProForm :model="form" :rules="rules" ref="formRef" label-width="120px" :is-read="isDetail">
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="企业名称:" prop="name" required>
|
<ProFormText
|
v-model.trim="form.name"
|
:maxlength="30"
|
placeholder="请输入供应商名称"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="法人姓名:" prop="name" required>
|
<ProFormText
|
v-model.trim="form.name"
|
:maxlength="30"
|
placeholder="请输入法人姓名"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="法人身份证号:" prop="name" required>
|
<ProFormText
|
v-model.trim="form.name"
|
:maxlength="30"
|
placeholder="请输入法人身份证号"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="统一社会信用代码:" prop="societyCreditCode">
|
<ProFormText
|
v-model.trim="form.societyCreditCode"
|
placeholder="请输入统一社会信用代码"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="所在省份:" prop="name" required>
|
<ProFormText
|
v-model.trim="form.name"
|
:maxlength="30"
|
placeholder="请输入所在省份"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="所属行业:" prop="name" required>
|
<ProFormSelect
|
placeholder="请选择所属行业"
|
:value-enum="typeList"
|
clearable
|
v-model="form.name"
|
></ProFormSelect>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="所在城市:" prop="name" required>
|
<ProFormText
|
v-model.trim="form.name"
|
:maxlength="30"
|
placeholder="请输入所在城市"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="24">
|
<ProFormItemV2 label="主营业务:" prop="name">
|
<ProFormTextArea
|
v-model="form.name"
|
maxlength="200"
|
:rows="6"
|
show-word-limit
|
placeholder="请输入主营业务"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
</ProForm>
|
</ChunkCell>
|
<ChunkCell title="联系信息">
|
<ProForm
|
:model="form"
|
:rules="rules"
|
ref="settingFormRef"
|
label-width="140px"
|
:scroll-to-error="false"
|
:is-read="isDetail"
|
>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="联系人:" prop="contact">
|
<ProFormText
|
v-model.trim="form.contact"
|
:maxlength="30"
|
placeholder="请输入联系人"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="联系电话:" prop="contactPhone">
|
<ProFormText v-model.trim="form.contactPhone" placeholder="请输入联系电话" />
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="邮箱:" prop="email">
|
<ProFormText
|
v-model.trim="form.email"
|
:maxlength="30"
|
placeholder="请输入邮箱"
|
:formatter="filterCN"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
</ProForm>
|
</ChunkCell>
|
</AppScrollContainer>
|
</LoadingLayout>
|
</template>
|
<script setup lang="ts">
|
import {
|
LoadingLayout,
|
AppScrollContainer,
|
ProForm,
|
ProFormItemV2,
|
ChunkCell,
|
ProFormText,
|
ProFormSelect,
|
ProFormTextArea,
|
ProFormCol,
|
ProFormColItem,
|
} from '@bole-core/components';
|
import { FormRules, FormInstance } from 'element-plus';
|
import { SearchType } from '@/constants';
|
import * as searchSettingServices from '@/services/api/SearchSetting';
|
import { useRouteView, useGlobalEventContext, GlobalEvent, useSearchSettingType } from '@/hooks';
|
import _ from 'lodash';
|
import { validateFormList, filterCN } from '@/utils';
|
import { Message, BoleRegExp } from '@bole-core/core';
|
import { useQuery } from '@tanstack/vue-query';
|
|
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: '',
|
});
|
|
const route = useRoute();
|
const isEdit = computed(() => !!props.id);
|
const { closeViewPush } = useRouteView();
|
const eventContext = useGlobalEventContext();
|
|
const { searchSettingTypeList: typeList } = useSearchSettingType({
|
searchType: SearchType.IndustryCategory,
|
});
|
|
const form = reactive({
|
id: '',
|
name: '',
|
societyCreditCode: '',
|
contact: '',
|
contactPhone: '',
|
email: '',
|
});
|
|
onMounted(async () => {});
|
|
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),
|
});
|
|
const formRef = ref<FormInstance>();
|
const settingFormRef = ref<FormInstance>();
|
|
const rules = reactive<FormRules>({
|
name: [{ required: true, message: '请输入供应商名称', trigger: 'blur' }],
|
societyCreditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }],
|
categoryType: [{ required: true, message: '请选择行业配套', trigger: 'change' }],
|
areaList: [{ required: true, message: '请选择所在地区', trigger: 'change', type: 'array' }],
|
companyAddress: [{ required: true, message: '请输入公司地址', trigger: 'blur' }],
|
contact: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
|
suppierLevel: [{ required: true, message: '请选择供应商等级', trigger: 'change' }],
|
// suppierType: [{ required: true, message: '请选择供应商类型', trigger: 'change' }],
|
contactPhone: [
|
{ required: true, message: '请输入联系电话', trigger: 'blur' },
|
{ message: '请输入正确的联系电话', trigger: 'blur', pattern: BoleRegExp.RegPhoneNumber },
|
],
|
});
|
|
async function handleSubmit() {
|
try {
|
const valid = await validateFormList([formRef.value, settingFormRef.value]);
|
if (valid) {
|
handleCreateOrEditInsureSupplier();
|
}
|
} catch (error) {}
|
}
|
|
async function handleCreateOrEditInsureSupplier() {
|
try {
|
// let params: API.CreateOrEditSearchInput = {
|
// name: form.name,
|
// };
|
// if (isEdit.value) {
|
// params.id = props.id;
|
// }
|
// let res = await searchSettingServices.createOrEditSearchSetting(params);
|
// if (res) {
|
// Message.successMessage(isEdit ? '编辑成功' : '发布成功');
|
// eventContext.emit(isEdit ? 'enterprise:edit' : 'enterprise:add');
|
// handleBack();
|
// }
|
} catch (error) {}
|
}
|
|
function handleBack() {
|
closeViewPush(route, {
|
name: 'EnterpriseManageList',
|
});
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|