This commit is contained in:
2026-04-17 14:59:41 +08:00
parent be0edd7ad5
commit 144c6b130e
12 changed files with 181 additions and 138 deletions

BIN
src/assets/login/job.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

View File

@@ -26,7 +26,9 @@ export default {
readAccept: '我已仔细阅读并接受',
privacyPolicy: '《隐私政策》',
phoneAndJobCodeLabel: '手机号/工号',
phoneAndJobCodePlaceholder: '请输入手机号/工号'
phoneAndJobCodePlaceholder: '请输入手机号/工号',
jobCodeLabel: '工号',
jobCodePlaceholder: '请输入工号',
},
mobile: {
label1: '手机号',

View File

@@ -5,10 +5,10 @@
// export const CODE_ENV = 'production'; // 生产环境
// 测试环境
export const SPDM_URL = 'http://192.168.65.161:3000'; // SPDM项目地址
export const BASE_URL = '/spdmApi/honeycom-spdm'; // baseUrl
export const TENANT_NAME = 'lyric'; // 租户:利元亨
export const CODE_ENV = 'test'; // 测试环境
// export const SPDM_URL = 'http://192.168.65.161:3000'; // SPDM项目地址
// export const BASE_URL = '/spdmApi/honeycom-spdm'; // baseUrl
// export const TENANT_NAME = 'lyric'; // 租户:利元亨
// export const CODE_ENV = 'test'; // 测试环境
// // 190.100
// export const SPDM_URL = 'http://192.168.190.100:3000'; // SPDM项目地址
@@ -23,8 +23,8 @@ export const CODE_ENV = 'test'; // 测试环境
// export const CODE_ENV = 'lyric-intranet'; // 利元亨内网环境
// // 本地环境
// // export const SPDM_URL = 'http://192.168.65.64:3001'; // SPDM项目地址李靖本地
// export const SPDM_URL = 'http://192.168.65.61:3001'; // SPDM项目地址董志欢本地
// export const BASE_URL = '/spdmApi/honeycom-spdm'; // baseUrl
// export const TENANT_NAME = 'lyric'; // 租户:利元亨
// export const CODE_ENV = 'local-dev'; // 本地开发环境
// export const SPDM_URL = 'http://192.168.65.64:3001'; // SPDM项目地址李靖本地
export const SPDM_URL = 'http://192.168.65.61:3001'; // SPDM项目地址董志欢本地
export const BASE_URL = '/spdmApi/honeycom-spdm'; // baseUrl
export const TENANT_NAME = 'lyric'; // 租户:利元亨
export const CODE_ENV = 'local-dev'; // 本地开发环境

View File

@@ -14,10 +14,7 @@
USER_INFO_DATA,
jump: jumpFun
}"
:plugins="[
DocElementRectPlugin(),
InstanceofPlugin(),
]"
:plugins="[DocElementRectPlugin()]"
/>
</template>
@@ -27,7 +24,7 @@ import { useRoute, useRouter } from 'vue-router';
import WujieVue from "wujie-vue3";
import Cookies from 'js-cookie';
import { SPDM_URL } from '../config';
import { DocElementRectPlugin, InstanceofPlugin } from 'wujie-polyfill';
import { DocElementRectPlugin } from 'wujie-polyfill';
const USER_INFO_DATA = Cookies.get('cid_user_info');
const USER_ID = Cookies.get('cid_user_id');

View File

@@ -14,10 +14,7 @@
USER_INFO_DATA,
VIEW_MODE: 'preview'
}"
:plugins="[
DocElementRectPlugin(),
InstanceofPlugin(),
]"
:plugins="[DocElementRectPlugin()]"
/>
</template>
@@ -26,7 +23,7 @@ import { watch } from 'vue';
import WujieVue from 'wujie-vue3';
import Cookies from 'js-cookie';
import { SPDM_URL } from '../config';
import { DocElementRectPlugin, InstanceofPlugin } from 'wujie-polyfill';
import { DocElementRectPlugin } from 'wujie-polyfill';
const emit = defineEmits(['load']);
const { bus } = WujieVue;

