123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- import cacheManager from "./cacheManager.js"
- import {nextTick} from "vue";
- /**
- * 显示消息提示框
- * @param content 提示的标题
- */
- export function toast(content) {
- uni.showToast({
- icon: 'none',
- title: content
- })
- }
- /**
- * 显示模态弹窗
- * @param content 提示的标题
- */
- export function showConfirm(content) {
- return new Promise((resolve, reject) => {
- uni.showModal({
- title: '提示',
- content: content,
- cancelText: '取消',
- confirmText: '确定',
- success: function(res) {
- resolve(res)
- }
- })
- })
- }
- /**
- * 参数处理
- * @param params 参数
- */
- export function tansParams(params) {
- let result = ''
- // FIXME 拼接参数
- return result
- }
- /**
- * @summary 获取请求异常与正常返回
- * @param {Object} promise
- */
- export function catchError(promise) {
- return new Promise((resolve, reject) => {
- promise.then(data => {
- resolve([undefined, data.data])
- }).catch(err => {
- reject([err])
- })
- })
- }
- // 是否是会员
- const IdentityType = {
- VIP: 'VIP',
- NOT_VIP: 'Not-Vip',
- VISITOR: 'Visitor'
- };
- // export function getUserIdentity() {
- // const auth = cacheManager.get('auth');
- // if (!auth) return IdentityType.VISITOR;
- // const hasPurchased = auth.subjectId == 2 && auth.typeId == 1 ?
- // (auth.levelIdList || []).includes(auth.levelId.split(',')[0]) :
- // (auth.levelIdList || []).includes(auth.levelId);
- // console.log('hasPurchased',hasPurchased);
- // return hasPurchased ? IdentityType.VIP : IdentityType.NOT_VIP;
- // }
- export function getUserIdentity() {
- const auth = cacheManager.get('auth');
- if (auth.subjectId == 2 && auth.typeId == 1) {
- if (auth) {
- const arr = getDataFromStr(auth.levelId);
- if ((auth.levelIdList || []).some(item => item == arr[0])) {
- // 购买此levelId
- return 'VIP'
- }
- // 无购买此levelId
- return 'Not-Vip';
- } else {
- // 游客
- return 'Visitor';
- }
- } else {
- //旧数学 新数学 旧英语
- if (auth) {
- if ((auth.levelIdList || []).some(item => item == auth.levelId)) {
- // 购买此levelId
- return 'VIP'
- }
- // 无购买此levelId
- return 'Not-Vip';
- } else {
- // 游客
- return 'Visitor';
- }
- }
- }
- export function hasUserIdentity() {
- const auth = cacheManager.get('auth');
- if (auth) {
- if (auth.cardList.length) {
- // VIP
- return 'VIP'
- }
- // 非VIP
- return 'Not-Vip';
- } else {
- // 游客
- return 'Visitor';
- }
- }
- export function debounce(func, wait) {
- let timeout;
- return function(...args) {
- // 清除之前的定时器
- clearTimeout(timeout);
- // 设置新的定时器
- timeout = setTimeout(() => {
- func.apply(this, args);
- }, wait);
- };
- }
- export function findRootNode(tree, targetId, idKey = 'id') {
- const path = [];
- function traverse(node) {
- if (node[idKey] == targetId) return true;
- if (node.children) {
- for (const child of node.children) {
- if (traverse(child)) {
- path.unshift(node);
- return true;
- }
- }
- }
- return false;
- }
- for (const root of tree) {
- if (traverse(root)) {
- return path.length > 0 ? path[0] : root;
- }
- }
- return null;
- }
- export function findTreeNode(tree, targetId, childrenKey = 'children', idKey = 'id') {
- for (const node of tree) {
- if (node[idKey] == targetId) return node;
- if (node[childrenKey]?.length) {
- const found = findTreeNode(node[childrenKey], targetId, childrenKey, idKey);
- if (found) return found;
- }
- }
- return null;
- }
- export function getDataFromStr(strdata) {
- if (!strdata) {
- return []
- }
- return strdata.toString().split(',')
- }
- export function useActiveDomIntoView(classNameParent, classNameActive) {
- nextTick(() => {
- const container = document.querySelector(classNameParent);
- const highlightItem = document.querySelector(classNameActive);
- // 1. 检查元素是否已在可视区
- const containerRect = container.getBoundingClientRect();
- const activeRect = highlightItem.getBoundingClientRect();
- const isVisible = activeRect.left >= containerRect.left &&
- activeRect.right <= containerRect.right;
- if (isVisible) return;
- // 2. 优先使用 scrollIntoView
- const supportsSmoothScroll = 'scrollBehavior' in document.documentElement.style;
- if (supportsSmoothScroll) {
- highlightItem.scrollIntoView({
- behavior: 'smooth',
- inline: 'center',
- block: 'nearest'
- });
- } else {
- // 3. 降级方案:瞬时滚动 + 手动动画
- const targetPos = highlightItem.offsetLeft - container.offsetLeft;
- container.scrollTo({ left: targetPos });
- }
- });
- }
- export function isTargetInSameGroup(arr, currentElement, targetJieId) {
- // 1. 参数校验
- if (!Array.isArray(arr) || arr.length === 0) return false;
- if (!currentElement || !targetJieId) return false;
- // 2. 将数组拆分为4个一组的二维数组
- const chunkSize = 4;
- const groupedArray = [];
- for (let i = 0; i < arr.length; i += chunkSize) {
- groupedArray.push(arr.slice(i, i + chunkSize));
- }
- // 3. 查找包含当前元素的子数组
- const currentGroup = groupedArray.find(group =>
- group.some(item => item.jieId === currentElement.jieId)
- );
- // 4. 判断目标jieId是否在该子数组中
- if (!currentGroup) return false;
- return currentGroup.some(item => item.jieId === targetJieId);
- }
|