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() {
const keyMapList = [
{ value: 'default', label: '默认' },
{ value: 'vim', label: 'vim' },
{ value: 'emacs', label: 'emacs' },
{ value: 'sublime', label: 'sublime' },
]
return {
keyMapList,
coder: null,
fontSize: 14,
keyMap: 'default',
fullscreenExitVisible: false,
}
},
computed: {
keyMapList() {
return [
{ value: 'default', label: this.$t('default') },
{ value: 'vim', label: 'vim' },
{ value: 'emacs', label: 'emacs' },
{ value: 'sublime', label: 'sublime' },
]
},
},
mounted() {},
methods: {
initCodeMirror(codeContent) {

View File

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

View File

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

View File

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

View File

@ -104,12 +104,15 @@ export default {
max: 'Max',
min: 'Min',
visual: 'Visual',
default: 'default',
tip: 'Tip',
pagination: {
total: '{range0}-{range1} of {total} items'
},
topMenu: {
personalCenter: 'Personal Center',
logout: 'logout',
confirmLogout: 'Are you sure to log out?'
},
cmdbFilterComp: {
conditionFilter: 'Conditional filtering',
@ -139,7 +142,8 @@ export default {
multicolor: 'Multicolor',
custom: 'Custom',
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,
cs: cs_en,

View File

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

View File

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

View File

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

View File

@ -16,7 +16,7 @@
height: '23px',
fontSize: '14px',
}"
/></span
/></span
>
<span
class="cmdb-preference-left-card-content"
@ -31,7 +31,7 @@
height: '23px',
fontSize: '14px',
}"
/></span
/></span
>
</div>
<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 axios 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 { ACCESS_TOKEN } from '@/store/global/mutation-types'
import router from '@/router'
import store from '@/store'
// 创建 axios 实例
const service = axios.create({
baseURL: process.env.VUE_APP_API_BASE_URL, // api base_url
timeout: 6000, // 请求超时时间
withCredentials: true,
crossDomain: true
crossDomain: true,
})
const err = (error) => {
console.log(error)
const reg = /5\d{2}/g
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) {
let seconds = 5
notification.warning({
@ -64,6 +66,7 @@ service.interceptors.request.use(config => {
if (token) {
config.headers['Access-Token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
}
config.headers['Accept-Language'] = store?.state?.locale ?? 'zh'
return config
}, err)

View File

@ -25,18 +25,6 @@
<a-input v-model="batchForm.value" />
</a-form-model-item>
</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-item :label="$t('cs.companyStructure.resetPassword')" prop="password">
<a-input-password v-model="batchForm.value" />
@ -75,7 +63,7 @@ export default {
const validatePass = (rule, value, callback) => {
console.log(this.batchForm)
if (this.batchForm.value === '') {
callback(new Error(this.$t('cs.companyStructure.password_placeholder')))
callback(new Error(this.$t('cs.companyStructure.passwordPlaceholder')))
} else {
this.$refs.batchForm.validateField('repeatPassword')
callback()

View File

@ -20,19 +20,24 @@
</div>
<template v-if="currentStep === 1">
<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>
<p><a @click="download">{{ $t('cs.companyStructure.clickDownloadImportTemplate') }}</a></p>
</template>
<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"
>
导入总数据{{ allCount }}, 导入成功 <span :style="{ color: '#2362FB' }">{{ allCount - errorCount }}</span> ,
{{ $t('cs.companyStructure.importSuccess', {allCount: allCount}) }}<span :style="{ color: '#2362FB' }">{{ allCount - errorCount }}</span>
{{ $t('cs.companyStructure.count')}},
{{ $t('cs.companyStructure.importError') }}<span :style="{ color: '#D81E06' }">{{ errorCount }}</span
>{{ $t('cs.companyStructure.count')}}
{{ $t('cs.companyStructure.importSuccess', { allCount: allCount })
}}<span :style="{ color: '#2362FB' }"> {{ allCount - errorCount }} </span>{{ $t('cs.companyStructure.count') }},
{{ $t('cs.companyStructure.importFailed') }}<span :style="{ color: '#D81E06' }"> {{ errorCount }} </span
>{{ $t('cs.companyStructure.count') }}
</div>
<vxe-table
v-if="currentStep === 2 || has_error"
@ -121,39 +126,6 @@ export default {
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 = [
'email',
'username',
@ -187,7 +159,6 @@ export default {
]
return {
stepList,
dfc_importParamsList,
common_importParamsList,
visible: false,
currentStep: 1,

View File

@ -181,8 +181,6 @@
<a-divider type="vertical"/>
<span @click="openBatchModal('position_name')">{{ $t('cs.companyStructure.editPosition') }}</span>
<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>
<a-divider type="vertical"/>
<span @click="openBatchModal('block', null, 1)">{{ $t('cs.companyStructure.block') }}</span>

View File

@ -92,6 +92,10 @@
<span>{{ $t('cs.companyStructure.sex') }}</span>
</span>
</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
field="mobile"
@ -171,644 +175,6 @@
}}</span>
</template>
</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
field="control"
width="100px"
@ -939,41 +305,6 @@ export default {
{ label: this.$t('cs.companyStructure.departmentName'), value: 'department_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.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')) || [
'nickname',
@ -984,37 +315,6 @@ export default {
'department_name',
'position_name',
'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 {
filterRoleList: [],

View File

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