{"_id":"@aibee/vr-label-tool","_rev":"8-b2d9dddefa4cfd900c90fec411428f33","name":"@aibee/vr-label-tool","dist-tags":{"latest":"0.5.17"},"versions":{"0.5.15-rc1":{"name":"@aibee/vr-label-tool","version":"0.5.15-rc1","keywords":["vr","owlly","vr-workshop-devkit"],"author":{"name":"hujingn jyfang"},"license":"ISC","_id":"@aibee/vr-label-tool@0.5.15-rc1","maintainers":[{"name":"hujingn","email":"hujingn@qq.com"},{"name":"jyfang","email":"jyfang@aibee.com"}],"dist":{"shasum":"15756abf5972de30242da44758d52c94db9f515c","tarball":"https://registry.npmjs.org/@aibee/vr-label-tool/-/vr-label-tool-0.5.15-rc1.tgz","fileCount":13,"integrity":"sha512-aoxWKLXWQ+5bsV2UbT4s0EGIxBInF+guBxKCYcufcpK2j4FBqgL+1584/vqpP6tFSbf57gnSl+QeVHPSjboZAg==","signatures":[{"sig":"MEYCIQCJrado5Rf05axHJAA2uJPRwXqrrc3VQTSXAWCKkKE4zwIhAJKVrzDXmZi6D3nUEkCOIuj5c6qtZP05PoVQZ2NZkogT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22078742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbR7VCRA9TVsSAnZWagAAvyAP/2lzQTVBCa2keqegahjc\nATOsObjjOpTbIcSWaNdelYF11P53yrjfmv7yBCx8VYCsV4vR2Msv7wUJzOMf\nbAR09lctZfNj8DoynYPbrk64ppH0Bojzvk5EObS/PhrredcJbR/yozbQUoYV\ndn5rRqm8zpFZJMbk5RhvRVaL/tEaYmln62yDdccbB6HlIOk0LUeAIEzTx2vd\ncY5I5CZ1UVfaWEs4+Bpt434sW84MpELOk2qu98uTohD/PhpdOQF7mBphfEv2\nbexGGCijR4jBr5rVZ90axbClERNfIB27Gm17jKXs7MEDXxm072KusCbT1Z8Q\nlaLwIrXN35C2xKJDH1JAQHEiJ4iv7H5wjL6BxAsJI7HiSAu4PQm0XgvZAgo9\n0c1TeY5hksEG7+QIWArfn2HGC19Fwn/fJolR8sE89ofgeFle4EUg8uHx4yiy\ne3+o3ZkazdBlAvhuIfKEaJhpW4XWj9zVJyHUcO/2lSriQjLm9jtiqgsQGD+x\no+vM5sgdBb4i8IIfXSAApeoWpfrAojF29SZxcBUIyyK+SALloBDOF3HMleHU\nK6Ya6zLM9QwDgqGPOtakO1UlysetGdyUIBo0wZ237wHu8TeTknNH67qQdlgB\nQ4DdhULOImC0jBTh0zTtqyuAR8BbEMQu//GZuVfyGY40jEE9wgur+QgT6Vqv\nYiw7\r\n=Fa5J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/vr-label-tool.umd.min.js","gitHead":"624fbc3b0cc886b4fb5252c9cc193279d55156fe","private":false,"scripts":{"lint":"vue-cli-service lint","build":"vue-cli-service build --target lib --name vr-label-tool --dest lib src/index.js","serve":"vue-cli-service serve"},"_npmUser":{"name":"jyfang","email":"jyfang@aibee.com"},"repository":{"url":"https://code.aibee.cn/ued/vr-label-tool","type":"git"},"_npmVersion":"6.14.11","description":"基于@aibee/vr-workshop-devkit组装的带接口的VR标注工具","directories":{},"lint-staged":{"*.js":["vue-cli-service lint","git add"],"*.vue":["vue-cli-service lint","git add"]},"_nodeVersion":"10.24.0","dependencies":{"vue":"^2.6.11","axios":"^0.21.0","three":"^0.120.1","core-js":"^3.6.5","element-ui":"^2.13.2","vue-router":"^3.2.0","@aibee/owlly":"^0.6.59","lodash.debounce":"^4.0.8","browser-md5-file":"^1.1.1","@aibee/gltf-viewer":"^1.0.1","javascript-state-machine":"^3.1.0","@aibee/vr-workshop-devkit":"^0.5.15"},"_hasShrinkwrap":false,"devDependencies":{"less":"^3.12.2","eslint":"^6.7.2","node-sass":"^4.12.0","stylelint":"^13.12.0","less-loader":"^7.0.2","sass-loader":"^8.0.2","babel-eslint":"^10.1.0","stylelint-scss":"^3.19.0","@vue/cli-service":"~4.5.0","eslint-plugin-vue":"^6.2.2","svg-sprite-loader":"^5.0.0","eslint-plugin-import":"^2.20.2","@vue/cli-plugin-babel":"~4.5.0","vue-template-compiler":"^2.6.11","@vue/cli-plugin-eslint":"~4.5.0","stylelint-webpack-plugin":"^2.1.1","@vue/eslint-config-airbnb":"^5.0.2","stylelint-config-recommended-scss":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vr-label-tool_0.5.15-rc1_1617764052616_0.6797543730013884","host":"s3://npm-registry-packages"}},"0.5.16":{"name":"@aibee/vr-label-tool","version":"0.5.16","keywords":["vr","owlly","vr-workshop-devkit"],"author":{"name":"hujingn jyfang"},"license":"ISC","_id":"@aibee/vr-label-tool@0.5.16","maintainers":[{"name":"hujingn","email":"hujingn@qq.com"},{"name":"jyfang","email":"jyfang@aibee.com"}],"dist":{"shasum":"c544c34ededc282bb7092501bd1881e74a51c8b3","tarball":"https://registry.npmjs.org/@aibee/vr-label-tool/-/vr-label-tool-0.5.16.tgz","fileCount":10,"integrity":"sha512-PpjgqiPyLOV3sYb5RC25oeNUeMcLp2mTAIkRY7qSYc/tkQvkQh7HjBLV36wPxFdSkdDDPsMjLHqR5RY3fnqZlw==","signatures":[{"sig":"MEYCIQDfexcHthuC0f9dC5uVqVaatKJzcW6QVAZY8ShWjdW9uAIhALY6MW+WD35qK6n/heyb/72yWetg5TWedNpRRB4uyNH9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22097944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdRXJCRA9TVsSAnZWagAAJmsP/jKVGIOUX1qSHcZWHk3O\nI8a66GNIdIT4RjWDvIryMO9PtaoikFFx5UcE4SVHSWqnx5X8vF4OufKe6iqn\n0Xf+miKCYEfsn1Z/YYoVvABl/j7vsbIEnLR9TMZ8tzlR6B1bamg1Jgn0kSCL\nw8S+ncLbaJs/T6qver8WJ5sFfX3RwrfXC6zjuTuHWmcy1kBUzW4xFdg/14ki\nXPjii+Iu3DhXrqcutmYFDN+fRECGcfVO8v5BA0nK+EjvJ4wAH6anPPpCwzG2\nBbXSvfgVjvExWHvybKS7b7P1Nj9sB2snn+7YprYQSMW0BsagJ9dgszZUsbSt\n3WFqiRDInRDcfy2sE1sT5/tHXv9IyeLd0BqTAPvOEeYNn4QRi4ocyy0X7LzO\nMtREaZyZooXfa5ztloDFkWmCqHwVzS5WCmqOfDCeyoSecZrJw5pCPcL8S2dz\nPjes3J2BsLR8dAjwcnsw9vmk4rwz6T2XzEQ752fbxhUszDYll4aySvrcf0sk\nubbZfRDlTOMUmlq/tUjW31Sb2KHBBpGbOL/KzBVOf9/OEUBgVbXitx9ar+iX\nAl8WuRwJBE1pPLrCkOxUkHr11Mht5vbotCLnY7BQSnffRavyfTsn7HGPLrWI\nGJUnJXmjv+u8sA8yT6CloZ/ULcyHml/jiEzZ2LReg4ojPYQSwY78g16F+c76\n6hZb\r\n=y7kS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/vr-label-tool.umd.min.js","gitHead":"f9beed62b94398aa16336811070cb40ad27051ac","private":false,"scripts":{"lint":"vue-cli-service lint","build":"vue-cli-service build --target lib --name vr-label-tool --dest lib src/index.js","serve":"vue-cli-service serve"},"_npmUser":{"name":"hujingn","email":"hujingn@qq.com"},"repository":{"url":"https://code.aibee.cn/ued/vr-label-tool","type":"git"},"_npmVersion":"6.9.0","description":"基于@aibee/vr-workshop-devkit组装的带接口的VR标注工具","directories":{},"lint-staged":{"*.js":["vue-cli-service lint","git add"],"*.vue":["vue-cli-service lint","git add"]},"_nodeVersion":"12.6.0","dependencies":{"vue":"^2.6.11","axios":"^0.21.0","three":"^0.120.1","core-js":"^3.6.5","element-ui":"^2.13.2","vue-router":"^3.2.0","@aibee/owlly":"^0.6.59","lodash.debounce":"^4.0.8","browser-md5-file":"^1.1.1","@aibee/gltf-viewer":"^1.0.1","javascript-state-machine":"^3.1.0","@aibee/vr-workshop-devkit":"^0.5.16"},"_hasShrinkwrap":false,"devDependencies":{"less":"^3.12.2","eslint":"^6.7.2","node-sass":"^4.12.0","stylelint":"^13.12.0","less-loader":"^7.0.2","sass-loader":"^8.0.2","babel-eslint":"^10.1.0","stylelint-scss":"^3.19.0","@vue/cli-service":"~4.5.0","eslint-plugin-vue":"^6.2.2","svg-sprite-loader":"^5.0.0","eslint-plugin-import":"^2.20.2","@vue/cli-plugin-babel":"~4.5.0","vue-template-compiler":"^2.6.11","@vue/cli-plugin-eslint":"~4.5.0","stylelint-webpack-plugin":"^2.1.1","@vue/eslint-config-airbnb":"^5.0.2","stylelint-config-recommended-scss":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vr-label-tool_0.5.16_1618286024627_0.954019271429541","host":"s3://npm-registry-packages"}},"0.5.17":{"name":"@aibee/vr-label-tool","version":"0.5.17","keywords":["vr","owlly","vr-workshop-devkit"],"author":{"name":"hujingn jyfang"},"license":"ISC","_id":"@aibee/vr-label-tool@0.5.17","maintainers":[{"name":"hujingn","email":"hujingn@qq.com"},{"name":"jyfang","email":"jyfang@aibee.com"}],"dist":{"shasum":"807a48df76e59839aca290eb00d2de0ab49c1979","tarball":"https://registry.npmjs.org/@aibee/vr-label-tool/-/vr-label-tool-0.5.17.tgz","fileCount":10,"integrity":"sha512-3Vq4ifM+FXv6grK93UEGpgjjpTMK0x0GoeQAR+9eLz/vQqpbn2VgxW79hE8q+TrsVq/UNhL3ZO/xPAMaFlp2FQ==","signatures":[{"sig":"MEUCIQCCTLKFMTb8pblUrkyAKmp2AYdsESZi52znyDdd4K8q8gIgHbxl9BS8jmFevXOZcPAd3RcFxBC6IiTqxM2V+hc8kmA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22097988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdU62CRA9TVsSAnZWagAAAOsP/327O/gfxSPK/3Odsjt/\nLuQ4/kQjlmUJR9lPP/V5bF2EcC1aeQHCDpKdez3KwfmqDg6HdkMo/3YMotkO\nEHYg+RlT5oPJHzTpGH3b51CWWOaQWcJq8meRPPZBJxaVAEz6ob7Biqd7ENuM\ncCGtunUPHIILozWSWhuBjjx8oU7Mvg1WHJ9nfWtltPXnALtHML9HEJ84uC6R\nH59pVpamplT3pCyCOvtkrDT1fc/BJjMafH52EmTPHk+cMGzTiaewZvLKjLwS\nK30PBKGRDyeVdvynZ5WkOBp9WxpnRXddprdYaEM9XIE4YdCyThhkuP1jxRaK\nraoYRAkzplwo5spv0C4HN/YiFhF1VwwJXlg0f9Rblo1NmKKvSwjssA9d6nfK\nkCNYdf26gi9Vv9Kf9n3pHjsHHiTrAhF7JCNUxHrnaFVgjNilDjMlnUT0+n2f\nkBL4hvdbg+ZgNa7XrrgRX0le1jnTF66wqgY7aWsFTYrJmWhCzY0fTWChJ5P6\nfH48Ts//M7e8blDluJf5mffQs8KjJm6jpvjnNW/pCoxFQl6DJfLRwq8+oCn8\nfnzp+6xUSFpz9OSjeIYxWF9nL9Tr/H+qlss/mxpDu00Eb7UjtXHD/3Kf2Q1e\nWge5Vm+CDnq03X3ylQ4LK92XlJCiK+OQ6JBushnbl5TG/reSKAiu7QqPPKns\nCMEo\r\n=sSeN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/vr-label-tool.umd.min.js","gitHead":"0d3afdb858fbd31e3ca88328b866ec69d041e033","private":false,"scripts":{"lint":"vue-cli-service lint","build":"vue-cli-service build --target lib --name vr-label-tool --dest lib src/index.js","serve":"vue-cli-service serve"},"_npmUser":{"name":"hujingn","email":"hujingn@qq.com"},"repository":{"url":"https://code.aibee.cn/ued/vr-label-tool","type":"git"},"_npmVersion":"6.9.0","description":"基于@aibee/vr-workshop-devkit组装的带接口的VR标注工具","directories":{},"lint-staged":{"*.js":["vue-cli-service lint","git add"],"*.vue":["vue-cli-service lint","git add"]},"_nodeVersion":"12.6.0","dependencies":{"vue":"^2.6.11","axios":"^0.21.0","three":"^0.120.1","core-js":"^3.6.5","element-ui":"^2.13.2","vue-router":"^3.2.0","lodash.debounce":"^4.0.8","browser-md5-file":"^1.1.1","javascript-state-machine":"^3.1.0","@aibee/vr-workshop-devkit":"^0.5.16"},"_hasShrinkwrap":false,"devDependencies":{"less":"^3.12.2","eslint":"^6.7.2","node-sass":"^4.12.0","stylelint":"^13.12.0","less-loader":"^7.0.2","sass-loader":"^8.0.2","@aibee/owlly":"^0.6.59","babel-eslint":"^10.1.0","stylelint-scss":"^3.19.0","@vue/cli-service":"~4.5.0","eslint-plugin-vue":"^6.2.2","svg-sprite-loader":"^5.0.0","@aibee/gltf-viewer":"^1.0.1","eslint-plugin-import":"^2.20.2","@vue/cli-plugin-babel":"~4.5.0","vue-template-compiler":"^2.6.11","@vue/cli-plugin-eslint":"~4.5.0","stylelint-webpack-plugin":"^2.1.1","@vue/eslint-config-airbnb":"^5.0.2","stylelint-config-recommended-scss":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vr-label-tool_0.5.17_1618300597529_0.383323185297084","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-04-07T02:54:12.366Z","modified":"2025-07-09T08:57:08.517Z","0.5.15-rc1":"2021-04-07T02:54:12.996Z","0.5.16":"2021-04-13T03:53:44.935Z","0.5.17":"2021-04-13T07:56:37.807Z"},"author":{"name":"hujingn jyfang"},"license":"ISC","keywords":["vr","owlly","vr-workshop-devkit"],"repository":{"url":"https://code.aibee.cn/ued/vr-label-tool","type":"git"},"description":"基于@aibee/vr-workshop-devkit组装的带接口的VR标注工具","maintainers":[{"email":"jyfang@aibee.com","name":"jyfang"},{"email":"hujingn@qq.com","name":"hujingn"},{"email":"wukang0718@163.com","name":"wukang0718"},{"email":"kxiao@aibee.com","name":"kxiaoaibee"},{"email":"jdzou@aibee.com","name":"yfdjcxj"},{"email":"j15712551103@163.com","name":"zcjia"}],"readme":"# vr-label-tool\n\n通用VR标注工具\n\n## Install\n\n```shell\n# $ npm config set @aibee:registry https://npm.aibee.cn\n$ npm i -S @aibee/vr-label-tool\n```\n\n## Usage Use Component\n使用组件的方式\n使用示例  \nhttps://code.aibee.cn/ued/vr-label-tool/-/tree/master/examples\n\n1、组件注册和配置\n```javascript\nimport VRLabelTool from \"@aibee/vr-label-tool\";\n\n// 这里可以重写接口请求 https://code.aibee.cn/ued/vr-label-tool/-/tree/master/src/labeling-tool/api\nimport * as api from \"@/api/label-tools\";\n// 自定义内容弹框配置数组, 参考(https://code.aibee.cn/robot-fe/owlly/vr-workshop-devkit)customContentTypes\nimport contentEditor from './content-editor'; \n// 自定义内容弹框预览组件，组件内type=内容配置contentEditor类型type，例如：14\nimport contentViews from './content-views';\n// defaultTool 默认显示的工具类型\n// omitTools 隐藏的工具类型列表\nVue.use(LabelTool, {\n  api,\n  defaultTool: 'imgTextLabel',\n  omitTools: [],\n  contentEditor,\n  contentViews,\n  // 点击工具左下角预览按钮弹出链接 ${xxx} xxx为getProjectVrId项目接口字段\n  previewUrl: 'https://xxx.aibee.cn/preview/${id}?floor_id=${floor_id}',\n});\n```\n工具类型列表\n```code\n{ name: 'viewingAngle', text: '视角设置' },\n{ name: 'pointVisibility', text: '可见性' },\n{ name: 'hotspot', text: '漫游热点' },\n{ name: 'imgTextLabel', text: '标签标注' },\n{ name: 'signLabel', text: '标牌标注' },\n{ name: 'ruler', text: '标尺标注' },\n```\n重写api接口，所有请求详见 examples/api-test.js\n```javascript\nimport request from '@/utils/request';\n\n// 基础接口，所有请求都会基于此请求\nexport async function baseRequest(path, payload, method) {\n  return request({\n    url: `/admin/${path}`,\n    method,\n    data: ['get', 'delete'].includes(method) ? null : payload,\n    params: ['get', 'delete'].includes(method) ? payload : null,\n  });\n}\n// 上传base64图片\nexport function uploadThumb(filename, base64) {\n  console.log(filename, base64);\n  return { data: {\"url\": 'xxx'} };\n}\n// 项目查询接口，需组装成结构{data:[{id,vrId,title}]}\nexport function queryProjectList(params) {\n  return baseRequest('expo/query/v1', params, 'get').then((res) => ({ data: res.data.list }));\n}\n// 模拟小地图数据（提供此接口后可显示小地图）\nexport function queryPlaceMap(params) {\n  return {\n    data: {\n      floor_cmap: 'https://....svg',\n      floor_cmap_align_param: '{\"scale2D\": 1,...}',\n    },\n    error_msg: '',\n    error_no: 0,\n  };\n}\n```\n\n2、添加路由\n```javascript\nimport { VRLabelTool, VRPreview } from \"@aibee/vr-label-tool\";\nimport TestLabelTool from './TestLabelTool.vue';\n// 不使用自定义组件，使用params参数:projectId，组件内部使用了projectId\n// 其他query参数可选version、disabled等\n// 使用自定义组件，使用api-params传参\n{\n  path: \"/:projectId\",\n  name: \"Project\",\n  component: VRLabelTool\n},\n{\n  path: \"/preview/:projectId\",\n  name: \"Preview\",\n  component: VRPreview\n}\n{\n  path: '/test',\n  component: TestLabelTool,\n},\n```\n\n3、使用自定义组件\n```vue\n<template>\n  <div>\n    <VRLabelTool :api-params=\"apiParams\">\n      <template v-slot:resource2=\"{srcType, visible, closeResource, loadResource}\">\n        <ElementSelector v-if=\"visible\"\n                         :src-type=\"srcType\"\n                         :visible=\"visible\"\n                         :close-resource=\"closeResource\"\n                         :load-resource=\"loadResource\"\n        ></ElementSelector>\n      </template>\n    </VRLabelTool>\n  </div>\n</template>\n\n<script>\nimport { VRLabelTool, EventHub } from '../src/index';\nimport ElementSelector from './components/element-selector.vue';\n\nexport default {\n  components: { VRLabelTool, ElementSelector },\n  data() {\n    return {\n      apiParams: {\n        projectId: 'f-80-353',\n      },\n    };\n  },\n  mounted() {\n    // VR组件加载完成事件\n    EventHub.$on('stageInited', this.stageInited);\n    // 标注组件加载完成事件\n    EventHub.$on('labelingToolInited', this.labelingToolInited);\n    // 保存事件前置事件，可return Promise.reject();阻止保存\n    EventHub.onBeforeEvent = this.onBeforeEvent;\n    // 保存事件完成后的事件\n    EventHub.onAfterEvent = this.onAfterEvent;\n  },\n  methods: {\n    async onBeforeEvent(name, data) {\n      console.log('onBeforeEvent', name, data);\n      // 如果想阻止保存 return Promise.reject();\n      return Promise.resolve();\n    },\n    async onAfterEvent(name, data) {\n      // 更新或者创建初始视角时，更新封面\n      console.log('onAfterEvent', name, data);\n    },\n    labelingToolInited(tool) {\n      console.log(tool);\n    },\n    // VR加载完成事件\n    stageInited(stage) {\n      console.log(stage);\n    },\n  },\n};\n</script>\n```\n\n4、资源位选择，需要提供 作用域插槽 v-slot:resource=\"{srcType, visible, closeResource, loadResource}\"\n\n|参数|说明|属性/方法参数|\n|:--|:--|:--|\n|srcType|资源类型（image、video、model）|-|\n|visible|弹框可见性|-|\n|closeResource|关闭弹框事件|-|\n|loadResource|确定选择资源|{ srcType: '资源类型', url: '资源地址', thumbnailUrl: '资源缩略图', title: '资源标题' }|\n\n## Update\n\n```shell\n$ npm i @aibee/vr-label-tool@latest\n```\n","readmeFilename":"README.md"}