mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-03-25 14:53:52 +00:00
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
import { getThemeInfo } from "@/api/api.js";
|
|
|
|
/**
|
|
* 处理颜色
|
|
*/
|
|
export function hexToRgba(hex, alpha) {
|
|
let sColor = hex.toLowerCase();
|
|
const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
|
|
if (sColor && reg.test(sColor)) {
|
|
if (sColor.length === 4) {
|
|
let sColorNew = "#";
|
|
for (let i = 1; i < 4; i += 1) {
|
|
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
|
|
}
|
|
sColor = sColorNew;
|
|
}
|
|
//处理六位的颜色值
|
|
let sColorChange = [];
|
|
for (let i = 1; i < 7; i += 2) {
|
|
sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
|
|
}
|
|
return "rgba(" + sColorChange.join(",") + "," + alpha + ")";
|
|
}
|
|
return sColor;
|
|
}
|
|
|
|
/**
|
|
* 设置主题颜色
|
|
* @param {Object} data 主题数据
|
|
*/
|
|
export function setThemeColor(data) {
|
|
let selectedTheme;
|
|
// 处理自定义主题色数据
|
|
if (data.theme_color) {
|
|
let themeColor = data.theme_color;
|
|
let gradientColor = data.gradient_color;
|
|
let subColor = data.sub_color;
|
|
let lightColor = data.light_color;
|
|
selectedTheme = `
|
|
--view-theme: ${hexToRgba(themeColor, 1)};
|
|
--view-theme-16: ${themeColor};
|
|
--view-priceColor: ${themeColor};
|
|
--view-minorColor: ${subColor};
|
|
--view-minorColorT: ${lightColor};
|
|
--view-bntColor: ${subColor};
|
|
--view-op-ten: ${hexToRgba(themeColor, 0.1)};
|
|
--view-main-start: ${gradientColor};
|
|
--view-main-over: ${themeColor};
|
|
--view-op-point-four: ${hexToRgba(themeColor, 0.04)};
|
|
--view-op-point-eight: ${hexToRgba(themeColor, 0.8)};
|
|
--view-linear: linear-gradient(180deg, ${hexToRgba(
|
|
themeColor,
|
|
0.2,
|
|
)} 0%, rgba(255,255,255,0) 100%);
|
|
--view-gradient: ${gradientColor};
|
|
`;
|
|
uni.setStorageSync("viewColor", selectedTheme);
|
|
uni.$emit("ok", selectedTheme);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取并应用主题
|
|
* @param {Number|String} themeId 主题ID
|
|
*/
|
|
export function applyTheme(themeId) {
|
|
let data = {};
|
|
if (themeId) data.theme_id = themeId;
|
|
return getThemeInfo("theme", data).then((res) => {
|
|
console.log("11122334");
|
|
uni.setStorageSync("is_diy", 1);
|
|
uni.$emit("is_diy", 1);
|
|
setThemeColor(res.data);
|
|
return res.data;
|
|
});
|
|
}
|