【优化】优化剩余页面在小屏幕下的展示效果

This commit is contained in:
xuyuxiang 2025-09-17 23:22:57 +08:00
parent a47d5379bc
commit f8df4d7e8f
28 changed files with 424 additions and 433 deletions

View File

@ -1,7 +1,7 @@
<template>
<a-card :title="title" :bordered="false" :loading="apiLoading">
<a-row>
<a-col :span="6">
<a-col :xs="12" :sm="12" :md="12" :lg="6" :xl="6">
<a-statistic :value="dataSource.userCount">
<template #title>
<user-outlined style="color: #1890ff" />
@ -9,7 +9,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="6">
<a-col :xs="12" :sm="12" :md="12" :lg="6" :xl="6">
<a-statistic :value="dataSource.orgCount">
<template #title>
<cluster-outlined style="color: rgba(229, 159, 18, 0.35)" />
@ -17,7 +17,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="6">
<a-col :xs="12" :sm="12" :md="12" :lg="6" :xl="6">
<a-statistic :value="dataSource.positionCount">
<template #title>
<apartment-outlined style="color: rgba(245, 6, 6, 0.2)" />
@ -25,7 +25,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="6">
<a-col :xs="12" :sm="12" :md="12" :lg="6" :xl="6">
<a-statistic :value="dataSource.roleCount">
<template #title>
<deployment-unit-outlined style="color: #09c755" />

View File

@ -12,7 +12,7 @@
</a-statistic>
</a-col>
-->
<a-col :span="5">
<a-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<a-statistic :value="dataSource.sysDictCount">
<template #title>
<read-outlined style="color: #4b4b4b" />
@ -20,7 +20,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="5">
<a-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<a-statistic :value="dataSource.bizDictCount">
<template #title>
<read-outlined style="color: #353779" />
@ -28,7 +28,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="5">
<a-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<a-statistic :value="dataSource.backUserSessionCount">
<template #title>
<usergroup-delete-outlined style="color: #3ceecd" />
@ -36,7 +36,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="5">
<a-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<a-statistic :value="dataSource.clientUserSessionCount">
<template #title>
<UserSwitchOutlined style="color: rgba(229, 159, 18, 0.35)" />
@ -44,7 +44,7 @@
</template>
</a-statistic>
</a-col>
<a-col :span="4">
<a-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<a-statistic :value="dataSource.thirdUserCount">
<template #title>
<team-outlined style="color: #1890ff" />

View File

@ -2,7 +2,7 @@
<a-card :bordered="false">
<div class="xn-card-line">
<div class="xn-flex">
<a-avatar class="xn-wh60" :src="userInfo.avatar" :size="{ xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 }" />
<a-avatar class="xn-wh60" :src="userInfo.avatar" :size="{ xs: 80, sm: 80, md: 80, lg: 80, xl: 80 }" />
<div class="snowy-index-card-left-one-username">
<span>{{ userInfo.name }}</span>
<span>{{ userInfo.orgName }} | {{ userInfo.positionName }}</span>

View File

