|
|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
|
<!-- 思考级别选择器:关闭 / 高 / 最高 -->
|
|
|
<div class="btn-think-wrapper" ref="wrapperRef">
|
|
|
- <a-tooltip title="思考级别">
|
|
|
- <div class="btn-think" @click="togglePopup">
|
|
|
+ <a-tooltip :title="props.disabled ? '思考级别(只读:仅管理员可修改)' : '思考级别'">
|
|
|
+ <div class="btn-think" :class="{ 'is-readonly': props.disabled }" @click="togglePopup">
|
|
|
<div class="btn-icon think-icon"></div>
|
|
|
<span class="btn-text">{{ selected.label }}</span>
|
|
|
<div class="btn-arrow"></div>
|
|
|
@@ -32,8 +32,14 @@
|
|
|
|
|
|
/**
|
|
|
* 思考级别选择器。选中项是本组件状态(仅供展示),切换时通过 change 事件通知父组件调接口。
|
|
|
+ *
|
|
|
+ * disabled 用于「非管理员只读」:控件仍然显示(当前级别本身是需要被看到的状态),
|
|
|
+ * 但不展开菜单、不派发 change,因此不会触发切换接口。
|
|
|
*/
|
|
|
- const props = withDefaults(defineProps<{ initialLevel?: string }>(), { initialLevel: 'off' });
|
|
|
+ const props = withDefaults(defineProps<{ initialLevel?: string; disabled?: boolean }>(), {
|
|
|
+ initialLevel: 'off',
|
|
|
+ disabled: false,
|
|
|
+ });
|
|
|
const emit = defineEmits<{
|
|
|
(e: 'change', key: string): void;
|
|
|
}>();
|
|
|
@@ -58,10 +64,14 @@
|
|
|
);
|
|
|
|
|
|
const togglePopup = () => {
|
|
|
+ // 只读:不展开菜单(展示当前级别即可,不允许改)
|
|
|
+ if (props.disabled) return;
|
|
|
showPopup.value = !showPopup.value;
|
|
|
};
|
|
|
|
|
|
const selectItem = (item: ThinkLevelOption) => {
|
|
|
+ // 只读:不派发 change,避免触发切换接口
|
|
|
+ if (props.disabled) return;
|
|
|
selected.value = item;
|
|
|
showPopup.value = false;
|
|
|
emit('change', item.key);
|
|
|
@@ -118,6 +128,17 @@
|
|
|
border-color: #3a8fd4;
|
|
|
background: rgba(10, 132, 255, 0.1);
|
|
|
}
|
|
|
+
|
|
|
+ /* 只读态:保留可读的当前级别,但不给出可点击的反馈 */
|
|
|
+ &.is-readonly {
|
|
|
+ cursor: not-allowed;
|
|
|
+ opacity: 0.6;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ border-color: transparent;
|
|
|
+ background: transparent;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.think-popup {
|
|
|
position: absolute;
|