…
{{ t('tagline') }}
{{ t('taglineSub') }}
{{ t('orgChart') }}
{{ t('noData') }} {{ t('navImport') }}
{{ t('noDeptPeople', { n: unassignedIn(orgAssign).length }) }}
{{ t('navPeople') }} {{ data.employees.length }}
| {{ t('f_emp_code') }} | {{ t('f_name') }} | {{ t('dept') }} | {{ t('f_title') }} | {{ t('f_grade') }} | {{ t('f_gender') }} | {{ t('age') }} | {{ t('f_salary') }} |
|---|---|---|---|---|---|---|---|
| {{ e.emp_code }} | {{ e.name }} | {{ deptPath(e.dept_id) }} | {{ e.title }} | {{ e.grade }} | {{ genderLabel(e.gender) }} | {{ e.age ?? '' }} | {{ money(e.salary) }} |
{{ t('noMatchPeople') }}
{{ t('navImport') }}
{{ t('err.forbidden') }}
{{ t('dropHere') }}
{{ t('csvHint') }}
{{ t('fileName') }}
{{ csv.fileName }}
{{ t('fileSize') }}
{{ csv.size }}
{{ t('records') }}
{{ dataRows.length }}
{{ t('columns') }}
{{ csv.width }}
{{ t('mapColumns') }}
{{ t('deptMappingHint') }}
{{ t('cleanup') }}
|
|
{{ t('dupReviewTitle', { n: dupReview.length }) }}
{{ t('moreGroups', { n: dupReview.length - 20 }) }}
{{ cleanMsg }}
| # | {{ h }} |
|---|---|
| {{ i + 1 }} | {{ r[j] }} |
{{ t('previewNote', { n: dataRows.length }) }}
{{ importError }}
{{ importResult }}
{{ t('navSim') }}
{{ t('simHint') }}
{{ e.name }} {{ e.title }} {{ e.grade }}
{{ deptPath(e.dept_id) }}
{{ t('compare') }}
| {{ t('dept') }} | {{ t('headcount') }} | {{ t('laborCost') }} | {{ t('avgAge') }} | {{ t('femaleRatio') }} |
|---|---|---|---|---|
| {{ row.name }} | {{ row.b.count }} → {{ row.a.count }} |
{{ moneyShort(row.b.salary) }} → {{ moneyShort(row.a.salary) }} | {{ fmtNum(row.b.avgAge) }} → {{ fmtNum(row.a.avgAge) }} | {{ pct(row.b.female, row.b.gendered) }} → {{ pct(row.a.female, row.a.gendered) }} |
{{ t('gradeMix') }}
| {{ t('dept') }} | {{ g }} |
|---|---|
| {{ row.name }} | {{ row.b.grades[g] || 0 }}→{{ row.a.grades[g] || 0 }} |
{{ t('noChanges') }}
{{ t('compareNote') }}
{{ t('orgAfter') }}
{{ t('navSettings') }}
{{ t('members') }}
| {{ m.name }} | {{ m.email }} |
{{ t('rolesNote') }}