@ -1,8 +1,8 @@
<template>
<xn-form-container :visible="visible" :width="700" title="电子签名" @close="handleClear" @ok="handleOk">
<a-row :gutter="5">
<a-col :span="15">
<div class="xn-bdr236">
<a-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
<div class="imgBox">
<vue-esign
ref="esignRef"
v-model:bgColor="bgColor"
@ -15,32 +15,36 @@
/>
</div>
</a-col>
<a-col :span="9">
<div class="xn-h90wat">
<img v-if="resultImg" :src="resultImg" class="xn-bdr236 xn-h90w100" />
<a-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
<div class="imgBox">
<img v-if="resultImg" :src="resultImg"/>
<a-empty v-else />
</div>
</a-col>
</a-row>
<div class="xn-mt10">
<a-space>
<a-form>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="画笔粗细:">
<a-input-number v-model:value="lineWidth" :min="1" :max="20" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item>
<div class="xn-pr50">是否裁剪<a-checkbox v-model:checked="isCrop"></a-checkbox></div>
</a-form-item>
</a-col>
</a-row>
</a-form>
<a-button type="primary" @click="handleGenerate">预览</a-button>
<a-button @click="handleReset">清屏</a-button>
</a-space>
<a-form>
<a-row :gutter="16">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="画笔粗细:">
<a-input-number v-model:value="lineWidth" :min="1" :max="20" />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="是否裁剪:">
<a-checkbox v-model:checked="isCrop"></a-checkbox>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item>
<a-space>
<a-button type="primary" @click="handleGenerate">预览</a-button>
<a-button @click="handleReset">清屏</a-button>
</a-space>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
<template #footer>
<a-button class="xn-mr8" @click="handleClear">取消</a-button>
@ -100,24 +104,17 @@
</script>
<style scoped>
.xn-h90w100 {
height: 90px;
.imgBox {
height: 160px;
width: 100%;
border: 1px solid rgb(236 236 236);
margin-top: 10px;
}
.imgBox img {
height: 160px;
width: 100%;
}
.xn-mt10 {
margin-top: 10px;
}
.xn-h90wat {
height: 90px;
width: auto;
}
.xn-bdr236 {
border: 1px solid rgb(236 236 236);
}
.ant-form-item {
margin-bottom: 0px !important;
}
.xn-pr50 {
padding-right: 50px;
}
</style>

View File

@ -56,58 +56,77 @@
@change="changeTopHeaderThemeColorSpread"
/>
</div>
<a-divider />
<a-form ref="formRef" class="text-right">
<a-form-item label="模块坞" v-if="!moduleUnfoldDisabled">
<a-switch
:checked="moduleUnfoldOpen"
@change="toggleState('moduleUnfoldOpen')"
:disabled="moduleUnfoldDisabled"
/>
</a-form-item>
<a-form-item label="固定宽度" v-if="layout == layoutEnum.TOP">
<a-switch :checked="fixedWidth" @change="toggleState('fixedWidth')" />
</a-form-item>
<a-form-item label="面包屑">
<a-switch :checked="breadcrumbOpen" @change="toggleState('breadcrumbOpen')" />
</a-form-item>
<a-form-item label="多标签">
<a-switch :checked="layoutTagsOpen" @change="toggleState('layoutTagsOpen')" />
</a-form-item>
<a-form-item label="折叠菜单" v-if="!menuIsCollapseDisabled">
<a-switch
:checked="menuIsCollapse"
@change="toggleState('menuIsCollapse')"
:disabled="menuIsCollapseDisabled"
/>
</a-form-item>
<a-form-item label="菜单排他展开" v-if="!sideUniqueOpenDisabled">
<a-switch
:checked="sideUniqueOpen"
@change="toggleState('sideUniqueOpen')"
:disabled="sideUniqueOpenDisabled"
/>
</a-form-item>
<a-form-item label="登录用户水印">
<a-switch :checked="loginUserWatermarkOpen" @change="toggleState('loginUserWatermarkOpen')" />
</a-form-item>
<a-form-item label="页脚版权信息">
<a-switch :checked="footerCopyrightOpen" @change="toggleState('footerCopyrightOpen')" />
</a-form-item>
<a-form-item label="圆角风格">
<a-switch :checked="roundedCornerStyleOpen" @change="toggleState('roundedCornerStyleOpen')" />
</a-form-item>
<a-form-item label="表单风格">
<a-select
:value="formStyle"
class="!w-[80px]"
size="small"
:options="xnFormStyleOptions"
@change="formStyleChange"
/>
</a-form-item>
</a-form>
<div class="mb-4 layout-slide" v-if="!moduleUnfoldDisabled">
<h4 class="setting-item-title">模块坞</h4>
<a-switch
:checked="moduleUnfoldOpen"
@change="toggleState('moduleUnfoldOpen')"
:disabled="moduleUnfoldDisabled"
/>
</div>
<div class="mb-4 layout-slide" v-if="layout === layoutEnum.TOP">
<h4 class="setting-item-title">固定宽度</h4>
<a-switch :checked="fixedWidth"
@change="toggleState('fixedWidth')"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">面包屑</h4>
<a-switch :checked="breadcrumbOpen"
@change="toggleState('breadcrumbOpen')"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">多标签</h4>
<a-switch :checked="layoutTagsOpen"
@change="toggleState('layoutTagsOpen')"
/>
</div>
<div class="mb-4 layout-slide" v-if="!menuIsCollapseDisabled">
<h4 class="setting-item-title">折叠菜单</h4>
<a-switch
:checked="menuIsCollapse"
@change="toggleState('menuIsCollapse')"
:disabled="menuIsCollapseDisabled"
/>
</div>
<div class="mb-4 layout-slide" v-if="!sideUniqueOpenDisabled">
<h4 class="setting-item-title">菜单排他展开</h4>
<a-switch
:checked="sideUniqueOpen"
@change="toggleState('sideUniqueOpen')"
:disabled="sideUniqueOpenDisabled"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">登录用户水印</h4>
<a-switch :checked="loginUserWatermarkOpen"
@change="toggleState('loginUserWatermarkOpen')"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">页脚版权信息</h4>
<a-switch :checked="footerCopyrightOpen"
@change="toggleState('footerCopyrightOpen')"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">圆角风格</h4>
<a-switch :checked="roundedCornerStyleOpen"
@change="toggleState('roundedCornerStyleOpen')"
/>
</div>
<div class="mb-4 layout-slide">
<h4 class="setting-item-title">表单风格</h4>
<a-select
:value="formStyle"
class="!w-[80px]"
size="small"
:options="xnFormStyleOptions"
@change="formStyleChange"
/>
</div>
<a-alert
message="以上配置可实时预览,开发者可在 config/index.js 中配置默认值,不建议在生产环境下开放布局设置"
type="warning"

View File

@ -84,9 +84,9 @@ export default {
grantResource: '授权资源',
grantPermission: '授权权限',
exportUserInfo: '导出信息',
placeholderUserOrg: '请选择组织',
placeholderUserOrg: '请选择所属组织',
placeholderNameAndSearchKey: '请输入姓名或关键词',
placeholderUserStatus: '请选择状态',
placeholderUserStatus: '请选择用户状态',
popConfirmDeleteUser: '确定要删除吗?',
popConfirmResatUserPwd: '确定要重置吗?'
}

View File

@ -14,12 +14,7 @@
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="20" :xl="20">
<a-card :bordered="false" class="xn-mb10">
<a-form
ref="searchFormRef"
name="advanced_search"
class="ant-advanced-search-form mb-3"
:model="searchFormState"
>
<a-form ref="searchFormRef" :model="searchFormState">
<a-row :gutter="10">
<a-col :xs="24" :sm="8" :md="8" :lg="0" :xl="0">
<a-form-item label="请选择上级字典:" name="parentId">

View File

@ -1,32 +1,42 @@
<template>
<a-row :gutter="10">
<!-- 轮播图小屏情况显示 -->
<a-col :xs="24" :sm="24" :md="24" :lg="0" :xl="0">
<biz-slideshow-card :config="slideshowConfig" />
</a-col>
<!-- 左侧 -->
<a-col :span="16">
<a-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
<!-- 人员信息 -->
<sys-user-info-card class="mb-2" />
<a-row :gutter="10" class="mt-2">
<a-col :span="24">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<!-- 快捷方式 -->
<biz-shortcut-card />
</a-col>
</a-row>
<a-row :gutter="10" class="mt-2">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<!-- 通知公告 -->
<biz-notice-card />
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<!-- 站内信息 -->
<biz-mini-message-card />
</a-col>
</a-row>
</a-col>
<!-- 右侧 -->
<a-col :span="8">
<!-- 轮播图 -->
<biz-slideshow-card :config="slideshowConfig" />
<!-- 我的日程 -->
<biz-schedule-card />
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-row :gutter="10">
<a-col :xs="0" :sm="0" :md="0" :lg="24" :xl="24">
<!-- 轮播图 -->
<biz-slideshow-card :config="slideshowConfig" />
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<!-- 我的日程 -->
<biz-schedule-card />
</a-col>
</a-row>
</a-col>
</a-row>
</template>

View File

@ -21,7 +21,7 @@
</a-descriptions-item>
<a-descriptions-item label="内容"><div v-html="formData.content"></div></a-descriptions-item>
</a-descriptions>
<a-descriptions bordered :column="2" class="mt-2">
<a-descriptions bordered :column="1" class="mt-2">
<a-descriptions-item label="摘要">{{ formData.digest }}</a-descriptions-item>
<a-descriptions-item label="备注"
><span>{{ formData.remark }}</span></a-descriptions-item

View File

@ -8,7 +8,7 @@
>
<a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
<a-row :gutter="16">
<a-col :span="19">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="标题:" name="title">
<a-input v-model:value="formData.title" placeholder="请输入标题" allow-clear />
</a-form-item>
@ -23,17 +23,17 @@
<a-radio-group v-model:value="formData.type" placeholder="请选择类型" :options="typeOptions" />
</a-form-item>
</a-col>
<a-col :span="5">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="封面图:" name="image">
<xn-upload v-model:value="formData.image" uploadMode="image" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="内容:" name="content">
<xn-editor v-model:value="formData.content" placeholder="请输入内容" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="摘要:" name="digest">
<a-textarea
v-model:value="formData.digest"
@ -44,12 +44,12 @@
/>
</a-form-item>
</a-col>
<a-col :span="18">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="发布位置:" name="place">
<a-checkbox-group v-model:value="formData.place" placeholder="请选择发布位置" :options="placeOptions" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="排序:" name="sortCode">
<a-input-number
v-model:value="formData.sortCode"
@ -59,7 +59,7 @@
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="备注:" name="remark">
<a-textarea
v-model:value="formData.remark"

View File

@ -17,12 +17,12 @@
<a-form ref="searchFormRef" :model="searchFormState">
<a-row :gutter="10">
<a-col :xs="24" :sm="8" :md="8" :lg="0" :xl="0">
<a-form-item label="上级组织" name="parentId">
<a-form-item label="上级机构" name="parentId">
<a-tree-select
v-model:value="searchFormState.parentId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择上级组织"
placeholder="请选择上级机构"
allow-clear
:tree-data="treeData"
:field-names="{

View File

@ -17,12 +17,12 @@
<a-form ref="searchFormRef" :model="searchFormState">
<a-row :gutter="10">
<a-col :xs="24" :sm="8" :md="8" :lg="0" :xl="0">
<a-form-item label="组织" name="orgId">
<a-form-item label="机构" name="orgId">
<a-tree-select
v-model:value="searchFormState.orgId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择组织"
placeholder="请选择机构"
allow-clear
:tree-data="treeData"
:field-names="{

View File

@ -11,56 +11,45 @@
<a-tabs v-model:activeKey="activeTabsKey">
<a-tab-pane key="1" tab="基础信息" force-render>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="账号:" name="account">
<a-input v-model:value="formData.account" placeholder="请输入账号" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="姓名:" name="name">
<a-input v-model:value="formData.name" placeholder="请输入姓名" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="性别:" name="gender">
<a-radio-group v-model:value="formData.gender" :options="genderOptions"> </a-radio-group>
<a-radio-group v-model:value="formData.gender" :options="genderOptions" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="昵称:" name="nickname">
<a-input v-model:value="formData.nickname" placeholder="请输入昵称" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="手机号:" name="phone">
<a-input v-model:value="formData.phone" placeholder="请输入手机" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="邮箱:" name="email">
<a-input v-model:value="formData.email" placeholder="请输入邮箱" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="出生日期:" name="birthday">
<a-date-picker v-model:value="formData.birthday" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="8">
<a-form-item label="选择组织:" name="orgId">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择机构:" name="orgId">
<a-tree-select
v-model:value="formData.orgId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择组织"
placeholder="请选择机构"
allow-clear
tree-default-expand-all
:tree-data="treeData"
@ -71,22 +60,22 @@
value: 'id'
}"
@change="selePositionData(formData.orgId, 0)"
></a-tree-select>
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="选择位:" name="positionId">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择位:" name="positionId">
<xn-page-select
ref="xnPositionPageSelectRef"
v-model:value="formData.positionId"
placeholder="请选择位"
placeholder="请选择位"
allow-clear
:page-function="selectApiFunction.positionSelector"
:echo-function="selectApiFunction.echoPosition"
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择主管:" name="directorId">
<xn-page-select
ref="xnUserPageSelectRef"
@ -100,17 +89,17 @@
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="员工编号:" name="empNo">
<a-input v-model:value="formData.empNo" placeholder="请输入员工编号" allow-clear />
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="职级:" name="positionLevel">
<a-input v-model:value="formData.positionLevel" placeholder="请输入职级" allow-clear />
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="入职日期:" name="entryDate">
<a-date-picker v-model:value="formData.entryDate" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
@ -118,11 +107,11 @@
</a-row>
<a-form-item label="任职信息" name="positionJson">
<a-row :gutter="10" class="form-row">
<a-col :span="7" class="form-row-con"> 机构 </a-col>
<a-col :span="7" class="form-row-con"> </a-col>
<a-col :span="7" class="form-row-con"> 主管 </a-col>
<a-col :span="3" class="form-row-con">
<a-row :gutter="10" class="form-row mb-5">
<a-col :span="7"> 机构 </a-col>
<a-col :span="7"> </a-col>
<a-col :span="7"> 主管 </a-col>
<a-col :span="3">
<a-button type="primary" @click="addDomains()" size="small">
<PlusOutlined />
增加
@ -130,8 +119,8 @@
</a-col>
</a-row>
<div :key="positionInfo" v-for="(positionInfo, index) in formData.positionJson">
<a-row :gutter="16">
<a-col :span="7">
<a-row :gutter="10">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item
:name="['positionJson', index, 'orgId']"
:rules="{ required: true, message: '请选择机构' }"
@ -147,10 +136,10 @@
:tree-default-expanded-keys="treeDefaultExpandedKeys"
:field-names="{ children: 'children', label: 'name', value: 'id' }"
@select="childOrgSelect(positionInfo, 0, index)"
></a-tree-select>
/>
</a-form-item>
</a-col>
<a-col :span="7">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item
:name="['positionJson', index, 'positionId']"
:rules="{ required: true, message: '请选择岗位' }"
@ -165,7 +154,7 @@
/>
</a-form-item>
</a-col>
<a-col :span="7">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item :name="['positionJson', index, 'directorId']">
<xn-page-select
ref="xnChildUserPageSelectRef"
@ -177,8 +166,13 @@
/>
</a-form-item>
</a-col>
<a-col :span="3" class="xn-mt4">
<a-button size="small" type="primary" danger ghost @click="delDomains(index)">移除</a-button>
<a-col :xs="24" :sm="24" :md="3" :lg="3" :xl="3">
<a-form-item>
<a-button type="primary" danger ghost @click="delDomains(index)" size="small">
<DeleteOutlined />
移除
</a-button>
</a-form-item>
</a-col>
</a-row>
</div>
@ -186,19 +180,27 @@
</a-tab-pane>
<a-tab-pane key="2" tab="更多信息" force-render>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="民族:" name="nation">
<a-select v-model:value="formData.nation" placeholder="请选择民族" :options="nationOptions"> </a-select>
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="出生日期:" name="birthday">
<a-date-picker v-model:value="formData.birthday" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="民族:" name="nation">
<a-select v-model:value="formData.nation" placeholder="请选择民族" :options="nationOptions" />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="籍贯:" name="nativePlace">
<a-input v-model:value="formData.nativePlace" placeholder="请输入籍贯" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="家庭电话:" name="homeTel">
<a-input v-model:value="formData.homeTel" placeholder="请输入家庭电话" allow-clear />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="家庭住址:" name="homeAddress">
<a-textarea
v-model:value="formData.homeAddress"
@ -208,101 +210,75 @@
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="通信地址:" name="mailingAddress">
<a-textarea
v-model:value="formData.mailingAddress"
placeholder="请输入通信地址"
:auto-size="{ minRows: 2, maxRows: 5 }"
allow-clear
<!-- <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="通信地址:" name="mailingAddress">
<a-textarea
v-model:value="formData.mailingAddress"
placeholder="请输入通信地址"
:auto-size="{ minRows: 2, maxRows: 5 }"
allow-clear
/>
</a-form-item>
</a-col>-->
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="证件类型:" name="idCardType">
<a-select
v-model:value="formData.idCardType"
placeholder="请选择证件类型"
:options="idcardTypeOptions"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="证件类型:" name="idCardType">
<a-select v-model:value="formData.idCardType" placeholder="请选择证件类型" :options="idcardTypeOptions">
</a-select>
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="证件号码:" name="idCardNumber">
<a-input v-model:value="formData.idCardNumber" placeholder="请输入证件号码" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="文化程度:" name="cultureLevel">
<a-select
v-model:value="formData.cultureLevel"
placeholder="请选择文化程度"
:options="cultureLevelOptions"
>
</a-select>
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="政治面貌:" name="politicalOutlook">
<a-input v-model:value="formData.politicalOutlook" placeholder="请输入政治面貌" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="毕业学校:" name="college">
<a-input v-model:value="formData.college" placeholder="请输入毕业学校" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学历:" name="education">
<a-input v-model:value="formData.education" placeholder="请输入学历" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学制:" name="eduLength">
<a-input v-model:value="formData.eduLength" placeholder="请输入学制" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学位:" name="degree">
<a-input v-model:value="formData.degree" placeholder="请输入学位" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="家庭电话:" name="homeTel">
<a-input v-model:value="formData.homeTel" placeholder="请输入家庭电话" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="办公电话:" name="officeTel">
<a-input v-model:value="formData.officeTel" placeholder="请输入办公电话" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="紧急联系人:" name="emergencyContact">
<a-input v-model:value="formData.emergencyContact" placeholder="请输入紧急联系人" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="紧急联系电话:" name="emergencyPhone">
<a-input v-model:value="formData.emergencyPhone" placeholder="请输入紧急联系电话" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="紧急联系人地址:" name="emergencyAddress">
<a-textarea
v-model:value="formData.emergencyAddress"
@ -353,7 +329,7 @@
}
if (orgId) {
formData.value.orgId = orgId
//
//
nextTick(() => {
selePositionData(orgId)
})
@ -417,10 +393,10 @@
account: [required('请输入账号')],
name: [required('请输入姓名')],
sex: [required('请选择性别')],
orgId: [required('请选择组织')],
orgId: [required('请选择机构')],
positionId: [required('请选择岗位')]
}
//
//
const selePositionData = (orgId, type) => {
if (orgId) {
const xnPositionPageSelectParam = {
@ -428,7 +404,7 @@
}
xnPositionPageSelectRef.value.onPage(xnPositionPageSelectParam)
xnUserPageSelectRef.value.onPage()
//
//
if (type === 0) {
formData.value.positionId = undefined
formData.value.directorId = undefined
@ -472,7 +448,7 @@
})
}
}
//
//
const addDomains = () => {
if (formData.value.positionJson === null) {
formData.value.positionJson = []
@ -549,12 +525,7 @@
<style scoped lang="less">
.form-row {
background-color: var(--item-hover-bg);
margin-left: 0 !important;
margin-bottom: 10px;
}
.form-row-con {
padding-bottom: 5px;
padding-top: 5px;
padding-left: 15px;
padding: 4px;
}
</style>

View File

@ -17,12 +17,12 @@
<a-form ref="searchFormRef" :model="searchFormState">
<a-row :gutter="10">
<a-col :xs="24" :sm="8" :md="8" :lg="0" :xl="0">
<a-form-item :label="$t('user.userOrg')" name="orgId">
<a-form-item label="所属机构" name="orgId">
<a-tree-select
v-model:value="searchFormState.orgId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
:placeholder="$t('user.placeholderUserOrg')"
placeholder="请选择所属机构"
allow-clear
:tree-data="treeData"
:field-names="{
@ -36,18 +36,18 @@
</a-form-item>
</a-col>
<a-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
<a-form-item name="searchKey" :label="$t('common.searchKey')">
<a-form-item name="searchKey" label="关键词">
<a-input
v-model:value="searchFormState.searchKey"
:placeholder="$t('user.placeholderNameAndSearchKey')"
placeholder="请输入姓名或关键词"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
<a-form-item name="userStatus" :label="$t('user.userStatus')">
<a-form-item name="userStatus" label="人员状态">
<a-select
v-model:value="searchFormState.userStatus"
:placeholder="$t('user.placeholderUserStatus')"
placeholder="请选择人员状态"
:getPopupContainer="(trigger) => trigger.parentNode"
>
<a-select-option v-for="item in statusData" :key="item.value" :value="item.value">{{
@ -61,11 +61,11 @@
<a-space>
<a-button type="primary" @click="tableRef.refresh(true)">
<template #icon><SearchOutlined /></template>
{{ $t('common.searchButton') }}
查询
</a-button>
<a-button @click="reset">
<template #icon><redo-outlined /></template>
{{ $t('common.resetButton') }}
重置
</a-button>
</a-space>
</a-form-item>
@ -94,15 +94,15 @@
v-if="hasPerm('bizUserAdd')"
>
<template #icon><plus-outlined /></template>
<span>{{ $t('common.addButton') }}{{ $t('model.user') }}</span>
<span>增加人员</span>
</a-button>
<a-button @click="exportBatchUserVerify" v-if="hasPerm('bizUserBatchExport')">
<template #icon><export-outlined /></template>
{{ $t('user.batchExportButton') }}
批量导出
</a-button>
<xn-batch-button
v-if="hasPerm('bizUserBatchDelete')"
:buttonName="$t('common.batchRemoveButton')"
buttonName="批量删除"
icon="DeleteOutlined"
buttonDanger
:selectedRowKeys="selectedRowKeys"
@ -127,12 +127,12 @@
<span v-else>{{ $TOOL.dictTypeData('COMMON_STATUS', record.userStatus) }}</span>
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="formRef.onOpen(record)" v-if="hasPerm('bizUserEdit')">{{ $t('common.editButton') }}</a>
<a @click="formRef.onOpen(record)" v-if="hasPerm('bizUserEdit')">编辑</a>
<a-divider type="vertical" v-if="hasPerm(['bizUserEdit', 'bizUserDelete'], 'and')" />
<a-popconfirm :title="$t('user.popConfirmDeleteUser')" @confirm="removeUser(record)">
<a-button type="link" danger size="small" v-if="hasPerm('bizUserDelete')">{{
$t('common.removeButton')
}}</a-button>
<a-popconfirm title="确定要删除吗?" @confirm="removeUser(record)">
<a-button type="link" danger size="small" v-if="hasPerm('bizUserDelete')">
删除
</a-button>
</a-popconfirm>
<a-divider
type="vertical"
@ -140,25 +140,25 @@
/>
<a-dropdown v-if="hasPerm(['bizUserGrantRole', 'bizUserPwdReset', 'bizUserExportUserInfo'])">
<a class="ant-dropdown-link">
{{ $t('common.more') }}
更多
<DownOutlined />
</a>
<template #overlay>
<a-menu>
<a-menu-item v-if="hasPerm('bizUserPwdReset')">
<a-popconfirm
:title="$t('user.popConfirmResatUserPwd')"
title="确定要重置吗?"
placement="topRight"
@confirm="resetPassword(record)"
>
<a>{{ $t('user.resetPassword') }}</a>
<a>重置密码</a>
</a-popconfirm>
</a-menu-item>
<a-menu-item v-if="hasPerm('bizUserGrantRole')">
<a @click="selectRole(record)">{{ $t('user.grantRole') }}</a>
<a @click="selectRole(record)">授权角色</a>
</a-menu-item>
<a-menu-item v-if="hasPerm('bizUserExportUserInfo')">
<a @click="exportUserInfo(record)">{{ $t('user.exportUserInfo') }}</a>
<a @click="exportUserInfo(record)">导出信息</a>
</a-menu-item>
</a-menu>
</template>

View File

@ -31,7 +31,6 @@
<xn-editor
v-model="formData.content"
placeholder="请输入邮件正文"
:height="200"
:file-upload-function="apiFunction.fileUploadApi"
/>
</a-form-item>

View File

@ -27,7 +27,6 @@
<xn-editor
v-model="formData.content"
placeholder="请输入邮件正文"
:height="200"
:file-upload-function="apiFunction.fileUploadApi"
/>
</a-form-item>

View File

@ -31,7 +31,6 @@
<xn-editor
v-model="formData.content"
placeholder="请输入邮件正文"
:height="200"
:file-upload-function="apiFunction.fileUploadApi"
/>
</a-form-item>

View File

@ -1,6 +1,11 @@
<template>
<a-row :gutter="10">
<a-col :span="16" :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
<!-- 轮播图小屏情况显示 -->
<a-col :xs="24" :sm="24" :md="24" :lg="0" :xl="0">
<!-- 轮播图 -->
<biz-slideshow-card :config="slideshowConfig" />
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
<!-- 人员信息 -->
<sys-user-info-card class="mb-2" />
<!-- 业务数据 -->
@ -9,22 +14,30 @@
<sys-op-data-card class="mb-2" />
<a-row :gutter="10">
<!-- 访问记录 -->
<a-col :span="12" :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<sys-vis-log-card class="mb-2" />
</a-col>
<!-- 操作记录 -->
<a-col :span="12" :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<sys-op-log-card class="mb-2" />
</a-col>
</a-row>
</a-col>
<a-col :span="8" :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
<!-- 轮播图 -->
<biz-slideshow-card :config="slideshowConfig" class="mb-2" />
<!-- 基础工具 -->
<sys-tool-data-card class="mb-2" />
<!-- 周访问量 -->
<sys-vis-chart-data-card />
<a-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
<a-row :gutter="10">
<a-col :xs="0" :sm="0" :md="0" :lg="24" :xl="24">
<!-- 轮播图 -->
<biz-slideshow-card :config="slideshowConfig" />
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<!-- 基础工具 -->
<sys-tool-data-card class="mb-2" />
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<!-- 周访问量 -->
<sys-vis-chart-data-card />
</a-col>
</a-row>
</a-col>
</a-row>
</template>

View File

@ -20,7 +20,7 @@
>
</a-radio-group>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered :scroll="{ x: 'max-content' }">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'parentName'">
<a-checkbox :checked="record.parentCheck" @update:checked="(val) => changeParent(record, val)">
@ -70,6 +70,7 @@
key: 'parentName',
title: '一级目录',
dataIndex: 'parentName',
fixed: 'left',
customCell: (row, index) => {
const parentName = row.parentName
const indexArr = firstShowMap.value[parentName]

View File

@ -21,6 +21,7 @@
:row-key="(record) => record.api"
:pagination="pagination"
@change="handleTableChange"
:scroll="{ x: 'max-content' }"
bordered
>
<template #headerCell="{ column }">
@ -167,6 +168,7 @@
key: 'prefix',
title: '接口前缀',
dataIndex: 'prefix',
fixed: 'left',
width: 140,
customCell: (row, index) => {
const indexArr = firstShowMap.value[row.prefix]

View File

@ -21,7 +21,7 @@
>
</a-radio-group>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered :scroll="{ x: 'max-content' }">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'parentName'">
<a-checkbox :checked="record.parentCheck" @update:checked="(val) => changeParent(record, val)">
@ -73,6 +73,7 @@
key: 'parentName',
title: '一级目录',
dataIndex: 'parentName',
fixed: 'left',
customCell: (row, index) => {
const parentName = row.parentName
const indexArr = firstShowMap.value[parentName]

View File

@ -11,50 +11,39 @@
<a-tabs v-model:activeKey="activeTabsKey">
<a-tab-pane key="1" tab="基础信息" force-render>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="账号:" name="account">
<a-input v-model:value="formData.account" placeholder="请输入账号" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="姓名:" name="name">
<a-input v-model:value="formData.name" placeholder="请输入姓名" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="性别:" name="gender">
<a-radio-group v-model:value="formData.gender" :options="genderOptions" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="昵称:" name="nickname">
<a-input v-model:value="formData.nickname" placeholder="请输入昵称" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="手机号:" name="phone">
<a-input v-model:value="formData.phone" placeholder="请输入手机" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="邮箱:" name="email">
<a-input v-model:value="formData.email" placeholder="请输入邮箱" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="出生日期:" name="birthday">
<a-date-picker v-model:value="formData.birthday" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择组织:" name="orgId">
<a-tree-select
v-model:value="formData.orgId"
@ -74,7 +63,7 @@
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择职位:" name="positionId">
<xn-page-select
ref="xnPositionPageSelectRef"
@ -86,7 +75,7 @@
/>
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="选择主管:" name="directorId">
<xn-page-select
ref="xnUserPageSelectRef"
@ -100,17 +89,17 @@
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="员工编号:" name="empNo">
<a-input v-model:value="formData.empNo" placeholder="请输入员工编号" allow-clear />
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="职级:" name="positionLevel">
<a-input v-model:value="formData.positionLevel" placeholder="请输入职级" allow-clear />
</a-form-item>
</a-col>
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<a-form-item label="入职日期:" name="entryDate">
<a-date-picker v-model:value="formData.entryDate" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
@ -118,11 +107,11 @@
</a-row>
<a-form-item label="任职信息" name="positionJson">
<a-row :gutter="10" class="form-row">
<a-col :span="7" class="form-row-con"> 机构 </a-col>
<a-col :span="7" class="form-row-con"> 职位 </a-col>
<a-col :span="7" class="form-row-con"> 主管 </a-col>
<a-col :span="3" class="form-row-con">
<a-row :gutter="10" class="form-row mb-5">
<a-col :span="7"> 机构 </a-col>
<a-col :span="7"> 职位 </a-col>
<a-col :span="7"> 主管 </a-col>
<a-col :span="3">
<a-button type="primary" @click="addDomains()" size="small">
<PlusOutlined />
增加
@ -130,75 +119,88 @@
</a-col>
</a-row>
<div :key="positionInfo" v-for="(positionInfo, index) in formData.positionJson">
<a-row :gutter="16">
<a-col :span="7">
<a-form-item
:name="['positionJson', index, 'orgId']"
:rules="{ required: true, message: '请选择组织' }"
>
<a-tree-select
v-model:value="positionInfo.orgId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择组织"
allow-clear
tree-default-expand-all
:tree-data="treeData"
:tree-default-expanded-keys="treeDefaultExpandedKeys"
:field-names="{ children: 'children', label: 'name', value: 'id' }"
@select="childOrgSelect(positionInfo, 0, index)"
/>
</a-form-item>
</a-col>
<a-col :span="7">
<a-form-item
:name="['positionJson', index, 'positionId']"
:rules="{ required: true, message: '请选择职位' }"
>
<xn-page-select
ref="xnChildPositionPageSelectRef"
v-model:value="positionInfo.positionId"
placeholder="请选择职位"
allow-clear
:page-function="selectApiFunction.childPositionSelector"
:echo-function="selectApiFunction.echoPosition"
/>
</a-form-item>
</a-col>
<a-col :span="7">
<a-form-item :name="['positionJson', index, 'directorId']">
<xn-page-select
ref="xnChildUserPageSelectRef"
v-model:value="positionInfo.directorId"
placeholder="请选择主管"
allow-clear
:page-function="selectApiFunction.childUserSelector"
:echo-function="selectApiFunction.echoUser"
/>
</a-form-item>
</a-col>
<a-col :span="3" class="xn-mt4">
<a-button size="small" type="primary" danger ghost @click="delDomains(index)">移除</a-button>
</a-col>
</a-row>
<a-row :gutter="10">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item
:name="['positionJson', index, 'orgId']"
:rules="{ required: true, message: '请选择组织' }"
>
<a-tree-select
v-model:value="positionInfo.orgId"
class="xn-wd"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择组织"
allow-clear
tree-default-expand-all
:tree-data="treeData"
:tree-default-expanded-keys="treeDefaultExpandedKeys"
:field-names="{ children: 'children', label: 'name', value: 'id' }"
@select="childOrgSelect(positionInfo, 0, index)"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item
:name="['positionJson', index, 'positionId']"
:rules="{ required: true, message: '请选择职位' }"
>
<xn-page-select
ref="xnChildPositionPageSelectRef"
v-model:value="positionInfo.positionId"
placeholder="请选择职位"
allow-clear
:page-function="selectApiFunction.childPositionSelector"
:echo-function="selectApiFunction.echoPosition"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-form-item :name="['positionJson', index, 'directorId']">
<xn-page-select
ref="xnChildUserPageSelectRef"
v-model:value="positionInfo.directorId"
placeholder="请选择主管"
allow-clear
:page-function="selectApiFunction.childUserSelector"
:echo-function="selectApiFunction.echoUser"
/>
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="3" :lg="3" :xl="3">
<a-form-item>
<a-button type="primary" danger ghost @click="delDomains(index)" size="small">
<DeleteOutlined />
移除
</a-button>
</a-form-item>
</a-col>
</a-row>
</div>
</a-form-item>
</a-tab-pane>
<a-tab-pane key="2" tab="更多信息" force-render>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="出生日期:" name="birthday">
<a-date-picker v-model:value="formData.birthday" value-format="YYYY-MM-DD" class="xn-wd" />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="民族:" name="nation">
<a-select v-model:value="formData.nation" placeholder="请选择民族" :options="nationOptions" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="籍贯:" name="nativePlace">
<a-input v-model:value="formData.nativePlace" placeholder="请输入籍贯" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="家庭电话:" name="homeTel">
<a-input v-model:value="formData.homeTel" placeholder="请输入家庭电话" allow-clear />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="家庭住址:" name="homeAddress">
<a-textarea
v-model:value="formData.homeAddress"
@ -208,7 +210,7 @@
/>
</a-form-item>
</a-col>
<a-col :span="12">
<!-- <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="通信地址:" name="mailingAddress">
<a-textarea
v-model:value="formData.mailingAddress"
@ -217,10 +219,8 @@
allow-clear
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
</a-col>-->
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="证件类型:" name="idCardType">
<a-select
v-model:value="formData.idCardType"
@ -229,14 +229,12 @@
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="证件号码:" name="idCardNumber">
<a-input v-model:value="formData.idCardNumber" placeholder="请输入证件号码" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="文化程度:" name="cultureLevel">
<a-select
v-model:value="formData.cultureLevel"
@ -245,66 +243,42 @@
/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="政治面貌:" name="politicalOutlook">
<a-input v-model:value="formData.politicalOutlook" placeholder="请输入政治面貌" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="毕业学校:" name="college">
<a-input v-model:value="formData.college" placeholder="请输入毕业学校" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学历:" name="education">
<a-input v-model:value="formData.education" placeholder="请输入学历" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学制:" name="eduLength">
<a-input v-model:value="formData.eduLength" placeholder="请输入学制" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="学位:" name="degree">
<a-input v-model:value="formData.degree" placeholder="请输入学位" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="家庭电话:" name="homeTel">
<a-input v-model:value="formData.homeTel" placeholder="请输入家庭电话" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="办公电话:" name="officeTel">
<a-input v-model:value="formData.officeTel" placeholder="请输入办公电话" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="紧急联系人:" name="emergencyContact">
<a-input v-model:value="formData.emergencyContact" placeholder="请输入紧急联系人" allow-clear />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="紧急联系电话:" name="emergencyPhone">
<a-input v-model:value="formData.emergencyPhone" placeholder="请输入紧急联系电话" allow-clear />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="紧急联系人地址:" name="emergencyAddress">
<a-textarea
v-model:value="formData.emergencyAddress"
@ -552,12 +526,7 @@
<style scoped lang="less">
.form-row {
background-color: var(--item-hover-bg);
margin-left: 0 !important;
margin-bottom: 10px;
}
.form-row-con {
padding-bottom: 5px;
padding-top: 5px;
padding-left: 15px;
padding: 4px;
}
</style>

View File

@ -22,6 +22,7 @@
:row-key="(record) => record.api"
:pagination="pagination"
@change="handleTableChange"
:scroll="{ x: 'max-content' }"
>
<template #headerCell="{ column }">
<template v-if="column.key === 'prefix'">
@ -168,6 +169,7 @@
key: 'prefix',
title: '接口前缀',
dataIndex: 'prefix',
fixed: 'left',
width: 140,
customCell: (row, index) => {
const indexArr = firstShowMap.value[row.prefix]

View File

@ -21,7 +21,7 @@
>
</a-radio-group>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered>
<a-table size="middle" :columns="columns" :data-source="loadDatas" :pagination="false" bordered :scroll="{ x: 'max-content' }">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'parentName'">
<a-checkbox :checked="record.parentCheck" @update:checked="(val) => changeParent(record, val)">
@ -74,6 +74,7 @@
key: 'parentName',
title: '一级目录',
dataIndex: 'parentName',
fixed: 'left',
customCell: (row, index) => {
const parentName = row.parentName
const indexArr = firstShowMap.value[parentName]

View File

@ -11,10 +11,10 @@
</template>
</a-alert>
<a-row :gutter="8">
<a-col :span="8">
<a-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
<img style="width: 100%;vertical-align: middle" :src="otpInfo.otpInfoBase64" />
</a-col>
<a-col :span="16">
<a-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
<a-descriptions :column="1" size="middle" bordered class="mb-2">
<a-descriptions-item label="发行者">{{otpInfo.otpInfo.issuer}}</a-descriptions-item>
<a-descriptions-item label="账号">{{otpInfo.otpInfo.account}}</a-descriptions-item>
@ -56,21 +56,21 @@
//
const formState = ref({})
const submitLoading = ref(false)
const otpInfo = ref()
const otpInfo = ref({otpInfo: {}, otpInfoBase64: ''})
const bindType = ref()
//
const onOpen = (type) => {
const onOpen = async (type) => {
visible.value = true
bindType.value = type
//
userCenterApi.userCenterGetOtpInfo().then((data) => {
await userCenterApi.userCenterGetOtpInfo().then((data) => {
otpInfo.value = data
})
}
//
const onClose = () => {
visible.value = false
otpInfo.value = {}
otpInfo.value = {otpInfo: {}, otpInfoBase64: ''}
formState.value = {}
formRef.value.resetFields()
}

View File

@ -1,15 +1,15 @@
<template>
<a-row :gutter="10">
<a-col :span="4">
<a-col :span="6">
<a-menu id="userMessage" v-model:selected-keys="selectedKeys" mode="inline" @click="handleClick">
<a-menu-item :key="messageCategory.value" v-for="messageCategory in messageCategoryList">{{
messageCategory.label
}}</a-menu-item>
</a-menu>
</a-col>
<a-col :span="20">
<a-col :span="18">
<div class="xn-mt-16">
<s-table ref="tableRef" :columns="columns" :data="loadData" bordered :row-key="(record) => record.id">
<s-table ref="tableRef" :columns="columns" :data="loadData" bordered :row-key="(record) => record.id" :scroll="{ x: 'max-content' }">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'subject'">
<ellipsis :length="40" tooltip>
@ -61,6 +61,7 @@
{
title: '操作',
dataIndex: 'action',
fixed: 'right',
width: '100px'
}
]

View File

@ -15,7 +15,7 @@
<a-row :gutter="16">
<% for(var i = 0; i < configList.~size; i++) { %>
<% if(!configList[i].needTableId && configList[i].whetherAddUpdate) { %>
<a-col :span="12">
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<a-form-item label="${configList[i].fieldRemark}" name="${configList[i].fieldNameCamelCase}">
<% if(configList[i].effectType == 'input') { %>
<a-input v-model:value="formData.${configList[i].fieldNameCamelCase}" placeholder="请输入${configList[i].fieldRemark}" allow-clear />

View File

@ -8,12 +8,12 @@
<% } %>
<a-card :bordered="false" style="width: 100%">
<% if (searchCount > 0) { %>
<a-form ref="searchFormRef" name="advanced_search" :model="searchFormState" class="ant-advanced-search-form">
<a-form ref="searchFormRef" :model="searchFormState">
<a-row :gutter="24">
<% for(var i = 0; i < configList.~size; i++) { %>
<% if(!configList[i].needTableId && configList[i].needPage) { row ++; %>
<% if(row <= 3) { %>
<a-col :span="6">
<a-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
<% if(configList[i].effectType == 'input' || configList[i].effectType == 'textarea') { %>
<a-form-item label="${configList[i].fieldRemark}" name="${configList[i].fieldNameCamelCase}">
<a-input v-model:value="searchFormState.${configList[i].fieldNameCamelCase}" placeholder="请输入${configList[i].fieldRemark}" />
@ -37,7 +37,7 @@
<% } %>
</a-col>
<% } else { %>
<a-col :span="6" v-show="advanced">
<a-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6" v-show="advanced">
<% if(configList[i].effectType == 'input' || configList[i].effectType == 'textarea') { %>
<a-form-item label="${configList[i].fieldRemark}" name="${configList[i].fieldNameCamelCase}">
<a-input v-model:value="searchFormState.${configList[i].fieldNameCamelCase}" placeholder="请输入${configList[i].fieldRemark}" />
@ -63,17 +63,27 @@
<% } %>
<% } %>
<% } %>
<a-col :span="6">
<a-button type="primary" @click="tableRef.refresh()">查询</a-button>
<a-button style="margin: 0 8px" @click="reset">重置</a-button>
<% if(searchCount > 3) { %>
<a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<component :is="advanced ? 'up-outlined' : 'down-outlined'"/>
</a>
<% }%>
</a-col>
</a-row>
<a-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-item>
<a-space>
<a-button type="primary" @click="tableRef.refresh(true)">
<template #icon><SearchOutlined /></template>
查询
</a-button>
<a-button @click="reset">
<template #icon><redo-outlined /></template>
重置
</a-button>
<% if(searchCount > 3) { %>
<a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<component :is="advanced ? 'up-outlined' : 'down-outlined'"/>
</a>
<% }%>
</a-space>
</a-form-item>
</a-col>
</a-row>
</a-form>
<% } %>
<s-table
@ -85,6 +95,7 @@
:row-key="(record) => record.${dbTableKeyCamelCase}"
:tool-config="toolConfig"
:row-selection="options.rowSelection"
:scroll="{ x: 'max-content' }"
>
<template #operator class="table-operator">
<a-space>
@ -167,7 +178,7 @@
import { cloneDeep } from 'lodash-es'
import Form from './form.vue'
import ImportModel from './importModel.vue'
import downloadUtil from '@/utils/downloadUtil'
import downloadUtil from '@/utils/downloadUtil'
import ${classNameFirstLower}Api from '@/api/${moduleName}/${classNameFirstLower}Api'
<% if (searchCount > 0) { %>
const searchFormState = ref({})
@ -203,6 +214,7 @@
title: '操作',
dataIndex: 'action',
align: 'center',
fixed: 'right',
width: 150
})
}