1
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-11-28 14:34:09 +08:00
parent 7a91ccac80
commit 17f738aa5d
3 changed files with 44 additions and 3 deletions

View File

@ -26,8 +26,9 @@ Vue.use(VueClipboard)
import permission from './utils/permission'
Vue.use(permission)
import { formatSize } from "./utils"
import { formatSize, guidToColor } from "./utils"
Vue.prototype.$FormatSize = formatSize
Vue.prototype.$GuidToColor = guidToColor
import Viewer from 'v-viewer'
import './assets/css/viewer.css'

View File

@ -222,4 +222,41 @@ export async function readEntry(entry) {
}
return files;
}
// RGB转十六进制
function rgbToHex(r, g, b) {
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();
}
export function guidToColor(guid) {
// 移除GUID中的连字符和花括号如果有
const cleanGuid = guid.replace(/[{}()-]/g, '');
// 使用GUID的前6个字符作为颜色基础确保一致性
const colorBase = cleanGuid.substring(0, 6);
// 将每个字符转换为数字并映射到0-255范围
let r = 0, g = 0, b = 0;
for (let i = 0; i < 6; i++) {
const charCode = colorBase.charCodeAt(i);
if (i < 2) {
r = (r * 16 + (charCode % 16)) % 256;
} else if (i < 4) {
g = (g * 16 + (charCode % 16)) % 256;
} else {
b = (b * 16 + (charCode % 16)) % 256;
}
}
// 确保颜色有足够的饱和度(避免生成过于灰暗的颜色)
if (r + g + b < 100) {
r = Math.min(255, r + 100);
g = Math.min(255, g + 50);
} else if (r + g + b > 600) {
r = Math.max(0, r - 100);
b = Math.max(0, b - 50);
}
// 返回RGB对象
return rgbToHex(r, g, b);
}

View File

@ -86,11 +86,13 @@
:content="`${$t('trials:reading:message:fused')}${item.TableQuestions.Answers[i].SplitOrMergeLesionName}`"
placement="bottom">
<div
v-if="item.TableQuestions.Answers[i].SplitOrMergeType === '1' || item.TableQuestions.Answers[i].SplitOrMergeType === '3'">
v-if="item.TableQuestions.Answers[i].SplitOrMergeType === '1' || item.TableQuestions.Answers[i].SplitOrMergeType === '3'"
@click="acvd(item.TableQuestions.Answers[i])">
<span class="login-cycle" />
</div>
</el-tooltip>
<div v-if="item.TableQuestions.Answers[i].SplitOrMergeType === '4'">
<div v-if="item.TableQuestions.Answers[i].SplitOrMergeType === '4'"
@click="acvd(item.TableQuestions.Answers[i])">
<span class="login-cycle" />
</div>
<el-tooltip v-if="!!item.TableQuestions.Answers[i].lesionPart" class="item" effect="dark"
@ -335,6 +337,7 @@ export default {
DicomEvent.$off('refreshQuestions')
},
methods: {
acvd(item) { console.log(item) },
handleReadingChart(e) {
this.$emit('handleReadingChart', e)
},