feat: 对接交易圈

This commit is contained in:
kaizheng(郑凯) 2025-02-11 21:47:01 +08:00
parent a84dcb0fc7
commit 06e1822e4d
27 changed files with 284 additions and 3744 deletions

4
package-lock.json generated
View File

@ -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",

View File

@ -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",

View File

@ -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;

View File

@ -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();

View File

@ -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">

View File

@ -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"),
})
}
}
};

View File

@ -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();

View File

@ -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();
}

View File

@ -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")

View File

@ -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,
},
});
}
}

View File

@ -1,191 +0,0 @@
/**
* 判断是否属于app环境内,true是WebViewfalse是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);

View File

@ -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)
}
}

View File

@ -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);

View File

@ -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>

View File

@ -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,
};
}

View File

@ -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>

View File

@ -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

View File

@ -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 {

View File

@ -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);
}

View File

@ -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">

View File

@ -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 {

View File

@ -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}`);
});

File diff suppressed because it is too large Load Diff

View File

@ -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"
}
}

View File

@ -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"

View File

@ -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: {

View File

@ -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 typef10 打开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>