View File

@@ -1,6 +1,6 @@
import axios, {AxiosInstance, AxiosResponse, InternalAxiosRequestConfig} from 'axios';
import {useMessage, useMessageBox} from '/@/hooks/message';
import {Session, Token} from '/@/utils/storage';
import axios, { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import { useMessage, useMessageBox } from '/@/hooks/message';
import { Session, Token } from '/@/utils/storage';
import qs from 'qs';
import other from './other';
@@ -14,7 +14,7 @@ const service: AxiosInstance = axios.create({
timeout: 5 * 60 * 1000, // 全局超时时间
paramsSerializer: {
serialize: (params: any) => {
return qs.stringify(params, {arrayFormat: 'repeat'});
return qs.stringify(params, { arrayFormat: 'repeat' });
},
},
});
@@ -86,14 +86,14 @@ const handleResponse = (response: AxiosResponse<any>) => {
service.interceptors.response.use(handleResponse, (error) => {
const status = Number(error.response.status) || 200;
if (status === 423) {
return Promise.reject({msg: '"演示环境,仅供预览"'});
return Promise.reject({ msg: '"演示环境,仅供预览"' });
}
if (status === 424) {
if (!reLoginConfirm) {
reLoginConfirm = true;
useMessageBox()
.confirm('令牌状态已过期,请点击重新登录')
.confirm('登录状态已过期,请点击重新登录')
.then(() => {
Session.clear(); // 清除浏览器全部临时缓存
window.location.href = '/'; // 去登录页

View File

@@ -2,7 +2,13 @@
<div class="layout-padding">
<div class="layout-padding-auto layout-padding-view">
<div class="mb-5 flex" v-show="showSearch">
<el-input class="max-w-60" v-model="state.queryForm.packageName" :placeholder="$t('platformPackage.inputNameTip')" clearable @keyup.enter="getDataList">
<el-input
class="max-w-60"
v-model="state.queryForm.packageName"
:placeholder="$t('platformPackage.inputNameTip')"
clearable
@keyup.enter="getDataList"
>
<template #append>
<el-button icon="Search" @click="getDataList" />
</template>
@@ -52,10 +58,10 @@
>
{{ $t('common.delBtn') }}
</el-button>
<!-- SPDM CODE 去掉导出
:export="'platform_tenant_export'"
@exportExcel="exportExcel" -->
<right-toolbar
:export="'platform_tenant_export'"
@exportExcel="exportExcel"
@queryTable="getDataList"
class="ml10"
style="float: right; margin-right: 20px"
@@ -93,16 +99,16 @@
</template>
<script lang="tsx" name="systemTenant" setup>
import {ElButton} from 'element-plus';
import {batchDeletePackage, deletePackages, fetchPackagePage, IPackage, IPackageQuery, queryPackage} from '/@/api/admin/package';
import {BasicTableProps, useTable} from '/@/hooks/table';
import {useMessage, useMessageBox} from '/@/hooks/message';
import { ElButton } from 'element-plus';
import { batchDeletePackage, deletePackages, fetchPackagePage, IPackage, IPackageQuery, queryPackage } from '/@/api/admin/package';
import { BasicTableProps, useTable } from '/@/hooks/table';
import { useMessage, useMessageBox } from '/@/hooks/message';
import TableRender from '/@/components/TableRender/index.vue';
import {ITableRenderColumn} from '/@/components/TableRender/types';
import { ITableRenderColumn } from '/@/components/TableRender/types';
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
const {t} = useI18n();
const { t } = useI18n();
// 定义变量内容
const formDialogRef = ref();
@@ -148,7 +154,7 @@ const tableColumns = computed<ITableRenderColumn<IPackage>[]>(() => [
label: t('common.action'),
width: 160,
fixed: 'right',
renderDefault: ({row}) => (
renderDefault: ({ row }) => (
<>
<ElButton type="primary" size="small" link onClick={() => formDialogRef.value?.openDialog(row.packageId)}>
{t('common.editBtn')}
@@ -160,7 +166,7 @@ const tableColumns = computed<ITableRenderColumn<IPackage>[]>(() => [
]);
// table hook
const {getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle} = useTable(state);
const { getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle } = useTable(state);
// 清空搜索条件
const resetQuery = () => {
@@ -175,12 +181,12 @@ const handleSelectable = (row: any) => {
// 导出excel
const exportExcel = () => {
downBlobFile('/admin/tenant/export', {...state.queryForm, ids: selectObjs}, 'tenant.xlsx');
downBlobFile('/admin/tenant/export', { ...state.queryForm, ids: selectObjs }, 'tenant.xlsx');
};
// 多选事件
const handleSelectionChange = (objs: {id: string}[]) => {
selectObjs.value = objs.map(({packageId}) => packageId);
const handleSelectionChange = (objs: { id: string }[]) => {
selectObjs.value = objs.map(({ packageId }) => packageId);
multiple.value = !objs.length;
};

View File

@@ -19,10 +19,19 @@
<el-button icon="folder-add" type="primary" class="ml10" @click="roleDialogRef.openDialog()" v-auth="'tenant_role_add'">
{{ $t('common.addBtn') }}
</el-button>
<el-button plain icon="upload-filled" type="primary" class="ml10" @click="excelUploadRef.show()" v-auth="'platform_user_add'">
<!-- SPDM CODE -->
<!-- <el-button plain icon="upload-filled" type="primary" class="ml10" @click="excelUploadRef.show()" v-auth="'platform_user_add'">
{{ $t('common.importBtn') }}
</el-button>
<el-button plain :disabled="multiple" icon="Delete" type="primary" class="ml10" v-auth="'platform_user_del'" @click="handleDelete(selectObjs)">
</el-button> -->
<el-button
plain
:disabled="multiple"
icon="Delete"
type="primary"
class="ml10"
v-auth="'platform_user_del'"
@click="handleDelete(selectObjs)"
>
{{ $t('common.delBtn') }}
</el-button>
<right-toolbar
@@ -66,17 +75,17 @@
</template>
<script setup lang="tsx" name="systemRole">
import {withDirectives, resolveDirective} from 'vue';
import {ElButton, ElTooltip} from 'element-plus';
import {BasicTableProps, useTable} from '/@/hooks/table';
import {getTenantRolePage, deleteTenantRole, ITenantRole} from '/@/api/admin/role';
import {useMessage, useMessageBox} from '/@/hooks/message';
import {ITableRenderColumn} from '/@/components/TableRender/types';
import { withDirectives, resolveDirective } from 'vue';
import { ElButton, ElTooltip } from 'element-plus';
import { BasicTableProps, useTable } from '/@/hooks/table';
import { getTenantRolePage, deleteTenantRole, ITenantRole } from '/@/api/admin/role';
import { useMessage, useMessageBox } from '/@/hooks/message';
import { ITableRenderColumn } from '/@/components/TableRender/types';
// 引入组件
const RoleDialog = defineAsyncComponent(() => import('./form.vue'));
const Permission = defineAsyncComponent(() => import('./permession.vue'));
const {t} = useI18n();
const { t } = useI18n();
// 定义变量内容
const roleDialogRef = ref();
@@ -98,7 +107,7 @@ const state: BasicTableProps = reactive<BasicTableProps>({
});
// table hook
const {getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle} = useTable(state);
const { getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle } = useTable(state);
const tableColumns = computed<ITableRenderColumn<ITenantRole>[]>(() => [
{
@@ -124,7 +133,7 @@ const tableColumns = computed<ITableRenderColumn<ITenantRole>[]>(() => [
{
label: t('common.action'),
width: 250,
renderDefault: ({row}) => {
renderDefault: ({ row }) => {
const directiveAuth = resolveDirective('auth');
return (
<>
@@ -162,7 +171,7 @@ const resetQuery = () => {
// 导出excel
const exportExcel = () => {
downBlobFile('/tenant/sysRole/export', Object.assign(state.queryForm, {ids: selectObjs}), 'role.xlsx');
downBlobFile('/tenant/sysRole/export', Object.assign(state.queryForm, { ids: selectObjs }), 'role.xlsx');
};
// 是否可以多选
@@ -171,8 +180,8 @@ const handleSelectable = (row: any) => {
};
// 多选事件
const handleSelectionChange = (objs: {roleId: string}[]) => {
selectObjs.value = objs.map(({roleId}) => roleId);
const handleSelectionChange = (objs: { roleId: string }[]) => {
selectObjs.value = objs.map(({ roleId }) => roleId);
multiple.value = !objs.length;
};

View File

@@ -2,7 +2,13 @@
<div class="layout-padding">
<div class="layout-padding-auto layout-padding-view">
<div class="mb-5 flex" v-show="showSearch">
<el-input class="max-w-60" v-model="state.queryForm.companyName" :placeholder="$t('tenant.inputCompanyNameTip')" clearable @keyup.enter="getDataList">
<el-input
class="max-w-60"
v-model="state.queryForm.companyName"
:placeholder="$t('tenant.inputCompanyNameTip')"
clearable
@keyup.enter="getDataList"
>
<template #append>
<el-button icon="Search" @click="getDataList" />
</template>
@@ -59,10 +65,11 @@
>
{{ $t('common.delBtn') }}
</el-button>
<right-toolbar
:export="'platform_tenant_export'"
<!-- SPDM CODE 去掉导出
:export="'platform_tenant_export'"
@exportExcel="exportExcel"
-->
<right-toolbar
@queryTable="getDataList"
class="ml10"
style="float: right; margin-right: 20px"
@@ -105,20 +112,20 @@
</template>
<script lang="tsx" name="systemTenant" setup>
import {resolveDirective, withDirectives} from 'vue';
import {ElButton, ElTooltip} from 'element-plus';
import {DictTag, TableRender} from '/@/components';
import {ITableRenderColumn} from '/@/components/TableRender/types';
import {useMessage, useMessageBox} from '/@/hooks/message';
import {BasicTableProps, useTable} from '/@/hooks/table';
import {delTenants, fetchTenantPage, ITenant, ITenantQuery, queryTenant} from '/@/api/admin/tenant';
import {UserStatusOptions, UserStatusOptionsQuery} from '/@/api/admin/userManage';
import { resolveDirective, withDirectives } from 'vue';
import { ElButton, ElTooltip } from 'element-plus';
import { DictTag, TableRender } from '/@/components';
import { ITableRenderColumn } from '/@/components/TableRender/types';
import { useMessage, useMessageBox } from '/@/hooks/message';
import { BasicTableProps, useTable } from '/@/hooks/table';
import { delTenants, fetchTenantPage, ITenant, ITenantQuery, queryTenant } from '/@/api/admin/tenant';
import { UserStatusOptions, UserStatusOptionsQuery } from '/@/api/admin/userManage';
// 引入组件
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
const Individuation = defineAsyncComponent(() => import('./individuation.vue'));
const TenantPackage = defineAsyncComponent(() => import('./package.vue'));
const {t} = useI18n();
const { t } = useI18n();
// 定义变量内容
const formDialogRef = shallowRef<InstanceType<typeof FormDialog>>();
@@ -139,7 +146,7 @@ const state: BasicTableProps<ITenantQuery> = reactive<BasicTableProps>({
});
// table hook
const {getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle} = useTable(state);
const { getDataList, currentChangeHandle, sizeChangeHandle, downBlobFile, tableStyle } = useTable(state);
const tableColumns = computed<ITableRenderColumn<ITenant>[]>(() => [
{
@@ -174,14 +181,14 @@ const tableColumns = computed<ITableRenderColumn<ITenant>[]>(() => [
{
label: t('tenant.status'),
prop: 'status',
renderDefault: ({row}) => {
renderDefault: ({ row }) => {
return <DictTag options={UserStatusOptions} value={row.status} i18n></DictTag>;
},
},
{
label: t('common.action'),
width: 250,
renderDefault: ({row}) => {
renderDefault: ({ row }) => {
return (
<>
<ElButton icon="edit-pen" onClick={() => formDialogRef.value?.openDialog(row.tenantId)} text type="primary">
@@ -215,12 +222,12 @@ const resetQuery = () => {
// 导出excel
const exportExcel = () => {
downBlobFile('/admin/tenant/export', Object.assign(state.queryForm, {ids: selectObjs}), 'tenant.xlsx');
downBlobFile('/admin/tenant/export', Object.assign(state.queryForm, { ids: selectObjs }), 'tenant.xlsx');
};
// 多选事件
const handleSelectionChange = (objs: {id: string}[]) => {
selectObjs.value = objs.map(({tenantId}) => tenantId);
const handleSelectionChange = (objs: { id: string }[]) => {
selectObjs.value = objs.map(({ tenantId }) => tenantId);
multiple.value = !objs.length;
};

View File

@@ -1,18 +1,24 @@
<template>
<div class="layout-padding-auto layout-padding-view">
<div class="mb-5">
<el-input v-model="queryForm.nickname" style="max-width: 300px" :placeholder="$t('staffManage.inputNickNameTip')" class="input-with-select" @keyup.enter="queryStaffs">
<el-input
v-model="queryForm.nickname"
style="max-width: 300px"
:placeholder="$t('staffManage.inputNickNameTip')"
class="input-with-select"
@keyup.enter="queryStaffs"
>
<template #append>
<el-button :icon="Search" @click="queryStaffs" />
</template>
</el-input>
<el-popover :width="400" trigger="click" :teleported="false" v-model:visible="visible">
<template #reference>
<!-- <template #reference>
<el-button class="ml-5" text>
<i class="mdi mdi-filter-outline text-xl"></i>
</el-button>
</template>
</template> -->
<div>
<header class="flex justify-between items-center px-3">
<h3>{{ $t('staffManage.filter') }}</h3>
@@ -97,11 +103,11 @@
</template>
<script lang="tsx" setup>
import {Audit, changeStatus, deleteStaff, getStaffList, IStaff, IStaffQuery, StaffStatusEnum, StaffStatusMap} from '/@/api/admin/staffManage';
import {ITableRenderColumn} from '/@/components/TableRender/types';
import {formatTimestamp} from '/@/utils/formatTime';
import {Search} from '@element-plus/icons-vue';
import {ElButton} from 'element-plus';
import { Audit, changeStatus, deleteStaff, getStaffList, IStaff, IStaffQuery, StaffStatusEnum, StaffStatusMap } from '/@/api/admin/staffManage';
import { ITableRenderColumn } from '/@/components/TableRender/types';
import { formatTimestamp } from '/@/utils/formatTime';
import { Search } from '@element-plus/icons-vue';
import { ElButton } from 'element-plus';
import EditForm from './editForm.vue';
import InviteForm from './inviteForm.vue';
import { useMessage, useMessageBox } from '/@/hooks/message';
@@ -117,8 +123,8 @@ const inviteFormRef = ref<InstanceType<typeof InviteForm>>();
const visible = ref(false);
const props = defineProps<{
deptId?: string;
posts: {postId: string; postName: string}[];
roles: {roleId: string; roleName: string}[];
posts: { postId: string; postName: string }[];
roles: { roleId: string; roleName: string }[];
}>();
const pagination = reactive({
current: 1,
@@ -164,9 +170,9 @@ const queryParams = ref<IStaffQuery>({
size: 10,
});
const statusType = [
{label: t(`staffManage.all`), value: ''},
{label: t(`staffManage.unlocked`), value: StaffStatusEnum.UNLOCKED},
{label: t(`staffManage.locked`), value: StaffStatusEnum.LOCKED},
{ label: t(`staffManage.all`), value: '' },
{ label: t(`staffManage.unlocked`), value: StaffStatusEnum.UNLOCKED },
{ label: t(`staffManage.locked`), value: StaffStatusEnum.LOCKED },
];
const tableData = ref<IStaff[]>([]);
const tableColumns = computed<ITableRenderColumn<IStaff & Audit>[]>(() => [
@@ -174,7 +180,8 @@ const tableColumns = computed<ITableRenderColumn<IStaff & Audit>[]>(() => [
label: '',
type: 'index',
},
{ // SPDM CODE
{
// SPDM CODE
label: t('staffManage.username'),
prop: 'username',
},
@@ -211,30 +218,32 @@ const tableColumns = computed<ITableRenderColumn<IStaff & Audit>[]>(() => [
return row.roles.map((roleId: string) => (props.roles.filter((role) => role.roleId === roleId)[0] || {}).roleName).join(',');
},
},
{
label: t('staffManage.status'),
prop: 'status',
formatter: (row: IStaff) => {
return t(`staffManage.${StaffStatusMap[row.status]}`);
},
},
// SPDM CODE
// {
// label: t('staffManage.status'),
// prop: 'status',
// formatter: (row: IStaff) => {
// return t(`staffManage.${StaffStatusMap[row.status]}`);
// },
// },
{
label: t('common.action'),
fixed: 'right',
width: 200,
renderDefault: ({row}: {row: IStaff}) => {
renderDefault: ({ row }: { row: IStaff }) => {
return (
<>
<ElButton type="primary" link onClick={() => updateStaff(row.staffId)}>
{ t('common.editBtn')}
</ElButton>
<ElButton type="primary" link onClick={() => handleChangeStatus(row.staffId, row.status)}>
{row.status === StaffStatusEnum.UNLOCKED ? t('staffManage.lock') : t('staffManage.unlock')}
{t('common.editBtn')}
</ElButton>
{/* // SPDM CODE <ElButton type="primary" link onClick={() => handleChangeStatus(row.staffId, row.status)}>
{row.status === StaffStatusEnum.UNLOCKED ? t('staffManage.lock') : t('staffManage.unlock')}
</ElButton> */}
<ElButton type="primary" link onClick={() => handleDelete(row.staffId)}>
{ t('common.delBtn')}
{t('common.delBtn')}
</ElButton>
</>
);
@@ -243,16 +252,16 @@ const tableColumns = computed<ITableRenderColumn<IStaff & Audit>[]>(() => [
]);
const currentChangeHandle = (value: number) => {
pagination.current = value;
const {current, size, ...rest} = queryParams.value;
queryParams.value = {...rest, size, current: value};
const { current, size, ...rest } = queryParams.value;
queryParams.value = { ...rest, size, current: value };
getDataList();
};
const sizeChangeHandle = (value: number) => {
pagination.size = value;
const {current, size, ...rest} = queryParams.value;
queryParams.value = {...rest, size: value, current: 1};
const { current, size, ...rest } = queryParams.value;
queryParams.value = { ...rest, size: value, current: 1 };
getDataList();
};
const resetFields = () => {
@@ -264,7 +273,7 @@ const resetFields = () => {
getDataList();
};
const tableStyle = {
cellStyle: {textAlign: 'center'},
cellStyle: { textAlign: 'center' },
headerCellStyle: {
textAlign: 'center',
background: 'var(--el-table-row-hover-bg-color)',
@@ -273,16 +282,16 @@ const tableStyle = {
};
const queryStaffs = () => {
const {size} = queryParams.value;
const { size } = queryParams.value;
const {phone, nickname, email, status, roles, posts} = queryForm.value;
const { phone, nickname, email, status, roles, posts } = queryForm.value;
const params: IStaffQuery = {
...(phone && {phone}),
...(nickname && {nickname}),
...(email && {email}),
...(status && {status}),
...(roles.length && {roles}),
...(posts.length && {posts}),
...(phone && { phone }),
...(nickname && { nickname }),
...(email && { email }),
...(status && { status }),
...(roles.length && { roles }),
...(posts.length && { posts }),
size,
current: 1,
};
@@ -298,8 +307,8 @@ const getDataList = async () => {
pagination.current = data.current;
pagination.total = data.total;
tableData.value = data.records.map((item: any) => {
const {postList, roleList, email, status, staffId, userInfo, deptList} = item;
const {phone, nickname, username} = userInfo;
const { postList, roleList, email, status, staffId, userInfo, deptList } = item;
const { phone, nickname, username } = userInfo;
const posts = postList.map((post: any) => post.postId);
const roles = roleList.map((role: any) => role.roleId);
const depts = deptList;

View File

@@ -9,7 +9,7 @@
<div class="widgets-top">
<div class="flex justify-end custom_btn">
<el-button v-if="customizing" type="primary" round @click="save">{{ $t('widgets.index.0910663-0') }}</el-button>
<!-- <el-button v-else type="primary" round @click="custom">{{ $t('Crontab.index.7634731-6') }}</el-button> -->
<el-button v-else type="primary" round @click="custom">{{ $t('Crontab.index.7634731-6') }}</el-button>
</div>
</div>
<div ref="widgets" class="widgets">
@@ -321,24 +321,24 @@ const allComponentList = computed(() => {
const myCompsList = computed(() => {
// 支持列表 SPDM CODE
const myGrid = [
'docking-tianyu',
'docking-zw-3d',
'docking-intesim-cae',
'calendar',
'current-user',
'news',
'audit-log',
'sys-log',
'flow-data',
// 'docking-tianyu',
// 'docking-zw-3d',
// 'docking-intesim-cae',
// 'calendar',
// 'current-user',
// 'news',
// 'audit-log',
// 'sys-log',
// 'flow-data',
// 'favorite-flow',
// 'sys-log-line',
// 'demo-chart1',
// 'demo-chart2',
// 'task-info',
// 'task-list',
// 'task-compare-chart',
// 'task-trend-chart',
'favorite-menu',
'favorite-flow',
'sys-log-line',
'demo-chart1',
'demo-chart2',
'task-info',
'task-list',
'task-compare-chart',
'task-trend-chart',
'TaskMessage',
'TaskList',
'ToDoCalendar',

View File

@@ -9,10 +9,21 @@
hide-required-asterisk
@keyup.enter="handleVerify"
>
<el-form-item class="login-animation1" prop="username" :label="$t('password.phoneAndJobCodeLabel')">
<el-input text :placeholder="$t('password.phoneAndJobCodePlaceholder')" v-model="state.ruleForm.username" clearable autocomplete="off">
<el-form-item
class="login-animation1"
prop="username"
:label="['lyric-intranet'].includes(CODE_ENV) ? $t('password.jobCodeLabel') : $t('password.phoneAndJobCodeLabel')"
>
<el-input
text
:placeholder="['lyric-intranet'].includes(CODE_ENV) ? $t('password.jobCodePlaceholder') : $t('password.phoneAndJobCodePlaceholder')"
v-model="state.ruleForm.username"
clearable
autocomplete="off"
>
<template #prefix>
<el-icon class="el-input__icon">
<img v-if="['lyric-intranet'].includes(CODE_ENV)" src="/@/assets/login/job.png" class="job-img" />
<el-icon v-else class="el-input__icon">
<ele-User />
</el-icon>
</template>
@@ -111,6 +122,7 @@ import { uploadFormat } from '/@/utils/commonFunction';
import { Session } from '/@/utils/storage';
import { useLocalStorage } from '@vueuse/core';
import { enableConfigByTenant } from '/@/spdm/utils/index'; // SPDM CODE
import { CODE_ENV } from '/@/spdm/config';
const props = defineProps({
showBrowserMsgText: {
@@ -240,4 +252,8 @@ onMounted(() => {
font-size: 12px;
}
}
.job-img {
width: 14px;
height: 14px;
}
</style>