feat(projects): 微调

This commit is contained in:
2026-06-17 19:27:17 +08:00
parent 1543bf76a9
commit 31344f1d58
18 changed files with 876 additions and 219 deletions

View File

@@ -31,6 +31,22 @@ declare namespace Api {
*/
type EnableStatus = '1' | '2';
/**
* 列表项「当前登录用户在该对象的角色」(产品 / 项目列表共用)。
*
* 后端只读计算字段,随登录身份变化:同一份列表不同账号看到的内容不同;无角色为 []。
* 提交 / 更新接口不需要回传它。
*/
interface CurrentUserRole {
/**
* 角色稳定标识(程序判断用,不随中文名变化)。
* 例product_manager / project_manager / developer / tester / watcher / creator / implicit_observer。
*/
roleKey: string;
/** 角色中文名(直接展示) */
roleName: string;
}
/** common record */
type CommonRecord<T = any> = {
/** record id */

View File

@@ -67,6 +67,8 @@ declare namespace Api {
createTime: string;
/** 更新时间 */
updateTime: string;
/** 当前登录用户在该产品的角色(后端只读计算字段,随登录身份变化;无角色为 [] */
currentUserRoles: Api.Common.CurrentUserRole[];
}
interface ProductSettingBaseInfo {

View File

@@ -851,6 +851,8 @@ declare namespace Api {
createTime: string;
/** 更新时间 */
updateTime: string;
/** 当前登录用户在该项目的角色(后端只读计算字段,随登录身份变化;无角色为 [] */
currentUserRoles: Api.Common.CurrentUserRole[];
}
interface ProjectContext {

View File

@@ -23,6 +23,7 @@ declare module 'vue' {
BusinessUserSelect: typeof import('./../components/custom/business-user-select.vue')['default']
ButtonIcon: typeof import('./../components/custom/button-icon.vue')['default']
CountTo: typeof import('./../components/custom/count-to.vue')['default']
CurrentUserRoleTags: typeof import('./../components/custom/current-user-role-tags.vue')['default']
CustomIconSelect: typeof import('./../components/custom/custom-icon-select.vue')['default']
DarkModeContainer: typeof import('./../components/common/dark-mode-container.vue')['default']
DictSelect: typeof import('./../components/custom/dict-select.vue')['default']
@@ -125,9 +126,13 @@ declare module 'vue' {
IconIcRoundChevronRight: typeof import('~icons/ic/round-chevron-right')['default']
IconIcRoundDelete: typeof import('~icons/ic/round-delete')['default']
IconIcRoundEdit: typeof import('~icons/ic/round-edit')['default']
IconIcRoundFolder: typeof import('~icons/ic/round-folder')['default']
IconIcRoundInventory2: typeof import('~icons/ic/round-inventory2')['default']
IconIcRoundPackage2: typeof import('~icons/ic/round-package2')['default']
IconIcRoundPlus: typeof import('~icons/ic/round-plus')['default']
IconIcRoundRefresh: typeof import('~icons/ic/round-refresh')['default']
IconIcRoundRemove: typeof import('~icons/ic/round-remove')['default']
IconIcRoundRocketLaunch: typeof import('~icons/ic/round-rocket-launch')['default']
IconIcRoundSearch: typeof import('~icons/ic/round-search')['default']
IconIcRoundUnfoldLess: typeof import('~icons/ic/round-unfold-less')['default']
IconIcRoundUnfoldMore: typeof import('~icons/ic/round-unfold-more')['default']
@@ -137,6 +142,7 @@ declare module 'vue' {
IconLocalLogo: typeof import('~icons/local/logo')['default']
'IconMaterialSymbolsLight:rotate90DegreesCcwOutlineRounded': typeof import('~icons/material-symbols-light/rotate90-degrees-ccw-outline-rounded')['default']
IconMaterialSymbolsLightCheckCircleRounded: typeof import('~icons/material-symbols-light/check-circle-rounded')['default']
IconMaterialSymbolsPackage2: typeof import('~icons/material-symbols/package2')['default']
'IconMdi:paperclip': typeof import('~icons/mdi/paperclip')['default']
'IconMdi:printer': typeof import('~icons/mdi/printer')['default']
IconMdiAccountTieOutline: typeof import('~icons/mdi/account-tie-outline')['default']