-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
109 changed files
with
4,534 additions
and
3,195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: 2a84f747a5386d8550a290ec8b066c8a | ||
config: abc00e0427c4ffcf4fdbfae48a1750f2 | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# 激励相容 | ||
|
||
管理者和员工的激励要通过合理设计相容,以达成整体目标的最大化。这不仅能够提高员工的工作动力,还能确保公司在复杂的商业环境中稳定增长。 | ||
|
||
管理者与员工的责任不同,管理者需要承担更大的压力和风险,必须面对公司的各种挑战,并为团队的成功或失败负责。而员工则更多关注自身的发展和成长,他们在公司中能否获得成就感和个人价值的提升,是激励他们努力工作的核心。 | ||
|
||
为了实现激励相容,管理者应当设法营造一种氛围,使得员工的激励与公司的目标和管理者的激励相一致。如果员工能够感受到自己在公司中如同“主人公”般的存在,他们就更有可能承担更多的责任和义务,从而推动公司走向成功。在这种环境中,员工的个人成长和公司的目标之间形成正向反馈,彼此促进。管理者可以通过赋予员工更多的自主权、让他们参与决策,或提供成长的机会,让员工感受到自己的努力能为自身和公司带来长远的回报。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# 信息透明 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# 权力平等:基于社会契约的视角 | ||
|
||
虽然管理者和员工的职位权力存在差异,但从社会契约论的角度来看,这种差异并不否定其本质上的平等,要求这种差异具有合法性、服务性和限制性。管理者的权力来源于员工的让渡,其合法性基于契约的双向性。 | ||
|
||
管理者应认识到权力的本质是服务于团队而非凌驾于其上,管理者与员工在人格和价值上的平等,决定了权力的行使必须围绕团队的共同利益展开。通过授权、透明与合作,管理者可以在团队中构建更健康、更高效的权力关系,从而实现团队目标与成员发展的双赢局面。 | ||
|
||
## 权力的定义与来源 | ||
|
||
权力是管理者与员工在团队中进行协调和决策的基础,其来源主要分为两类: | ||
|
||
- 员工的固有权利:每位员工都拥有参与工作的权利、劳动保障权利和职业发展权利,这些是权力平等的基础。 | ||
- 管理者的授托权力:管理者的权力来自于团队成员基于合作契约让渡的部分权力,用以促进团队的目标达成和资源优化配置。 | ||
|
||
## 权力平等的本质 | ||
|
||
权力平等并不意味着职位或功能的完全一致,而是指管理者与员工在人格和价值上的对等。具体体现在以下方面: | ||
|
||
- 权力的合法性:管理者的权力来自员工的让渡和信任,其行使需以团队的共同利益为核心。 | ||
- 权力的服务性:管理者的角色是服务于团队,通过提供支持、资源和指导来实现团队目标。 | ||
- 权力的限制性:员工让渡的权力是有限的,管理者需尊重团队成员未让渡的基本权利。 | ||
|
||
## 权力差异的必要性与风险 | ||
|
||
在团队管理中,适度的权力差异有助于高效运作,但管理者需警惕其中的潜在风险。 | ||
|
||
必要性: | ||
|
||
- 职责分工:明确的权力差异有助于管理者快速决策、协调资源,确保团队的高效运作。 | ||
- 领导作用:管理者需要通过权力差异来引领团队实现共同目标。 | ||
|
||
风险: | ||
|
||
- 权力滥用:如果管理者缺乏透明性或忽视团队利益,可能导致成员的不满和信任缺失。 | ||
- 团队失衡:过度强化权力差异可能破坏团队合作,影响整体绩效。 | ||
|
||
## 管理者的行动指引原则 | ||
|
||
为了实现权力平等的高效管理,管理者应注重以下几个关键原则和行动指引: | ||
|
||
**授权与合作**是管理实践的核心。管理者应邀请团队成员参与重大决策过程,从而增强他们的责任感和归属感。同时,管理者需提供必要的资源、培训和授权,帮助员工在其职责范围内发挥自主性,提升整体工作效率。为了确保团队内的权力分配符合平等原则,管理者应定期检视权力结构,调整决策和资源分配,确保其始终与团队的需求相契合。 | ||
|
||
**透明与信任**是建立高效管理的基础。管理者在做决策时,应该公开决策的依据和目标,增强决策的正当性,避免出现不必要的误解。此外,管理者的权力应与其责任相匹配,确保信任关系的稳定。管理者应通过定期会议和开放沟通渠道等方式,强化团队成员的参与感,让他们感受到自己在团队中的重要性,从而提高工作积极性和团队凝聚力。 | ||
|
||
**强化合作关系**也是实现平等管理的关键。管理者需要关注与团队成员之间的信任与尊重,建立稳固的心理契约,并通过促进扁平化的沟通减少层级阻碍,鼓励开放对话和信息共享,从而提高团队的协作效果。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,101 @@ | ||
var sd_labels_by_text = {}; | ||
// @ts-check | ||
|
||
// Extra JS capability for selected tabs to be synced | ||
// The selection is stored in local storage so that it persists across page loads. | ||
|
||
/** | ||
* @type {Record<string, HTMLElement[]>} | ||
*/ | ||
let sd_id_to_elements = {}; | ||
const storageKeyPrefix = "sphinx-design-tab-id-"; | ||
|
||
/** | ||
* Create a key for a tab element. | ||
* @param {HTMLElement} el - The tab element. | ||
* @returns {[string, string, string] | null} - The key. | ||
* | ||
*/ | ||
function create_key(el) { | ||
let syncId = el.getAttribute("data-sync-id"); | ||
let syncGroup = el.getAttribute("data-sync-group"); | ||
if (!syncId || !syncGroup) return null; | ||
return [syncGroup, syncId, syncGroup + "--" + syncId]; | ||
} | ||
|
||
/** | ||
* Initialize the tab selection. | ||
* | ||
*/ | ||
function ready() { | ||
const li = document.getElementsByClassName("sd-tab-label"); | ||
for (const label of li) { | ||
syncId = label.getAttribute("data-sync-id"); | ||
if (syncId) { | ||
label.onclick = onLabelClick; | ||
if (!sd_labels_by_text[syncId]) { | ||
sd_labels_by_text[syncId] = []; | ||
// Find all tabs with sync data | ||
|
||
/** @type {string[]} */ | ||
let groups = []; | ||
|
||
document.querySelectorAll(".sd-tab-label").forEach((label) => { | ||
if (label instanceof HTMLElement) { | ||
let data = create_key(label); | ||
if (data) { | ||
let [group, id, key] = data; | ||
|
||
// add click event listener | ||
// @ts-ignore | ||
label.onclick = onSDLabelClick; | ||
|
||
// store map of key to elements | ||
if (!sd_id_to_elements[key]) { | ||
sd_id_to_elements[key] = []; | ||
} | ||
sd_id_to_elements[key].push(label); | ||
|
||
if (groups.indexOf(group) === -1) { | ||
groups.push(group); | ||
// Check if a specific tab has been selected via URL parameter | ||
const tabParam = new URLSearchParams(window.location.search).get( | ||
group | ||
); | ||
if (tabParam) { | ||
console.log( | ||
"sphinx-design: Selecting tab id for group '" + | ||
group + | ||
"' from URL parameter: " + | ||
tabParam | ||
); | ||
window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); | ||
} | ||
} | ||
|
||
// Check is a specific tab has been selected previously | ||
let previousId = window.sessionStorage.getItem( | ||
storageKeyPrefix + group | ||
); | ||
if (previousId === id) { | ||
// console.log( | ||
// "sphinx-design: Selecting tab from session storage: " + id | ||
// ); | ||
// @ts-ignore | ||
label.previousElementSibling.checked = true; | ||
} | ||
} | ||
sd_labels_by_text[syncId].push(label); | ||
} | ||
} | ||
}); | ||
} | ||
|
||
function onLabelClick() { | ||
// Activate other inputs with the same sync id. | ||
syncId = this.getAttribute("data-sync-id"); | ||
for (label of sd_labels_by_text[syncId]) { | ||
/** | ||
* Activate other tabs with the same sync id. | ||
* | ||
* @this {HTMLElement} - The element that was clicked. | ||
*/ | ||
function onSDLabelClick() { | ||
let data = create_key(this); | ||
if (!data) return; | ||
let [group, id, key] = data; | ||
for (const label of sd_id_to_elements[key]) { | ||
if (label === this) continue; | ||
// @ts-ignore | ||
label.previousElementSibling.checked = true; | ||
} | ||
window.localStorage.setItem("sphinx-design-last-tab", syncId); | ||
window.sessionStorage.setItem(storageKeyPrefix + group, id); | ||
} | ||
|
||
document.addEventListener("DOMContentLoaded", ready, false); |
2 changes: 1 addition & 1 deletion
2
....1e8bd061cd6da7fc9cf755528e8ffc24.min.css → _sphinx_design_static/sphinx-design.min.css
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,101 @@ | ||
var sd_labels_by_text = {}; | ||
// @ts-check | ||
|
||
// Extra JS capability for selected tabs to be synced | ||
// The selection is stored in local storage so that it persists across page loads. | ||
|
||
/** | ||
* @type {Record<string, HTMLElement[]>} | ||
*/ | ||
let sd_id_to_elements = {}; | ||
const storageKeyPrefix = "sphinx-design-tab-id-"; | ||
|
||
/** | ||
* Create a key for a tab element. | ||
* @param {HTMLElement} el - The tab element. | ||
* @returns {[string, string, string] | null} - The key. | ||
* | ||
*/ | ||
function create_key(el) { | ||
let syncId = el.getAttribute("data-sync-id"); | ||
let syncGroup = el.getAttribute("data-sync-group"); | ||
if (!syncId || !syncGroup) return null; | ||
return [syncGroup, syncId, syncGroup + "--" + syncId]; | ||
} | ||
|
||
/** | ||
* Initialize the tab selection. | ||
* | ||
*/ | ||
function ready() { | ||
const li = document.getElementsByClassName("sd-tab-label"); | ||
for (const label of li) { | ||
syncId = label.getAttribute("data-sync-id"); | ||
if (syncId) { | ||
label.onclick = onLabelClick; | ||
if (!sd_labels_by_text[syncId]) { | ||
sd_labels_by_text[syncId] = []; | ||
// Find all tabs with sync data | ||
|
||
/** @type {string[]} */ | ||
let groups = []; | ||
|
||
document.querySelectorAll(".sd-tab-label").forEach((label) => { | ||
if (label instanceof HTMLElement) { | ||
let data = create_key(label); | ||
if (data) { | ||
let [group, id, key] = data; | ||
|
||
// add click event listener | ||
// @ts-ignore | ||
label.onclick = onSDLabelClick; | ||
|
||
// store map of key to elements | ||
if (!sd_id_to_elements[key]) { | ||
sd_id_to_elements[key] = []; | ||
} | ||
sd_id_to_elements[key].push(label); | ||
|
||
if (groups.indexOf(group) === -1) { | ||
groups.push(group); | ||
// Check if a specific tab has been selected via URL parameter | ||
const tabParam = new URLSearchParams(window.location.search).get( | ||
group | ||
); | ||
if (tabParam) { | ||
console.log( | ||
"sphinx-design: Selecting tab id for group '" + | ||
group + | ||
"' from URL parameter: " + | ||
tabParam | ||
); | ||
window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); | ||
} | ||
} | ||
|
||
// Check is a specific tab has been selected previously | ||
let previousId = window.sessionStorage.getItem( | ||
storageKeyPrefix + group | ||
); | ||
if (previousId === id) { | ||
// console.log( | ||
// "sphinx-design: Selecting tab from session storage: " + id | ||
// ); | ||
// @ts-ignore | ||
label.previousElementSibling.checked = true; | ||
} | ||
} | ||
sd_labels_by_text[syncId].push(label); | ||
} | ||
} | ||
}); | ||
} | ||
|
||
function onLabelClick() { | ||
// Activate other inputs with the same sync id. | ||
syncId = this.getAttribute("data-sync-id"); | ||
for (label of sd_labels_by_text[syncId]) { | ||
/** | ||
* Activate other tabs with the same sync id. | ||
* | ||
* @this {HTMLElement} - The element that was clicked. | ||
*/ | ||
function onSDLabelClick() { | ||
let data = create_key(this); | ||
if (!data) return; | ||
let [group, id, key] = data; | ||
for (const label of sd_id_to_elements[key]) { | ||
if (label === this) continue; | ||
// @ts-ignore | ||
label.previousElementSibling.checked = true; | ||
} | ||
window.localStorage.setItem("sphinx-design-last-tab", syncId); | ||
window.sessionStorage.setItem(storageKeyPrefix + group, id); | ||
} | ||
|
||
document.addEventListener("DOMContentLoaded", ready, false); |
Oops, something went wrong.