提交 e788ab7b authored 作者: lhh's avatar lhh
......@@ -288,6 +288,10 @@
"useParentElement": true,
"usePerformanceObserver": true,
"watchDeep": true,
"watchImmediate": true
"watchImmediate": true,
"ExtractDefaultPropTypes": true,
"ExtractPropTypes": true,
"ExtractPublicPropTypes": true,
"WritableComputedRef": true
}
}
......@@ -291,5 +291,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue')
}
......@@ -10,5 +10,6 @@
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<script src="https://webapp-pub.ezijing.com/plugins/sky-agents/sky-agent.umd.cjs?v=1"></script>
</body>
</html>
......@@ -16,6 +16,7 @@
"axios": "^1.5.0",
"blueimp-md5": "^2.19.0",
"echarts": "^5.4.3",
"echarts-wordcloud": "^2.1.0",
"element-plus": "^2.3.14",
"lodash-es": "^4.17.21",
"nanoid": "^4.0.2",
......@@ -28,7 +29,7 @@
"@rushstack/eslint-patch": "^1.2.0",
"@types/blueimp-md5": "^2.18.0",
"@types/node": "^20.3.1",
"@vitejs/plugin-vue": "^4.3.4",
"@vitejs/plugin-vue": "^4.6.2",
"@vue/eslint-config-typescript": "^12.0.0",
"@vue/tsconfig": "^0.1.3",
"ali-oss": "^6.18.1",
......@@ -37,8 +38,8 @@
"eslint-plugin-vue": "^9.17.0",
"sass": "^1.67.0",
"typescript": "~4.9.5",
"unplugin-auto-import": "^0.16.6",
"vite": "^4.4.9",
"unplugin-auto-import": "^0.16.7",
"vite": "^4.5.2",
"vue-tsc": "^1.8.11"
}
},
......@@ -1295,9 +1296,9 @@
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"node_modules/@rollup/pluginutils": {
"version": "5.0.2",
"resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
"integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
"integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
"dev": true,
"dependencies": {
"@types/estree": "^1.0.0",
......@@ -1308,7 +1309,7 @@
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0||^3.0.0"
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
......@@ -1571,15 +1572,15 @@
}
},
"node_modules/@vitejs/plugin-vue": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz",
"integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==",
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
"integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
"dev": true,
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
"vite": "^4.0.0",
"vite": "^4.0.0 || ^5.0.0",
"vue": "^3.2.25"
}
},
......@@ -2007,9 +2008,9 @@
}
},
"node_modules/acorn": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
......@@ -2321,9 +2322,9 @@
}
},
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.2",
......@@ -2337,6 +2338,9 @@
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
......@@ -2721,6 +2725,14 @@
"zrender": "5.4.4"
}
},
"node_modules/echarts-wordcloud": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz",
"integrity": "sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==",
"peerDependencies": {
"echarts": "^5.0.1"
}
},
"node_modules/echarts/node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
......@@ -3170,9 +3182,9 @@
"dev": true
},
"node_modules/fast-glob": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
......@@ -3878,6 +3890,8 @@
"resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
"integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=14"
}
......@@ -3964,9 +3978,9 @@
}
},
"node_modules/magic-string": {
"version": "0.30.3",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
"integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
"version": "0.30.8",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
"integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
......@@ -4132,15 +4146,15 @@
}
},
"node_modules/mlly": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.4.0.tgz",
"integrity": "sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz",
"integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==",
"dev": true,
"dependencies": {
"acorn": "^8.9.0",
"pathe": "^1.1.1",
"acorn": "^8.11.3",
"pathe": "^1.1.2",
"pkg-types": "^1.0.3",
"ufo": "^1.1.2"
"ufo": "^1.3.2"
}
},
"node_modules/mri": {
......@@ -4387,9 +4401,9 @@
}
},
"node_modules/pathe": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.1.tgz",
"integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
"dev": true
},
"node_modules/pause-stream": {
......@@ -4746,9 +4760,9 @@
"dev": true
},
"node_modules/scule": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/scule/-/scule-1.0.0.tgz",
"integrity": "sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
"integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
"dev": true
},
"node_modules/sdk-base": {
......@@ -5078,9 +5092,9 @@
}
},
"node_modules/ufo": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.1.2.tgz",
"integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz",
"integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==",
"dev": true
},
"node_modules/unctx": {
......@@ -5135,22 +5149,24 @@
}
},
"node_modules/unimport": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/unimport/-/unimport-3.1.3.tgz",
"integrity": "sha512-up4TE2yA+nMyyErGTjbYGVw95MriGa2hVRXQ3/JRp7984cwwqULcnBjHaovVpsO8tZc2j0fvgGu9yiBKOyxvYw==",
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz",
"integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.2",
"@rollup/pluginutils": "^5.1.0",
"acorn": "^8.11.2",
"escape-string-regexp": "^5.0.0",
"fast-glob": "^3.3.1",
"local-pkg": "^0.4.3",
"magic-string": "^0.30.2",
"mlly": "^1.4.0",
"estree-walker": "^3.0.3",
"fast-glob": "^3.3.2",
"local-pkg": "^0.5.0",
"magic-string": "^0.30.5",
"mlly": "^1.4.2",
"pathe": "^1.1.1",
"pkg-types": "^1.0.3",
"scule": "^1.0.0",
"scule": "^1.1.1",
"strip-literal": "^1.3.0",
"unplugin": "^1.4.0"
"unplugin": "^1.5.1"
}
},
"node_modules/unimport/node_modules/escape-string-regexp": {
......@@ -5165,32 +5181,60 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/unimport/node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
"dependencies": {
"@types/estree": "^1.0.0"
}
},
"node_modules/unimport/node_modules/local-pkg": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
"integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
"dev": true,
"dependencies": {
"mlly": "^1.4.2",
"pkg-types": "^1.0.3"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/unplugin": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.4.0.tgz",
"integrity": "sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz",
"integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==",
"dev": true,
"dependencies": {
"acorn": "^8.9.0",
"chokidar": "^3.5.3",
"acorn": "^8.11.3",
"chokidar": "^3.6.0",
"webpack-sources": "^3.2.3",
"webpack-virtual-modules": "^0.5.0"
"webpack-virtual-modules": "^0.6.1"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/unplugin-auto-import": {
"version": "0.16.6",
"resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.6.tgz",
"integrity": "sha512-M+YIITkx3C/Hg38hp8HmswP5mShUUyJOzpifv7RTlAbeFlO2Tyw0pwrogSSxnipHDPTtI8VHFBpkYkNKzYSuyA==",
"version": "0.16.7",
"resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz",
"integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==",
"dev": true,
"dependencies": {
"@antfu/utils": "^0.7.5",
"@rollup/pluginutils": "^5.0.2",
"fast-glob": "^3.3.0",
"local-pkg": "^0.4.3",
"magic-string": "^0.30.1",
"minimatch": "^9.0.2",
"unimport": "^3.0.14",
"unplugin": "^1.3.2"
"@antfu/utils": "^0.7.6",
"@rollup/pluginutils": "^5.0.5",
"fast-glob": "^3.3.1",
"local-pkg": "^0.5.0",
"magic-string": "^0.30.5",
"minimatch": "^9.0.3",
"unimport": "^3.4.0",
"unplugin": "^1.5.0"
},
"engines": {
"node": ">=14"
......@@ -5220,6 +5264,22 @@
"balanced-match": "^1.0.0"
}
},
"node_modules/unplugin-auto-import/node_modules/local-pkg": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
"integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
"dev": true,
"dependencies": {
"mlly": "^1.4.2",
"pkg-types": "^1.0.3"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/unplugin-auto-import/node_modules/minimatch": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
......@@ -5347,9 +5407,9 @@
}
},
"node_modules/vite": {
"version": "4.4.9",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
"integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
"integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==",
"dev": true,
"dependencies": {
"esbuild": "^0.18.10",
......@@ -5552,9 +5612,9 @@
}
},
"node_modules/webpack-virtual-modules": {
"version": "0.5.0",
"resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
"integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
"integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==",
"dev": true
},
"node_modules/which": {
......
......@@ -23,6 +23,7 @@
"axios": "^1.5.0",
"blueimp-md5": "^2.19.0",
"echarts": "^5.4.3",
"echarts-wordcloud": "^2.1.0",
"element-plus": "^2.3.14",
"lodash-es": "^4.17.21",
"nanoid": "^4.0.2",
......@@ -35,7 +36,7 @@
"@rushstack/eslint-patch": "^1.2.0",
"@types/blueimp-md5": "^2.18.0",
"@types/node": "^20.3.1",
"@vitejs/plugin-vue": "^4.3.4",
"@vitejs/plugin-vue": "^4.6.2",
"@vue/eslint-config-typescript": "^12.0.0",
"@vue/tsconfig": "^0.1.3",
"ali-oss": "^6.18.1",
......@@ -44,8 +45,8 @@
"eslint-plugin-vue": "^9.17.0",
"sass": "^1.67.0",
"typescript": "~4.9.5",
"unplugin-auto-import": "^0.16.6",
"vite": "^4.4.9",
"unplugin-auto-import": "^0.16.7",
"vite": "^4.5.2",
"vue-tsc": "^1.8.11"
}
}
......@@ -21,12 +21,20 @@ export function createMember(data: { name: string; status: string; experiment_co
}
// 删除用户
export function deleteMember(data: { ids: string; }) {
export function deleteMember(data: { ids: string }) {
return httpRequest.post('/api/lab/v1/experiment/member/delete', data)
}
// 新建用户
export function updateMember(data: { id?: string; name: string; status: string; experiment_connection_id: string; gender: string; mobile: string; fields: string }) {
export function updateMember(data: {
id?: string
name: string
status: string
experiment_connection_id: string
gender: string
mobile: string
fields: string
}) {
return httpRequest.post('/api/lab/v1/experiment/member/update', data)
}
......@@ -56,12 +64,12 @@ export function deleteEvent(data: { id: string }) {
}
// 用户画像
export function getMemberImage(params: { id: string }) {
return httpRequest.get('/api/lab/v1/experiment/member/member-image', { params })
export function getMemberImage(params: { id: string; connection_id?: string; page?: number; 'per-page'?: number }) {
return httpRequest.get('/api/lab/v1/experiment/member/member-image1', { params })
}
// 导入事件
export function importEvent(data: { event_id: string; url: string, name: string, size: string }) {
export function importEvent(data: { event_id: string; url: string; name: string; size: string }) {
return httpRequest.post('/api/lab/v1/experiment/member/event-upload', data)
}
......@@ -71,7 +79,7 @@ export function importEvent(data: { event_id: string; url: string, name: string,
// headers: { 'Content-Type': 'multipart/form-data' }
// })
// }
export function importMember(data: { groups_id?: string; connection_id: string; url: string, name: string, size: string }) {
export function importMember(data: { groups_id?: string; connection_id: string; url: string; name: string; size: string }) {
return httpRequest.post('/api/lab/v1/experiment/member/member-upload', data)
}
......@@ -84,3 +92,7 @@ export function getMemberGroups() {
export function getProgress(params: { page?: number; 'per-page'?: number }) {
return httpRequest.get('/api/lab/v1/experiment/member/tasks', { params })
}
export function getConnectionList() {
return httpRequest.get('/api/lab/v1/experiment/member/connections')
}
......@@ -59,6 +59,7 @@ export interface ImageProp {
status: string
updated_time: string
tags: string[]
history_tags: string[]
static_groups: string[]
dynamic_groups: string[]
events: {
......@@ -70,5 +71,3 @@ export interface ImageProp {
}[]
}
}
<script setup lang="ts">
// import { UserFilled } from '@element-plus/icons-vue'
import { getMemberImage, getMemberFieldsList } from '../api'
import type { MemberFieldsProp, ImageProp } from '../types'
import { getMemberImage, getMemberFieldsList, getConnectionList } from '../api'
import type { MemberFieldsProp, ImageProp, ConnectionsProp } from '../types'
import Icon from '@/components/ConnectionIcon.vue'
const ViewEvent = defineAsyncComponent(() => import('@/components/ViewEvent.vue'))
const route = useRoute()
const userId = computed(() => {
return route.query.user_id as string
})
// 画像数据
let data = $ref<ImageProp>()
// 属性
let fieldsList = $ref<MemberFieldsProp[]>([])
onMounted(() => {
// 画像
getMemberImage({ id: route.query.user_id as '' }).then(res => {
getMemberImage({ id: userId.value, 'per-page': 100 }).then(res => {
data = res.data
getFields(res.data)
})
......@@ -44,6 +48,33 @@ function handleViewEvent(item: any) {
viewEventVisible.value = true
currentViewEvent.value = item
}
// 获取链接
const connectionList = ref<ConnectionsProp[]>([])
const currentConnection = ref('')
async function fetchConnections() {
const { data } = await getConnectionList()
connectionList.value = data
if (data.length) {
currentConnection.value = data[0]?.id
}
}
onMounted(() => {
fetchConnections()
})
const event: any = reactive({ page: 1, total: 0, list: [] })
async function fetchEvent(isReset = false) {
if (isReset) {
Object.assign(event, { page: 1, total: 0, list: [] })
}
const { data } = await getMemberImage({ id: userId.value, connection_id: currentConnection.value, page: event.page, 'per-page': 20 })
Object.assign(event, { page: event.page + 1, total: data.events.total, list: [...event.list, ...data.events.list] })
console.log(event)
}
watch(currentConnection, () => {
fetchEvent(true)
})
</script>
<template>
......@@ -51,7 +82,8 @@ function handleViewEvent(item: any) {
<div class="info-box" v-if="data">
<div class="info-name" style="min-width: 300px">
<div class="tx">
<img :src="data.gender === '1' ? 'https://webapp-pub.ezijing.com/pages/assa/dml_boy.png' : 'https://webapp-pub.ezijing.com/pages/assa/dml_girl.png'" />
<img
:src="data.gender === '1' ? 'https://webapp-pub.ezijing.com/pages/assa/dml_boy.png' : 'https://webapp-pub.ezijing.com/pages/assa/dml_girl.png'" />
<!-- https://webapp-pub.ezijing.com/pages/assa/dml_boy.png -->
<!-- <el-icon :size="50" color="#fff"><UserFilled /></el-icon> -->
</div>
......@@ -80,7 +112,7 @@ function handleViewEvent(item: any) {
</AppCard>
<div class="card-box">
<AppCard class="card" style="overflow-y: scroll" title="用户属性">
<div style="display: flex; justify-content: center; padding-right: 20px" v-if="data">
<div style="display: flex; justify-content: center" v-if="data">
<el-form label-suffix=":" label-width="auto">
<el-form-item label="链接来源">{{ data.connection_name }}</el-form-item>
<el-form-item label="姓名">{{ data.name }}</el-form-item>
......@@ -95,9 +127,9 @@ function handleViewEvent(item: any) {
</el-form>
</div>
</AppCard>
<AppCard class="card" title="标签与群组">
<AppCard class="card" title="用户标签">
<el-tabs class="demo-tabs">
<el-tab-pane label="用户标签">
<el-tab-pane label="当前标签">
<div class="scroll" v-if="data?.tags && data.tags.length">
<el-tag class="ml-2" type="success" v-for="(item, index) in data.tags" :key="index">{{ item }}</el-tag>
</div>
......@@ -105,7 +137,17 @@ function handleViewEvent(item: any) {
</el-tab-pane>
</el-tabs>
<el-tabs class="demo-tabs">
<el-tab-pane label="静态分组">
<el-tab-pane label="历史标签">
<div class="scroll" v-if="data?.history_tags && data.history_tags.length">
<el-tag class="ml-2" type="success" v-for="(item, index) in data.history_tags" :key="index">{{ item }}</el-tag>
</div>
<el-empty description="暂无数据" :image-size="80" v-else />
</el-tab-pane>
</el-tabs>
</AppCard>
<AppCard class="card" title="用户分群">
<el-tabs class="demo-tabs">
<el-tab-pane label="静态群组">
<div class="scroll" v-if="data?.static_groups && data.static_groups.length">
<el-tag class="ml-2" type="success" v-for="(item, index) in data.static_groups" :key="index">{{ item }}</el-tag>
</div>
......@@ -113,7 +155,7 @@ function handleViewEvent(item: any) {
</el-tab-pane>
</el-tabs>
<el-tabs class="demo-tabs">
<el-tab-pane label="动态组">
<el-tab-pane label="动态组">
<div class="scroll" v-if="data?.dynamic_groups && data.dynamic_groups.length">
<el-tag class="ml-2" type="success" v-for="(item, index) in data.dynamic_groups" :key="index">{{ item }}</el-tag>
</div>
......@@ -122,8 +164,11 @@ function handleViewEvent(item: any) {
</el-tabs>
</AppCard>
<AppCard class="card" title="用户行为轨迹">
<template v-if="data?.events.list && data.events.list.length">
<div class="event-box" v-for="(item, index) in data.events.list" :key="index">
<el-radio-group v-model="currentConnection">
<el-radio-button :label="item.id" v-for="item in connectionList" :key="item.id">{{ item.type_name }}</el-radio-button>
</el-radio-group>
<template v-if="event.list.length">
<div class="event-box" v-for="(item, index) in event.list" :key="index">
<div class="date">{{ item.updated_time?.slice(0, item.updated_time.indexOf(' ')) }}</div>
<div class="event-content">
<div class="time">
......@@ -135,8 +180,12 @@ function handleViewEvent(item: any) {
<span>"{{ item.connection_name }}"</span>
<span style="cursor: pointer" @click="handleViewEvent(item)">"{{ item.event_name }}"</span>
</div>
<el-button @click="handleViewEvent(item)">详情</el-button>
</div>
</div>
<el-row justify="center" style="margin: 20px">
<el-button @click="fetchEvent()" v-if="event.total > event.list.length">更多行为</el-button>
</el-row>
</template>
<el-empty description="暂无数据" :image-size="80" v-else />
</AppCard>
......@@ -177,11 +226,11 @@ function handleViewEvent(item: any) {
}
.card-box {
display: flex;
column-gap: 10px;
.card {
flex: 1;
margin-top: 0;
height: 90vh;
margin-right: 10px;
height: 80vh;
.demo-tabs {
height: 26vh;
}
......@@ -210,5 +259,8 @@ function handleViewEvent(item: any) {
color: #ba143e;
font-weight: bold;
}
.event {
flex: 1;
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论