ow
This commit is contained in:
1 parent
fcbeba7287
commit
f2f5807372
33 files changed
+1399
-1444
No files matched your search
@@ -587,6 +587,9 @@ const handleChange = (bindValue: string, value: string) => {
|
||||
|
||||
const onReset = () => {
|
||||
bindOptions.value.forEach((element: BindOption) => {
|
||||
// 只读(disabled)的查询条件属于固定约束,重置时保留其值
|
||||
if (element.disabled) return;
|
||||
|
||||
element.Value = "";
|
||||
element.Value1 = "";
|
||||
element.Values = [];
|
||||
|
||||
@@ -56,6 +56,36 @@ class FamilyTreeService{
|
||||
)
|
||||
};
|
||||
|
||||
async RequestFamilyTreePermission(data: any) {
|
||||
return request<any>(
|
||||
{
|
||||
url: "/FamilyTree/RequestFamilyTreePermission",
|
||||
method: "post",
|
||||
data,
|
||||
}
|
||||
)
|
||||
};
|
||||
|
||||
async ApproveFamilyTreePermission(data: any) {
|
||||
return request<any>(
|
||||
{
|
||||
url: "/FamilyTree/ApproveFamilyTreePermission",
|
||||
method: "post",
|
||||
data,
|
||||
}
|
||||
)
|
||||
};
|
||||
|
||||
async RejectFamilyTreePermission(data: any) {
|
||||
return request<any>(
|
||||
{
|
||||
url: "/FamilyTree/RejectFamilyTreePermission",
|
||||
method: "post",
|
||||
data,
|
||||
}
|
||||
)
|
||||
};
|
||||
|
||||
async Update(data: FamilyTreeData) {
|
||||
return request<FamilyTreeData>(
|
||||
{
|
||||
|
||||
@@ -396,6 +396,15 @@ const initBindOption = async () => {
|
||||
bindOption.lg = 10;
|
||||
bindOptions.value.push(bindOption);
|
||||
|
||||
bindOption = ubo.getBindOption(
|
||||
FamilyPersonEntity.DB_TREE_ID,
|
||||
"族谱编号",
|
||||
SearchFilterTypePolicy.TEXT,
|
||||
SearchFilterOperatorPolicy.CONTAIN,
|
||||
);
|
||||
bindOption.lg = 10;
|
||||
bindOptions.value.push(bindOption);
|
||||
|
||||
initBindOptions.value.forEach((element) => {
|
||||
setBindOptionValue(
|
||||
element.BindValue,
|
||||
@@ -405,15 +414,6 @@ const initBindOption = async () => {
|
||||
element.disabled,
|
||||
);
|
||||
});
|
||||
|
||||
bindOption = ubo.getBindOption(
|
||||
FamilyPersonEntity.DB_CREATED_DATETIME,
|
||||
"创建日期",
|
||||
SearchFilterTypePolicy.DATE,
|
||||
SearchFilterOperatorPolicy.DATE_BETWEEN,
|
||||
);
|
||||
bindOption.lg = 10;
|
||||
bindOptions.value.push(bindOption);
|
||||
};
|
||||
|
||||
//table from-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -7,47 +7,26 @@
|
||||
<a-row :wrap="false">
|
||||
<a-col flex="none">
|
||||
<div style="padding: 0">
|
||||
<a-input
|
||||
flex="none"
|
||||
readonly
|
||||
value="族员编号"
|
||||
class="site-input-split"
|
||||
style="
|
||||
<a-input flex="none" readonly value="族员编号" class="site-input-split" style="
|
||||
width: 160px;
|
||||
border-radius: 0;
|
||||
border-top-left-radius: 5pt 5pt;
|
||||
border-bottom-left-radius: 5pt 5pt;
|
||||
pointer-events: none;
|
||||
"
|
||||
/>
|
||||
" />
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col flex="auto">
|
||||
<a-input-search
|
||||
:disabled="isEdit"
|
||||
v-model:value="personId"
|
||||
flex="auto"
|
||||
@search="onModalSearch"
|
||||
/>
|
||||
<a-input-search :disabled="isEdit" v-model:value="personId" flex="auto" @search="onModalSearch" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
<a-col :lg="12" :sm="24">
|
||||
<a-space>
|
||||
<a-button
|
||||
type="primary"
|
||||
:disabled="isEdit"
|
||||
:icon="h(FileSearchOutlined)"
|
||||
@click.prevent="onSearch"
|
||||
>查询</a-button
|
||||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
:disabled="isEdit"
|
||||
:icon="h(ClearOutlined)"
|
||||
@click.prevent="onReset"
|
||||
>重置</a-button
|
||||
>
|
||||
<a-button type="primary" :disabled="isEdit" :icon="h(FileSearchOutlined)"
|
||||
@click.prevent="onSearch">查询</a-button>
|
||||
<a-button type="primary" :disabled="isEdit" :icon="h(ClearOutlined)"
|
||||
@click.prevent="onReset">重置</a-button>
|
||||
<!-- <a-button
|
||||
type="primary"
|
||||
:disabled="isEdit"
|
||||
@@ -59,27 +38,13 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
<div
|
||||
class="page-main"
|
||||
:class="{ 'fp-readonly': !isEdit }"
|
||||
:style="{ height: resultH }"
|
||||
>
|
||||
<div class="page-main" :class="{ 'fp-readonly': !isEdit }" :style="{ height: resultH }">
|
||||
<!-- 顶部:头像 / 姓名 / 编号 -->
|
||||
<div class="fp-hero">
|
||||
<FileUpload
|
||||
class="fp-hero-upload"
|
||||
accept="image/*"
|
||||
file-path="FamilyPersonAvatar"
|
||||
:disabled="!isEdit || avatarUploading"
|
||||
@start="onAvatarUploadStart"
|
||||
@progress="onAvatarUploadProgress"
|
||||
@success="onAvatarUploadSuccess"
|
||||
@error="onAvatarUploadError"
|
||||
>
|
||||
<div
|
||||
class="fp-hero-avatar-wrap"
|
||||
:class="{ 'is-editing': isEdit }"
|
||||
>
|
||||
<FileUpload class="fp-hero-upload" accept="image/*" file-path="FamilyPersonAvatar"
|
||||
:disabled="!isEdit || avatarUploading" @start="onAvatarUploadStart" @progress="onAvatarUploadProgress"
|
||||
@success="onAvatarUploadSuccess" @error="onAvatarUploadError">
|
||||
<div class="fp-hero-avatar-wrap" :class="{ 'is-editing': isEdit }">
|
||||
<a-avatar class="fp-hero-avatar" :size="72" :src="avatarSrc">
|
||||
<template #icon>
|
||||
<UserOutlined />
|
||||
@@ -95,26 +60,20 @@
|
||||
<div class="fp-hero-name">
|
||||
{{
|
||||
(data.FamilyPerson.Surname || "") +
|
||||
(data.FamilyPerson.GenealogyName || "") || "未填写姓名"
|
||||
(data.FamilyPerson.GenealogyName || "") || "未填写姓名"
|
||||
}}
|
||||
</div>
|
||||
<div class="fp-hero-meta">
|
||||
<span class="fp-chip"
|
||||
>编号 {{ data.FamilyPerson.PersonId || "-" }}</span
|
||||
>
|
||||
<span class="fp-chip">编号 {{ data.FamilyPerson.PersonId || "-" }}</span>
|
||||
</div>
|
||||
<div class="fp-hero-meta">
|
||||
<span class="fp-chip">族谱编号 {{ data.FamilyPerson.TreeId || "-" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<a-button
|
||||
v-if="
|
||||
isEdit &&
|
||||
(data.FamilyPerson.AvatarUrl || data.FamilyPerson.AvatarFilename)
|
||||
"
|
||||
class="fp-hero-clear"
|
||||
type="text"
|
||||
size="small"
|
||||
@click.prevent="onClearAvatar"
|
||||
>清除头像</a-button
|
||||
>
|
||||
<a-button v-if="
|
||||
isEdit &&
|
||||
(data.FamilyPerson.AvatarUrl || data.FamilyPerson.AvatarFilename)
|
||||
" class="fp-hero-clear" type="text" size="small" @click.prevent="onClearAvatar">清除头像</a-button>
|
||||
</div>
|
||||
<!-- 基本资料 -->
|
||||
<div class="fp-card">
|
||||
@@ -122,84 +81,43 @@
|
||||
<div class="fp-grid">
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">姓氏<span class="fp-required">*</span></div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Surname"
|
||||
placeholder="请输入姓氏"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.Surname"
|
||||
placeholder="请输入姓氏" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">谱名<span class="fp-required">*</span></div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.GenealogyName"
|
||||
placeholder="请输入谱名"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.GenealogyName"
|
||||
placeholder="请输入谱名" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">常用名</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.CommonName"
|
||||
placeholder="请输入常用名"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.CommonName"
|
||||
placeholder="请输入常用名" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">别名</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Alias"
|
||||
placeholder="请输入别名"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.Alias"
|
||||
placeholder="请输入别名" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">字</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Zi"
|
||||
placeholder="请输入字"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.Zi"
|
||||
placeholder="请输入字" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">号</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Hao"
|
||||
placeholder="请输入号"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.Hao"
|
||||
placeholder="请输入号" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">行第</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="32"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.BirthOrder"
|
||||
placeholder="如:三"
|
||||
/>
|
||||
<a-input size="large" :maxlength="32" :readonly="!isEdit" v-model:value="data.FamilyPerson.BirthOrder"
|
||||
placeholder="如:三" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">性别</div>
|
||||
<a-select
|
||||
size="large"
|
||||
v-model:value="data.FamilyPerson.Gender"
|
||||
:disabled="!isEdit"
|
||||
style="width: 100%"
|
||||
placeholder="请选择性别"
|
||||
:options="genderSelectOptions"
|
||||
>
|
||||
<a-select size="large" v-model:value="data.FamilyPerson.Gender" :disabled="!isEdit" style="width: 100%"
|
||||
placeholder="请选择性别" :options="genderSelectOptions">
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -210,95 +128,47 @@
|
||||
<div class="fp-grid">
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">婚姻</div>
|
||||
<a-select
|
||||
size="large"
|
||||
v-model:value="data.FamilyPerson.MaritalStatus"
|
||||
:disabled="!isEdit"
|
||||
style="width: 100%"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="o in yesNoPolicy"
|
||||
:value="o.BindValue"
|
||||
>{{ o.DisplayName }}</a-select-option
|
||||
>
|
||||
<a-select size="large" v-model:value="data.FamilyPerson.MaritalStatus" :disabled="!isEdit"
|
||||
style="width: 100%" placeholder="请选择">
|
||||
<a-select-option v-for="o in yesNoPolicy" :value="o.BindValue">{{ o.DisplayName }}</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">父亲姓名</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="50"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.FatherId"
|
||||
placeholder="请输入父亲姓名"
|
||||
/>
|
||||
<a-input size="large" :maxlength="50" :readonly="!isEdit" v-model:value="data.FamilyPerson.FatherId"
|
||||
placeholder="请输入父亲姓名" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">母亲姓名</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="100"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.MotherName"
|
||||
placeholder="请输入母亲姓名"
|
||||
/>
|
||||
<a-input size="large" :maxlength="100" :readonly="!isEdit" v-model:value="data.FamilyPerson.MotherName"
|
||||
placeholder="请输入母亲姓名" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">学校</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="256"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.School"
|
||||
placeholder="请输入毕业学校"
|
||||
/>
|
||||
<a-input size="large" :maxlength="256" :readonly="!isEdit" v-model:value="data.FamilyPerson.School"
|
||||
placeholder="请输入毕业学校" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">专业</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="256"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Major"
|
||||
placeholder="请输入所学专业"
|
||||
/>
|
||||
<a-input size="large" :maxlength="256" :readonly="!isEdit" v-model:value="data.FamilyPerson.Major"
|
||||
placeholder="请输入所学专业" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">学历</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="128"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Education"
|
||||
placeholder="请输入学历"
|
||||
/>
|
||||
<a-input size="large" :maxlength="128" :readonly="!isEdit" v-model:value="data.FamilyPerson.Education"
|
||||
placeholder="请输入学历" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">毕业</div>
|
||||
<a-select
|
||||
size="large"
|
||||
v-model:value="data.FamilyPerson.GraduationStatus"
|
||||
:disabled="!isEdit"
|
||||
style="width: 100%"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="o in yesNoPolicy"
|
||||
:value="o.BindValue"
|
||||
>{{ o.DisplayName }}</a-select-option
|
||||
>
|
||||
<a-select size="large" v-model:value="data.FamilyPerson.GraduationStatus" :disabled="!isEdit"
|
||||
style="width: 100%" placeholder="请选择">
|
||||
<a-select-option v-for="o in yesNoPolicy" :value="o.BindValue">{{ o.DisplayName }}</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">职务</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="256"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Duty"
|
||||
placeholder="请输入职务"
|
||||
/>
|
||||
<a-input size="large" :maxlength="256" :readonly="!isEdit" v-model:value="data.FamilyPerson.Duty"
|
||||
placeholder="请输入职务" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -308,68 +178,33 @@
|
||||
<div class="fp-grid">
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">头衔</div>
|
||||
<a-input
|
||||
size="large"
|
||||
:maxlength="256"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Title"
|
||||
placeholder="请输入头衔"
|
||||
/>
|
||||
<a-input size="large" :maxlength="256" :readonly="!isEdit" v-model:value="data.FamilyPerson.Title"
|
||||
placeholder="请输入头衔" />
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">公开</div>
|
||||
<a-select
|
||||
size="large"
|
||||
v-model:value="data.FamilyPerson.Privacy"
|
||||
:disabled="!isEdit"
|
||||
style="width: 100%"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="o in yesNoPolicy"
|
||||
:value="o.BindValue"
|
||||
>{{ o.DisplayName }}</a-select-option
|
||||
>
|
||||
<a-select size="large" v-model:value="data.FamilyPerson.Privacy" :disabled="!isEdit" style="width: 100%"
|
||||
placeholder="请选择">
|
||||
<a-select-option v-for="o in yesNoPolicy" :value="o.BindValue">{{ o.DisplayName }}</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">状态</div>
|
||||
<a-select
|
||||
size="large"
|
||||
v-model:value="data.FamilyPerson.LiveStatus"
|
||||
:disabled="!isEdit"
|
||||
style="width: 100%"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="o in yesNoPolicy"
|
||||
:value="o.BindValue"
|
||||
>{{ o.DisplayName }}</a-select-option
|
||||
>
|
||||
<a-select size="large" v-model:value="data.FamilyPerson.LiveStatus" :disabled="!isEdit"
|
||||
style="width: 100%" placeholder="请选择">
|
||||
<a-select-option v-for="o in yesNoPolicy" :value="o.BindValue">{{ o.DisplayName }}</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">绑定用户ID</div>
|
||||
<div class="fp-inline">
|
||||
<a-input
|
||||
class="fp-inline-main"
|
||||
size="large"
|
||||
:maxlength="50"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.BindUserId"
|
||||
placeholder="请输入用户ID"
|
||||
/>
|
||||
<a-button
|
||||
class="fp-inline-btn"
|
||||
size="large"
|
||||
type="primary"
|
||||
ghost
|
||||
:disabled="data.FamilyPerson.IsBindUser === 'Y'"
|
||||
@click.prevent="
|
||||
<a-input class="fp-inline-main" size="large" :maxlength="50" :readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.BindUserId" placeholder="请输入用户ID" />
|
||||
<a-button class="fp-inline-btn" size="large" type="primary" ghost
|
||||
:disabled="data.FamilyPerson.IsBindUser === 'Y'" @click.prevent="
|
||||
data.FamilyPerson.IsBindUser =
|
||||
data.FamilyPerson.IsBindUser === 'Y' ? 'N' : 'Y'
|
||||
"
|
||||
>
|
||||
data.FamilyPerson.IsBindUser === 'Y' ? 'N' : 'Y'
|
||||
">
|
||||
{{
|
||||
data.FamilyPerson.IsBindUser === "Y" ? "已绑定" : "绑定用户"
|
||||
}}
|
||||
@@ -379,41 +214,19 @@
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">生于</div>
|
||||
<div class="fp-inline">
|
||||
<a-input
|
||||
class="fp-inline-main"
|
||||
size="large"
|
||||
:maxlength="128"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.BirthText"
|
||||
placeholder="如:乙丑年正月初一"
|
||||
/>
|
||||
<a-date-picker
|
||||
class="fp-inline-date"
|
||||
size="large"
|
||||
:disabled="!isEdit"
|
||||
v-model:value="birthDate"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
<a-input class="fp-inline-main" size="large" :maxlength="128" :readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.BirthText" placeholder="如:乙丑年正月初一" />
|
||||
<a-date-picker class="fp-inline-date" size="large" :disabled="!isEdit" v-model:value="birthDate"
|
||||
placeholder="选择日期" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">离世</div>
|
||||
<div class="fp-inline">
|
||||
<a-input
|
||||
class="fp-inline-main"
|
||||
size="large"
|
||||
:maxlength="128"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.DeathText"
|
||||
placeholder="如:戊辰年八月十五"
|
||||
/>
|
||||
<a-date-picker
|
||||
class="fp-inline-date"
|
||||
size="large"
|
||||
:disabled="!isEdit"
|
||||
v-model:value="deathDate"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
<a-input class="fp-inline-main" size="large" :maxlength="128" :readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.DeathText" placeholder="如:戊辰年八月十五" />
|
||||
<a-date-picker class="fp-inline-date" size="large" :disabled="!isEdit" v-model:value="deathDate"
|
||||
placeholder="选择日期" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -423,14 +236,8 @@
|
||||
<div class="fp-card-title">生平简介</div>
|
||||
<div class="fp-field">
|
||||
<div class="fp-label">简介</div>
|
||||
<a-textarea
|
||||
size="large"
|
||||
:auto-size="{ minRows: 4, maxRows: 8 }"
|
||||
:maxlength="3000"
|
||||
:readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Introduction"
|
||||
placeholder="请输入生平简介"
|
||||
/>
|
||||
<a-textarea size="large" :auto-size="{ minRows: 4, maxRows: 8 }" :maxlength="3000" :readonly="!isEdit"
|
||||
v-model:value="data.FamilyPerson.Introduction" placeholder="请输入生平简介" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -441,60 +248,24 @@
|
||||
<div>
|
||||
<a-row v-if="isEdit" :gutter="[16, 8]">
|
||||
<a-space>
|
||||
<a-popconfirm
|
||||
v-if="data.FamilyPerson.CreatedBy"
|
||||
title="确定是否取消修改?"
|
||||
ok-text="是"
|
||||
cancel-text="否"
|
||||
@confirm="onCancel"
|
||||
>
|
||||
<a-button type="primary" ghost :icon="h(UndoOutlined)"
|
||||
>取消</a-button
|
||||
>
|
||||
<a-popconfirm v-if="data.FamilyPerson.CreatedBy" title="确定是否取消修改?" ok-text="是" cancel-text="否"
|
||||
@confirm="onCancel">
|
||||
<a-button type="primary" ghost :icon="h(UndoOutlined)">取消</a-button>
|
||||
</a-popconfirm>
|
||||
<a-button
|
||||
v-if="!data.FamilyPerson.CreatedBy"
|
||||
type="primary"
|
||||
ghost
|
||||
:icon="h(UndoOutlined)"
|
||||
@click.prevent="onCancel"
|
||||
>取消</a-button
|
||||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
ghost
|
||||
:icon="h(SaveOutlined)"
|
||||
@click.prevent="onSave"
|
||||
>保存</a-button
|
||||
>
|
||||
<a-button v-if="!data.FamilyPerson.CreatedBy" type="primary" ghost :icon="h(UndoOutlined)"
|
||||
@click.prevent="onCancel">取消</a-button>
|
||||
<a-button type="primary" ghost :icon="h(SaveOutlined)" @click.prevent="onSave">保存</a-button>
|
||||
</a-space>
|
||||
</a-row>
|
||||
<a-row v-else :gutter="[16, 8]">
|
||||
<a-space>
|
||||
<a-button
|
||||
type="primary"
|
||||
v-if="canAmend"
|
||||
:icon="h(EditOutlined)"
|
||||
:disabled="!hasData"
|
||||
@click.prevent="onAmend"
|
||||
>修改</a-button
|
||||
>
|
||||
<!-- <a-popconfirm
|
||||
:disabled="!hasData"
|
||||
title="确定是否删除这条记录?"
|
||||
ok-text="是"
|
||||
cancel-text="否"
|
||||
@confirm="onDelete"
|
||||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
danger
|
||||
:icon="h(DeleteOutlined)"
|
||||
:disabled="!hasData"
|
||||
v-if="canDelete"
|
||||
>删除</a-button
|
||||
>
|
||||
</a-popconfirm> -->
|
||||
<a-button type="primary" v-if="canAmend" :icon="h(EditOutlined)" :disabled="!hasData"
|
||||
@click.prevent="onAmend">修改</a-button>
|
||||
<a-popconfirm :disabled="!hasData" title="确定是否删除这条记录?" ok-text="是" cancel-text="否"
|
||||
@confirm="onDelete">
|
||||
<a-button type="primary" danger :icon="h(DeleteOutlined)" :disabled="!hasData"
|
||||
v-if="canDelete && data.FamilyPerson && data.FamilyPerson.TreeId.length == 0">删除</a-button>
|
||||
</a-popconfirm>
|
||||
</a-space>
|
||||
</a-row>
|
||||
</div>
|
||||
@@ -503,17 +274,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<dragModal
|
||||
v-model:open="modelOption.isModalPerson"
|
||||
title="人员查询"
|
||||
:mask-closable="false"
|
||||
:fullscreen="width < 640"
|
||||
@ok="handleSelect"
|
||||
>
|
||||
<FamilyPersonEnquiry
|
||||
ref="enquiry"
|
||||
@on-row-dblclick="handleSelect"
|
||||
></FamilyPersonEnquiry>
|
||||
<dragModal v-model:open="modelOption.isModalPerson" title="人员查询" :mask-closable="false" :fullscreen="width < 640"
|
||||
@ok="handleSelect">
|
||||
<FamilyPersonEnquiry ref="enquiry" @on-row-dblclick="handleSelect"></FamilyPersonEnquiry>
|
||||
</dragModal>
|
||||
</a-spin>
|
||||
</template>
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
<template>
|
||||
<dragModal
|
||||
v-model:open="visible"
|
||||
:title="title || '新增家族成员'"
|
||||
:fullscreen="width < 640"
|
||||
:mask-closable="false"
|
||||
:ok-button-props="{ loading: saving }"
|
||||
cancel-text="取消"
|
||||
ok-text="确定"
|
||||
@ok="handleOk"
|
||||
>
|
||||
<div class="fpcq-form">
|
||||
<div class="fpcq-field">
|
||||
<div class="fpcq-label">
|
||||
姓<span class="fpcq-required">*</span>
|
||||
</div>
|
||||
<a-input
|
||||
ref="surnameInputRef"
|
||||
size="large"
|
||||
v-model:value="form.Surname"
|
||||
placeholder="请输入姓氏"
|
||||
:maxlength="100"
|
||||
allow-clear
|
||||
/>
|
||||
</div>
|
||||
<div class="fpcq-field">
|
||||
<div class="fpcq-label">
|
||||
名<span class="fpcq-required">*</span>
|
||||
</div>
|
||||
<a-input
|
||||
size="large"
|
||||
v-model:value="form.GenealogyName"
|
||||
placeholder="请输入谱名/名字"
|
||||
:maxlength="100"
|
||||
allow-clear
|
||||
/>
|
||||
</div>
|
||||
<div class="fpcq-field">
|
||||
<div class="fpcq-label">
|
||||
性别<span class="fpcq-required">*</span>
|
||||
</div>
|
||||
<a-select
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
v-model:value="form.Gender"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<a-select-option
|
||||
v-for="o in genderOptions"
|
||||
:key="o.BindValue"
|
||||
:value="o.BindValue"
|
||||
>{{ o.DisplayName }}</a-select-option
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
</dragModal>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch, computed, nextTick } from "vue";
|
||||
import { notification } from "ant-design-vue";
|
||||
import dragModal from "@/components/basic/DragModal.vue";
|
||||
import FamilyPersonService from "@/service/master/familyPersonService";
|
||||
import { FamilyPersonData } from "@/data/auto/familyPersonData";
|
||||
import { FamilyPersonDisplayData } from "@/data/auto/familyPersonDisplayData";
|
||||
import { useLocalePolicy } from "@/hooks/useLocalePolicy";
|
||||
import { SelectOption } from "@/data/auto/selectOption";
|
||||
import { useWindowSize } from "@vueuse/core";
|
||||
|
||||
interface Props {
|
||||
open: boolean;
|
||||
treeId?: string;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
treeId: "",
|
||||
title: "",
|
||||
});
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: "update:open", value: boolean): void;
|
||||
(e: "created", person: FamilyPersonDisplayData): void;
|
||||
}>();
|
||||
|
||||
const visible = computed<boolean>({
|
||||
get: () => props.open,
|
||||
set: (v) => emit("update:open", v),
|
||||
});
|
||||
|
||||
const { width } = useWindowSize();
|
||||
const { getPolicyOptionsComputed } = useLocalePolicy();
|
||||
const genderOptions = getPolicyOptionsComputed("GenderPolicy") as SelectOption[];
|
||||
|
||||
const surnameInputRef = ref<any>(null);
|
||||
const saving = ref<boolean>(false);
|
||||
|
||||
const form = ref<{
|
||||
Surname: string;
|
||||
GenealogyName: string;
|
||||
Gender: string;
|
||||
}>({
|
||||
Surname: "",
|
||||
GenealogyName: "",
|
||||
Gender: "",
|
||||
});
|
||||
|
||||
const resetForm = () => {
|
||||
form.value.Surname = "";
|
||||
form.value.GenealogyName = "";
|
||||
form.value.Gender = "";
|
||||
};
|
||||
|
||||
watch(
|
||||
() => props.open,
|
||||
(open) => {
|
||||
if (open) {
|
||||
resetForm();
|
||||
nextTick(() => {
|
||||
try {
|
||||
surnameInputRef.value?.focus?.();
|
||||
} catch (e) {
|
||||
/* noop */
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
const handleOk = async () => {
|
||||
if (!form.value.Surname.trim()) {
|
||||
notification.info({
|
||||
message: "系统提示:",
|
||||
description: "请输入姓",
|
||||
placement: "topRight",
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!form.value.GenealogyName.trim()) {
|
||||
notification.info({
|
||||
message: "系统提示:",
|
||||
description: "请输入名",
|
||||
placement: "topRight",
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!form.value.Gender.trim()) {
|
||||
notification.info({
|
||||
message: "系统提示:",
|
||||
description: "请选择性别",
|
||||
placement: "topRight",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const payload = new FamilyPersonData();
|
||||
payload.FamilyPerson = new FamilyPersonDisplayData();
|
||||
payload.FamilyPerson.Surname = form.value.Surname.trim();
|
||||
payload.FamilyPerson.GenealogyName = form.value.GenealogyName.trim();
|
||||
payload.FamilyPerson.Gender = form.value.Gender;
|
||||
payload.FamilyPerson.TreeId = props.treeId || "";
|
||||
|
||||
try {
|
||||
saving.value = true;
|
||||
const result: FamilyPersonData = await FamilyPersonService.Insert(payload);
|
||||
saving.value = false;
|
||||
|
||||
const created = result?.FamilyPerson || payload.FamilyPerson;
|
||||
// notification.success({
|
||||
// message: "系统提示:",
|
||||
// description: "新增成功",
|
||||
// placement: "topRight",
|
||||
// });
|
||||
emit("created", created);
|
||||
visible.value = false;
|
||||
} catch (error) {
|
||||
saving.value = false;
|
||||
console.log(error);
|
||||
notification.error({
|
||||
message: "系统提示:",
|
||||
description: "新增失败,请稍后再试",
|
||||
placement: "topRight",
|
||||
});
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.fpcq-form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 14px;
|
||||
padding: 4px 4px 8px;
|
||||
}
|
||||
|
||||
.fpcq-field {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.fpcq-label {
|
||||
margin-bottom: 4px;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
color: #646a73;
|
||||
}
|
||||
|
||||
.fpcq-required {
|
||||
margin-left: 2px;
|
||||
color: #ff4d4f;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user