@cntransun/gbos

中文文档
0.1.68发布于 2026/11/10MITESM + CJS近 30 天下载 6884

G-BOS shared Vue components

原始使用文档
文档目录20 节
  1. 安装
  2. 接入
  3. 组件
  4. VehicleTreePanel
  5. VehicleTreeSelect
  6. VirtualTreeSelect
  7. CompanyTreePanel
  8. CompanyTreeSelect
  9. CustomMap
  10. ResizablePanel
  11. CustomDatePicker
  12. CustomDatetimePicker
  13. CustomEchart
  14. TableColumnSetting
  15. CustomDialog
  16. 方法
  17. $centerAlert
  18. showVersionUpdate()
  19. showVehicleExpiredStatus()
  20. showVehicleScrappedStatus()

@cntransun/gbos

G-BOS 前端公共组件库。

安装

npm install @cntransun/gbos element-plus @element-plus/icons-vue

使用地图相关组件时,还需安装:

npm install maptalks maptalks.markercluster @maptalks/gl @maptalks/vt

使用图表组件时,还需安装:

npm install echarts

Peer 依赖:vue ^3.5、element-plus ^2.14、@element-plus/icons-vue ^2.3;地图相关为 maptalks、maptalks.markercluster、@maptalks/gl、@maptalks/vt;图表为 echarts >=5.5。

接入

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { install } from '@cntransun/gbos'
import '@cntransun/gbos/style.css'
import request from '@/utils/request'

const app = createApp(App)

app.use(ElementPlus)
app.use({ install }, {
  request, // 必填,与宿主 HTTP 封装一致
  locale: getLocale, // 可选:'zh_CN' | 'en_US',或返回上述值的函数
})
install 参数说明
request必填,请求方法
locale可选,zh_CN / en_US 或 () => locale;未传则读 localStorage['app-locale']

安装后全局注册:VehicleTreePanel、VehicleTreeSelect、VirtualTreeSelect、CompanyTreePanel、CompanyTreeSelect、CustomMap、ResizablePanel、CustomDatePicker、CustomDatetimePicker、CustomVirtualTree、CustomEchart、TableColumnSetting、CustomDialog。

同时挂到原型:this.$centerAlert(居中提示)、this.$modal(顶部提示和确认框)。宿主在 install 之前已经设置过 $modal 时,保留宿主的,不覆盖。

this.$modal 方法:msg、msgSuccess、msgError、msgWarning、confirm、alert。消息和弹框会挂到无界主应用的 body。也可 import { modal } from '@cntransun/gbos' 自行挂载。

也可按需具名导入:

import {
  VehicleTreePanel,
  VehicleTreeSelect,
  VirtualTreeSelect,
  CompanyTreePanel,
  CompanyTreeSelect,
  CustomMap,
  ResizablePanel,
  CustomDatePicker,
  CustomDatetimePicker,
  CustomVirtualTree,
  CustomEchart,
  TableColumnSetting,
  CustomDialog,
  centerAlert,
  modal,
  showVehicleExpiredStatus,
  showVehicleScrappedStatus,
  showVersionUpdate,
} from '@cntransun/gbos'

组件

VehicleTreePanel

车辆组织树面板(全部 / 收藏 / 分组)。

标签: <vehicle-tree-panel>

Prop类型默认值说明
multipleBooleantrue是否多选;false 时不显示复选框,点击车辆即选中
borderBooleantrue是否显示 tabs 外边框
onlyAllBooleanfalse仅显示「全部」树,不展示收藏/分组 Tab
showCheckLinkSwitchBooleanfalse「全部」树是否显示父子联动开关
showSummaryBooleantrue「全部」树是否显示车辆汇总(顶栏快捷筛选 + 筛选面板内汇总)
showChannelBooleantrue是否显示视频通道
事件说明
check{ vehicles, channels, raw, tab }
nodeClick{ vehicles, channels, tab }
nodeDblClick{ vehicles, channels, tab }
ready「全部」树数据和虚拟树 DOM 挂载完成。组织列表为空时不触发;数据刷新后会再次触发。适合在回调里调用 setCurrentHighlightVehicle
方法(ref)说明
setCheckVehicles(vehicleIds)在「全部」Tab 追加勾选车辆
clearCheckVehicles()清除「全部」Tab 勾选
getCheckedVehicles()返回「全部」Tab 当前选中的车辆数组。多选含半选(只勾了部分通道);单选为当前高亮车辆。不在「全部」Tab 时返回 []
filterByVehicleIds(vehicleIds)「全部」Tab 只显示传入的车辆 id。传 null 取消这层过滤。关键字、汇总筛选仍然同时生效
setCurrentHighlightVehicle(vehicleId)仅单选、且当前为「全部」Tab。展开父组织、滚动到该行,并在树顶显示可关闭的「当前车辆」条
setTabActive(tab)设置 Tab:all / favorite / group
<vehicle-tree-panel
  :show-check-link-switch="true"
  :show-summary="true"
  @check="onCheck"
