| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- import router from "../router";
- import { wecomTicket } from "../api/indexAI";
- declare let wx: any;
- export const dateFormat = (fmt: string, x: Date | string) => {
- const date = typeof x === "string" ? new Date(x) : x;
- let ret;
- let opt: IAny = {
- "Y+": date.getFullYear().toString(), // 年
- "M+": (date.getMonth() + 1).toString(), // 月
- "d+": date.getDate().toString(), // 日
- "h+": date.getHours().toString(), // 时
- "m+": date.getMinutes().toString(), // 分
- "s+": date.getSeconds().toString() // 秒
- };
- for (let k in opt) {
- ret = new RegExp("(" + k + ")").exec(fmt);
- if (ret) {
- fmt = fmt.replace(
- ret[1],
- ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
- );
- }
- }
- return fmt;
- };
- export const RegAccount = /^[a-zA-Z0-9]{9,16}$/;
- export const Dateformat = (t: string | Date, format: string) => {
- let fmt = format;
- let ret;
- const date = typeof t === "string" ? new Date(t) : t;
- const opt: IAny = {
- "Y+": date.getFullYear().toString(), // 年
- "m+": (date.getMonth() + 1).toString(), // 月
- "d+": date.getDate().toString(), // 日
- "H+": date.getHours().toString(), // 时
- "M+": date.getMinutes().toString(), // 分
- "S+": date.getSeconds().toString() // 秒
- // 有其他格式化字符需求可以继续添加,必须转化成字符串
- };
- for (let k in opt) {
- ret = new RegExp("(" + k + ")").exec(fmt);
- if (ret) {
- fmt = fmt.replace(
- ret[1],
- ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
- );
- }
- }
- return fmt;
- };
- export const getWecomType = (agentFrom: string) => {
- // 用户来源 0随身邦 1好邦手 2服务商随身邦 3金牌店随身邦 4导购 5新零售客服
- switch (agentFrom) {
- case 'ssb'://经销商
- return 0;
- case 'hbs'://好邦手
- return 1;
- case 'stoneLikePaint'://服务商
- return 2;
- case 'goldShop'://金牌店
- return 3;
- case 'dg'://导购
- return 4;
- case 'xlskf'://新零售客服
- return 5;
- default:
- return 5; // 默认为5
- }
- }
- export const getWecomTypeName = (agentFrom: string) => {
- switch (agentFrom) {
- case 'ssb':
- return '经销商随身邦';
- case 'hbs':
- return '好邦手';
- case 'stoneLikePaint':
- return '服务商随身邦';
- case 'goldShop':
- return '金牌店随身邦';
- case 'dg':
- return '导购运营平台';
- case 'xlskf':
- return '新零售客服';
- default:
- return '新零售客服';
- }
- }
- export const getAgentFrom = (WecomType: unknown): string => {
- const typeNum = Number(WecomType);
- const typeMap = {
- 0: 'ssb', // 经销商
- 1: 'hbs', // 好邦手
- 2: 'stoneLikePaint',// 服务商
- 3: 'goldShop', // 金牌店
- 4: 'dg', // 导购
- 5: 'xlskf' // 新零售客服
- };
- return typeMap[typeNum as keyof typeof typeMap] || 'xlskf';
- };
- export const toLBHome = () => {
- const loginMode = window.localStorage.getItem("loginMode")
- if (loginMode === 'wxidLogin') {
- let baseUrl: string = "";
- process.env.VUE_APP_BASE_API == "/api/"
- ? (baseUrl = process.env.VUE_APP_Target)
- : (baseUrl = process.env.VUE_APP_BASE_API);
- let agent = window.localStorage.getItem('agentFrom');
- let agentFromAI = window.localStorage.getItem('agentFromAI');
- let WecomType = sessionStorage.getItem("userWecomType");
- // 导购来源和无来源的点击小房子为退出应用,其他为返回到首页
- if (WecomType && WecomType == '4') {
- // console.log("----导购来源---")
- wx.invoke('closeWindow', {}, (res) => {
- if (res.err_msg === 'closeWindow:ok') {
- console.log("关闭应用成功")
- } else {
- console.log("关闭应用失败")
- }
- });
- } else if (agentFromAI && agentFromAI === 'dg' || (!agent && !WecomType)) {
- // console.log("----导购or无---")
- wx.invoke('closeWindow', {}, (res) => {
- if (res.err_msg === 'closeWindow:ok') {
- console.log("关闭应用成功")
- } else {
- console.log("关闭应用失败")
- }
- });
- } else {
- if (!agent && WecomType) {
- agent = getAgentFrom(parseInt(WecomType)) || 'ssb';
- }
- window.location.href = baseUrl.replace("wxportal-api/", "") + '?agent=' + agent;
- }
- } else {
- router.replace('/');
- }
- }
- export const toXiaoChengxu = (appid) => {
- let url = window.location.href.split("#")[0];
- const formData = new FormData();
- formData.append('url', url);
- formData.append('agent', '1');
- wecomTicket(formData).then(response => {
- if (response.StatusCode == 200) {
- let qiyeData = response.Data;
- wx.agentConfig({
- debug: false,
- corpid: qiyeData.appid,
- agentid: qiyeData.agentID,
- timestamp: qiyeData.timestamp,
- nonceStr: qiyeData.noncestr,
- signature: qiyeData.signature,
- jsApiList: ["launchMiniprogram"],
- success: function (res) {
- wx.invoke(
- "launchMiniprogram",
- {
- appid: appid, // 需跳转的小程序appid
- path: "" // 所需跳转的小程序内页面路径及参数。非必填
- },
- function (res) {
- if (res.err_msg == "launchMiniprogram:ok") {
- // 正常
- console.log("正常");
- } else {
- // 错误处理
- }
- }
- );
- },
- fail: function (res) {
- if (res.errMsg.indexOf("function not exist") > -1) {
- alert("版本过低请升级");
- }
- }
- });
- }
- });
- }
- // 获取微信API授权信息
- export const getWxconfig = () => {
- if(window.localStorage.getItem('agentFromAI') !== 'xlskf'){
- return;
- }
- // const jsApiList = [ 'downloadFile', 'saveImageToPhotosAlbum', 'closeWindow', 'hideMenuItems'];
- let url = window.location.href.split("#")[0];
- const formData = new FormData();
- formData.append('url', url);
- formData.append('agent', '1');
- wecomTicket(formData).then(response => {
- if (response.StatusCode == 200) {
- let qiyeData = response.Data;
- wx.agentConfig({
- debug: false,
- corpid: qiyeData.appid,
- agentid: qiyeData.agentID,
- timestamp: qiyeData.timestamp,
- nonceStr: qiyeData.noncestr,
- signature: qiyeData.signature,
- jsApiList: ["hideMenuItems"],
- success: function (res) {
- wx.hideMenuItems({
- menuList: [
- "menuItem:share:wechat",
- "menuItem:openWithBrowser",
- "menuItem:share:email", // 通过邮件转发
- "menuItem:copyUrl",
- "menuItem:share:wechat_friend",
- "menuItem:share:timeline",
- "menuItem:share:appMessage",
- "menuItem:openWithSafari"
- ],
- success: () => {
- // console.log('菜单隐藏成功');
- },
- fail: (err) => {
- // console.log('菜单隐藏失败:', err);
- }
- });
- }
- });
- }
- });
- }
- // 获取微信API授权信息
- export const getWxconfigNew = () => {
- return new Promise((resolve, reject) => {
- let url = window.location.href.split("#")[0];
- const formData = new FormData();
- formData.append('url', url);
- formData.append('agent', '1');
- wecomTicket(formData).then(response => {
- if (response.StatusCode == 200) {
- let qiyeData = response.Data;
- wx.agentConfig({
- debug: false,
- corpid: qiyeData.appid,
- agentid: qiyeData.agentID,
- timestamp: qiyeData.timestamp,
- nonceStr: qiyeData.noncestr,
- signature: qiyeData.signature,
- jsApiList: ["chooseImage", "getLocalImgData", "previewImage"],
- success: function (res) { }
- });
- wx.ready(() => {
- console.log('企业微信SDK初始化成功');
- resolve(true);
- });
- wx.error((err) => {
- console.error('SDK初始化失败:', err);
- reject(err);
- });
- } else {
- reject(new Error('获取微信配置参数失败'));
- }
- }).catch(err => {
- console.error('请求wecomTicket接口失败:', err);
- reject(err);
- });
- });
- };
- /**
- * 企业微信H5 环境+缓存双重校验工具
- * 校验规则:1.必须是企微APP/客户端环境
- * 校验失败自动跳转 /error 页面,无返回值
- */
- export const checkWxWorkEnvAndUserCache = () => {
- try {
- const currentHost = window.location.hostname;
- const isLocalDev = currentHost === 'localhost' || currentHost.startsWith('192.168.101');
- if (isLocalDev) {
- return;
- }
- const userAgent = window.navigator.userAgent.toLowerCase();
- const isWxWorkEnv = userAgent.includes('wxwork');
- // console.log("userAgent", userAgent)
- // console.log("isWxWorkEnv", isWxWorkEnv)
- if (!isWxWorkEnv) {
- console.error('校验失败:当前环境非企业微信APP/客户端');
- sessionStorage.setItem("errorMsgTit", "请在企微客户端打开链接")
- router.replace(`/error`);
- return;
- }
- } catch (error) {
- console.error('环境校验异常:', error);
- sessionStorage.setItem("errorMsgTit", "环境异常")
- router.replace(`/error`)
- }
- }
- export const checkAndSaveUserWecomType = () => {
- // 已存在则直接返回,避免重复赋值
- if (sessionStorage.getItem('userWecomType')) return;
- const { WecomType } = router.currentRoute.query;
- const originWecomType = String(WecomType);
- const validWecomTypes = new Set(['0', '1', '2', '3', '4', '5']);
- const userWecomType = validWecomTypes.has(originWecomType) ? originWecomType : '5';
- sessionStorage.setItem('userWecomType', userWecomType);
- };
|