完善第三方签署
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template>
|
||||
<div class="main-box setup-container">
|
||||
<el-tabs v-model="activeTab" class="setup-tabs">
|
||||
<!-- 1. 入职公司管理 -->
|
||||
@@ -23,6 +23,15 @@
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template #qiyuesuoConfig="scope">
|
||||
<el-tag
|
||||
size="small"
|
||||
:type="scope.row.qiyuesuoCategoryId && scope.row.qiyuesuoSealId ? 'success' : 'warning'"
|
||||
>
|
||||
{{ scope.row.qiyuesuoCategoryId && scope.row.qiyuesuoSealId ? "已配置" : "未配置" }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template #operation="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="openCompanyEdit(scope.row)">
|
||||
编辑
|
||||
@@ -130,50 +139,62 @@
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="dialogTitle"
|
||||
width="680px"
|
||||
width="820px"
|
||||
top="6vh"
|
||||
destroy-on-close
|
||||
append-to-body
|
||||
>
|
||||
<!-- 1. 公司表单 -->
|
||||
<el-form v-if="dialogKind === 'company'" :model="companyForm" label-width="140px">
|
||||
<el-form
|
||||
v-if="dialogKind === 'company'"
|
||||
ref="companyFormRef"
|
||||
:model="companyForm"
|
||||
:rules="companyRules"
|
||||
label-width="140px"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="公司编码" required>
|
||||
<el-input v-model="companyForm.companyCode" placeholder="如:TECH_CORP" />
|
||||
<el-form-item label="公司编码" prop="companyCode">
|
||||
<el-input v-model.trim="companyForm.companyCode" placeholder="如:TECH_CORP" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="公司简称/名称" required>
|
||||
<el-input v-model="companyForm.companyName" placeholder="如:总公司 / 科技分部" />
|
||||
<el-form-item label="公司简称/名称" prop="companyName">
|
||||
<el-input v-model.trim="companyForm.companyName" placeholder="如:总公司 / 科技分部" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="签署材料甲方全称" required>
|
||||
<el-input v-model="companyForm.legalName" placeholder="用于签署材料填写的法定主体全称" />
|
||||
<el-form-item label="签署材料甲方全称" prop="legalName">
|
||||
<el-input v-model.trim="companyForm.legalName" placeholder="必须与契约锁中的企业名称完全一致" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="统一社会信用代码">
|
||||
<el-input v-model="companyForm.unifiedSocialCreditCode" placeholder="18位统一信用代码" />
|
||||
<el-form-item label="统一社会信用代码" prop="unifiedSocialCreditCode">
|
||||
<el-input
|
||||
v-model.trim="companyForm.unifiedSocialCreditCode"
|
||||
placeholder="18位统一社会信用代码"
|
||||
maxlength="18"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="法定代表人">
|
||||
<el-input v-model="companyForm.legalRepresentative" placeholder="法定代表人姓名" />
|
||||
<el-form-item label="法定代表人" prop="legalRepresentative">
|
||||
<el-input v-model.trim="companyForm.legalRepresentative" placeholder="法定代表人姓名" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系电话">
|
||||
<el-input v-model="companyForm.contactPhone" placeholder="企业联系电话" />
|
||||
<el-form-item label="联系电话" prop="contactPhone">
|
||||
<el-input v-model.trim="companyForm.contactPhone" placeholder="企业联系电话(手机或固话)" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="状态" required>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="companyForm.status" class="w-full">
|
||||
<el-option label="启用" value="enable" />
|
||||
<el-option label="停用" value="disable" />
|
||||
@@ -182,13 +203,34 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="注册地址">
|
||||
<el-input v-model="companyForm.registeredAddress" placeholder="企业法定注册地址" />
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input v-model.trim="companyForm.registeredAddress" placeholder="企业法定注册地址" clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="companyForm.remark" type="textarea" :rows="2" placeholder="备注信息" />
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="companyForm.remark" type="textarea" :rows="2" placeholder="备注信息(选填)" />
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">契约锁电子签配置(由技术人员添加)</el-divider>
|
||||
<el-alert
|
||||
title="说明:默认业务分类 Id 与企业印章 Id 由技术人员添加配置,非技术人员请勿随意修改。"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
style="margin-bottom: 18px"
|
||||
/>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="默认业务分类 Id" prop="qiyuesuoCategoryId">
|
||||
<el-input v-model.trim="companyForm.qiyuesuoCategoryId" placeholder="契约锁当前公司的分类 Id" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业印章 Id" prop="qiyuesuoSealId">
|
||||
<el-input v-model.trim="companyForm.qiyuesuoSealId" placeholder="契约锁当前公司的印章 Id" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<!-- 2. 部门表单 -->
|
||||
@@ -322,8 +364,8 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="onboardingSetup">
|
||||
import { ref, reactive, computed, onMounted } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { ref, reactive, computed, onMounted, nextTick } from "vue";
|
||||
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "element-plus";
|
||||
import { Plus, Edit, Delete } from "@element-plus/icons-vue";
|
||||
import {
|
||||
onboardingTaskApi,
|
||||
@@ -370,6 +412,8 @@ const emptyCompany = (): Partial<OnboardingCompany> => ({
|
||||
legalRepresentative: "",
|
||||
registeredAddress: "",
|
||||
contactPhone: "",
|
||||
qiyuesuoCategoryId: "",
|
||||
qiyuesuoSealId: "",
|
||||
status: "enable",
|
||||
remark: ""
|
||||
});
|
||||
@@ -394,7 +438,72 @@ const emptyPosition = (): Partial<OnboardingPosition> => ({
|
||||
remark: ""
|
||||
});
|
||||
|
||||
const companyFormRef = ref<FormInstance>();
|
||||
const companyForm = reactive<Partial<OnboardingCompany>>(emptyCompany());
|
||||
|
||||
const companyRules = reactive<FormRules>({
|
||||
companyCode: [
|
||||
{ required: true, message: "请输入公司编码", trigger: "blur" },
|
||||
{
|
||||
pattern: /^[a-zA-Z0-9_-]{2,50}$/,
|
||||
message: "公司编码格式不正确,支持2-50位字母、数字、下划线或短横线",
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
companyName: [
|
||||
{ required: true, message: "请输入公司简称/名称", trigger: "blur" },
|
||||
{ min: 2, max: 100, message: "公司名称长度需在 2 到 100 个字符之间", trigger: "blur" }
|
||||
],
|
||||
legalName: [
|
||||
{ required: true, message: "请输入签署材料甲方全称", trigger: "blur" },
|
||||
{ min: 2, max: 100, message: "甲方全称长度需在 2 到 100 个字符之间", trigger: "blur" }
|
||||
],
|
||||
unifiedSocialCreditCode: [
|
||||
{ required: true, message: "请输入统一社会信用代码", trigger: "blur" },
|
||||
{
|
||||
pattern: /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/i,
|
||||
message: "统一社会信用代码格式不正确,请输入18位标准社会信用代码",
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
legalRepresentative: [
|
||||
{ required: true, message: "请输入法定代表人姓名", trigger: "blur" },
|
||||
{
|
||||
pattern: /^[\u4e00-\u9fa5a-zA-Z·.\s]{2,20}$/,
|
||||
message: "法定代表人姓名格式不正确,请输入2-20位中英文姓名",
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
contactPhone: [
|
||||
{ required: true, message: "请输入企业联系电话", trigger: "blur" },
|
||||
{
|
||||
pattern: /^(1[3-9]\d{9}|(0\d{2,3}-?)?\d{7,8}|400(-?\d{3,4}){2})$/,
|
||||
message: "联系电话格式不正确,请输入有效的手机号或固话号码",
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: "请选择公司启用状态", trigger: "change" }
|
||||
],
|
||||
registeredAddress: [
|
||||
{ required: true, message: "请输入企业法定注册地址", trigger: "blur" },
|
||||
{ min: 4, max: 200, message: "注册地址请至少输入4个字符", trigger: "blur" }
|
||||
],
|
||||
qiyuesuoCategoryId: [
|
||||
{
|
||||
pattern: /^\d*$/,
|
||||
message: "契约锁业务分类 Id 必须为纯数字",
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
qiyuesuoSealId: [
|
||||
{
|
||||
pattern: /^\d*$/,
|
||||
message: "契约锁企业印章 Id 必须为纯数字",
|
||||
trigger: "blur"
|
||||
}
|
||||
]
|
||||
});
|
||||
const departmentForm = reactive<Partial<OnboardingDepartment>>(emptyDepartment());
|
||||
const positionForm = reactive<Partial<OnboardingPosition>>(emptyPosition());
|
||||
|
||||
@@ -438,6 +547,12 @@ const companyColumns: ColumnProps<OnboardingCompany>[] = [
|
||||
label: "联系电话",
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: "qiyuesuoConfig",
|
||||
label: "契约锁配置",
|
||||
width: 120,
|
||||
align: "center"
|
||||
},
|
||||
{
|
||||
prop: "status",
|
||||
label: "状态",
|
||||
@@ -602,6 +717,9 @@ function openCompanyCreate() {
|
||||
editing.value = false;
|
||||
resetCompany();
|
||||
dialogVisible.value = true;
|
||||
nextTick(() => {
|
||||
companyFormRef.value?.clearValidate();
|
||||
});
|
||||
}
|
||||
|
||||
function openDepartmentCreate() {
|
||||
@@ -625,6 +743,9 @@ async function openCompanyEdit(row: OnboardingCompany) {
|
||||
editing.value = true;
|
||||
Object.assign(companyForm, data);
|
||||
dialogVisible.value = true;
|
||||
nextTick(() => {
|
||||
companyFormRef.value?.clearValidate();
|
||||
});
|
||||
}
|
||||
|
||||
async function openDepartmentEdit(row: OnboardingDepartment) {
|
||||
@@ -648,8 +769,21 @@ async function openPositionEdit(row: OnboardingPosition) {
|
||||
|
||||
async function save() {
|
||||
if (dialogKind.value === "company") {
|
||||
if (!companyForm.companyCode || !companyForm.companyName || !companyForm.legalName) {
|
||||
return ElMessage.warning("请填写公司编码、公司名称和签署材料甲方全称");
|
||||
const valid = await companyFormRef.value?.validate().catch(() => false);
|
||||
if (!valid) return;
|
||||
|
||||
const categoryId = companyForm.qiyuesuoCategoryId?.trim() || "";
|
||||
const sealId = companyForm.qiyuesuoSealId?.trim() || "";
|
||||
if (Boolean(categoryId) !== Boolean(sealId)) {
|
||||
return ElMessage.warning("契约锁默认业务分类 Id 和企业印章 Id 必须同时填写(或均不填)");
|
||||
}
|
||||
if (categoryId && (!/^\d+$/.test(categoryId) || !/^\d+$/.test(sealId))) {
|
||||
return ElMessage.warning("契约锁默认业务分类 Id 和企业印章 Id 只能填写数字");
|
||||
}
|
||||
companyForm.qiyuesuoCategoryId = categoryId;
|
||||
companyForm.qiyuesuoSealId = sealId;
|
||||
if (companyForm.unifiedSocialCreditCode) {
|
||||
companyForm.unifiedSocialCreditCode = companyForm.unifiedSocialCreditCode.trim().toUpperCase();
|
||||
}
|
||||
await onboardingTaskApi.saveCompany(companyForm, editing.value);
|
||||
companyTable.value?.refresh();
|
||||
|
||||
Reference in New Issue
Block a user