/>

VehicleTreeSelect

车辆树下拉选择(Popover + 树)。

标签: <vehicle-tree-select>

Prop类型默认值说明
modelValue / v-modelString | Array''单选:vehicleId;多选:vehicleId[]
placeholderString''空则使用包内「请选择车辆」文案
clearableBooleantrue是否可清空
disabledBooleanfalse是否禁用
multipleBooleantrue是否多选
showCheckLinkSwitchBooleanfalse「全部」树是否显示父子联动开关
widthString | Number200输入框宽度
popoverWidthNumber320下拉面板宽度(px)
popoverHeightNumber420下拉面板高度(px)
appendToString | Objectundefined下拉挂载节点
事件说明
update:modelValue选中值变化
change{ value, vehicles, tab? }

外部修改 v-model 时,只同步当前 Tab(全部 / 收藏 / 分组)的勾选,其它 Tab 保持原样。

<vehicle-tree-select v-model="vehicleIds" multiple />

VirtualTreeSelect

通用虚拟化树形下拉(单选 / 多选)。

标签: <virtual-tree-select>

Prop类型默认值说明
modelValue / v-modelString | Number | Arrayundefined选中值;多选为数组
dataArray[]树数据
propsObject{}字段映射:{ value, label, children, disabled }
placeholderString'请选择'占位文案
clearableBooleantrue是否可清空
filterableBooleantrue是否可搜索
disabledBooleanfalse是否禁用
multipleBooleanfalse是否多选
showCheckLinkSwitchBooleantrue多选时是否显示底部「父子联动」开关
checkStrictlyBooleanfalse父子是否不关联(true 各自独立)
collapseTagsBooleanfalse多选是否折叠 tag
collapseTagsTooltipBooleanfalse折叠 tag 是否显示 tooltip
heightNumberundefined固定高度;传入后不自适应
maxHeightNumber260自适应时最大高度
itemSizeNumber26节点行高
onlyLeafBooleanfalse是否只能选叶子
defaultExpandedKeysArrayundefined默认展开 key;不传则展开第一项
popperClassString'virtual-tree-select-popper'下拉 popper class
teleportedBooleantrue是否 teleport 到 appendTo
appendToString | Objectundefined下拉挂载节点
fallbackLabelString''单选时 id 不在树中的回显文案
nodeIconStringundefined节点图标 name;未传不显示
事件说明
update:modelValue选中值变化
change单选:(value, node);多选:(keys, nodes)
clear清空
visible-change下拉显隐
remove-tag多选移除 tag
插槽说明
default{ node, data } 自定义树节点
fallback-optionid 不在树中时的隐藏 option,用于回显
<virtual-tree-select
  v-model="deptIds"
  multiple
  :data="treeData"
  :props="{ value: 'id', label: 'label', children: 'children' }"
/>

CompanyTreePanel

组织树侧栏面板。

标签: <company-tree-panel>

Prop类型默认值说明
multipleBooleanfalse是否多选(勾选框)
checkStrictlyBooleanfalse多选时父子是否不联动(未展示底部开关时生效)
showCheckLinkSwitchBooleantrue多选时是否显示底部「父子联动」开关
showFleetBooleantrue是否显示车队;true 调 getOrgTree,false 调 getOperableOrgTree
visible / v-model:visibleBooleantrue面板显隐
事件说明
node-click单选节点数据;再次点击当前节点为 null
check(nodeData, info)
check-change(checkedNodes, checkedKeys, info)
<company-tree-panel v-model:visible="show" @node-click="onNode" />

CompanyTreeSelect

公司树下拉(内部请求公司列表并封装 VirtualTreeSelect)。

标签: <company-tree-select>

