@jctrans-materials/comps-vue2 1.0.37-beta.4 → 1.0.37-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,158 @@
1
+ # Vue2 组件说明(jc-utils)
2
+
3
+ ## 组件清单
4
+
5
+ 当前 `packages/vue2` 对外导出的核心组件如下:
6
+
7
+ - `ApplyDataDialog`
8
+ - `GlobalModal`
9
+ - `JcSearch`
10
+ - `JcVerifySlide`
11
+ - `JcCarrierSearch`
12
+ - `AirCarrierSearch`
13
+ - `SeaCarrierSearch`
14
+ - `AirLineSearch`
15
+ - `SeaLineSearch`
16
+
17
+ ## 快速使用
18
+
19
+ ```ts
20
+ import Vue from "vue";
21
+ import JCtransComps from "@jctrans-materials/comps-vue2";
22
+ import "@jctrans-materials/comps-vue2/style.css";
23
+
24
+ Vue.use(JCtransComps);
25
+ ```
26
+
27
+ ## 组件能力速览
28
+
29
+ ### 1) `JcSearch`
30
+
31
+ - 用途:国家/城市/港口/机场等通用地点搜索
32
+ - 常用 Props:`value` / `modelValue`、`multiple`、`searchTypeList`、`historyKey`
33
+ - 常用事件:`select`、`change`、`input`、`update:modelValue`
34
+
35
+ ### 2) `JcVerifySlide`
36
+
37
+ - 用途:滑块验证码验证
38
+ - 常用 Props:`visible`、`lang`、`mode`、`imgSize`、`barSize`
39
+ - 常用事件:`success`、`update:visible`
40
+
41
+ ### 3) `JcCarrierSearch` 及包装组件
42
+
43
+ - 用途:承运人/航线搜索(海运、空运)
44
+ - 常用 Props:`value` / `modelValue`、`type`、`lineType`、`multiple`、`showApplyData`
45
+ - 常用事件:
46
+ - 业务:`change`、`apply`
47
+ - 输入框:`focus`、`blur`、`remove-tag`
48
+
49
+ 包装组件:
50
+
51
+ - `AirCarrierSearch`(航空公司)
52
+ - `SeaCarrierSearch`(船公司)
53
+ - `AirLineSearch`(空运航线)
54
+ - `SeaLineSearch`(海运航线)
55
+
56
+ ### 4) `ApplyDataDialog`
57
+
58
+ - 用途:申请补充数据弹窗
59
+ - 常用 Props:`value`
60
+ - 常用事件:`confirm`、`input` / `update:value`
61
+
62
+ ### 5) `GlobalModal`
63
+
64
+ - 用途:全局业务弹窗容器(配合插件/事件总线)
65
+
66
+ ## Playground 示例
67
+
68
+ 可在以下页面查看 Vue2 组件演示:
69
+
70
+ - `playground/v2play/src/App.vue`
71
+ - `Base Demo`:`JcSearch` + `ApplyDataDialog` + `GlobalModal`
72
+ - `Carrier Search Demo`:`JcCarrierSearch` 系列
73
+ - `Verify Slide Demo`:`JcVerifySlide`
74
+
75
+ ## GIO 埋点接入(Vue2)
76
+
77
+ ### 1) 按需启用(不传配置即不启用)
78
+
79
+ ```ts
80
+ import Vue from "vue";
81
+ import JCtransComps from "@jctrans-materials/comps-vue2";
82
+
83
+ Vue.use(JCtransComps, {
84
+ tracking: {
85
+ enabled: true,
86
+ autoInit: true,
87
+ directiveName: "gio-track",
88
+ accountId: process.env.VUE_APP_GIO_ACCOUNT_ID,
89
+ dataSourceId: process.env.VUE_APP_GIO_DATA_SOURCE_ID,
90
+ appId: process.env.VUE_APP_GIO_APP_ID,
91
+ initOptions: {
92
+ debug: process.env.NODE_ENV !== "production",
93
+ trackPage: false,
94
+ autoTrackPage: true,
95
+ serverUrl: process.env.VUE_APP_GIO_SERVER_URL,
96
+ },
97
+ },
98
+ });
99
+ ```
100
+
101
+ 如果不传 `tracking`,则不会初始化 GIO。
102
+
103
+ ### 2) 指令与 API 用法
104
+
105
+ ```vue
106
+ <button v-gio-track="'order_submit'">提交订单</button>
107
+
108
+ <button
109
+ v-gio-track="{
110
+ event: 'order_submit',
111
+ attrs: { source: 'cart' },
112
+ onTracked: ({ eventName }) => console.log(eventName),
113
+ }"
114
+ >
115
+ 提交并回调
116
+ </button>
117
+ ```
118
+
119
+ ```ts
120
+ this.$trackEvent("manual_track", { source: "manual" });
121
+ this.$gio.track("direct_track", { source: "direct" }, () => {
122
+ console.log("done");
123
+ });
124
+ ```
125
+
126
+ ### 3) 配置优先级
127
+
128
+ 1. `window.__JCTRANS_GIO_CONFIG__`(或 `globalVarName` 指定对象)
129
+ 2. `tracking` 传入配置
130
+ 3. `import.meta.env.VITE_GIO_*`
131
+
132
+ ### 4) GIO 单测(Vue2)
133
+
134
+ 测试文件:`src/gio.test.ts`
135
+
136
+ 覆盖点:
137
+
138
+ - 初始化分支:
139
+ - 有 `appId`(4 参数 `init`)
140
+ - 无 `appId`(3 参数 `init`)
141
+ - 缺少必填配置时不初始化
142
+ - 指令行为:`bind` / `update` / `unbind` 的绑定、重绑、清理
143
+ - 回调行为:`onTracked` 在 `track` 回调后触发
144
+ - 暴露能力:`$trackEvent` 与 `$gio` 常用 API
145
+
146
+ 结合 GrowingIO WebJS 常用 API 文档(含 `trackTimerStart`)对齐了以下接口可用性:
147
+
148
+ - `setUserId`
149
+ - `clearUserId`
150
+ - `setVisitor`
151
+ - `trackTimerStart`
152
+ - `trackTimerEnd`
153
+
154
+ 运行方式:
155
+
156
+ ```bash
157
+ pnpm -C packages/vue2 test:run
158
+ ```
package/dist/gio.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ import { VueConstructor } from 'vue';
2
+
3
+ export type TrackAttrs = Record<string, string | number | Array<string | number>>;
4
+ export type TrackDirectiveValue = string | {
5
+ event?: string;
6
+ name?: string;
7
+ attrs?: TrackAttrs;
8
+ attributes?: TrackAttrs;
9
+ trigger?: string;
10
+ once?: boolean;
11
+ stop?: boolean;
12
+ prevent?: boolean;
13
+ callback?: (payload: {
14
+ event: Event;
15
+ eventName: string;
16
+ attrs: TrackAttrs;
17
+ trigger: string;
18
+ }) => void;
19
+ onTracked?: (payload: {
20
+ event: Event;
21
+ eventName: string;
22
+ attrs: TrackAttrs;
23
+ trigger: string;
24
+ }) => void;
25
+ };
26
+ export type TrackConfig = {
27
+ enabled?: boolean;
28
+ autoInit?: boolean;
29
+ directiveName?: string;
30
+ globalVarName?: string;
31
+ accountId?: string;
32
+ dataSourceId?: string;
33
+ appId?: string;
34
+ serverUrl?: string;
35
+ initOptions?: {
36
+ debug?: boolean;
37
+ trackPage?: boolean;
38
+ forceLogin?: boolean;
39
+ idMapping?: boolean;
40
+ hashtag?: boolean;
41
+ autoTrackPage?: boolean;
42
+ serverUrl?: string;
43
+ };
44
+ };
45
+ export type GioPublicApi = {
46
+ isInitialized: () => boolean;
47
+ isBrowser: () => boolean;
48
+ init: (...args: any[]) => void;
49
+ track: (eventName: string, attrs?: TrackAttrs, callback?: () => void) => void;
50
+ setUserId: (userId: string) => void;
51
+ clearUserId: () => void;
52
+ setVisitor: (visitor: Record<string, any>) => void;
53
+ setGeneralProps: (props: Record<string, any>) => void;
54
+ setPageAttributes: (props: Record<string, any>) => void;
55
+ sendPage: () => void;
56
+ trackTimerStart: (eventName: string) => void;
57
+ trackTimerEnd: (eventName: string, attrs?: TrackAttrs) => void;
58
+ };
59
+ export declare function createGioTrackingPlugin(rawConfig?: TrackConfig): {
60
+ install(Vue: VueConstructor): void;
61
+ };
@@ -0,0 +1,2 @@
1
+ /** 🤡 Powered by My Super Rules */
2
+ export {};