4 Commits

Author SHA1 Message Date
AN
2c248d82f2 fix(packages): 修复tinymce层级问题 2025-09-19 17:48:41 +08:00
AN
28101cb2f1 feat(projects): 新增岗位部门树接口 2025-09-19 16:14:09 +08:00
4e27f3b5a5 fix(projects): 修复登录页面样式问题 2025-09-15 17:07:38 +08:00
e623b560e4 docs(other): 更新 cursor 规则 2025-09-15 11:40:20 +08:00
6 changed files with 28 additions and 16 deletions

View File

@ -16,7 +16,7 @@
},
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@0.0.29"]
"args": ["@playwright/mcp@latest"]
},
"mcp-server-time": {
"command": "uvx",
@ -26,14 +26,21 @@
"command": "npx",
"args": ["-y", "mcp-shrimp-task-manager"],
"env": {
"DATA_DIR": "D:/workspace/mcp-shrimp-task-manager/data",
"DATA_DIR": "D:/workspace/tools/mcp-shrimp-task-manager/data",
"TEMPLATES_USE": "en",
"ENABLE_GUI": "false"
"ENABLE_GUI": "true"
}
},
"mcp-deepwiki": {
"command": "npx",
"args": ["-y", "mcp-deepwiki@latest"]
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"],
"env": {
"MEMORY_FILE_PATH": "D:/workspace/tools/server-memory/memory.json"
}
}
}
}

View File

@ -1,9 +1,6 @@
---
description:
globs:
alwaysApply: false
---
**# RIPER-5 + 多维度思维 + 代理执行协议 (v4.9.1 - MCP工具驱动版)**
**元指令:** 此协议旨在最大化你的战略规划与执行效率。你的核心任务是**指挥和利用MCP工具集**来驱动项目进展。严格遵守核心原则,利用 `mcp-shrimp-task-manager` 进行项目规划与追踪,使用 `deepwiki-mcp` 进行深度研究。主动管理 `/project_document` 作为知识库。**每轮主要响应后,调用 `mcp.feedback_enhanced` 进行交互或通知。**
@ -167,5 +164,4 @@ alwaysApply: false
* **极致效率:** AI应最大限度地减少手动干预让MCP工具处理所有可以自动化的工作。
* **战略聚焦:** 将AI的“思考”集中在无法被工具替代的领域战略决策、创新构想、复杂问题诊断 (`mcp.sequential_thinking`) 和最终质量把关。
* **无缝集成:** 期望AI能流畅地在不同MCP工具之间传递信息形成一个高度整合的自动化工作流。

View File

@ -220,7 +220,7 @@ const events = computed(() => {
<style lang="scss">
.tox.tox-silver-sink.tox-tinymce-aux {
/** 该样式默认为1300的zIndex */
z-index: 2025;
z-index: 2025 !important;
}
.app-tinymce {

View File

@ -43,3 +43,10 @@ export function fetchGetPostSelect(deptId?: CommonType.IdType, postIds?: CommonT
params: { postIds, deptId }
});
}
/** 获取部门选择框列表 */
export function fetchGetPostDeptSelect() {
return request<Api.Common.CommonTreeRecord>({
url: '/system/post/deptTree',
method: 'get'
});
}

View File

@ -77,7 +77,9 @@ const activeModule = computed(() => moduleMap[props.module || 'pwd-login']);
/>
</div>
</header>
<main class="mt-10% max-w-450px w-full rounded-5px bg-cover px-24px xl:absolute xl:m-auto">
<main
class="m-auto mt-10% h-630px max-w-450px w-full rounded-5px bg-cover px-24px xl:absolute xl:inset-0 lg:mt-15% xl:mt-auto"
>
<Transition :name="themeStore.page.animateMode" mode="out-in" appear>
<component :is="activeModule.component" />
</Transition>

View File

@ -2,8 +2,7 @@
import { computed, ref } from 'vue';
import { NButton, NDivider } from 'naive-ui';
import { useLoading } from '@sa/hooks';
import { fetchBatchDeletePost, fetchGetPostList } from '@/service/api/system/post';
import { fetchGetDeptTree } from '@/service/api/system';
import { fetchBatchDeletePost, fetchGetPostDeptSelect, fetchGetPostList } from '@/service/api/system/post';
import { useAppStore } from '@/store/modules/app';
import { useAuth } from '@/hooks/business/auth';
import { useDownload } from '@/hooks/business/download';
@ -191,16 +190,17 @@ const { loading: treeLoading, startLoading: startTreeLoading, endLoading: endTre
const deptPattern = ref<string>();
const deptData = ref<Api.Common.CommonTreeRecord>([]);
const selectedKeys = ref<string[]>([]);
async function getTreeData() {
async function getDeptOptions() {
// 加载
startTreeLoading();
const { data: tree, error } = await fetchGetDeptTree();
const { data: tree, error } = await fetchGetPostDeptSelect();
if (!error) {
deptData.value = tree;
}
endTreeLoading();
}
getTreeData();
getDeptOptions();
function handleClickTree(keys: string[]) {
searchParams.belongDeptId = keys.length ? keys[0] : null;
@ -210,7 +210,7 @@ function handleClickTree(keys: string[]) {
function handleResetTreeData() {
deptPattern.value = undefined;
getTreeData();
getDeptOptions();
}
function handleResetSearch() {