Prop类型默认值说明
modelValue / v-modelString | Number | Arrayundefined单选:公司 id;多选:id 数组
queryTypeNumber1接口 queryType
queryParamsObject{}额外查询参数
placeholderString''空则使用「请选择公司」
clearableBooleantrue是否可清空
filterableBooleantrue是否可搜索
disabledBooleanfalse是否禁用
multipleBooleanfalse是否多选
showCheckLinkSwitchBooleantrue多选是否显示父子联动开关
checkStrictlyBooleanfalse父子是否不关联
collapseTagsBooleanfalse多选折叠 tag
collapseTagsTooltipBooleanfalse折叠 tag tooltip
onlyLeafBooleanfalse是否只能选叶子
widthString | Number220宽度
appendToString | Objectundefined下拉挂载节点
teleportedBooleantrue是否 teleport
fallbackLabelString''id 不在树中的回显文案
事件说明
update:modelValue选中值变化
change(value, nodeOrNodes)
clear清空
visible-change下拉显隐
remove-tag多选移除 tag
loaded(treeData) 树加载完成
方法(ref)说明
reload()重新请求公司树
<company-tree-select v-model="deptId" @change="onCompanyChange" />

CustomMap

地图组件(maptalks)。

标签: <custom-map>

Prop类型默认值说明
supportedMapTypesArrayundefined可选底图:baidu / gaode / google;有非空数组则用 prop,否则读用户习惯
事件说明
ready(map, maptalks, mapType, ClusterLayer)
mapTypeChange当前底图类型
插槽说明
默认{ map } 自定义浮层
<custom-map @ready="onMapReady" />

ResizablePanel

可拖拽调宽面板。

标签: <resizable-panel>

Prop类型默认值说明
width / v-model:widthNumber280面板宽度(px)
minNumber200最小宽度
maxNumber600最大宽度
edgeString'right'拖拽边:left / right
事件说明
update:width拖拽后的新宽度
<resizable-panel v-model:width="panelWidth" :min="280" :max="480">
  <!-- 内容 -->
</resizable-panel>

CustomDatePicker

基于 el-date-picker 的日期选择器;除自身 props 外透传 Element Plus DatePicker 属性。

标签: <custom-date-picker>

Prop类型默认值说明
modelValue / v-modelString | Number | Date | Array—选中值
allowTodayBooleanfalse是否允许选当天;false 时最大可选到昨天
appendToString | Objectundefined弹层挂载节点;默认无界下挂主应用 body
showThisWeekBooleantrue是否显示「本周」
showThisMonthBooleantrue是否显示「本月」
showPrevMonthBooleanfalse是否显示「上月」(上一个自然月月初到月末,不受 allowToday 影响)
showLastWeekBooleantrue是否显示「近一周」
showLastMonthBooleantrue是否显示「近一个月」
showLastYearBooleantrue是否显示「近一年」

type="daterange" 且未传 shortcuts 时,按上表开关生成默认快捷项;传入 shortcuts 时以外面的为准。范围跨度最大 365 天。

<custom-date-picker
  v-model="dateRange"
  type="daterange"
  value-format="YYYY-MM-DD"
  :allow-today="false"
  :show-last-year="false"
/>

CustomDatetimePicker

基于 el-date-picker 的日期时间范围选择器。默认 datetimerange,值格式 YYYY-MM-DD HH:mm:ss。快捷项为「今日」「昨日」,选中后是当天 00:00:00 到 23:59:59。

标签: <custom-datetime-picker>

Prop类型默认值说明
modelValue / v-modelString | Number | Date | Array—选中值
allowTodayBooleantrue是否显示「今日」快捷项
allowYesterdayBooleantrue是否显示「昨日」快捷项
clearableBooleanfalse是否可清空
widthString | Number360选择器宽度
startPlaceholderString''开始占位;空则用「开始日期」
endPlaceholderString''结束占位;空则用「结束日期」
appendToString | Objectundefined弹层挂载节点;默认无界下挂主应用 body

今天之后的日期不可选。传入 shortcuts 时以外面的为准,其余 Element Plus DatePicker 属性照常透传。

<custom-datetime-picker
  v-model="queryParams.dateRange"
  :allow-today="true"
  :allow-yesterday="true"
  @change="onDateChange"
/>

CustomEchart

基于 ECharts 的图表。修改 options 会整表替换配置。容器尺寸变化时自动 resize。

标签: <custom-echart>

Prop类型默认值说明
optionsObject{}ECharts 配置,传入后 setOption(options, true)
widthString'100%'宽度
heightString'300px'高度
classNameString'chart'容器 class
<custom-echart :options="chartOptions" height="360px" />

