feat(ui):i18n (#352)

This commit is contained in:
wang-liang0615 2024-01-03 13:29:38 +08:00 committed by GitHub
parent b3ef1aa5c1
commit 19c6009c64
15 changed files with 62 additions and 795 deletions

View File

@ -89,20 +89,23 @@ export default {
}, },
}, },
data() { data() {
const keyMapList = [
{ value: 'default', label: '默认' },
{ value: 'vim', label: 'vim' },
{ value: 'emacs', label: 'emacs' },
{ value: 'sublime', label: 'sublime' },
]
return { return {
keyMapList,
coder: null, coder: null,
fontSize: 14, fontSize: 14,
keyMap: 'default', keyMap: 'default',
fullscreenExitVisible: false, fullscreenExitVisible: false,
} }
}, },
computed: {
keyMapList() {
return [
{ value: 'default', label: this.$t('default') },
{ value: 'vim', label: 'vim' },
{ value: 'emacs', label: 'emacs' },
{ value: 'sublime', label: 'sublime' },
]
},
},
mounted() {}, mounted() {},
methods: { methods: {
initCodeMirror(codeContent) { initCodeMirror(codeContent) {

View File

@ -92,7 +92,7 @@
:show-upload-list="false" :show-upload-list="false"
accept=".svg,.png,.jpg,.jpeg" accept=".svg,.png,.jpg,.jpeg"
> >
<a> 暂无自定义图标点击此处上传 </a> <a> {{ $t('customIconSelect.nodata') }} </a>
</a-upload> </a-upload>
</a-empty> </a-empty>
</div> </div>

View File

@ -81,25 +81,23 @@ export default {
}, },
inject: ['reload'], inject: ['reload'],
methods: { methods: {
// 取消订阅
cancelAttributes(e, menu) { cancelAttributes(e, menu) {
const that = this const that = this
e.preventDefault() e.preventDefault()
e.stopPropagation() e.stopPropagation()
this.$confirm({ this.$confirm({
title: '警告', title: this.$t('alert'),
content: `确认取消订阅 ${menu.meta.title}?`, content: this.$t('cmdb.preference.confirmcancelSub2', { name: menu.meta.title }),
onOk() { onOk() {
const citypeId = menu.meta.typeId const citypeId = menu.meta.typeId
const unsubCIType = subscribeCIType(citypeId, '') const unsubCIType = subscribeCIType(citypeId, '')
const unsubTree = subscribeTreeView(citypeId, '') const unsubTree = subscribeTreeView(citypeId, '')
Promise.all([unsubCIType, unsubTree]).then(() => { Promise.all([unsubCIType, unsubTree]).then(() => {
that.$message.success('取消订阅成功') that.$message.success(that.$t('cmdb.preference.cancelSubSuccess'))
const lastTypeId = window.localStorage.getItem('ops_ci_typeid') || undefined const lastTypeId = window.localStorage.getItem('ops_ci_typeid') || undefined
if (Number(citypeId) === Number(lastTypeId)) { if (Number(citypeId) === Number(lastTypeId)) {
localStorage.setItem('ops_ci_typeid', '') localStorage.setItem('ops_ci_typeid', '')
} }
// 删除路由
const href = window.location.href const href = window.location.href
const hrefSplit = href.split('/') const hrefSplit = href.split('/')
if (Number(hrefSplit[hrefSplit.length - 1]) === Number(citypeId)) { if (Number(hrefSplit[hrefSplit.length - 1]) === Number(citypeId)) {
@ -119,12 +117,10 @@ export default {
}, },
// select menu item // select menu item
onOpenChange(openKeys) { onOpenChange(openKeys) {
// 在水平模式下时执行,并且不再执行后续
if (this.mode === 'horizontal') { if (this.mode === 'horizontal') {
this.openKeys = openKeys this.openKeys = openKeys
return return
} }
// 非水平模式时
const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key)) const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key))
if (!this.rootSubmenuKeys.includes(latestOpenKey)) { if (!this.rootSubmenuKeys.includes(latestOpenKey)) {
this.openKeys = openKeys this.openKeys = openKeys
@ -162,6 +158,9 @@ export default {
return null return null
}, },
renderI18n(title) { renderI18n(title) {
if (Object.prototype.toString.call(this.$t(`${title}`)) === '[object Object]') {
return title
}
return this.$t(`${title}`) return this.$t(`${title}`)
}, },
renderMenuItem(menu) { renderMenuItem(menu) {
@ -173,9 +172,6 @@ export default {
const attrs = { href: menu.meta.targetHref || menu.path, target: menu.meta.target } const attrs = { href: menu.meta.targetHref || menu.path, target: menu.meta.target }
if (menu.children && menu.hideChildrenInMenu) { if (menu.children && menu.hideChildrenInMenu) {
// 把有子菜单的 并且 父菜单是要隐藏子菜单的
// 都给子菜单增加一个 hidden 属性
// 用来给刷新页面时, selectedKeys 做控制用
menu.children.forEach(item => { menu.children.forEach(item => {
item.meta = Object.assign(item.meta, { hidden: true }) item.meta = Object.assign(item.meta, { hidden: true })
}) })
@ -196,8 +192,8 @@ export default {
getPopupContainer={(trigger) => trigger} getPopupContainer={(trigger) => trigger}
content={() => content={() =>
<div> <div>
<div onClick={e => this.handlePerm(e, menu, 'CIType')} class="custom-menu-extra-submenu-item"><a-icon type="user-add" />授权</div> <div onClick={e => this.handlePerm(e, menu, 'CIType')} class="custom-menu-extra-submenu-item"><a-icon type="user-add" />{ this.renderI18n('grant') }</div>
<div onClick={e => this.cancelAttributes(e, menu)} class="custom-menu-extra-submenu-item"><a-icon type="star" />取消订阅</div> <div onClick={e => this.cancelAttributes(e, menu)} class="custom-menu-extra-submenu-item"><a-icon type="star" />{ this.renderI18n('cmdb.preference.cancelSub') }</div>
</div>} </div>}
> >
<a-icon type="menu" ref="extraEllipsis" class="custom-menu-extra-ellipsis"></a-icon> <a-icon type="menu" ref="extraEllipsis" class="custom-menu-extra-ellipsis"></a-icon>
@ -287,7 +283,7 @@ export default {
this.$refs.cmdbGrantRelationView.open({ name: menu.meta.name, cmdbGrantType: 'relation_view' }) this.$refs.cmdbGrantRelationView.open({ name: menu.meta.name, cmdbGrantType: 'relation_view' })
} }
} else { } else {
this.$message.error('权限不足!') this.$message.error(this.$t('noPermission'))
} }
}) })
} }

View File

@ -68,8 +68,8 @@ export default {
const that = this const that = this
this.$confirm({ this.$confirm({
title: '提示', title: this.$t('tip'),
content: '真的要注销登录吗 ?', content: this.$t('topMenu.confirmLogout'),
onOk() { onOk() {
// localStorage.removeItem('ops_cityps_currentId') // localStorage.removeItem('ops_cityps_currentId')
localStorage.clear() localStorage.clear()

View File

@ -104,12 +104,15 @@ export default {
max: 'Max', max: 'Max',
min: 'Min', min: 'Min',
visual: 'Visual', visual: 'Visual',
default: 'default',
tip: 'Tip',
pagination: { pagination: {
total: '{range0}-{range1} of {total} items' total: '{range0}-{range1} of {total} items'
}, },
topMenu: { topMenu: {
personalCenter: 'Personal Center', personalCenter: 'Personal Center',
logout: 'logout', logout: 'logout',
confirmLogout: 'Are you sure to log out?'
}, },
cmdbFilterComp: { cmdbFilterComp: {
conditionFilter: 'Conditional filtering', conditionFilter: 'Conditional filtering',
@ -139,7 +142,8 @@ export default {
multicolor: 'Multicolor', multicolor: 'Multicolor',
custom: 'Custom', custom: 'Custom',
preview: 'Preview', preview: 'Preview',
sizeLimit: 'The image size cannot exceed 2MB!' sizeLimit: 'The image size cannot exceed 2MB!',
nodata: 'There are currently no custom icons available. Click here to upload'
}, },
cmdb: cmdb_en, cmdb: cmdb_en,
cs: cs_en, cs: cs_en,

View File

@ -104,12 +104,15 @@ export default {
max: '最大值', max: '最大值',
min: '最小值', min: '最小值',
visual: '虚拟', visual: '虚拟',
default: '默认',
tip: '提示',
pagination: { pagination: {
total: '当前展示 {range0}-{range1} 条数据, 共 {total} 条' total: '当前展示 {range0}-{range1} 条数据, 共 {total} 条'
}, },
topMenu: { topMenu: {
personalCenter: '个人中心', personalCenter: '个人中心',
logout: '退出登录', logout: '退出登录',
confirmLogout: '确认退出登录吗?'
}, },
cmdbFilterComp: { cmdbFilterComp: {
conditionFilter: '条件过滤', conditionFilter: '条件过滤',
@ -139,7 +142,8 @@ export default {
multicolor: '多色', multicolor: '多色',
custom: '自定义', custom: '自定义',
preview: '预览', preview: '预览',
sizeLimit: '图片大小不可超过2MB' sizeLimit: '图片大小不可超过2MB',
nodata: '暂无自定义图标,点击此处上传'
}, },
cmdb: cmdb_zh, cmdb: cmdb_zh,
cs: cs_zh, cs: cs_zh,

View File

@ -103,9 +103,9 @@ export default {
}, },
httpMap() { httpMap() {
return { return {
[this.$t('cmdb.components.aliyun')]: { name: 'aliyun' }, 阿里云: { name: 'aliyun' },
[this.$t('cmdb.components.tencentcloud')]: { name: 'tencentcloud' }, 腾讯云: { name: 'tencentcloud' },
[this.$t('cmdb.components.huaweicloud')]: { name: 'huaweicloud' }, 华为云: { name: 'huaweicloud' },
AWS: { name: 'aws' }, AWS: { name: 'aws' },
} }
}, },

View File

@ -114,7 +114,7 @@
type="primary" type="primary"
icon="plus" icon="plus"
> >
定制仪表盘 {{ $t('cmdb.menu.customDashboard') }}
</a-button> </a-button>
<span v-else>{{ $t('cmdb.custom_dashboard.noCustomDashboard') }}</span> <span v-else>{{ $t('cmdb.custom_dashboard.noCustomDashboard') }}</span>
</div> </div>

View File

@ -16,7 +16,7 @@
height: '23px', height: '23px',
fontSize: '14px', fontSize: '14px',
}" }"
/></span /></span
> >
<span <span
class="cmdb-preference-left-card-content" class="cmdb-preference-left-card-content"
@ -31,7 +31,7 @@
height: '23px', height: '23px',
fontSize: '14px', fontSize: '14px',
}" }"
/></span /></span
> >
</div> </div>
<div class="cmdb-preference-group" v-for="(group, index) in myPreferences" :key="group.name"> <div class="cmdb-preference-group" v-for="(group, index) in myPreferences" :key="group.name">

View File

@ -1,4 +1,4 @@
/* eslint-dsiable */ /* eslint-dsiable */
import Vue from 'vue' import Vue from 'vue'
import axios from 'axios' import axios from 'axios'
import { VueAxios } from './axios' import { VueAxios } from './axios'
@ -6,20 +6,22 @@ import message from 'ant-design-vue/es/message'
import notification from 'ant-design-vue/es/notification' import notification from 'ant-design-vue/es/notification'
import { ACCESS_TOKEN } from '@/store/global/mutation-types' import { ACCESS_TOKEN } from '@/store/global/mutation-types'
import router from '@/router' import router from '@/router'
import store from '@/store'
// 创建 axios 实例 // 创建 axios 实例
const service = axios.create({ const service = axios.create({
baseURL: process.env.VUE_APP_API_BASE_URL, // api base_url baseURL: process.env.VUE_APP_API_BASE_URL, // api base_url
timeout: 6000, // 请求超时时间 timeout: 6000, // 请求超时时间
withCredentials: true, withCredentials: true,
crossDomain: true crossDomain: true,
}) })
const err = (error) => { const err = (error) => {
console.log(error) console.log(error)
const reg = /5\d{2}/g const reg = /5\d{2}/g
if (error.response && reg.test(error.response.status)) { if (error.response && reg.test(error.response.status)) {
message.error('服务端未知错误, 请联系管理员!') const errorMsg = ((error.response || {}).data || {}).message || '服务端未知错误, 请联系管理员!'
message.error(errorMsg)
} else if (error.response.status === 412) { } else if (error.response.status === 412) {
let seconds = 5 let seconds = 5
notification.warning({ notification.warning({
@ -64,6 +66,7 @@ service.interceptors.request.use(config => {
if (token) { if (token) {
config.headers['Access-Token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改 config.headers['Access-Token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
} }
config.headers['Accept-Language'] = store?.state?.locale ?? 'zh'
return config return config
}, err) }, err)

View File

@ -25,18 +25,6 @@
<a-input v-model="batchForm.value" /> <a-input v-model="batchForm.value" />
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<a-form-model v-else-if="batchProps.type === 'annual_leave'">
<a-form-model-item :label="$t('cs.companyStructure.editAnnualLeave')">
<a-input-number
:min="0"
:step="1"
:style="{ width: '100%' }"
v-model="batchForm.value"
:placeholder="$t('cs.companyStructure.annualLeavePlaceholder')"
:formatter="(value) => `${value} $t('cs.companyStructure.day')`"
/>
</a-form-model-item>
</a-form-model>
<a-form-model v-else-if="batchProps.type === 'password'" ref="batchForm" :model="batchForm" :rules="rules"> <a-form-model v-else-if="batchProps.type === 'password'" ref="batchForm" :model="batchForm" :rules="rules">
<a-form-model-item :label="$t('cs.companyStructure.resetPassword')" prop="password"> <a-form-model-item :label="$t('cs.companyStructure.resetPassword')" prop="password">
<a-input-password v-model="batchForm.value" /> <a-input-password v-model="batchForm.value" />
@ -75,7 +63,7 @@ export default {
const validatePass = (rule, value, callback) => { const validatePass = (rule, value, callback) => {
console.log(this.batchForm) console.log(this.batchForm)
if (this.batchForm.value === '') { if (this.batchForm.value === '') {
callback(new Error(this.$t('cs.companyStructure.password_placeholder'))) callback(new Error(this.$t('cs.companyStructure.passwordPlaceholder')))
} else { } else {
this.$refs.batchForm.validateField('repeatPassword') this.$refs.batchForm.validateField('repeatPassword')
callback() callback()

View File

@ -20,19 +20,24 @@
</div> </div>
<template v-if="currentStep === 1"> <template v-if="currentStep === 1">
<a-upload :multiple="false" :customRequest="customRequest" accept=".xlsx" :showUploadList="false"> <a-upload :multiple="false" :customRequest="customRequest" accept=".xlsx" :showUploadList="false">
<a-button :style="{ marginBottom: '20px' }" type="primary"> <a-icon type="upload" />选择文件</a-button> <a-button :style="{ marginBottom: '20px' }" type="primary"> <a-icon type="upload" />{{ $t('cs.companyStructure.selectFile') }}</a-button>
</a-upload> </a-upload>
<p><a @click="download">{{ $t('cs.companyStructure.clickDownloadImportTemplate') }}</a></p> <p><a @click="download">{{ $t('cs.companyStructure.clickDownloadImportTemplate') }}</a></p>
</template> </template>
<div <div
:style="{ height: '60px', display: 'flex', justifyContent: 'center', alignItems: 'center' }" :style="{
height: '60px',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
whiteSpace: 'pre-wrap',
}"
v-if="currentStep === 3" v-if="currentStep === 3"
> >
导入总数据{{ allCount }}, 导入成功 <span :style="{ color: '#2362FB' }">{{ allCount - errorCount }}</span> , {{ $t('cs.companyStructure.importSuccess', { allCount: allCount })
{{ $t('cs.companyStructure.importSuccess', {allCount: allCount}) }}<span :style="{ color: '#2362FB' }">{{ allCount - errorCount }}</span> }}<span :style="{ color: '#2362FB' }"> {{ allCount - errorCount }} </span>{{ $t('cs.companyStructure.count') }},
{{ $t('cs.companyStructure.count')}}, {{ $t('cs.companyStructure.importFailed') }}<span :style="{ color: '#D81E06' }"> {{ errorCount }} </span
{{ $t('cs.companyStructure.importError') }}<span :style="{ color: '#D81E06' }">{{ errorCount }}</span >{{ $t('cs.companyStructure.count') }}
>{{ $t('cs.companyStructure.count')}}
</div> </div>
<vxe-table <vxe-table
v-if="currentStep === 2 || has_error" v-if="currentStep === 2 || has_error"
@ -121,39 +126,6 @@ export default {
icon: 'icon-shidi-queren', icon: 'icon-shidi-queren',
}, },
] ]
const dfc_importParamsList = [
'email',
'username',
'nickname',
'password',
'sex',
'mobile',
'position_name',
'department_name',
'current_company',
'dfc_entry_date',
'entry_date',
'is_internship',
'leave_date',
'id_card',
'nation',
'id_place',
'party',
'household_registration_type',
'hometown',
'marry',
'max_degree',
'emergency_person',
'emergency_phone',
'bank_card_number',
'bank_card_name',
'opening_bank',
'account_opening_location',
'school',
'major',
'education',
'graduation_year',
]
const common_importParamsList = [ const common_importParamsList = [
'email', 'email',
'username', 'username',
@ -187,7 +159,6 @@ export default {
] ]
return { return {
stepList, stepList,
dfc_importParamsList,
common_importParamsList, common_importParamsList,
visible: false, visible: false,
currentStep: 1, currentStep: 1,

View File

@ -181,8 +181,6 @@
<a-divider type="vertical"/> <a-divider type="vertical"/>
<span @click="openBatchModal('position_name')">{{ $t('cs.companyStructure.editPosition') }}</span> <span @click="openBatchModal('position_name')">{{ $t('cs.companyStructure.editPosition') }}</span>
<a-divider type="vertical"/> <a-divider type="vertical"/>
<span @click="openBatchModal('annual_leave')">{{ $t('cs.companyStructure.editAnnualLeave') }}</span>
<a-divider type="vertical"/>
<span @click="openBatchModal('password')">{{ $t('cs.companyStructure.resetPassword') }}</span> <span @click="openBatchModal('password')">{{ $t('cs.companyStructure.resetPassword') }}</span>
<a-divider type="vertical"/> <a-divider type="vertical"/>
<span @click="openBatchModal('block', null, 1)">{{ $t('cs.companyStructure.block') }}</span> <span @click="openBatchModal('block', null, 1)">{{ $t('cs.companyStructure.block') }}</span>

View File

@ -92,6 +92,10 @@
<span>{{ $t('cs.companyStructure.sex') }}</span> <span>{{ $t('cs.companyStructure.sex') }}</span>
</span> </span>
</template> </template>
<template #default="{row}">
<span v-if="row.sex === ''">{{ $t('cs.companyStructure.male') }}</span>
<span v-if="row.sex === ''">{{ $t('cs.companyStructure.female') }}</span>
</template>
</vxe-column> </vxe-column>
<vxe-column <vxe-column
field="mobile" field="mobile"
@ -171,644 +175,6 @@
}}</span> }}</span>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column
field="annual_leave"
:title="$t('cs.companyStructure.annualLeave')"
sortable
min-width="80"
v-if="
checkedCols.findIndex((v) => v == 'annual_leave') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'annual_leave') !== -1
"
key="annual_leave"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.annualLeave') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="virtual_annual_leave"
:title="$t('cs.companyStructure.virtualAnnualLeave')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'virtual_annual_leave') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'virtual_annual_leave') !== -1
"
key="virtual_annual_leave"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.virtualAnnualLeave') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="parenting_leave"
:title="$t('cs.companyStructure.parentingLeave')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'parenting_leave') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'parenting_leave') !== -1
"
key="parenting_leave"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.parentingLeave') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="entry_date"
:title="$t('cs.companyStructure.entryDate')"
sortable
min-width="150"
v-if="
checkedCols.findIndex((v) => v == 'entry_date') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'entry_date') !== -1
"
key="entry_date"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.entryDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="is_internship"
:title="$t('cs.companyStructure.isInternship')"
sortable
min-width="140"
v-bind="tableType === 'structure' ? { filters: internOptions, 'filter-multiple': false } : {}"
v-if="
checkedCols.findIndex((v) => v == 'is_internship') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'is_internship') !== -1
"
key="is_internship"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.isInternship') }}</span>
</span>
</template>
<template #default="{ row }">
{{ getIsInterInship(row.is_internship) }}
</template> </vxe-column
>I
<vxe-column
field="leave_date"
:title="$t('cs.companyStructure.leaveDate')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'leave_date') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'leave_date') !== -1
"
key="leave_date"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.leaveDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="id_card"
:title="$t('cs.companyStructure.idCard')"
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'id_card') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'id_card') !== -1
"
key="id_card"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.idCard') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="nation"
:title="$t('cs.companyStructure.nation')"
sortable
min-width="80"
v-if="
checkedCols.findIndex((v) => v == 'nation') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'nation') !== -1
"
key="nation"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.idPlace') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="id_place"
:title="$t('cs.companyStructure.nation')"
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'id_place') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'id_place') !== -1
"
key="id_place"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.idPlace') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="party"
:title="$t('cs.companyStructure.party')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'party') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'party') !== -1
"
key="party"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.party') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="household_registration_type"
:title="$t('cs.companyStructure.householdRegistrationType')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'household_registration_type') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'household_registration_type') !== -1
"
key="household_registration_type"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.hometown') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="hometown"
:title="$t('cs.companyStructure.householdRegistrationType') "
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'hometown') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'hometown') !== -1
"
key="hometown"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.hometown') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="marry"
:title="$t('cs.companyStructure.marry')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'marry') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'marry') !== -1
"
key="marry"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.marry') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="max_degree"
:title="$t('cs.companyStructure.maxDegree')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'max_degree') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'max_degree') !== -1
"
key="max_degree"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.maxDegree') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="emergency_person"
:title="$t('cs.companyStructure.emergencyPerson')"
sortable
min-width="110"
v-if="
checkedCols.findIndex((v) => v == 'emergency_person') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'emergency_person') !== -1
"
key="emergency_person"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.emergencyPerson') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="emergency_phone"
:title="$t('cs.companyStructure.emergencyPhone')"
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'emergency_phone') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'emergency_phone') !== -1
"
key="emergency_phone"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.emergencyPhone') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="bank_card_number"
:title="$t('cs.companyStructure.bankCardNumber')"
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'bank_card_number') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'bank_card_number') !== -1
"
key="bank_card_number"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.bankCardNumber') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="bank_card_name"
:title="$t('cs.companyStructure.bankCardName')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'bank_card_name') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'bank_card_name') !== -1
"
key="bank_card_name"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.bankCardName') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="opening_bank"
:title="$t('cs.companyStructure.openingBank')"
sortable
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'opening_bank') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'opening_bank') !== -1
"
key="opening_bank"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.openingBank') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="account_opening_location"
:title="$t('cs.companyStructure.accountOpeningLocation')"
sortable
min-width="120"
v-if="
checkedCols.findIndex((v) => v == 'account_opening_location') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'account_opening_location') !== -1
"
key="account_opening_location"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.accountOpeningLocation') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="school"
:title="$t('cs.companyStructure.school')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'school') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'school') !== -1
"
key="school"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.school') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="major"
:title="$t('cs.companyStructure.major')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'major') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'major') !== -1
"
key="major"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.major') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="education"
:title="$t('cs.companyStructure.education')"
min-width="80"
v-if="
checkedCols.findIndex((v) => v == 'education') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'education') !== -1
"
key="education"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.education') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="graduation_year"
:title="$t('cs.companyStructure.graduationYear')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'graduation_year') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'graduation_year') !== -1
"
key="graduation_year"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.graduationYear') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="name"
:title="$t('cs.companyStructure.childrenName')"
min-width="80"
v-if="
checkedCols.findIndex((v) => v == 'name') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'name') !== -1
"
key="name"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.childrenName') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="gender"
:title="$t('cs.companyStructure.sex')"
min-width="80"
v-if="
checkedCols.findIndex((v) => v == 'gender') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'gender') !== -1
"
key="gender"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.sex') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="birthday"
:title="$t('cs.companyStructure.birthDate')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'birthday') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'birthday') !== -1
"
key="birthday"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.birthDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="parental_leave_left"
:title="$t('cs.companyStructure.leftParentingLeave')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'parental_leave_left') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'parental_leave_left') !== -1
"
key="parental_leave_left"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.leftParentingLeave') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="birth_date"
:title="$t('cs.companyStructure.birthDate')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'birth_date') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'birth_date') !== -1
"
key="birth_date"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.birthDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="birth_place"
:title="$t('cs.companyStructure.birthPlace')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'birth_place') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'birth_place') !== -1
"
key="birth_place"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.birthPlace') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="nationality_region"
:title="$t('cs.companyStructure.nationalityRegion')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'nationality_region') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'nationality_region') !== -1
"
key="nationality_region"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.nationalityRegion') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="first_entry_date"
:title="$t('cs.companyStructure.firstEntryDate')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'first_entry_date') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'first_entry_date') !== -1
"
key="first_entry_date"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.firstEntryDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="estimated_departure_date"
:title="$t('cs.companyStructure.estimatedDepartureDate')"
min-width="100"
v-if="
checkedCols.findIndex((v) => v == 'estimated_departure_date') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'estimated_departure_date') !== -1
"
key="estimated_departure_date"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.estimatedDepartureDate') }}</span>
</span>
</template>
</vxe-column>
<vxe-column
field="last_login"
:title="$t('cs.companyStructure.lastLogin')"
min-width="140px"
sortable
:formatter="formatDate"
v-if="
checkedCols.findIndex((v) => v == 'last_login') !== -1 &&
tableType == 'structure' &&
attributes.findIndex((v) => v == 'last_login') !== -1
"
key="last_login"
>
<template #header>
<span class="vxe-handle">
<OpsMoveIcon class="move-icon" />
<span>{{ $t('cs.companyStructure.lastLogin') }}</span>
</span>
</template>
</vxe-column>
<vxe-column <vxe-column
field="control" field="control"
width="100px" width="100px"
@ -939,41 +305,6 @@ export default {
{ label: this.$t('cs.companyStructure.departmentName'), value: 'department_name' }, { label: this.$t('cs.companyStructure.departmentName'), value: 'department_name' },
{ label: this.$t('cs.companyStructure.positionName'), value: 'position_name' }, { label: this.$t('cs.companyStructure.positionName'), value: 'position_name' },
{ label: this.$t('cs.companyStructure.supervisor'), value: 'direct_supervisor_id' }, { label: this.$t('cs.companyStructure.supervisor'), value: 'direct_supervisor_id' },
{ label: this.$t('cs.companyStructure.annualLeave'), value: 'annual_leave' },
{ label: this.$t('cs.companyStructure.virtualAnnualLeave'), value: 'virtual_annual_leave' },
{ label: this.$t('cs.companyStructure.parentingLeave'), value: 'parenting_leave' },
{ label: this.$t('cs.companyStructure.entryDate'), value: 'entry_date' },
{ label: this.$t('cs.companyStructure.isInternship'), value: 'is_internship' },
{ label: this.$t('cs.companyStructure.leaveDate'), value: 'leave_date' },
{ label: this.$t('cs.companyStructure.idCard'), value: 'id_card' },
{ label: this.$t('cs.companyStructure.nation'), value: 'nation' },
{ label: this.$t('cs.companyStructure.idPlace'), value: 'id_place' },
{ label: this.$t('cs.companyStructure.party'), value: 'party' },
{ label: this.$t('cs.companyStructure.householdRegistrationType'), value: 'household_registration_type' },
{ label: this.$t('cs.companyStructure.hometown'), value: 'hometown' },
{ label: this.$t('cs.companyStructure.marry'), value: 'marry' },
{ label: this.$t('cs.companyStructure.maxDegree'), value: 'max_degree' },
{ label: this.$t('cs.companyStructure.emergencyPerson'), value: 'emergency_person' },
{ label: this.$t('cs.companyStructure.emergencyPhone'), value: 'emergency_phone' },
{ label: this.$t('cs.companyStructure.bankCardNumber'), value: 'bank_card_number' },
{ label: this.$t('cs.companyStructure.bankCardName'), value: 'bank_card_name' },
{ label: this.$t('cs.companyStructure.openingBank'), value: 'opening_bank' },
{ label: this.$t('cs.companyStructure.accountOpeningLocation'), value: 'account_opening_location' },
{ label: this.$t('cs.companyStructure.school'), value: 'school' },
{ label: this.$t('cs.companyStructure.major'), value: 'major' },
{ label: this.$t('cs.companyStructure.education'), value: 'education' },
{ label: this.$t('cs.companyStructure.graduationYear'), value: 'graduation_year' },
{ label: this.$t('cs.companyStructure.childrenName'), value: 'name' },
{ label: this.$t('cs.companyStructure.childrenGender'), value: 'gender' },
{ label: this.$t('cs.companyStructure.childrenBirthday'), value: 'birthday' },
{ label: this.$t('cs.companyStructure.leftParentingLeave'), value: 'parental_leave_left' },
{ label: this.$t('cs.companyStructure.birthDate'), value: 'birth_date' },
{ label: this.$t('cs.companyStructure.nationalityRegion'), value: 'nationality_region' },
{ label: this.$t('cs.companyStructure.birthPlace'), value: 'birth_place' },
{ label: this.$t('cs.companyStructure.firstEntryDate'), value: 'first_entry_date' },
{ label: this.$t('cs.companyStructure.estimatedDepartureDate'), value: 'estimated_departure_date' },
{ label: this.$t('cs.companyStructure.role'), value: 'roles' },
{ label: this.$t('cs.companyStructure.lastLogin'), value: 'last_login' },
] ]
const checkedCols = JSON.parse(localStorage.getItem('setting-table-CheckedCols')) || [ const checkedCols = JSON.parse(localStorage.getItem('setting-table-CheckedCols')) || [
'nickname', 'nickname',
@ -984,37 +315,6 @@ export default {
'department_name', 'department_name',
'position_name', 'position_name',
'direct_supervisor_id', 'direct_supervisor_id',
'annual_leave',
'virtual_annual_leave',
'parenting_leave',
'roles',
'last_login',
'current_company',
'is_internship',
'entry_date',
'leave_date',
'id_card',
'nation',
'id_place',
'party',
'household_registration_type',
'hometown',
'marry',
'max_degree',
'emergency_person',
'emergency_phone',
'bank_card_number',
'bank_card_name',
'opening_bank',
'account_opening_location',
'school',
'major',
'education',
'graduation_year',
'name',
'gender',
'birthday',
'parental_leave_left',
] ]
return { return {
filterRoleList: [], filterRoleList: [],

View File

@ -50,7 +50,7 @@ const cs_en = {
selectFile: 'Select File', selectFile: 'Select File',
clickDownloadImportTemplate: 'Click to download Employee Import Template', clickDownloadImportTemplate: 'Click to download Employee Import Template',
importSuccess: 'Imported total {allCount} items, imported successfully', importSuccess: 'Imported total {allCount} items, imported successfully',
importFailed: 'Import failed', importFailed: 'import failed',
count: 'items', count: 'items',
email: 'Email', email: 'Email',
emailPlaceholder: 'Please enter email', emailPlaceholder: 'Please enter email',