feat: 对接交易圈
This commit is contained in:
parent
a84dcb0fc7
commit
06e1822e4d
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "SYZBH5Server",
|
||||
"name": "h5Server",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "SYZBH5Server",
|
||||
"name": "h5Server",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@better-scroll/mouse-wheel": "^2.5.1",
|
||||
|
||||
@ -1,14 +1,11 @@
|
||||
{
|
||||
"name": "SYZBH5Server",
|
||||
"name": "h5Server",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"package": "up release-super dist -p syzbh5 SYZBH5Server -C -t ./template",
|
||||
"release": "npm run build && npm run package",
|
||||
"deploy": "up upload .upchina/SYZBH5Server.tar.gz -a DemoVideoDev -s SYZBH5Server"
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@better-scroll/mouse-wheel": "^2.5.1",
|
||||
|
||||
@ -46,6 +46,7 @@ if (terminalType === "App") {
|
||||
</script>
|
||||
<style lang="scss">
|
||||
#app {
|
||||
position: relative;
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
@ -46,7 +46,6 @@ import { ref, defineExpose, defineProps, onMounted } from "vue";
|
||||
// import Poster from "./Poster.vue";
|
||||
import { showToast } from "vant";
|
||||
import Clipboard from "clipboard";
|
||||
import { shareLinkSDK } from "@/utils/upNativeComm";
|
||||
import { terminalType } from "@/utils/index";
|
||||
import emitter from "@/utils/emitter";
|
||||
|
||||
@ -74,14 +73,8 @@ onMounted(async () => {
|
||||
|
||||
const showPopup = ref(false);
|
||||
|
||||
const shareFn = (type) => {
|
||||
shareLinkSDK({
|
||||
// ...this.shareItem,
|
||||
title: props.detail.title,
|
||||
message: (props.detail.detail || "").replace(/<[^>]*>/g, ""),
|
||||
type: type,
|
||||
linkurl: props.detail.resizeUrl,
|
||||
});
|
||||
const shareFn = () => {
|
||||
alert("分享");
|
||||
};
|
||||
|
||||
const posterRef = ref();
|
||||
|
||||
@ -58,8 +58,6 @@ import { useRouter } from "vue-router";
|
||||
import { defineProps } from "vue";
|
||||
import useGetStatusIcon from "@/hooks/useGetStatusIcon";
|
||||
import useGetLiveStatusObj from "@/hooks/useGetLiveStatusObj";
|
||||
import { webViewOpenSDK } from "@/utils/upNativeComm";
|
||||
import { terminalType } from "@/utils/index";
|
||||
const $liveStatusObj = useGetLiveStatusObj();
|
||||
|
||||
const router = useRouter();
|
||||
@ -72,19 +70,11 @@ const props = defineProps({
|
||||
const getStatusIcon = useGetStatusIcon();
|
||||
|
||||
const toDetail = () => {
|
||||
if (terminalType === "App") {
|
||||
webViewOpenSDK({
|
||||
url: `${location.origin}/syzbh5/${
|
||||
props.item.type === 1 ? "shotVideoPlay" : "videoPlay"
|
||||
}?id=${props.item.id}${terminalType === "App" ? "&sdk=1" : ""}`,
|
||||
});
|
||||
} else {
|
||||
router.push(
|
||||
`/${props.item.type === 1 ? "shotVideoPlay" : "videoPlay"}?id=${
|
||||
props.item.id
|
||||
}`
|
||||
);
|
||||
}
|
||||
router.push(
|
||||
`/${props.item.type === 1 ? "shotVideoPlay" : "videoPlay"}?id=${
|
||||
props.item.id
|
||||
}`
|
||||
);
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -4,7 +4,6 @@ import TCPlayer from "tcplayer.js";
|
||||
import "tcplayer.js/dist/tcplayer.min.css";
|
||||
import store from "@/store/index";
|
||||
import { isMobi } from "@/utils/index";
|
||||
import { extSetAutoPlay } from "@/utils/upNativeFn";
|
||||
|
||||
export default function useVideoPlay(
|
||||
$liveStatusObj,
|
||||
@ -189,12 +188,16 @@ export default function useVideoPlay(
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if ([$liveStatusObj.InLive, $liveStatusObj.PausePlay].includes(detail.liveStatus)) {
|
||||
} else if (
|
||||
[$liveStatusObj.InLive, $liveStatusObj.PausePlay].includes(
|
||||
detail.liveStatus
|
||||
)
|
||||
) {
|
||||
videoEl.innerHTML = `<video width="100%" height="100%" id="${id}" webkit-playsinline="true" playsinline="true" autoplay></video>`;
|
||||
// liveStatus 直播状态: 1直播中; 2未开始; 3已暂停; 4已结束
|
||||
let ret = await queryPlayInfo({ id: detail.id });
|
||||
if (ret.code === 0) {
|
||||
if(detail.liveStatus === $liveStatusObj.InLive) {
|
||||
if (detail.liveStatus === $liveStatusObj.InLive) {
|
||||
const baseConfig = {
|
||||
autoplay: true,
|
||||
poster: detail.imgUrl,
|
||||
@ -306,11 +309,6 @@ export default function useVideoPlay(
|
||||
});
|
||||
}
|
||||
}
|
||||
extSetAutoPlay({
|
||||
switch: 1,
|
||||
url: location.href,
|
||||
videoUrl: ret.data.playUrl.replace("webrtc","https").replace("?txSecret",".flv?txSecret"),
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -48,8 +48,8 @@ const init = () => {
|
||||
if (["App", "PcClient"].includes(terminalType)) {
|
||||
let url =
|
||||
terminalType === "App"
|
||||
? "/syzbh5/static/js/jssdk-app-1.0.1.js"
|
||||
: "/syzbh5/static/js/webNativeCommunicatePC.js";
|
||||
? "/h5/static/js/jssdk-app-1.0.1.js"
|
||||
: "/h5/static/js/webNativeCommunicatePC.js";
|
||||
loadScript(url, init);
|
||||
} else {
|
||||
init();
|
||||
|
||||
@ -1,10 +1,5 @@
|
||||
import { createRouter, createWebHistory } from "vue-router";
|
||||
import store from "@/store";
|
||||
import Cookies from "js-cookie";
|
||||
import { getUserInfo } from "@/api/index";
|
||||
import { terminalType, isPcOrH5 } from "@/utils/index";
|
||||
import { userLogin } from "@/utils/login";
|
||||
import { setTitleSDK } from "@/utils/upNativeComm";
|
||||
|
||||
const routes = [
|
||||
{
|
||||
@ -136,6 +131,10 @@ const routes = [
|
||||
name: "login",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "about" */ "../views/Login/index.vue"),
|
||||
meta: {
|
||||
title: "登录",
|
||||
noLogin: true, // 不需要登录
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/shotVideoPlay",
|
||||
@ -166,30 +165,18 @@ const routes = [
|
||||
name: "Circle",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "about" */ "../views/Circle/index.vue"),
|
||||
meta: {
|
||||
title: "圈子",
|
||||
noLogin: true, // 不需要登录
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/circle/interact",
|
||||
name: "CircleInteract",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "about" */ "../views/Circle/interact.vue"),
|
||||
meta: {
|
||||
title: "圈子",
|
||||
noLogin: true, // 不需要登录
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/circle/set",
|
||||
name: "CircleSet",
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "about" */ "../views/Circle/set.vue"),
|
||||
meta: {
|
||||
title: "圈子",
|
||||
noLogin: true, // 不需要登录
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/:pathMatch(.*)*",
|
||||
@ -203,54 +190,18 @@ const router = createRouter({
|
||||
});
|
||||
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
if (terminalType === "App") {
|
||||
setTitleSDK({
|
||||
title: to.meta.title ? to.meta.title : "",
|
||||
});
|
||||
} else {
|
||||
document.title = to.meta.title ? to.meta.title : "私域直播";
|
||||
}
|
||||
if (to.meta.noLogin || (to.path === "/page" && to.query.preview)) {
|
||||
return next();
|
||||
}
|
||||
debugger;
|
||||
console.log("store.state.token", store.state.token);
|
||||
if (!store.state.token) {
|
||||
const token = Cookies.get("__TOKEN__");
|
||||
const reToken = Cookies.get("__R_TOKEN__");
|
||||
if (!token || ["App", "PcClient"].includes(terminalType)) {
|
||||
let ret = await userLogin();
|
||||
console.log("userLogin", ret, terminalType);
|
||||
if (terminalType === "App" || (ret && terminalType === "PcClient")) {
|
||||
next();
|
||||
} else {
|
||||
next(false);
|
||||
}
|
||||
// userLogin().then((ret) => {
|
||||
// console.log("userLogin-->ret", ret);
|
||||
// if (ret) next();
|
||||
// });
|
||||
} else {
|
||||
// 微信授权登录获取用户信息
|
||||
getUserInfo({
|
||||
cookie: token.split("_")[0],
|
||||
reCookie: reToken,
|
||||
clientType: isPcOrH5(),
|
||||
}).then((ret) => {
|
||||
console.log("getUserInfo", ret);
|
||||
if (ret && ret.code === 0) {
|
||||
store.commit("setToken", ret.data.upToken);
|
||||
store.commit("setUserInfo", {
|
||||
account: ret.data.userId,
|
||||
userName: ret.data.userName,
|
||||
imgUrl: ret.data.imgUrl,
|
||||
});
|
||||
next();
|
||||
} else if (ret && ret.code === 2010) {
|
||||
store.commit("setForbidLogin");
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
if (!store.state.token && !to.meta.noLogin) {
|
||||
next({
|
||||
path: "/login",
|
||||
query: {
|
||||
redirect: to.fullPath,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
|
||||
@ -6,16 +6,26 @@ import { terminalType } from "@/utils/index";
|
||||
console.log("process.env.NODE_ENV", process.env.NODE_ENV);
|
||||
export default createStore({
|
||||
state: {
|
||||
token:
|
||||
process.env.NODE_ENV !== "development"
|
||||
? terminalType === "Browser" && localStorage.getItem("token")
|
||||
: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJiYWNrZW5kVXNlciI6IntcImNsaWVudFR5cGVcIjo0LFwiY29va2llXCI6XCIwZDdkMjM5MzU3YWI1ZDdmYjcxNTcxMDM4MjNkNjQwNFwiLFwiaW1nVXJsXCI6XCJodHRwczovL3RoaXJkd3gucWxvZ28uY24vbW1vcGVuL3ZpXzMyL3Q1TzZidFZsaWJDZWhveHRaV1hjNEFZZWZwOTJweEdXb3JDTnNrQm82aExzajNNSmNsa1BweW9JMGQ1T1c1UURzcWZhblM1SWRpY2ZQZkV2WXZRNlM3dVEvMTMyXCIsXCJyZUNvb2tpZVwiOlwiNDUwRTRGQTZBMkMyNzYzMTNGOUEzRDk1QzEzQUU0M0JcIixcInVzZXJJZFwiOlwiY3NodDAwM1wiLFwidXNlck5hbWVcIjpcImNzaHQwMDNcIn0iLCJleHAiOjE3MzkxMDU1NzZ9.gWJx20imXC4_B3qloXDlyH7Zle9VvfVQNhFp5lTM0Jo",
|
||||
// token:
|
||||
// process.env.NODE_ENV !== "development"
|
||||
// ? terminalType === "Browser" && localStorage.getItem("token")
|
||||
// : "",
|
||||
token: terminalType === "Browser" && localStorage.getItem("token"),
|
||||
// userInfo:
|
||||
// process.env.NODE_ENV !== "development"
|
||||
// ? terminalType === "Browser" && localStorage.getItem("userInfo")
|
||||
// ? JSON.parse(localStorage.getItem("userInfo"))
|
||||
// : {}
|
||||
// : {
|
||||
// account: "csht003",
|
||||
// userName: "csht003",
|
||||
// imgUrl:
|
||||
// "https://thirdwx.qlogo.cn/mmopen/vi_32/t5O6btVlibCehoxtZWXc4AYefp92pxGWorCNskBo6hLsj3MJclkPpyoI0d5OW5QDsqfanS5IdicfPfEvYvQ6S7uQ/132",
|
||||
// },
|
||||
userInfo:
|
||||
process.env.NODE_ENV !== "development"
|
||||
? terminalType === "Browser" && localStorage.getItem("userInfo")
|
||||
? JSON.parse(localStorage.getItem("userInfo"))
|
||||
: {}
|
||||
:{"account":"csht003","userName":"csht003","imgUrl":"https://thirdwx.qlogo.cn/mmopen/vi_32/t5O6btVlibCehoxtZWXc4AYefp92pxGWorCNskBo6hLsj3MJclkPpyoI0d5OW5QDsqfanS5IdicfPfEvYvQ6S7uQ/132"},
|
||||
terminalType === "Browser" && localStorage.getItem("userInfo")
|
||||
? JSON.parse(localStorage.getItem("userInfo"))
|
||||
: {},
|
||||
authorityList:
|
||||
process.env.NODE_ENV !== "development"
|
||||
? terminalType === "Browser" && localStorage.getItem("authorityList")
|
||||
|
||||
@ -1,77 +1,7 @@
|
||||
import store from "../store";
|
||||
import { userLoginSDK, getUserInfoSDK, closeWebViewSDK } from "./upNativeComm";
|
||||
import { PCGetUserInfoSDK, PCGetLoginframeSDK } from "./upPcNativeComm";
|
||||
import { getUserInfo } from "@/api/index";
|
||||
import { isPcOrH5, terminalType, clientType } from "@/utils/index";
|
||||
|
||||
export async function appLogin(isWebViewVisible) {
|
||||
try {
|
||||
console.log("getUserInfoSDK");
|
||||
let ret = await getUserInfoSDK();
|
||||
console.log("getUserInfoSDK", ret);
|
||||
if (!ret || !ret.uid || ret.isTourist === "1") {
|
||||
if (isWebViewVisible) {
|
||||
// 监听 sdk的"WebView"事件,当opt.action == "visible"时调用
|
||||
closeWebViewSDK();
|
||||
} else {
|
||||
userLoginSDK();
|
||||
}
|
||||
// 在app里
|
||||
return true;
|
||||
} else {
|
||||
// 只有app登录成功才会有返回值
|
||||
let userRet = await getUserInfo({
|
||||
appSign: ret.sign,
|
||||
appToken: encodeURIComponent(ret.token),
|
||||
clientType: isPcOrH5(),
|
||||
});
|
||||
console.log("userRet", userRet);
|
||||
if (userRet && userRet.code === 0) {
|
||||
store.commit("setToken", userRet.data.upToken);
|
||||
store.commit("setUserInfo", {
|
||||
account: userRet.data.userId,
|
||||
userName: userRet.data.userName,
|
||||
imgUrl: userRet.data.imgUrl,
|
||||
});
|
||||
return true;
|
||||
} else if (userRet && userRet.code === 2010) {
|
||||
store.commit("setForbidLogin");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("error", error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function pcClientLogin() {
|
||||
let stRspObj = await PCGetUserInfoSDK();
|
||||
console.log("stRspObj", stRspObj, typeof stRspObj);
|
||||
if (stRspObj && stRspObj.hqrights) {
|
||||
let ret = await getUserInfo({
|
||||
hqright: stRspObj.hqrights,
|
||||
clientType: 1,
|
||||
});
|
||||
console.log("ret", ret);
|
||||
if (ret && ret.code === 0 && ret.data.upToken) {
|
||||
store.commit("setToken", ret.data.upToken);
|
||||
store.commit("setUserInfo", {
|
||||
account: ret.data.userId,
|
||||
userName: ret.data.userName,
|
||||
imgUrl: ret.data.imgUrl,
|
||||
});
|
||||
console.log("store.state", store.state);
|
||||
return true;
|
||||
} else if (ret && ret.code === 2010) {
|
||||
store.commit("setForbidLogin");
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
console.log("PCGetLoginframeSDK");
|
||||
await PCGetLoginframeSDK();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// import { getUserInfo } from "@/api/index";
|
||||
import { terminalType } from "@/utils/index";
|
||||
import router from "@/router/index";
|
||||
|
||||
export async function userLogin() {
|
||||
localStorage.removeItem("token");
|
||||
@ -82,29 +12,21 @@ export async function userLogin() {
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
const isWeixin = ua.indexOf("micromessenger") !== -1;
|
||||
console.log(isWeixin, terminalType);
|
||||
debugger;
|
||||
console.log("router", router);
|
||||
if (isWeixin) {
|
||||
if(clientType === 3) {
|
||||
// pc微信
|
||||
location.replace(
|
||||
`${window.config.wxAuthUrl}${encodeURIComponent(location.href)}`
|
||||
);
|
||||
} else {
|
||||
// h5微信
|
||||
location.replace(
|
||||
`${window.config.webAuthUrl}?ch=&unique_id=${Math.random()
|
||||
.toString(36)
|
||||
.substring(2, 8)}&callback=${encodeURIComponent(location.href)}`
|
||||
);
|
||||
}
|
||||
} else if (terminalType === "App") {
|
||||
return await appLogin();
|
||||
} else if (terminalType === "PcClient") {
|
||||
return await pcClientLogin();
|
||||
router.push({
|
||||
path: "/login",
|
||||
query: {
|
||||
redirect: router.currentRoute.value.fullPath,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
location.replace(
|
||||
`${window.config.webAuthUrl}?ch=&unique_id=${Math.random()
|
||||
.toString(36)
|
||||
.substring(2, 8)}&callback=${encodeURIComponent(location.href)}`
|
||||
);
|
||||
router.push({
|
||||
path: "/login",
|
||||
query: {
|
||||
redirect: router.currentRoute.value.fullPath,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,191 +0,0 @@
|
||||
/**
|
||||
* 判断是否属于app环境内,true是WebView,false是Browser
|
||||
* @returns {boolean}
|
||||
*/
|
||||
import emitter from "@/utils/emitter";
|
||||
import { terminalType } from "@/utils/index";
|
||||
|
||||
function createPromise(fn, option) {
|
||||
try {
|
||||
return new Promise((resolve, reject) => {
|
||||
fn(resolve, reject, option);
|
||||
});
|
||||
} catch (error) {
|
||||
console.log("error", error);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
function getUserInfoFn(resolve, reject, needLogin = false) {
|
||||
try {
|
||||
console.log("getUserInfoFn!!!", terminalType);
|
||||
var param = {
|
||||
needLogin,
|
||||
callback: (code, opt, optObj) => {
|
||||
console.log("getUserInfoFn-->", optObj);
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("UPUser.getUserInfo", param);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("getUserInfo error", error);
|
||||
}
|
||||
}
|
||||
|
||||
// 用户登录
|
||||
function userLoginFn(resolve, reject) {
|
||||
console.log("userLoginFn!!!", terminalType);
|
||||
var param = {
|
||||
callback: (code, opt, optObj) => {
|
||||
// 在ios app,这个回调函数不会被触发
|
||||
console.log("userLoginFn--> optObj", optObj);
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("Navigation.userLogin", param);
|
||||
console.log("Navigation.userLogin");
|
||||
}
|
||||
}
|
||||
|
||||
// 返回
|
||||
function goBackFn(resolve, reject) {
|
||||
console.log("goBackFn!!!", terminalType);
|
||||
var param = {
|
||||
callback: (code, opt, optObj) => {
|
||||
console.log("goBackFn", optObj);
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("goBack", param);
|
||||
}
|
||||
}
|
||||
|
||||
function closeWebViewFn(resolve, reject) {
|
||||
console.log("closeWebViewFn!!!", terminalType);
|
||||
var param = {
|
||||
callback: (code, opt, optObj) => {
|
||||
console.log("closeWebViewFn", optObj);
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("WebView.close", param);
|
||||
}
|
||||
}
|
||||
|
||||
// 分享
|
||||
export function shareLinkFn(resolve, reject, option) {
|
||||
console.log("option", option);
|
||||
var param = {
|
||||
...option,
|
||||
callback: (code, opt, optObj) => {
|
||||
if (code === 0) {
|
||||
emitter.emit("onShareInform");
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("Share.link", param);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置标题
|
||||
export function setTitleFn(resolve, reject, option) {
|
||||
console.log("option", option);
|
||||
var param = {
|
||||
...option,
|
||||
callback: (code, opt, optObj) => {
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("WebView.setTitle", param);
|
||||
}
|
||||
}
|
||||
|
||||
// 新开一个webview
|
||||
export function webViewOpenFn(resolve, reject, option) {
|
||||
console.log("option", option);
|
||||
var param = {
|
||||
...option,
|
||||
callback: (code, opt, optObj) => {
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("WebView.open", param);
|
||||
}
|
||||
}
|
||||
|
||||
// 播放页退出视频小窗播放
|
||||
/**
|
||||
*
|
||||
* @param {*} resolve
|
||||
* @param {*} reject
|
||||
* @param {*} option switch: 0-关闭 1-开启 url: h5当前视频播放页面地址 videoUr:视频url endTime:直播时可以传结束时间(单位章秒)
|
||||
*/
|
||||
export function extSetAutoPlayFn(resolve, reject, option) {
|
||||
console.log("setAutoPlay option", option);
|
||||
var param = {
|
||||
...option,
|
||||
callback: (code, opt, optObj) => {
|
||||
if (code === 0) {
|
||||
resolve(optObj);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
};
|
||||
if (terminalType === "App") {
|
||||
// eslint-disable-next-line no-undef
|
||||
upNativeComm.exec("Ext.setAutoPlay", param);
|
||||
}
|
||||
}
|
||||
|
||||
export const getUserInfoSDK = (needLogin) =>
|
||||
createPromise(getUserInfoFn, needLogin);
|
||||
export const userLoginSDK = () => createPromise(userLoginFn);
|
||||
export const goBackFnSDK = () => createPromise(goBackFn);
|
||||
export const closeWebViewSDK = () => createPromise(closeWebViewFn);
|
||||
export const shareLinkSDK = (option) => createPromise(shareLinkFn, option);
|
||||
export const setTitleSDK = (option) => createPromise(setTitleFn, option);
|
||||
export const webViewOpenSDK = (option) => createPromise(webViewOpenFn, option);
|
||||
export const extSetAutoPlaySDK = (option) => createPromise(extSetAutoPlayFn, option);
|
||||
@ -1,18 +0,0 @@
|
||||
import { clientType } from "./index"
|
||||
import { closeWebViewSDK, extSetAutoPlaySDK } from "@/utils/upNativeComm";
|
||||
import { closeThisPage } from "@/utils/upPcNativeComm";
|
||||
|
||||
export const closeWebView = () => {
|
||||
if(clientType === 1) {
|
||||
// 股牛牛PC客户端
|
||||
closeThisPage()
|
||||
} else if( clientType === 2) {
|
||||
closeWebViewSDK()
|
||||
}
|
||||
}
|
||||
|
||||
export const extSetAutoPlay = (option) => {
|
||||
if( clientType === 2) {
|
||||
extSetAutoPlaySDK(option)
|
||||
}
|
||||
}
|
||||
@ -1,102 +0,0 @@
|
||||
import { terminalType } from "@/utils/index";
|
||||
|
||||
function createPromise(fn, option) {
|
||||
try {
|
||||
return new Promise((resolve, reject) => {
|
||||
fn(resolve, reject, option);
|
||||
});
|
||||
} catch (error) {
|
||||
console.log("error", error);
|
||||
}
|
||||
}
|
||||
|
||||
function getUserBserInfoFn(resolve, reject) {
|
||||
console.log("userbase.info!!! 获取用户base信息");
|
||||
// eslint-disable-next-line no-undef
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec("userbase.info", {
|
||||
callback: (code, optObj) => {
|
||||
console.log("userbase-->", code, optObj);
|
||||
if (code === 0) {
|
||||
resolve(JSON.parse(optObj));
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
function getUserInfoFn(resolve, reject) {
|
||||
console.log("user.info!!! 获取用户信息包含 name uid+ hqrights");
|
||||
// eslint-disable-next-line no-undef
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec("user.info", {
|
||||
callback: (code, optObj) => {
|
||||
console.log("userbase-->", code, optObj);
|
||||
if (code === 0) {
|
||||
resolve(JSON.parse(optObj));
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
console.log(1111111);
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
function getLoginframeFn(resolve, reject) {
|
||||
console.log("open.loginframe!!! 唤起登录弹窗");
|
||||
// eslint-disable-next-line no-undef
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec("open.loginframe", {});
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
function openWebFn(resolve, reject, option) {
|
||||
console.log("open.loginframe!!! 打开WEB页面");
|
||||
// eslint-disable-next-line no-undef
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec("open.web", {
|
||||
url: option.url,
|
||||
title: option.title,
|
||||
popuptype: 0,
|
||||
});
|
||||
resolve();
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
function closeThisWindowFn(resolve, reject) {
|
||||
console.log("close.thispage!!! 关闭当前窗口");
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec('close.thiswindow')
|
||||
resolve();
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
function closeThisPageFn(resolve, reject) {
|
||||
console.log("close.thispage!!! 关闭当前标签页面");
|
||||
if (terminalType === "PcClient") {
|
||||
window.upPCNativeComm.exec('close.thispage')
|
||||
resolve();
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
export const PCGetUserBserInfoSDK = () => createPromise(getUserBserInfoFn);
|
||||
export const PCGetLoginframeSDK = () => createPromise(getLoginframeFn);
|
||||
export const PCGetUserInfoSDK = () => createPromise(getUserInfoFn);
|
||||
export const PCOpenWebSDK = (option) => createPromise(openWebFn, option);
|
||||
export const closeThisWindow = () => createPromise(closeThisWindowFn);
|
||||
export const closeThisPage = () => createPromise(closeThisPageFn);
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="date-select">
|
||||
<div class="date-select" @click="showCalendar = true">
|
||||
<p>日期:2024-19-22</p>
|
||||
<van-icon name="arrow" @click="showCalendar = true" />
|
||||
<van-icon name="arrow" />
|
||||
</div>
|
||||
<div :class="[`interact-scroll`, `interact-scroll${props.type}`]">
|
||||
<div class="p20">
|
||||
@ -23,7 +23,7 @@
|
||||
]"
|
||||
:key="item.id"
|
||||
>
|
||||
<div>
|
||||
<div v-if="item.status === 2">
|
||||
<div class="chat-time" v-if="item.chatTime">
|
||||
{{ item.chatTime }}
|
||||
</div>
|
||||
@ -58,7 +58,7 @@
|
||||
item.userType === 2
|
||||
? item.userId === store.state.userInfo.account
|
||||
? "我"
|
||||
: detail.showNickname === 2
|
||||
: detail.showNickName === 2
|
||||
? maskUserName(item.userName)
|
||||
: item.userName
|
||||
: item.userName
|
||||
@ -77,7 +77,7 @@
|
||||
item.replyMessage?.userId ===
|
||||
store.state.userInfo.account
|
||||
? "我"
|
||||
: detail.showNickname === 2
|
||||
: detail.showNickName === 2
|
||||
? maskUserName(item.replyMessage?.userName)
|
||||
: item.replyMessage?.userName
|
||||
}}:</label
|
||||
@ -98,7 +98,7 @@
|
||||
item.replyMessage?.userId ===
|
||||
store.state.userInfo.account
|
||||
? "我"
|
||||
: detail.showNickname === 2
|
||||
: detail.showNickName === 2
|
||||
? maskUserName(item.replyMessage?.userName)
|
||||
: item.replyMessage?.userName
|
||||
}}:
|
||||
@ -142,7 +142,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<van-calendar v-model:show="showCalendar" />
|
||||
<img class="refresh" @click="refreshMsg" src="@/assets/images/refresh.png" />
|
||||
<img
|
||||
:class="['refresh', !msgList.length && loading ? 'loading' : '']"
|
||||
@click="refreshMsg"
|
||||
src="@/assets/images/refresh.png"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -155,6 +159,7 @@ const store = useStore();
|
||||
const route = useRoute();
|
||||
const props = defineProps({
|
||||
type: {
|
||||
// // 1:互动 2:老师 5:私聊 4:精选
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
@ -211,11 +216,16 @@ const imagePreview = (url) => {
|
||||
};
|
||||
|
||||
const showCalendar = ref(false);
|
||||
const { bs, msgListRef, msgList, pushNewMsg, refreshMsg } = useChatData({
|
||||
className: `.interact-scroll${props.type}`,
|
||||
id: route.query.id,
|
||||
type: props.type,
|
||||
});
|
||||
const { bs, msgListRef, msgList, hasNext, pushNewMsg, refreshMsg, loading } =
|
||||
useChatData({
|
||||
className: `.interact-scroll${props.type}`,
|
||||
id: route.query.id,
|
||||
type: props.type,
|
||||
});
|
||||
|
||||
const maskUserName = (value) => {
|
||||
return value.charAt(0) + "**";
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.interact-scroll {
|
||||
@ -511,9 +521,9 @@ const { bs, msgListRef, msgList, pushNewMsg, refreshMsg } = useChatData({
|
||||
border-radius: 20px;
|
||||
}
|
||||
.refresh {
|
||||
position: fixed;
|
||||
position: absolute;
|
||||
right: 24px;
|
||||
bottom: 180px;
|
||||
bottom: 100px;
|
||||
width: 64px;
|
||||
}
|
||||
.date-select {
|
||||
@ -522,4 +532,30 @@ const { bs, msgListRef, msgList, pushNewMsg, refreshMsg } = useChatData({
|
||||
font-size: 28px;
|
||||
padding: 20px;
|
||||
}
|
||||
.loading {
|
||||
animation: loadMove 1s;
|
||||
-webkit-animation: loadMove 1s; /*Safari and Chrome*/
|
||||
}
|
||||
|
||||
@keyframes loadMove {
|
||||
0% {
|
||||
transform: rotate(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes loadMove /*Safari and Chrome*/ {
|
||||
from {
|
||||
transform: rotate(0);
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { ref, onMounted, nextTick } from "vue";
|
||||
import { ref, onMounted, nextTick } from "vue";
|
||||
import { getMessageList } from "@/api/circle";
|
||||
import BScroll from "@better-scroll/core";
|
||||
import PullDown from "@better-scroll/pull-down";
|
||||
@ -14,30 +14,33 @@ export default function useChatData({ id, className, type }) {
|
||||
let bs = ref();
|
||||
const isPullingDown = ref(false);
|
||||
const msgListRef = ref();
|
||||
const msgList = ref([])
|
||||
const msgList = ref([]);
|
||||
const loading = ref(false);
|
||||
|
||||
const getLiveHisMsg = async () => {
|
||||
loading.value = true;
|
||||
if (isPullingDown.value) return;
|
||||
isPullingDown.value = true;
|
||||
let preHisHeight
|
||||
let preHisHeight;
|
||||
let ret = await getMessageList({
|
||||
groupId: id,
|
||||
lastId: msgList.value[0]?.id,
|
||||
size: 10,
|
||||
type,
|
||||
})
|
||||
groupId: id,
|
||||
lastId: msgList.value[0]?.id,
|
||||
size: 10,
|
||||
type,
|
||||
});
|
||||
if (ret.code === 0) {
|
||||
let list = ret.data.list.reverse() || []
|
||||
let list = ret.data.list.reverse() || [];
|
||||
|
||||
hasNext.value = ret.data.hasNext;
|
||||
preHisHeight = msgListRef.value.clientHeight;
|
||||
msgList.value = list.concat(msgList.value)
|
||||
msgList.value = list.concat(msgList.value);
|
||||
if (!hasNext.value) {
|
||||
bs.value && bs.value.closePullDown();
|
||||
}
|
||||
}
|
||||
isPullingDown.value = false;
|
||||
finishPullDown(preHisHeight);
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
const finishPullDown = (preHisHeight) => {
|
||||
@ -52,21 +55,21 @@ export default function useChatData({ id, className, type }) {
|
||||
|
||||
// WebSocket推送的消息
|
||||
const pushNewMsg = (msg) => {
|
||||
msgList.value.push(msg)
|
||||
nextTick(()=>{
|
||||
let isBottom = bs.value.maxScrollY+20 >= bs.value.y
|
||||
msgList.value.push(msg);
|
||||
nextTick(() => {
|
||||
let isBottom = bs.value.maxScrollY + 20 >= bs.value.y;
|
||||
bs.value && bs.value.refresh();
|
||||
if(isBottom) {
|
||||
if (isBottom) {
|
||||
bs.value && bs.value.scrollTo(0, bs.value.maxScrollY, 0);
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 刷新消息
|
||||
const refreshMsg = () => {
|
||||
msgList.value = []
|
||||
getLiveHisMsg()
|
||||
}
|
||||
msgList.value = [];
|
||||
getLiveHisMsg();
|
||||
};
|
||||
|
||||
let wrapper;
|
||||
onMounted(async () => {
|
||||
@ -108,6 +111,7 @@ export default function useChatData({ id, className, type }) {
|
||||
bs,
|
||||
msgList,
|
||||
pushNewMsg,
|
||||
refreshMsg
|
||||
refreshMsg,
|
||||
loading,
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,15 +1,17 @@
|
||||
<template>
|
||||
<div>
|
||||
<Nav title="直播视频"></Nav>
|
||||
<Nav :title="detail.name"></Nav>
|
||||
<div class="circle-base-info">
|
||||
<img :src="detail.coverImage" class="banner">
|
||||
<img :src="detail.coverImage" class="banner" />
|
||||
<div class="circle-name">
|
||||
<h3>{{ detail.name }}</h3>
|
||||
<span>{{ detail.riskLevel ? RISK_LEVEL[detail.riskLevel].label : '' }}</span>
|
||||
<span>{{
|
||||
detail.riskLevel ? RISK_LEVEL[detail.riskLevel].label : ""
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="tg-info">
|
||||
<div class="flex">
|
||||
<img class="photo" :src="detail.advisor.avatar" alt="" srcset="">
|
||||
<img class="photo" :src="detail.advisor.avatar" alt="" srcset="" />
|
||||
<label>{{ detail.advisor.showName }}</label>
|
||||
</div>
|
||||
<span class="user-name">{{ store.state.userInfo.userName }}</span>
|
||||
@ -23,16 +25,30 @@
|
||||
<h4>使用人群</h4>
|
||||
<p>{{ detail.applicableUser }}</p>
|
||||
</div>
|
||||
<div class="tip">风险提示:投资顾问提供的观点和投资建议仅供参考,不作为客户投资决策依据。客户需独立做出投资决策,风险自担。市场有风险,投资须谨慎。</div>
|
||||
<div class="tip">
|
||||
风险提示:投资顾问提供的观点和投资建议仅供参考,不作为客户投资决策依据。客户需独立做出投资决策,风险自担。市场有风险,投资须谨慎。
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="buy-list">
|
||||
<!-- <div class="buy-list">
|
||||
<ul>
|
||||
<li><img src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"></li>
|
||||
<li><img src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"></li>
|
||||
<li><img src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"></li>
|
||||
<li>
|
||||
<img
|
||||
src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<img
|
||||
src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<img
|
||||
src="https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f600_800"
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
<p><span>谁谁</span>正在火热抢购中</p>
|
||||
</div>
|
||||
</div> -->
|
||||
<button @click="toPaymentUrl">立即开通</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -42,7 +58,7 @@ import { ref } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import { getCircleDetail } from "@/api/circle";
|
||||
import Nav from "@/components/NavBar.vue";
|
||||
import { RISK_LEVEL } from "@/utils/contant"
|
||||
import { RISK_LEVEL } from "@/utils/contant";
|
||||
import { useStore } from "vuex";
|
||||
|
||||
// const router = useRouter();
|
||||
@ -50,50 +66,49 @@ const route = useRoute();
|
||||
const store = useStore();
|
||||
|
||||
const detail = ref({
|
||||
advisor: {}
|
||||
})
|
||||
const queryCircleDetail = async ()=> {
|
||||
const ret = await getCircleDetail({id: route.query.id})
|
||||
if(ret && ret.code === 0){
|
||||
detail.value = ret.data
|
||||
advisor: {},
|
||||
});
|
||||
const queryCircleDetail = async () => {
|
||||
const ret = await getCircleDetail({ id: route.query.id });
|
||||
if (ret && ret.code === 0) {
|
||||
detail.value = ret.data;
|
||||
}
|
||||
}
|
||||
queryCircleDetail()
|
||||
};
|
||||
queryCircleDetail();
|
||||
|
||||
const toPaymentUrl = () => {
|
||||
location.href = detail.value.page.paymentUrl
|
||||
}
|
||||
|
||||
location.href = detail.value.page.paymentUrl;
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.circle-base-info{
|
||||
.circle-base-info {
|
||||
padding: 32px 0;
|
||||
margin: 0 32px;
|
||||
border-bottom: 1px solid rgba(245, 245, 245, 0.7);
|
||||
.banner{
|
||||
.banner {
|
||||
height: 422px;
|
||||
width: 100%;
|
||||
}
|
||||
.circle-name{
|
||||
.circle-name {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 96px;
|
||||
h3{
|
||||
h3 {
|
||||
font-size: 32px;
|
||||
}
|
||||
span{
|
||||
span {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
.tg-info{
|
||||
.tg-info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.flex{
|
||||
.flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
img{
|
||||
img {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
@ -102,7 +117,7 @@ const toPaymentUrl = () => {
|
||||
font-size: 28px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
span{
|
||||
span {
|
||||
font-size: 28px;
|
||||
}
|
||||
.user-name {
|
||||
@ -110,7 +125,7 @@ const toPaymentUrl = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
.introduce{
|
||||
.introduce {
|
||||
text-align: left;
|
||||
padding: 0 32px;
|
||||
margin-bottom: 20px;
|
||||
@ -118,33 +133,33 @@ const toPaymentUrl = () => {
|
||||
font-size: 32px;
|
||||
padding: 24px 0;
|
||||
}
|
||||
p{
|
||||
p {
|
||||
font-size: 28px;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
.tip{
|
||||
.tip {
|
||||
padding: 32px 32px 200px 32px;
|
||||
background: #f5f6fa;
|
||||
font-size: 24px;
|
||||
color: #9aa4b6;
|
||||
line-height: 36px;
|
||||
}
|
||||
.footer{
|
||||
.footer {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
box-shadow: 0px -4px 15px #eff2f1;
|
||||
background: #fff;
|
||||
.buy-list{
|
||||
.buy-list {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 24px;
|
||||
color: #999;
|
||||
padding: 20px 0;
|
||||
ul{
|
||||
ul {
|
||||
display: flex;
|
||||
}
|
||||
img {
|
||||
@ -165,4 +180,4 @@ const toPaymentUrl = () => {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -1,18 +1,23 @@
|
||||
<template>
|
||||
<Nav title="圈子互动">
|
||||
<Nav :title="detail.name">
|
||||
<img
|
||||
class="set"
|
||||
src="@/assets/images/set.png"
|
||||
@click="router.push('./set')"
|
||||
/>
|
||||
</Nav>
|
||||
<van-notice-bar left-icon="volume-o" mode="closeable" :text="detail.notice" />
|
||||
<van-notice-bar
|
||||
v-if="showNotice"
|
||||
left-icon="volume-o"
|
||||
mode="closeable"
|
||||
:text="detail.notice"
|
||||
/>
|
||||
<van-tabs v-model:active="active" line-width="0.4rem">
|
||||
<van-tab title="互动" :name="0">
|
||||
<ChatFrame
|
||||
:type="1"
|
||||
:bsRefresh="active === 0"
|
||||
detail="detail"
|
||||
:detail="detail"
|
||||
:newMsg="newMsg"
|
||||
/>
|
||||
</van-tab>
|
||||
@ -20,7 +25,7 @@
|
||||
<ChatFrame
|
||||
:type="2"
|
||||
:bsRefresh="active === 1"
|
||||
detail="detail"
|
||||
:detail="detail"
|
||||
:newMsg="newMsg"
|
||||
/>
|
||||
</van-tab>
|
||||
@ -28,15 +33,15 @@
|
||||
<ChatFrame
|
||||
:type="5"
|
||||
:bsRefresh="active === 2"
|
||||
detail="detail"
|
||||
:newMsg="newMsg"
|
||||
:detail="detail"
|
||||
:newMsg="privateNewMsg"
|
||||
/>
|
||||
</van-tab>
|
||||
<van-tab title="精选" :name="3">
|
||||
<ChatFrame
|
||||
:type="4"
|
||||
:bsRefresh="active === 3"
|
||||
detail="detail"
|
||||
:detail="detail"
|
||||
:newMsg="newMsg"
|
||||
/>
|
||||
</van-tab>
|
||||
@ -48,7 +53,11 @@
|
||||
maxlength="200"
|
||||
:disabled="detail.interactiveStatus === 2"
|
||||
:placeholder="
|
||||
detail.interactiveStatus === 2 ? '暂不允许互动' : '请输入您想发送的内容'
|
||||
detail.interactiveStatus === 2
|
||||
? '暂不允许互动'
|
||||
: active === 2
|
||||
? '请输入您想私聊的内容'
|
||||
: '请输入您想发送的内容'
|
||||
"
|
||||
@keyup.enter="sendMsg(1, { text })"
|
||||
/>
|
||||
@ -69,13 +78,16 @@ import { useRouter, useRoute } from "vue-router";
|
||||
import { sendMessage } from "@/api/circle";
|
||||
import { getCircleDetail } from "@/api/circle";
|
||||
import useWebSocket from "./hooks/useWebSocket";
|
||||
import { useStore } from "vuex";
|
||||
|
||||
const active = ref(0);
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const sendTextLoading = ref(false);
|
||||
const content = ref("");
|
||||
const store = useStore();
|
||||
|
||||
const showNotice = ref(false); // 是否展示公告栏,同一个公告栏只展示一次
|
||||
const detail = ref({
|
||||
advisor: {},
|
||||
});
|
||||
@ -83,13 +95,29 @@ const queryCircleDetail = async () => {
|
||||
const ret = await getCircleDetail({ id: route.query.id });
|
||||
if (ret && ret.code === 0) {
|
||||
detail.value = ret.data;
|
||||
const key = `circleNotice-${detail.value.id}-${store.state.userInfo.account}`;
|
||||
const storageCircleNotice = localStorage.getItem(key);
|
||||
if (!storageCircleNotice || storageCircleNotice !== detail.value.notice) {
|
||||
showNotice.value = true;
|
||||
localStorage.setItem(key, detail.value.notice);
|
||||
} else {
|
||||
showNotice.value = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
queryCircleDetail();
|
||||
|
||||
const privateNewMsg = ref({});
|
||||
const privateMessage = (msg) => {
|
||||
console.log("privateMessage", msg);
|
||||
const body = JSON.parse(msg.body);
|
||||
const data = body.data;
|
||||
console.log("data", data);
|
||||
// interactiveType 交互类型:1群聊;2私聊;3会话消息
|
||||
if ([1].includes(body.type)) {
|
||||
privateNewMsg.value = data;
|
||||
}
|
||||
};
|
||||
|
||||
const newMsg = ref({}); // ws最新推送的消息
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div class="login-wrap">
|
||||
<Nav />
|
||||
<h2>手机号登录</h2>
|
||||
<h2>请登录</h2>
|
||||
<div class="form">
|
||||
<div class="input-group">
|
||||
<label>账户</label>
|
||||
<input placeholder="请输入手机号" v-model="fromData.account" />
|
||||
<input placeholder="请输入账号" v-model="fromData.userId" />
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<!-- <div class="input-group">
|
||||
<label>验证码</label>
|
||||
<input placeholder="请输入验证码" v-model="fromData.code" />
|
||||
<span v-if="!showTime" @click="getCode">点击获取</span>
|
||||
<i v-else>{{ time }}S后重试</i>
|
||||
</div>
|
||||
<button :disabled="disabled" @click="login">登录</button>
|
||||
</div> -->
|
||||
<button @click="login">登录</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -22,19 +22,20 @@
|
||||
import { ref, reactive, watch } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import Nav from "@/components/NavBar.vue";
|
||||
import { queryLogin } from "@/api/index";
|
||||
// import { queryLogin } from "@/api/index";
|
||||
import { useStore } from "vuex";
|
||||
import { showToast } from "vant";
|
||||
// import { showToast } from "vant";
|
||||
import { getUserInfo } from "@/api/index";
|
||||
|
||||
const store = useStore();
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const disabled = ref(true);
|
||||
const showTime = ref(false);
|
||||
// const showTime = ref(false);
|
||||
const fromData = reactive({
|
||||
account: "",
|
||||
code: "",
|
||||
userId: "",
|
||||
clientType: 1,
|
||||
});
|
||||
watch(fromData, (val) => {
|
||||
if (val.account && val.code) {
|
||||
@ -44,34 +45,35 @@ watch(fromData, (val) => {
|
||||
}
|
||||
});
|
||||
|
||||
const reg = /^1[34578]\d{9}$/;
|
||||
// const reg = /^1[34578]\d{9}$/;
|
||||
const login = async () => {
|
||||
if (!reg.test(fromData.account)) {
|
||||
return showToast("请输入正确手机号!");
|
||||
}
|
||||
let ret = await queryLogin({ ...fromData });
|
||||
// if (!reg.test(fromData.account)) {
|
||||
// return showToast("请输入正确手机号!");
|
||||
// }
|
||||
let ret = await getUserInfo({ ...fromData });
|
||||
if (ret.code === 0) {
|
||||
store.commit("setToken", ret.data);
|
||||
store.commit("setUserInfo", {
|
||||
account: fromData.account,
|
||||
});
|
||||
store.commit("setToken", ret.data.upToken);
|
||||
store.commit(
|
||||
"setUserInfo",
|
||||
Object.assign({ account: ret.data.userId }, ret.data)
|
||||
);
|
||||
router.replace(route.query.redirect ? route.query.redirect : "/");
|
||||
}
|
||||
};
|
||||
|
||||
const time = ref(59);
|
||||
const getCode = async () => {
|
||||
showTime.value = true;
|
||||
let interval = null;
|
||||
interval = setInterval(() => {
|
||||
time.value--;
|
||||
if (time.value === 0) {
|
||||
clearInterval(interval);
|
||||
showTime.value = false;
|
||||
time.value = 59;
|
||||
}
|
||||
}, 1000);
|
||||
};
|
||||
// const time = ref(59);
|
||||
// const getCode = async () => {
|
||||
// showTime.value = true;
|
||||
// let interval = null;
|
||||
// interval = setInterval(() => {
|
||||
// time.value--;
|
||||
// if (time.value === 0) {
|
||||
// clearInterval(interval);
|
||||
// showTime.value = false;
|
||||
// time.value = 59;
|
||||
// }
|
||||
// }, 1000);
|
||||
// };
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .van-nav-bar {
|
||||
|
||||
@ -136,7 +136,6 @@ import ChatFrame from "./components/ChatFrame";
|
||||
import CarList from "./components/CarList";
|
||||
import CarItem from "./components/CarItem";
|
||||
import { useStore } from "vuex";
|
||||
import { closeWebViewSDK } from "@/utils/upNativeComm";
|
||||
import NoLookTip from "@/components/NoLookTip.vue";
|
||||
|
||||
const router = useRouter();
|
||||
@ -335,7 +334,7 @@ const setSubLiveVideo = async () => {
|
||||
|
||||
const toBack = () => {
|
||||
if (route.query.sdk) {
|
||||
closeWebViewSDK();
|
||||
console.log("sdk返回");
|
||||
} else {
|
||||
router.go(-1);
|
||||
}
|
||||
|
||||
@ -28,7 +28,11 @@
|
||||
}}
|
||||
</p>
|
||||
<p v-if="item.startTime">
|
||||
{{ dayjs(item.playType === 1 ? item.startTime : item.auditTime).format("YYYY-MM-DD") }}
|
||||
{{
|
||||
dayjs(item.playType === 1 ? item.startTime : item.auditTime).format(
|
||||
"YYYY-MM-DD"
|
||||
)
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -40,8 +44,6 @@ import { defineProps } from "vue";
|
||||
// import { useRouter } from "vue-router";
|
||||
import useGetStatusIcon from "@/hooks/useGetStatusIcon";
|
||||
import dayjs from "dayjs";
|
||||
import { webViewOpenSDK } from "@/utils/upNativeComm";
|
||||
import { terminalType } from "@/utils/index";
|
||||
|
||||
// const router = useRouter();
|
||||
const props = defineProps({
|
||||
@ -52,25 +54,12 @@ const props = defineProps({
|
||||
});
|
||||
const getStatusIcon = useGetStatusIcon();
|
||||
const toDetail = () => {
|
||||
if (terminalType === "App") {
|
||||
webViewOpenSDK({
|
||||
url: `${location.origin}/syzbh5/${
|
||||
props.item.type === 1 ? "shotVideoPlay" : "videoPlay"
|
||||
}?id=${props.item.id}${terminalType === "App" ? "&sdk=1" : ""}`,
|
||||
});
|
||||
} else {
|
||||
// router.push(
|
||||
// `/${props.item.type === 1 ? "shotVideoPlay" : "videoPlay"}?id=${
|
||||
// props.item.id
|
||||
// }`
|
||||
// );
|
||||
window.open(
|
||||
`${location.origin}/syzbh5/${
|
||||
props.item.type === 1 ? "shotVideoPlay" : "videoPlay"
|
||||
}?id=${props.item.id}&source=c`,
|
||||
"_blank"
|
||||
);
|
||||
}
|
||||
window.open(
|
||||
`${location.origin}/h5/${
|
||||
props.item.type === 1 ? "shotVideoPlay" : "videoPlay"
|
||||
}?id=${props.item.id}&source=c`,
|
||||
"_blank"
|
||||
);
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
||||
@ -14,7 +14,10 @@
|
||||
@updateVideoDetail="updateVideoDetail"
|
||||
/>
|
||||
<NoLookTip v-if="[5, 6].includes(videoDetail.status)" text="该视频已下架" />
|
||||
<NoLookTip v-else-if="noAuth" :text="`${store.state.userInfo.account}账号暂无服务权限,请联系小助理开通`" />
|
||||
<NoLookTip
|
||||
v-else-if="noAuth"
|
||||
:text="`${store.state.userInfo.account}账号暂无服务权限,请联系小助理开通`"
|
||||
/>
|
||||
<van-dialog
|
||||
v-model:show="showCodeDialog"
|
||||
title="观看权限提示"
|
||||
@ -39,10 +42,7 @@ import { useStore } from "vuex";
|
||||
import emitter from "@/utils/emitter";
|
||||
import HScreen from "./HScreen.vue";
|
||||
import SScreen from "./SScreen.vue";
|
||||
import { setTitleSDK } from "@/utils/upNativeComm";
|
||||
import NoLookTip from "@/components/NoLookTip.vue";
|
||||
import { terminalType } from "@/utils/index";
|
||||
import { closeWebView } from "@/utils/upNativeFn";
|
||||
// import { checkAuthIds } from "@/hooks/useHasAuth";
|
||||
|
||||
const route = useRoute();
|
||||
@ -76,13 +76,7 @@ const getVideoDetail = async () => {
|
||||
if (ret.code === 6013) {
|
||||
noAuth.value = true;
|
||||
} else if (ret.code === 0) {
|
||||
if (terminalType === "App") {
|
||||
setTitleSDK({
|
||||
title: ret.data.title,
|
||||
});
|
||||
} else {
|
||||
document.title = ret.data.title;
|
||||
}
|
||||
document.title = ret.data.title;
|
||||
// limitType 直播限制 1不限制 2手机号 3邀请码 4微信授权 5产品专属直播 6 权限号
|
||||
if (
|
||||
[1].includes(ret.data.limitType) ||
|
||||
@ -235,7 +229,7 @@ onBeforeUnmount(() => {
|
||||
|
||||
const toBack = () => {
|
||||
if (route.query.sdk) {
|
||||
closeWebView()
|
||||
console.log("sdk返回");
|
||||
} else if (route.query.source === "c") {
|
||||
router.go(-1);
|
||||
} else {
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
const path = require("path");
|
||||
const compression = require("compression");
|
||||
const history = require("connect-history-api-fallback");
|
||||
const PORT = process.env.HTTP_PORT || 3000;
|
||||
const IP = process.env.HTTP_IP || undefined;
|
||||
const pkg = require("./package.json");
|
||||
|
||||
let fs = require("fs");
|
||||
var TafConfig = require("@taf/taf-config");
|
||||
|
||||
const conf = { config: {} };
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
console.log("pkg---", pkg);
|
||||
const pkgName = pkg.name;
|
||||
console.log("pkgName---", pkgName);
|
||||
const tafConfig = new TafConfig({ fileName: `${pkgName}.conf` });
|
||||
const allConfigData = await tafConfig.getAllConfigData();
|
||||
console.log("allConfigData", typeof allConfigData, allConfigData);
|
||||
conf.config = JSON.parse(allConfigData[`${pkgName}.conf`]);
|
||||
console.log("conf.config", conf.config);
|
||||
const jsStr = `window.config = ${JSON.stringify(conf.config)}`;
|
||||
console.log("jsStr", jsStr);
|
||||
console.log("publicPath---", pkg.publicPath);
|
||||
fs.writeFileSync(`./public/${pkg.publicPath}/static/js/config.js`, jsStr);
|
||||
} catch (error) {
|
||||
console.log("error", error);
|
||||
}
|
||||
})();
|
||||
|
||||
app.use("/s", (req, res, next) => {
|
||||
console.log(req);
|
||||
console.log(req.url, `/${pkg.publicPath}${req.url}`);
|
||||
res.redirect(`/${pkg.publicPath}${req.url}`);
|
||||
});
|
||||
|
||||
app.use(compression());
|
||||
app.use(history());
|
||||
app.use(express.static(path.join(__dirname, "public")));
|
||||
app.listen(PORT, IP, () => {
|
||||
console.log(`Running at http://${IP ? IP : "localhost"}:${PORT}`);
|
||||
});
|
||||
2045
template/package-lock.json
generated
2045
template/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
||||
{
|
||||
"name": "SYZBH5Server",
|
||||
"publicPath": "syzbh5",
|
||||
"dependencies": {
|
||||
"@taf/taf-config-helper": "^1.0.5",
|
||||
"@up/taf-conf": "^1.0.0",
|
||||
"compression": "^1.7.2",
|
||||
"connect-history-api-fallback": "^1.5.0",
|
||||
"ejs": "^3.1.9",
|
||||
"express": "^4.16.3"
|
||||
}
|
||||
}
|
||||
@ -1,805 +0,0 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@taf/taf-config-helper@^1.0.5":
|
||||
"integrity" "sha1-SwI9+w/TvYVh96mLhbYusM6S8+4="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-config-helper/download/@taf/taf-config-helper-1.0.5.tgz"
|
||||
"version" "1.0.5"
|
||||
dependencies:
|
||||
"@taf/taf-config" "^1.2.4"
|
||||
"q" "^1.4.1"
|
||||
|
||||
"@taf/taf-config-parser@^0.1.2":
|
||||
"integrity" "sha1-VaX++UyR36qzfggKHBmihS5kWjI="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-config-parser/download/@taf/taf-config-parser-0.1.2.tgz"
|
||||
"version" "0.1.2"
|
||||
dependencies:
|
||||
"@taf/taf-utils" "^1.2.2"
|
||||
|
||||
"@taf/taf-config@^1.2.4":
|
||||
"integrity" "sha1-T3Zso0Q1msvrmibJvHzhfVCP038="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-config/download/@taf/taf-config-1.2.9.tgz"
|
||||
"version" "1.2.9"
|
||||
dependencies:
|
||||
"@taf/taf-rpc" "latest"
|
||||
"@taf/taf-stream" "latest"
|
||||
"@taf/taf-utils" "latest"
|
||||
"q" "^1.5.0"
|
||||
|
||||
"@taf/taf-config@^2.3.0":
|
||||
"integrity" "sha1-oIsa7f8REXamjuSRS3FPY73XNJA="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-config/download/@taf/taf-config-2.3.3.tgz"
|
||||
"version" "2.3.3"
|
||||
dependencies:
|
||||
"@taf/taf-notify" "^0.4.4"
|
||||
"@taf/taf-rpc" "^3.6.9"
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
"@taf/taf-utils" "^1.2.1"
|
||||
"iconv-lite" "^0.6.3"
|
||||
"q" "^1.5.0"
|
||||
|
||||
"@taf/taf-dyeing@^0.1.2":
|
||||
"integrity" "sha1-MVjvUPOhbiSlEkjio8dJWS/Zhdo="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-dyeing/download/@taf/taf-dyeing-0.1.2.tgz"
|
||||
"version" "0.1.2"
|
||||
|
||||
"@taf/taf-monitor@^0.4.3":
|
||||
"integrity" "sha1-sCteywG6Dm8n4FnA+tiMMa/LcaQ="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-monitor/download/@taf/taf-monitor-0.4.7.tgz"
|
||||
"version" "0.4.7"
|
||||
dependencies:
|
||||
"@taf/taf-config-parser" "^0.1.2"
|
||||
"@taf/taf-rpc" "^3.6.9"
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
|
||||
"@taf/taf-notify@^0.4.4":
|
||||
"integrity" "sha1-6y19dPEmocgz3gGv6LfA0QPHmt0="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-notify/download/@taf/taf-notify-0.4.4.tgz"
|
||||
"version" "0.4.4"
|
||||
dependencies:
|
||||
"@taf/taf-config-parser" "^0.1.2"
|
||||
"@taf/taf-rpc" "^3.6.9"
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
|
||||
"@taf/taf-registry@^1.3.5":
|
||||
"integrity" "sha1-0EAdTSDwkf3awUc/SRLbQuKDsEs="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-registry/download/@taf/taf-registry-1.3.7.tgz"
|
||||
"version" "1.3.7"
|
||||
dependencies:
|
||||
"@taf/taf-rpc" "^3.6.9"
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
|
||||
"@taf/taf-rpc-jce@^3.3.3":
|
||||
"integrity" "sha1-JyGaLANxCMwtFDsAn8t0qrBWSa4="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-rpc-jce/download/@taf/taf-rpc-jce-3.3.4.tgz"
|
||||
"version" "3.3.4"
|
||||
dependencies:
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
|
||||
"@taf/taf-rpc@^3.6.9", "@taf/taf-rpc@latest":
|
||||
"integrity" "sha1-8/zTIA1EilsiRmoH5WKx3XWdSRo="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-rpc/download/@taf/taf-rpc-3.6.19.tgz"
|
||||
"version" "3.6.19"
|
||||
dependencies:
|
||||
"@taf/taf-dyeing" "^0.1.2"
|
||||
"@taf/taf-monitor" "^0.4.3"
|
||||
"@taf/taf-registry" "^1.3.5"
|
||||
"@taf/taf-rpc-jce" "^3.3.3"
|
||||
"@taf/taf-stream" "^4.1.5"
|
||||
"@taf/taf-utils" "^1.2.1"
|
||||
"hashring" "^3.2.0"
|
||||
"q" "^1.4.1"
|
||||
|
||||
"@taf/taf-stream@^4.1.5", "@taf/taf-stream@latest":
|
||||
"integrity" "sha1-qBlecI/RJVHMtpnwvu0yz4onMAM="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-stream/download/@taf/taf-stream-4.1.5.tgz"
|
||||
"version" "4.1.5"
|
||||
dependencies:
|
||||
"big.js" "^3.1.3"
|
||||
|
||||
"@taf/taf-utils@^1.2.1", "@taf/taf-utils@^1.2.2", "@taf/taf-utils@latest":
|
||||
"integrity" "sha1-6RApu3Fpcby36VbXSfferQtYAPs="
|
||||
"resolved" "http://registry.upchinaproduct.com/@taf/taf-utils/download/@taf/taf-utils-1.2.2.tgz"
|
||||
"version" "1.2.2"
|
||||
dependencies:
|
||||
"bluebird" "^3.7.2"
|
||||
|
||||
"@up/taf-conf@^1.0.0":
|
||||
"integrity" "sha1-yVyQ/PIUSWUB22AZFigJ0mYM31o="
|
||||
"resolved" "http://registry.upchinaproduct.com/@up/taf-conf/download/@up/taf-conf-1.4.2.tgz"
|
||||
"version" "1.4.2"
|
||||
dependencies:
|
||||
"@taf/taf-config" "^2.3.0"
|
||||
"@up/taf-yamljs" "^1.2.0"
|
||||
"lodash" "^4.17.21"
|
||||
"nconf" "^0.8.5"
|
||||
|
||||
"@up/taf-yamljs@^1.2.0":
|
||||
"integrity" "sha1-yBkOFgqZw7iN7T6jvHen117WdNE="
|
||||
"resolved" "http://registry.upchinaproduct.com/@up/taf-yamljs/download/@up/taf-yamljs-1.2.0.tgz"
|
||||
"version" "1.2.0"
|
||||
dependencies:
|
||||
"argparse" "^1.0.7"
|
||||
"glob" "^7.0.5"
|
||||
"lodash" "^4.17.21"
|
||||
|
||||
"accepts@~1.3.4", "accepts@~1.3.5":
|
||||
"resolved" "http://172.16.8.152:7001/accepts/download/accepts-1.3.5.tgz"
|
||||
"version" "1.3.5"
|
||||
dependencies:
|
||||
"mime-types" "~2.1.18"
|
||||
"negotiator" "0.6.1"
|
||||
|
||||
"ansi-regex@^2.0.0":
|
||||
"integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
|
||||
"resolved" "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz"
|
||||
"version" "2.1.1"
|
||||
|
||||
"ansi-styles@^4.1.0":
|
||||
"integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
|
||||
"resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
|
||||
"version" "4.3.0"
|
||||
dependencies:
|
||||
"color-convert" "^2.0.1"
|
||||
|
||||
"argparse@^1.0.7":
|
||||
"integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="
|
||||
"resolved" "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz"
|
||||
"version" "1.0.10"
|
||||
dependencies:
|
||||
"sprintf-js" "~1.0.2"
|
||||
|
||||
"array-flatten@1.1.1":
|
||||
"resolved" "http://172.16.8.152:7001/array-flatten/download/array-flatten-1.1.1.tgz"
|
||||
"version" "1.1.1"
|
||||
|
||||
"async@^1.4.0":
|
||||
"integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w=="
|
||||
"resolved" "https://registry.npmmirror.com/async/-/async-1.5.2.tgz"
|
||||
"version" "1.5.2"
|
||||
|
||||
"async@^3.2.3":
|
||||
"integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
|
||||
"resolved" "https://registry.npmmirror.com/async/-/async-3.2.4.tgz"
|
||||
"version" "3.2.4"
|
||||
|
||||
"balanced-match@^1.0.0":
|
||||
"integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
"resolved" "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz"
|
||||
"version" "1.0.2"
|
||||
|
||||
"big.js@^3.1.3":
|
||||
"integrity" "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
|
||||
"resolved" "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz"
|
||||
"version" "3.2.0"
|
||||
|
||||
"bluebird@^3.7.2":
|
||||
"integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
|
||||
"resolved" "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
|
||||
"version" "3.7.2"
|
||||
|
||||
"body-parser@1.18.2":
|
||||
"resolved" "http://172.16.8.152:7001/body-parser/download/body-parser-1.18.2.tgz"
|
||||
"version" "1.18.2"
|
||||
dependencies:
|
||||
"bytes" "3.0.0"
|
||||
"content-type" "~1.0.4"
|
||||
"debug" "2.6.9"
|
||||
"depd" "~1.1.1"
|
||||
"http-errors" "~1.6.2"
|
||||
"iconv-lite" "0.4.19"
|
||||
"on-finished" "~2.3.0"
|
||||
"qs" "6.5.1"
|
||||
"raw-body" "2.3.2"
|
||||
"type-is" "~1.6.15"
|
||||
|
||||
"brace-expansion@^1.1.7":
|
||||
"integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
|
||||
"resolved" "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz"
|
||||
"version" "1.1.11"
|
||||
dependencies:
|
||||
"balanced-match" "^1.0.0"
|
||||
"concat-map" "0.0.1"
|
||||
|
||||
"brace-expansion@^2.0.1":
|
||||
"integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
|
||||
"resolved" "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz"
|
||||
"version" "2.0.1"
|
||||
dependencies:
|
||||
"balanced-match" "^1.0.0"
|
||||
|
||||
"bytes@3.0.0":
|
||||
"resolved" "http://172.16.8.152:7001/bytes/download/bytes-3.0.0.tgz"
|
||||
"version" "3.0.0"
|
||||
|
||||
"camelcase@^2.0.1":
|
||||
"integrity" "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw=="
|
||||
"resolved" "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz"
|
||||
"version" "2.1.1"
|
||||
|
||||
"chalk@^4.0.2":
|
||||
"integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
|
||||
"resolved" "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
|
||||
"version" "4.1.2"
|
||||
dependencies:
|
||||
"ansi-styles" "^4.1.0"
|
||||
"supports-color" "^7.1.0"
|
||||
|
||||
"cliui@^3.0.3":
|
||||
"integrity" "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w=="
|
||||
"resolved" "https://registry.npmmirror.com/cliui/-/cliui-3.2.0.tgz"
|
||||
"version" "3.2.0"
|
||||
dependencies:
|
||||
"string-width" "^1.0.1"
|
||||
"strip-ansi" "^3.0.1"
|
||||
"wrap-ansi" "^2.0.0"
|
||||
|
||||
"code-point-at@^1.0.0":
|
||||
"integrity" "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="
|
||||
"resolved" "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz"
|
||||
"version" "1.1.0"
|
||||
|
||||
"color-convert@^2.0.1":
|
||||
"integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
|
||||
"resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz"
|
||||
"version" "2.0.1"
|
||||
dependencies:
|
||||
"color-name" "~1.1.4"
|
||||
|
||||
"color-name@~1.1.4":
|
||||
"integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
"resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
|
||||
"version" "1.1.4"
|
||||
|
||||
"compressible@~2.0.13":
|
||||
"resolved" "http://172.16.8.152:7001/compressible/download/compressible-2.0.14.tgz"
|
||||
"version" "2.0.14"
|
||||
dependencies:
|
||||
"mime-db" ">= 1.34.0 < 2"
|
||||
|
||||
"compression@^1.7.2":
|
||||
"resolved" "http://172.16.8.152:7001/compression/download/compression-1.7.2.tgz"
|
||||
"version" "1.7.2"
|
||||
dependencies:
|
||||
"accepts" "~1.3.4"
|
||||
"bytes" "3.0.0"
|
||||
"compressible" "~2.0.13"
|
||||
"debug" "2.6.9"
|
||||
"on-headers" "~1.0.1"
|
||||
"safe-buffer" "5.1.1"
|
||||
"vary" "~1.1.2"
|
||||
|
||||
"concat-map@0.0.1":
|
||||
"integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
"resolved" "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz"
|
||||
"version" "0.0.1"
|
||||
|
||||
"connect-history-api-fallback@^1.5.0":
|
||||
"resolved" "http://172.16.8.152:7001/connect-history-api-fallback/download/connect-history-api-fallback-1.5.0.tgz"
|
||||
"version" "1.5.0"
|
||||
|
||||
"connection-parse@0.0.x":
|
||||
"integrity" "sha512-bTTG28diWg7R7/+qE5NZumwPbCiJOT8uPdZYu674brDjBWQctbaQbYlDKhalS+4i5HxIx+G8dZsnBHKzWpp01A=="
|
||||
"resolved" "https://registry.npmmirror.com/connection-parse/-/connection-parse-0.0.7.tgz"
|
||||
"version" "0.0.7"
|
||||
|
||||
"content-disposition@0.5.2":
|
||||
"resolved" "http://172.16.8.152:7001/content-disposition/download/content-disposition-0.5.2.tgz"
|
||||
"version" "0.5.2"
|
||||
|
||||
"content-type@~1.0.4":
|
||||
"resolved" "http://172.16.8.152:7001/content-type/download/content-type-1.0.4.tgz"
|
||||
"version" "1.0.4"
|
||||
|
||||
"cookie-signature@1.0.6":
|
||||
"resolved" "http://172.16.8.152:7001/cookie-signature/download/cookie-signature-1.0.6.tgz"
|
||||
"version" "1.0.6"
|
||||
|
||||
"cookie@0.3.1":
|
||||
"resolved" "http://172.16.8.152:7001/cookie/download/cookie-0.3.1.tgz"
|
||||
"version" "0.3.1"
|
||||
|
||||
"debug@2.6.9":
|
||||
"resolved" "http://172.16.8.152:7001/debug/download/debug-2.6.9.tgz"
|
||||
"version" "2.6.9"
|
||||
dependencies:
|
||||
"ms" "2.0.0"
|
||||
|
||||
"decamelize@^1.1.1":
|
||||
"integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
|
||||
"resolved" "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz"
|
||||
"version" "1.2.0"
|
||||
|
||||
"depd@~1.1.1", "depd@~1.1.2":
|
||||
"resolved" "http://172.16.8.152:7001/depd/download/depd-1.1.2.tgz"
|
||||
"version" "1.1.2"
|
||||
|
||||
"depd@1.1.1":
|
||||
"resolved" "http://172.16.8.152:7001/depd/download/depd-1.1.1.tgz"
|
||||
"version" "1.1.1"
|
||||
|
||||
"destroy@~1.0.4":
|
||||
"resolved" "http://172.16.8.152:7001/destroy/download/destroy-1.0.4.tgz"
|
||||
"version" "1.0.4"
|
||||
|
||||
"ee-first@1.1.1":
|
||||
"resolved" "http://172.16.8.152:7001/ee-first/download/ee-first-1.1.1.tgz"
|
||||
"version" "1.1.1"
|
||||
|
||||
"ejs@^3.1.9":
|
||||
"integrity" "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ=="
|
||||
"resolved" "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz"
|
||||
"version" "3.1.9"
|
||||
dependencies:
|
||||
"jake" "^10.8.5"
|
||||
|
||||
"encodeurl@~1.0.2":
|
||||
"resolved" "http://172.16.8.152:7001/encodeurl/download/encodeurl-1.0.2.tgz"
|
||||
"version" "1.0.2"
|
||||
|
||||
"escape-html@~1.0.3":
|
||||
"resolved" "http://172.16.8.152:7001/escape-html/download/escape-html-1.0.3.tgz"
|
||||
"version" "1.0.3"
|
||||
|
||||
"etag@~1.8.1":
|
||||
"resolved" "http://172.16.8.152:7001/etag/download/etag-1.8.1.tgz"
|
||||
"version" "1.8.1"
|
||||
|
||||
"express@^4.16.3":
|
||||
"resolved" "http://172.16.8.152:7001/express/download/express-4.16.3.tgz"
|
||||
"version" "4.16.3"
|
||||
dependencies:
|
||||
"accepts" "~1.3.5"
|
||||
"array-flatten" "1.1.1"
|
||||
"body-parser" "1.18.2"
|
||||
"content-disposition" "0.5.2"
|
||||
"content-type" "~1.0.4"
|
||||
"cookie" "0.3.1"
|
||||
"cookie-signature" "1.0.6"
|
||||
"debug" "2.6.9"
|
||||
"depd" "~1.1.2"
|
||||
"encodeurl" "~1.0.2"
|
||||
"escape-html" "~1.0.3"
|
||||
"etag" "~1.8.1"
|
||||
"finalhandler" "1.1.1"
|
||||
"fresh" "0.5.2"
|
||||
"merge-descriptors" "1.0.1"
|
||||
"methods" "~1.1.2"
|
||||
"on-finished" "~2.3.0"
|
||||
"parseurl" "~1.3.2"
|
||||
"path-to-regexp" "0.1.7"
|
||||
"proxy-addr" "~2.0.3"
|
||||
"qs" "6.5.1"
|
||||
"range-parser" "~1.2.0"
|
||||
"safe-buffer" "5.1.1"
|
||||
"send" "0.16.2"
|
||||
"serve-static" "1.13.2"
|
||||
"setprototypeof" "1.1.0"
|
||||
"statuses" "~1.4.0"
|
||||
"type-is" "~1.6.16"
|
||||
"utils-merge" "1.0.1"
|
||||
"vary" "~1.1.2"
|
||||
|
||||
"filelist@^1.0.4":
|
||||
"integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="
|
||||
"resolved" "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz"
|
||||
"version" "1.0.4"
|
||||
dependencies:
|
||||
"minimatch" "^5.0.1"
|
||||
|
||||
"finalhandler@1.1.1":
|
||||
"resolved" "http://172.16.8.152:7001/finalhandler/download/finalhandler-1.1.1.tgz"
|
||||
"version" "1.1.1"
|
||||
dependencies:
|
||||
"debug" "2.6.9"
|
||||
"encodeurl" "~1.0.2"
|
||||
"escape-html" "~1.0.3"
|
||||
"on-finished" "~2.3.0"
|
||||
"parseurl" "~1.3.2"
|
||||
"statuses" "~1.4.0"
|
||||
"unpipe" "~1.0.0"
|
||||
|
||||
"forwarded@~0.1.2":
|
||||
"resolved" "http://172.16.8.152:7001/forwarded/download/forwarded-0.1.2.tgz"
|
||||
"version" "0.1.2"
|
||||
|
||||
"fresh@0.5.2":
|
||||
"resolved" "http://172.16.8.152:7001/fresh/download/fresh-0.5.2.tgz"
|
||||
"version" "0.5.2"
|
||||
|
||||
"fs.realpath@^1.0.0":
|
||||
"integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
||||
"resolved" "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
|
||||
"glob@^7.0.5":
|
||||
"integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
|
||||
"resolved" "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
|
||||
"version" "7.2.3"
|
||||
dependencies:
|
||||
"fs.realpath" "^1.0.0"
|
||||
"inflight" "^1.0.4"
|
||||
"inherits" "2"
|
||||
"minimatch" "^3.1.1"
|
||||
"once" "^1.3.0"
|
||||
"path-is-absolute" "^1.0.0"
|
||||
|
||||
"has-flag@^4.0.0":
|
||||
"integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
"resolved" "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz"
|
||||
"version" "4.0.0"
|
||||
|
||||
"hashring@^3.2.0":
|
||||
"integrity" "sha512-xCMovURClsQZ+TR30icCZj+34Fq1hs0y6YCASD6ZqdRfYRybb5Iadws2WS+w09mGM/kf9xyA5FCdJQGcgcraSA=="
|
||||
"resolved" "https://registry.npmmirror.com/hashring/-/hashring-3.2.0.tgz"
|
||||
"version" "3.2.0"
|
||||
dependencies:
|
||||
"connection-parse" "0.0.x"
|
||||
"simple-lru-cache" "0.0.x"
|
||||
|
||||
"http-errors@~1.6.2":
|
||||
"resolved" "http://172.16.8.152:7001/http-errors/download/http-errors-1.6.3.tgz"
|
||||
"version" "1.6.3"
|
||||
dependencies:
|
||||
"depd" "~1.1.2"
|
||||
"inherits" "2.0.3"
|
||||
"setprototypeof" "1.1.0"
|
||||
"statuses" ">= 1.4.0 < 2"
|
||||
|
||||
"http-errors@1.6.2":
|
||||
"resolved" "http://172.16.8.152:7001/http-errors/download/http-errors-1.6.2.tgz"
|
||||
"version" "1.6.2"
|
||||
dependencies:
|
||||
"depd" "1.1.1"
|
||||
"inherits" "2.0.3"
|
||||
"setprototypeof" "1.0.3"
|
||||
"statuses" ">= 1.3.1 < 2"
|
||||
|
||||
"iconv-lite@^0.6.3":
|
||||
"integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="
|
||||
"resolved" "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
|
||||
"version" "0.6.3"
|
||||
dependencies:
|
||||
"safer-buffer" ">= 2.1.2 < 3.0.0"
|
||||
|
||||
"iconv-lite@0.4.19":
|
||||
"resolved" "http://172.16.8.152:7001/iconv-lite/download/iconv-lite-0.4.19.tgz"
|
||||
"version" "0.4.19"
|
||||
|
||||
"inflight@^1.0.4":
|
||||
"integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
|
||||
"resolved" "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz"
|
||||
"version" "1.0.6"
|
||||
dependencies:
|
||||
"once" "^1.3.0"
|
||||
"wrappy" "1"
|
||||
|
||||
"inherits@2", "inherits@2.0.3":
|
||||
"resolved" "http://172.16.8.152:7001/inherits/download/inherits-2.0.3.tgz"
|
||||
"version" "2.0.3"
|
||||
|
||||
"ini@^1.3.0":
|
||||
"integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
||||
"resolved" "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz"
|
||||
"version" "1.3.8"
|
||||
|
||||
"invert-kv@^1.0.0":
|
||||
"integrity" "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ=="
|
||||
"resolved" "https://registry.npmmirror.com/invert-kv/-/invert-kv-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
|
||||
"ipaddr.js@1.6.0":
|
||||
"resolved" "http://172.16.8.152:7001/ipaddr.js/download/ipaddr.js-1.6.0.tgz"
|
||||
"version" "1.6.0"
|
||||
|
||||
"is-fullwidth-code-point@^1.0.0":
|
||||
"integrity" "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw=="
|
||||
"resolved" "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
dependencies:
|
||||
"number-is-nan" "^1.0.0"
|
||||
|
||||
"jake@^10.8.5":
|
||||
"integrity" "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w=="
|
||||
"resolved" "https://registry.npmmirror.com/jake/-/jake-10.8.7.tgz"
|
||||
"version" "10.8.7"
|
||||
dependencies:
|
||||
"async" "^3.2.3"
|
||||
"chalk" "^4.0.2"
|
||||
"filelist" "^1.0.4"
|
||||
"minimatch" "^3.1.2"
|
||||
|
||||
"lcid@^1.0.0":
|
||||
"integrity" "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw=="
|
||||
"resolved" "https://registry.npmmirror.com/lcid/-/lcid-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
dependencies:
|
||||
"invert-kv" "^1.0.0"
|
||||
|
||||
"lodash@^4.17.21":
|
||||
"integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
"resolved" "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
|
||||
"version" "4.17.21"
|
||||
|
||||
"media-typer@0.3.0":
|
||||
"resolved" "http://172.16.8.152:7001/media-typer/download/media-typer-0.3.0.tgz"
|
||||
"version" "0.3.0"
|
||||
|
||||
"merge-descriptors@1.0.1":
|
||||
"resolved" "http://172.16.8.152:7001/merge-descriptors/download/merge-descriptors-1.0.1.tgz"
|
||||
"version" "1.0.1"
|
||||
|
||||
"methods@~1.1.2":
|
||||
"resolved" "http://172.16.8.152:7001/methods/download/methods-1.1.2.tgz"
|
||||
"version" "1.1.2"
|
||||
|
||||
"mime-db@>= 1.34.0 < 2":
|
||||
"resolved" "http://172.16.8.152:7001/mime-db/download/mime-db-1.34.0.tgz"
|
||||
"version" "1.34.0"
|
||||
|
||||
"mime-db@~1.33.0":
|
||||
"resolved" "http://172.16.8.152:7001/mime-db/download/mime-db-1.33.0.tgz"
|
||||
"version" "1.33.0"
|
||||
|
||||
"mime-types@~2.1.18":
|
||||
"resolved" "http://172.16.8.152:7001/mime-types/download/mime-types-2.1.18.tgz"
|
||||
"version" "2.1.18"
|
||||
dependencies:
|
||||
"mime-db" "~1.33.0"
|
||||
|
||||
"mime@1.4.1":
|
||||
"resolved" "http://172.16.8.152:7001/mime/download/mime-1.4.1.tgz"
|
||||
"version" "1.4.1"
|
||||
|
||||
"minimatch@^3.1.1", "minimatch@^3.1.2":
|
||||
"integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
|
||||
"resolved" "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
|
||||
"version" "3.1.2"
|
||||
dependencies:
|
||||
"brace-expansion" "^1.1.7"
|
||||
|
||||
"minimatch@^5.0.1":
|
||||
"integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="
|
||||
"resolved" "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz"
|
||||
"version" "5.1.6"
|
||||
dependencies:
|
||||
"brace-expansion" "^2.0.1"
|
||||
|
||||
"ms@2.0.0":
|
||||
"resolved" "http://172.16.8.152:7001/ms/download/ms-2.0.0.tgz"
|
||||
"version" "2.0.0"
|
||||
|
||||
"nconf@^0.8.5":
|
||||
"integrity" "sha512-YXTpOk2LI4QD2vAr4v40+nELcEbUA5BkIoeIz4Orfx9XA0Gxkkf70+KOvIVNDP2YQBz5XWg7l1zgiPvWb0zTPw=="
|
||||
"resolved" "https://registry.npmmirror.com/nconf/-/nconf-0.8.5.tgz"
|
||||
"version" "0.8.5"
|
||||
dependencies:
|
||||
"async" "^1.4.0"
|
||||
"ini" "^1.3.0"
|
||||
"secure-keys" "^1.0.0"
|
||||
"yargs" "^3.19.0"
|
||||
|
||||
"negotiator@0.6.1":
|
||||
"resolved" "http://172.16.8.152:7001/negotiator/download/negotiator-0.6.1.tgz"
|
||||
"version" "0.6.1"
|
||||
|
||||
"number-is-nan@^1.0.0":
|
||||
"integrity" "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="
|
||||
"resolved" "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz"
|
||||
"version" "1.0.1"
|
||||
|
||||
"on-finished@~2.3.0":
|
||||
"resolved" "http://172.16.8.152:7001/on-finished/download/on-finished-2.3.0.tgz"
|
||||
"version" "2.3.0"
|
||||
dependencies:
|
||||
"ee-first" "1.1.1"
|
||||
|
||||
"on-headers@~1.0.1":
|
||||
"resolved" "http://172.16.8.152:7001/on-headers/download/on-headers-1.0.1.tgz"
|
||||
"version" "1.0.1"
|
||||
|
||||
"once@^1.3.0":
|
||||
"integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
|
||||
"resolved" "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
|
||||
"version" "1.4.0"
|
||||
dependencies:
|
||||
"wrappy" "1"
|
||||
|
||||
"os-locale@^1.4.0":
|
||||
"integrity" "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g=="
|
||||
"resolved" "https://registry.npmmirror.com/os-locale/-/os-locale-1.4.0.tgz"
|
||||
"version" "1.4.0"
|
||||
dependencies:
|
||||
"lcid" "^1.0.0"
|
||||
|
||||
"parseurl@~1.3.2":
|
||||
"resolved" "http://172.16.8.152:7001/parseurl/download/parseurl-1.3.2.tgz"
|
||||
"version" "1.3.2"
|
||||
|
||||
"path-is-absolute@^1.0.0":
|
||||
"integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
|
||||
"resolved" "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
|
||||
"version" "1.0.1"
|
||||
|
||||
"path-to-regexp@0.1.7":
|
||||
"resolved" "http://172.16.8.152:7001/path-to-regexp/download/path-to-regexp-0.1.7.tgz"
|
||||
"version" "0.1.7"
|
||||
|
||||
"proxy-addr@~2.0.3":
|
||||
"resolved" "http://172.16.8.152:7001/proxy-addr/download/proxy-addr-2.0.3.tgz"
|
||||
"version" "2.0.3"
|
||||
dependencies:
|
||||
"forwarded" "~0.1.2"
|
||||
"ipaddr.js" "1.6.0"
|
||||
|
||||
"q@^1.4.1", "q@^1.5.0":
|
||||
"integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
|
||||
"resolved" "https://registry.npmmirror.com/q/-/q-1.5.1.tgz"
|
||||
"version" "1.5.1"
|
||||
|
||||
"qs@6.5.1":
|
||||
"resolved" "http://172.16.8.152:7001/qs/download/qs-6.5.1.tgz"
|
||||
"version" "6.5.1"
|
||||
|
||||
"range-parser@~1.2.0":
|
||||
"resolved" "http://172.16.8.152:7001/range-parser/download/range-parser-1.2.0.tgz"
|
||||
"version" "1.2.0"
|
||||
|
||||
"raw-body@2.3.2":
|
||||
"resolved" "http://172.16.8.152:7001/raw-body/download/raw-body-2.3.2.tgz"
|
||||
"version" "2.3.2"
|
||||
dependencies:
|
||||
"bytes" "3.0.0"
|
||||
"http-errors" "1.6.2"
|
||||
"iconv-lite" "0.4.19"
|
||||
"unpipe" "1.0.0"
|
||||
|
||||
"safe-buffer@5.1.1":
|
||||
"resolved" "http://172.16.8.152:7001/safe-buffer/download/safe-buffer-5.1.1.tgz"
|
||||
"version" "5.1.1"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
"integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
"resolved" "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
"version" "2.1.2"
|
||||
|
||||
"secure-keys@^1.0.0":
|
||||
"integrity" "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg=="
|
||||
"resolved" "https://registry.npmmirror.com/secure-keys/-/secure-keys-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
|
||||
"send@0.16.2":
|
||||
"resolved" "http://172.16.8.152:7001/send/download/send-0.16.2.tgz"
|
||||
"version" "0.16.2"
|
||||
dependencies:
|
||||
"debug" "2.6.9"
|
||||
"depd" "~1.1.2"
|
||||
"destroy" "~1.0.4"
|
||||
"encodeurl" "~1.0.2"
|
||||
"escape-html" "~1.0.3"
|
||||
"etag" "~1.8.1"
|
||||
"fresh" "0.5.2"
|
||||
"http-errors" "~1.6.2"
|
||||
"mime" "1.4.1"
|
||||
"ms" "2.0.0"
|
||||
"on-finished" "~2.3.0"
|
||||
"range-parser" "~1.2.0"
|
||||
"statuses" "~1.4.0"
|
||||
|
||||
"serve-static@1.13.2":
|
||||
"resolved" "http://172.16.8.152:7001/serve-static/download/serve-static-1.13.2.tgz"
|
||||
"version" "1.13.2"
|
||||
dependencies:
|
||||
"encodeurl" "~1.0.2"
|
||||
"escape-html" "~1.0.3"
|
||||
"parseurl" "~1.3.2"
|
||||
"send" "0.16.2"
|
||||
|
||||
"setprototypeof@1.0.3":
|
||||
"resolved" "http://172.16.8.152:7001/setprototypeof/download/setprototypeof-1.0.3.tgz"
|
||||
"version" "1.0.3"
|
||||
|
||||
"setprototypeof@1.1.0":
|
||||
"resolved" "http://172.16.8.152:7001/setprototypeof/download/setprototypeof-1.1.0.tgz"
|
||||
"version" "1.1.0"
|
||||
|
||||
"simple-lru-cache@0.0.x":
|
||||
"integrity" "sha512-uEv/AFO0ADI7d99OHDmh1QfYzQk/izT1vCmu/riQfh7qjBVUUgRT87E5s5h7CxWCA/+YoZerykpEthzVrW3LIw=="
|
||||
"resolved" "https://registry.npmmirror.com/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz"
|
||||
"version" "0.0.2"
|
||||
|
||||
"sprintf-js@~1.0.2":
|
||||
"integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
|
||||
"resolved" "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
|
||||
"version" "1.0.3"
|
||||
|
||||
"statuses@>= 1.3.1 < 2":
|
||||
"resolved" "http://172.16.8.152:7001/statuses/download/statuses-1.5.0.tgz"
|
||||
"version" "1.5.0"
|
||||
|
||||
"statuses@>= 1.4.0 < 2":
|
||||
"resolved" "http://172.16.8.152:7001/statuses/download/statuses-1.5.0.tgz"
|
||||
"version" "1.5.0"
|
||||
|
||||
"statuses@~1.4.0":
|
||||
"resolved" "http://172.16.8.152:7001/statuses/download/statuses-1.4.0.tgz"
|
||||
"version" "1.4.0"
|
||||
|
||||
"string-width@^1.0.1":
|
||||
"integrity" "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw=="
|
||||
"resolved" "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz"
|
||||
"version" "1.0.2"
|
||||
dependencies:
|
||||
"code-point-at" "^1.0.0"
|
||||
"is-fullwidth-code-point" "^1.0.0"
|
||||
"strip-ansi" "^3.0.0"
|
||||
|
||||
"strip-ansi@^3.0.0", "strip-ansi@^3.0.1":
|
||||
"integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg=="
|
||||
"resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz"
|
||||
"version" "3.0.1"
|
||||
dependencies:
|
||||
"ansi-regex" "^2.0.0"
|
||||
|
||||
"supports-color@^7.1.0":
|
||||
"integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
|
||||
"resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
|
||||
"version" "7.2.0"
|
||||
dependencies:
|
||||
"has-flag" "^4.0.0"
|
||||
|
||||
"type-is@~1.6.15", "type-is@~1.6.16":
|
||||
"resolved" "http://172.16.8.152:7001/type-is/download/type-is-1.6.16.tgz"
|
||||
"version" "1.6.16"
|
||||
dependencies:
|
||||
"media-typer" "0.3.0"
|
||||
"mime-types" "~2.1.18"
|
||||
|
||||
"unpipe@~1.0.0", "unpipe@1.0.0":
|
||||
"resolved" "http://172.16.8.152:7001/unpipe/download/unpipe-1.0.0.tgz"
|
||||
"version" "1.0.0"
|
||||
|
||||
"utils-merge@1.0.1":
|
||||
"resolved" "http://172.16.8.152:7001/utils-merge/download/utils-merge-1.0.1.tgz"
|
||||
"version" "1.0.1"
|
||||
|
||||
"vary@~1.1.2":
|
||||
"resolved" "http://172.16.8.152:7001/vary/download/vary-1.1.2.tgz"
|
||||
"version" "1.1.2"
|
||||
|
||||
"window-size@^0.1.4":
|
||||
"integrity" "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw=="
|
||||
"resolved" "https://registry.npmmirror.com/window-size/-/window-size-0.1.4.tgz"
|
||||
"version" "0.1.4"
|
||||
|
||||
"wrap-ansi@^2.0.0":
|
||||
"integrity" "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw=="
|
||||
"resolved" "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz"
|
||||
"version" "2.1.0"
|
||||
dependencies:
|
||||
"string-width" "^1.0.1"
|
||||
"strip-ansi" "^3.0.1"
|
||||
|
||||
"wrappy@1":
|
||||
"integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
"resolved" "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
|
||||
"version" "1.0.2"
|
||||
|
||||
"y18n@^3.2.0":
|
||||
"integrity" "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
|
||||
"resolved" "https://registry.npmmirror.com/y18n/-/y18n-3.2.2.tgz"
|
||||
"version" "3.2.2"
|
||||
|
||||
"yargs@^3.19.0":
|
||||
"integrity" "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg=="
|
||||
"resolved" "https://registry.npmmirror.com/yargs/-/yargs-3.32.0.tgz"
|
||||
"version" "3.32.0"
|
||||
dependencies:
|
||||
"camelcase" "^2.0.1"
|
||||
"cliui" "^3.0.3"
|
||||
"decamelize" "^1.1.1"
|
||||
"os-locale" "^1.4.0"
|
||||
"string-width" "^1.0.1"
|
||||
"window-size" "^0.1.4"
|
||||
"y18n" "^3.2.0"
|
||||
@ -5,7 +5,7 @@ const Components = require("unplugin-vue-components/webpack");
|
||||
const path = require("path");
|
||||
|
||||
module.exports = defineConfig({
|
||||
publicPath: "/syzbh5/",
|
||||
publicPath: "/h5/",
|
||||
transpileDependencies: true,
|
||||
productionSourceMap: false,
|
||||
configureWebpack: {
|
||||
|
||||
171
股牛牛PC.html
171
股牛牛PC.html
@ -1,171 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
|
||||
<title>测试</title>
|
||||
</head>
|
||||
<body>
|
||||
<iframe
|
||||
src="http://192.168.31.164:8081/syzbh5/videoList/?advisorId=53"
|
||||
style="width: 100%; height: 1000px"
|
||||
/>
|
||||
<input
|
||||
type="button"
|
||||
value="埋点上报"
|
||||
onClick="javascript:Click_id();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="获取用户信息包含 name uid+ hqrights"
|
||||
onClick="javascript:authinfo();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="获取用户base信息"
|
||||
onClick="javascript:baseinfo();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="获取用户Guid"
|
||||
onClick="javascript:Guidinfo();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="获取用户Xua"
|
||||
onClick="javascript:Xuainfo();"
|
||||
/><br /><br />
|
||||
|
||||
<input
|
||||
type="button"
|
||||
value="打开WEB页面"
|
||||
onClick="javascript:openwebview();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="弹出登录框"
|
||||
onClick="javascript:Login_web();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="打开个股图"
|
||||
onClick="javascript:open_stk();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="弹出打开网页的弹框"
|
||||
onClick="javascript:popup_web();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="打开指定客户端功能界面"
|
||||
onClick="javascript:go_to();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="通过客户端打开ie浏览器"
|
||||
onClick="javascript:NavigeteToIE();"
|
||||
/><br /><br />
|
||||
<input
|
||||
type="button"
|
||||
value="打开自选股列表界面"
|
||||
onClick="javascript:goto_zx();"
|
||||
/><br /><br />
|
||||
|
||||
<div id="authinfo" style="margin-top: 50px"></div>
|
||||
|
||||
<script src="https://cdn.upchinaproduct.com/test/test/webNativeCommunicatePC-1.js"></script>
|
||||
<script type="text/javascript">
|
||||
function Click_id() {
|
||||
//js命令:click.id 参数:clickid --上报id
|
||||
upNativeComm.exec("click.id", { clickid: "HS07-RQ" });
|
||||
}
|
||||
|
||||
function authinfo() {
|
||||
//js命令:user.info
|
||||
//code 返回码 opt 结果集
|
||||
upNativeComm.exec("user.info", {
|
||||
callback: (code, opt) => {
|
||||
document.getElementById("authinfo").innerHTML =
|
||||
code + "<br/>" + JSON.stringify(opt);
|
||||
},
|
||||
});
|
||||
}
|
||||
function baseinfo() {
|
||||
// js命令:userbase.info
|
||||
//code 返回码 opt 结果集
|
||||
upNativeComm.exec("userbase.info", {
|
||||
callback: (code, opt) => {
|
||||
document.getElementById("authinfo").innerHTML =
|
||||
code + "<br/>" + JSON.stringify(opt);
|
||||
},
|
||||
});
|
||||
}
|
||||
function Guidinfo() {
|
||||
// js命令: cmd.getguid
|
||||
//code 返回码 opt 结果集
|
||||
upNativeComm.exec("cmd.getguid", {
|
||||
callback: (code, opt) => {
|
||||
document.getElementById("authinfo").innerHTML =
|
||||
code + "<br/>" + JSON.stringify(opt);
|
||||
},
|
||||
});
|
||||
}
|
||||
function Xuainfo() {
|
||||
// js命令: cmd.xuadata
|
||||
//code 返回码 opt 结果集
|
||||
upNativeComm.exec("cmd.xuadata", {
|
||||
callback: (code, opt) => {
|
||||
document.getElementById("authinfo").innerHTML =
|
||||
code + "<br/>" + JSON.stringify(opt);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function openwebview() {
|
||||
//js命令: open.web (open.webview) 两个命令都可以 参数:url title popuptype
|
||||
upNativeComm.exec("open.web", {
|
||||
url: "http://baidu.com/",
|
||||
title: "百度",
|
||||
popuptype: 0,
|
||||
});
|
||||
}
|
||||
|
||||
function Login_web() {
|
||||
//js命令:web_user_login 参数: userID pwd loginType
|
||||
upNativeComm.exec("open.loginframe", {
|
||||
userID: "lywxfy",
|
||||
pwd: "888888",
|
||||
loginType: "0",
|
||||
});
|
||||
}
|
||||
|
||||
function open_stk() {
|
||||
//js命令:web_user_login 参数: setcode code type:f10 打开f10 ,其他值则打开个股 , 可选参数 ldtype(指定联动方式) :geguld 指定副屏联动,其他则在主屏打开个股
|
||||
upNativeComm.exec("open.stock", {
|
||||
setcode: "1",
|
||||
code: "000001",
|
||||
type: "个股",
|
||||
});
|
||||
}
|
||||
function popup_web() {
|
||||
//js命令: popup.webwnd 参数:url title 可选参数 type
|
||||
<!-- upNativeComm.exec('popup.webwnd', { url: 'http://baidu.com/' , title:'百度' , type:'0'}); -->
|
||||
upNativeComm.exec("popup.webwnd", { url: "http://baidu.com/" });
|
||||
}
|
||||
function go_to() {
|
||||
//js命令: cmd_goto 参数:func_guid 该参数需要客户端提供具体数值
|
||||
upNativeComm.exec("cmd_goto", {
|
||||
func_guid: "F628C13C-D48D-4C97-BA6A-0480B6937E3D",
|
||||
});
|
||||
}
|
||||
function NavigeteToIE() {
|
||||
//js命令: cmd_navigate 参数:url 注意这里的url不需要 http头部
|
||||
upNativeComm.exec("cmd_navigate", { url: "www.baidu.com/" });
|
||||
}
|
||||
function goto_zx() {
|
||||
//js命令: open.zixuan 该参数需要客户端提供具体数值 这里也可以用go_to 命令 + 自选股对应的id 实现
|
||||
upNativeComm.exec(" open.zixuan");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user