TableColumnSetting

表格列显隐设置。直接改传入列对象的 visible。persist 为 true 时写入 localStorage,key 为「当前应用 + cacheKey」。无界下应用名取 window.__WUJIE.id(如 base-module),否则取地址第一段。基础应用缓存前缀仍是 base-module-table-cols:。

标签: <table-column-setting>

Prop类型默认值说明
modelValue / v-modelArray[]列配置:{ prop, label, visible, disabled? }
widthNumber | String220弹出层宽度
persistBooleanfalse是否把显隐记到 localStorage
cacheKeyString''缓存 key,persist 为 true 时建议必传

disabled 为 true 的列不参与全选。重置恢复为页面初次传入的显隐,并清掉这份缓存。

<table-column-setting v-model="columns" persist cache-key="user-list" />

CustomDialog

封装 el-dialog,透传属性和插槽。默认挂到当前窗口的 body,传入 appendTo 可改挂载节点。

标签: <custom-dialog>

Prop类型默认值说明
modelValue / v-modelBooleanfalse是否显示
appendToString | Object当前窗口 body弹窗挂载节点

其余属性和插槽与 el-dialog 相同。

<custom-dialog v-model="visible" title="标题" width="480px">
  内容
</custom-dialog>

方法

$centerAlert

居中提示,无确认按钮。安装后使用 this.$centerAlert,也可 import { centerAlert } from '@cntransun/gbos'。

方法说明
success(title, message?, options?)成功
error(title, message?, options?)失败
warning(title, message?, options?)警告
info(title, message?, options?)信息
loading(title?, message?)加载中,不可点遮罩或按 Esc 关闭;返回关闭函数

短文案时弹窗较窄,文字变长会加宽,超过上限后在框内换行。options 会覆盖 ElMessageBox.alert 的默认配置。

this.$centerAlert.success('操作成功', '数据已保存')

const close = this.$centerAlert.loading('处理中...', '请稍候')
close()

showVersionUpdate()

版本更新提示,使用 ElMessageBox.alert,无确认按钮。图标在左、文案在右。图案暂时写死,倒计时固定 6 秒。倒计时结束执行 window.top.location.reload()。点关闭、遮罩或 Esc 只关掉提示,不刷新。返回关闭函数。

安装后也可使用 this.$showVersionUpdate。

import { showVersionUpdate } from '@cntransun/gbos'

const close = showVersionUpdate()
close()

showVehicleExpiredStatus()

车辆服务已到期提示。无确认按钮,点遮罩、关闭按钮或 Esc 关闭。包内车辆树在选中到期车辆时会自行调用;宿主也可单独引入。

import { showVehicleExpiredStatus } from '@cntransun/gbos'

showVehicleExpiredStatus()

showVehicleScrappedStatus()

车辆已停用/报废提示。交互与到期提示相同。包内组件不会调用,由宿主按需引入。

import { showVehicleScrappedStatus } from '@cntransun/gbos'

showVehicleScrappedStatus()

版本与发布记录

@cntransun/gbos 共发布 69 个版本,首次发布于 2026/10/06;过去 12 个月发布了 69 个版本。

版本发布日期距今
0.1.68latest2026/11/10今天
0.1.672026/11/045 天前
0.1.662026/11/046 天前
0.1.652026/11/046 天前
0.1.642026/11/036 天前
0.1.632026/11/036 天前

关于 @cntransun/gbos 的常见问题

@cntransun/gbos 是什么?

G-BOS shared Vue components

如何安装 @cntransun/gbos?

在项目目录运行 npm install @cntransun/gbos,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(^3.5.0)、echarts(>=5.5.0)、maptalks(^1.12.0)、@maptalks/gl(^0.124.0)、@maptalks/vt(^0.124.0)、element-plus(^2.14.0)、maptalks.markercluster(^0.10.0)、@element-plus/icons-vue(^2.3.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cntransun/gbos 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cntransun__gbos 是否存在。

@cntransun/gbos 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cntransun/gbos 可以商用吗?

@cntransun/gbos 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cntransun/gbos 的下载量有多少?

根据 npm 官方下载统计,@cntransun/gbos 在 2026/10/10 – 2026/11/08 这 30 天内被下载 6,884 次,日均约 229 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cntransun/gbos 还在维护吗?

最新版本 0.1.68 发布于 2026/11/10(今天);至今共发布 69 个版本,其中过去 12 个月发布了 69 个;首次发布于 2026/10/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。