cnhis-design-vue 3.2.4-release.1 → 3.2.4-release.3
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 +87 -87
- package/es/components/biunique-chat/index.d.ts +9 -6
- package/es/components/biunique-chat/src/Index.vue.d.ts +9 -6
- package/es/components/biunique-chat/src/Index.vue2.js +1 -1
- package/es/components/biunique-chat/src/api/index.d.ts +1 -0
- package/es/components/biunique-chat/src/api/index.js +1 -1
- package/es/components/biunique-chat/src/components/ChatFooter.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/ChatHeader.vue.d.ts +2 -2
- package/es/components/biunique-chat/src/components/ChatHeader.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/ChatMain.vue.d.ts +2 -1
- package/es/components/biunique-chat/src/components/ChatMain.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/ChatSearch.vue.d.ts +3 -1
- package/es/components/biunique-chat/src/components/ChatSearch.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/ChatSet.vue.d.ts +1 -1
- package/es/components/biunique-chat/src/components/ChatSet.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/MessageTemplate.vue2.js +1 -1
- package/es/components/biunique-chat/src/components/PersonProfile.vue.d.ts +1 -1
- package/es/components/biunique-chat/src/components/SiderList.vue.d.ts +1 -1
- package/es/components/biunique-chat/src/components/SiderList.vue2.js +1 -1
- package/es/components/biunique-chat/src/hooks/useSession.d.ts +1 -1
- package/es/components/biunique-chat/src/hooks/useSession.js +1 -1
- package/es/components/biunique-chat/style/index.css +1 -1
- package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
- package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +1 -0
- package/es/components/bpmn-workflow/types/ModelingModule.d.ts +1 -0
- package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +1 -0
- package/es/components/classification/src/components/table-modal/index.vue.d.ts +0 -3
- package/es/components/classification/src/index.vue.d.ts +3 -3
- package/es/components/form-config/index.d.ts +7 -0
- package/es/components/form-config/src/FormConfig.vue.d.ts +7 -0
- package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +3 -0
- package/es/components/form-render/src/components/renderer/formItem.d.ts +14 -0
- package/es/components/form-render/src/components/renderer/formItem.js +1 -1
- package/es/components/form-render/src/types/fieldItem.d.ts +1 -0
- package/es/components/index.css +1 -1
- package/es/components/index.d.ts +2 -1
- package/es/components/index.js +1 -1
- package/es/components/scale-view/src/ScaleView.vue2.js +1 -1
- package/es/components/search-cascader/src/SearchCascader.vue2.js +1 -1
- package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
- package/es/components/select-person/src/SearchMultiple.vue.d.ts +0 -6
- package/es/components/shortcut-setter/index.d.ts +1 -0
- package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +1 -0
- package/es/components/tooth-bitmap/index.d.ts +45 -0
- package/es/components/tooth-bitmap/index.js +1 -0
- package/es/components/tooth-bitmap/src/ToothBitmap.vue.d.ts +45 -0
- package/es/components/tooth-bitmap/src/ToothBitmap.vue.js +1 -0
- package/es/components/tooth-bitmap/src/ToothBitmap.vue2.js +1 -0
- package/es/components/tooth-bitmap/style/index.css +1 -0
- package/es/env.d.ts +25 -25
- package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
- package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
- package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
- package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
- package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
- package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
- package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
- package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
- package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
- package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
- package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_001.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_002.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_003.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_004.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_005.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_006.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_007.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_008.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_009.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_010.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_011.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_012.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_013.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_014.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_015.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_016.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_017.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_018.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_019.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_020.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_021.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_022.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_023.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_024.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_025.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_026.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_027.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_028.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_029.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_030.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_031.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_032.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_033.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_034.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_035.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_036.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_037.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_038.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_039.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_040.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_041.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_042.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_043.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_044.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_045.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_046.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_047.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_048.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_049.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_050.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_051.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_052.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_053.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_054.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_055.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_056.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_057.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_058.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_059.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_060.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_061.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_062.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_063.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_064.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_065.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_066.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_067.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_068.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_069.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_070.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_071.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_072.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_073.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_074.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_075.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_076.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_077.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_078.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_079.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_080.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_081.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_082.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_083.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_084.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_085.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_086.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_087.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_088.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_089.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_090.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_091.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_092.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_093.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_094.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_095.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_096.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_097.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_098.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_099.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_100.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_101.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_102.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_103.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_104.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_105.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_106.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_107.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_108.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_109.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_110.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_111.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_112.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_113.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_114.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_115.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_116.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_117.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_118.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_119.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_120.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_121.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_122.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_123.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_124.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_125.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_126.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_127.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_128.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_129.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_130.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_131.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_132.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_133.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_134.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_135.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_136.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_137.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_138.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_139.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_140.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_141.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_142.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_143.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_144.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_145.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_146.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_147.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_148.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_149.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_150.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_151.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_152.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_153.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_154.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_155.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_156.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_157.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_158.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_159.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_160.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_161.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_162.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_163.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_164.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_165.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_166.png.js +1 -1
- package/es/shared/assets/img/emoji/emotion_167.png.js +1 -1
- package/es/shared/assets/img/failure.png.js +1 -1
- package/es/shared/assets/img/no-permission.png.js +1 -1
- package/es/shared/assets/img/nodata.png.js +1 -1
- package/es/shared/assets/img/notfound.png.js +1 -1
- package/es/shared/assets/img/qr.png.js +1 -1
- package/es/shared/assets/img/success.png.js +1 -1
- package/es/shared/assets/img/table_style_2.png.js +1 -1
- package/es/shared/assets/img/tooth/l-b-1.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-2.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-3.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-4.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-5.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-6.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-7.png.js +1 -0
- package/es/shared/assets/img/tooth/l-b-8.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-1.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-2.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-3.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-4.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-5.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-6.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-7.png.js +1 -0
- package/es/shared/assets/img/tooth/l-t-8.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-1.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-2.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-3.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-4.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-5.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-6.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-7.png.js +1 -0
- package/es/shared/assets/img/tooth/r-b-8.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-1.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-2.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-3.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-4.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-5.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-6.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-7.png.js +1 -0
- package/es/shared/assets/img/tooth/r-t-8.png.js +1 -0
- package/es/shared/assets/img/video.png.js +1 -1
- package/es/shared/assets/img/video_default_cover.png.js +1 -1
- package/es/shared/assets/img/xb_big.png.js +1 -1
- package/es/shared/assets/img/xb_small.png.js +1 -1
- package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +86 -0
- package/es/shared/package.json.js +1 -1
- package/es/shared/utils/fabricjs/index.d.ts +6823 -0
- package/es/shared/utils/tapable/index.d.ts +139 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
# 安装
|
|
2
|
-
|
|
3
|
-
```shell
|
|
4
|
-
npm i cnhis-design-vue@[版本号]
|
|
5
|
-
# or
|
|
6
|
-
yarn add cnhis-design-vue@[版本号] #推荐
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
## 1.全局引入
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
// main.ts
|
|
13
|
-
import { createApp } from 'vue';
|
|
14
|
-
import App from './App.vue';
|
|
15
|
-
import 'cnhis-design-vue/es/packages/index.css';
|
|
16
|
-
import cui from 'cnhis-design-vue';
|
|
17
|
-
|
|
18
|
-
const app = createApp(App);
|
|
19
|
-
app.use(cui).mount('#app');
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 2. 按需引入
|
|
23
|
-
|
|
24
|
-
组件现在支持了自动按需引入, 但是样式文件需要额外的处理
|
|
25
|
-
|
|
26
|
-
### 2.1 样式处理方式1 (按需引入样式)
|
|
27
|
-
|
|
28
|
-
```shell
|
|
29
|
-
# 安装自动导入样式的插件
|
|
30
|
-
npm i -d vite-plugin-style-import
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
```typescript
|
|
34
|
-
// vite.config.ts
|
|
35
|
-
import { defineConfig } from 'vite';
|
|
36
|
-
import { createStyleImportPlugin } from 'vite-plugin-style-import';
|
|
37
|
-
|
|
38
|
-
export default defineConfig({
|
|
39
|
-
plugins: [
|
|
40
|
-
// ...otherPlugins
|
|
41
|
-
createStyleImportPlugin({
|
|
42
|
-
libs: [
|
|
43
|
-
{
|
|
44
|
-
libraryName: 'cnhis-design-vue',
|
|
45
|
-
esModule: true,
|
|
46
|
-
ensureStyleFile: true,
|
|
47
|
-
resolveStyle: name => {
|
|
48
|
-
return `cnhis-design-vue/es/components/${ name.slice(2) }/style/index.css`;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
})
|
|
53
|
-
]
|
|
54
|
-
});
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 2.2 样式处理方式2 (全局引入样式)
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
// main.ts
|
|
61
|
-
import 'cnhis-design-vue/es/components/index.css';
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## 3.FAQ
|
|
65
|
-
|
|
66
|
-
### 3.1 项目打包后样式丢失
|
|
67
|
-
|
|
68
|
-
处理方法, 将 cnhis-design-vue 从 vendor 包中移除 (没有出现此问题则不需要)
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
// vite.config.ts
|
|
72
|
-
import { defineConfig } from 'vite';
|
|
73
|
-
|
|
74
|
-
export default defineConfig({
|
|
75
|
-
build: {
|
|
76
|
-
rollupOptions: {
|
|
77
|
-
// ..otherOptions
|
|
78
|
-
output: {
|
|
79
|
-
dir: './dist',
|
|
80
|
-
manualChunks: {
|
|
81
|
-
'cnhis-vendor': ['cnhis-design-vue']
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
```
|
|
1
|
+
# 安装
|
|
2
|
+
|
|
3
|
+
```shell
|
|
4
|
+
npm i cnhis-design-vue@[版本号]
|
|
5
|
+
# or
|
|
6
|
+
yarn add cnhis-design-vue@[版本号] #推荐
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## 1.全局引入
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// main.ts
|
|
13
|
+
import { createApp } from 'vue';
|
|
14
|
+
import App from './App.vue';
|
|
15
|
+
import 'cnhis-design-vue/es/packages/index.css';
|
|
16
|
+
import cui from 'cnhis-design-vue';
|
|
17
|
+
|
|
18
|
+
const app = createApp(App);
|
|
19
|
+
app.use(cui).mount('#app');
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 2. 按需引入
|
|
23
|
+
|
|
24
|
+
组件现在支持了自动按需引入, 但是样式文件需要额外的处理
|
|
25
|
+
|
|
26
|
+
### 2.1 样式处理方式1 (按需引入样式)
|
|
27
|
+
|
|
28
|
+
```shell
|
|
29
|
+
# 安装自动导入样式的插件
|
|
30
|
+
npm i -d vite-plugin-style-import
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// vite.config.ts
|
|
35
|
+
import { defineConfig } from 'vite';
|
|
36
|
+
import { createStyleImportPlugin } from 'vite-plugin-style-import';
|
|
37
|
+
|
|
38
|
+
export default defineConfig({
|
|
39
|
+
plugins: [
|
|
40
|
+
// ...otherPlugins
|
|
41
|
+
createStyleImportPlugin({
|
|
42
|
+
libs: [
|
|
43
|
+
{
|
|
44
|
+
libraryName: 'cnhis-design-vue',
|
|
45
|
+
esModule: true,
|
|
46
|
+
ensureStyleFile: true,
|
|
47
|
+
resolveStyle: name => {
|
|
48
|
+
return `cnhis-design-vue/es/components/${ name.slice(2) }/style/index.css`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2.2 样式处理方式2 (全局引入样式)
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// main.ts
|
|
61
|
+
import 'cnhis-design-vue/es/components/index.css';
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 3.FAQ
|
|
65
|
+
|
|
66
|
+
### 3.1 项目打包后样式丢失
|
|
67
|
+
|
|
68
|
+
处理方法, 将 cnhis-design-vue 从 vendor 包中移除 (没有出现此问题则不需要)
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// vite.config.ts
|
|
72
|
+
import { defineConfig } from 'vite';
|
|
73
|
+
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
build: {
|
|
76
|
+
rollupOptions: {
|
|
77
|
+
// ..otherOptions
|
|
78
|
+
output: {
|
|
79
|
+
dir: './dist',
|
|
80
|
+
manualChunks: {
|
|
81
|
+
'cnhis-vendor': ['cnhis-design-vue']
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
```
|
|
@@ -56,7 +56,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
56
56
|
isUpdateSession: boolean;
|
|
57
57
|
};
|
|
58
58
|
reConnention: number;
|
|
59
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
59
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
60
60
|
closeSession: () => import("../../shared/types").AnyObject | null;
|
|
61
61
|
getCurrentSession: () => import("../../shared/types").AnyObject | null;
|
|
62
62
|
setSessionList: (list: import("../../shared/types").AnyObject[]) => void;
|
|
@@ -484,7 +484,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
484
484
|
currentFilterKey: import("vue").Ref<string>;
|
|
485
485
|
state: import("./src/types").IState;
|
|
486
486
|
emit: (event: string, ...args: any[]) => void;
|
|
487
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
487
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
488
488
|
unreadTotal: import("vue").ComputedRef<number>;
|
|
489
489
|
setSessionList: (list: import("../../shared/types").AnyObject[]) => void;
|
|
490
490
|
currentWidth: import("vue").ComputedRef<number>;
|
|
@@ -527,7 +527,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
527
527
|
}>>;
|
|
528
528
|
emit: (event: "close", ...args: any[]) => void;
|
|
529
529
|
state: import("./src/types").IState;
|
|
530
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
530
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
531
531
|
showUserDetail: import("vue").Ref<boolean>;
|
|
532
532
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
533
533
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -782,7 +782,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
782
782
|
}>>;
|
|
783
783
|
emit: (event: "close", ...args: any[]) => void;
|
|
784
784
|
state: import("./src/types").IState;
|
|
785
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
785
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
786
786
|
showUserDetail: import("vue").Ref<boolean>;
|
|
787
787
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
788
788
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1174,6 +1174,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
1174
1174
|
chatMainRef: import("vue").Ref<HTMLElement | undefined>;
|
|
1175
1175
|
state: import("./src/types").IState;
|
|
1176
1176
|
setMsgList: (list?: import("../../shared/types").AnyObject[]) => void;
|
|
1177
|
+
setCurrentSessionItem: (item: import("../../shared/types").AnyObject) => void;
|
|
1177
1178
|
currentInfo: {
|
|
1178
1179
|
page: number;
|
|
1179
1180
|
hasMore: boolean;
|
|
@@ -1405,7 +1406,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
1405
1406
|
}>>;
|
|
1406
1407
|
emit: (event: "close", ...args: any[]) => void;
|
|
1407
1408
|
state: import("./src/types").IState;
|
|
1408
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
1409
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
1409
1410
|
showUserDetail: import("vue").Ref<boolean>;
|
|
1410
1411
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
1411
1412
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1569,12 +1570,14 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
1569
1570
|
MESSAGE_TYPE: typeof import("./src/constants").MESSAGE_TYPE;
|
|
1570
1571
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
1571
1572
|
ChatSearch: import("vue").DefineComponent<{}, {
|
|
1573
|
+
cssVars: import("vue").ComputedRef<import("vue").CSSProperties>;
|
|
1572
1574
|
inputRef: import("vue").Ref<any>;
|
|
1573
1575
|
showSearch: import("vue").Ref<boolean>;
|
|
1574
1576
|
keyword: import("vue").Ref<any>;
|
|
1575
1577
|
userList: import("vue").Ref<any>;
|
|
1576
1578
|
state: import("./src/types").IState;
|
|
1577
|
-
openSession: (item: import("../../shared/types").AnyObject) => void
|
|
1579
|
+
openSession: (item: import("../../shared/types").AnyObject) => Promise<void>;
|
|
1580
|
+
handleInput: () => Promise<void>;
|
|
1578
1581
|
handleSearch: () => Promise<void>;
|
|
1579
1582
|
addSession: (userId: string) => Promise<void>;
|
|
1580
1583
|
NPopover: any;
|
|
@@ -59,7 +59,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
59
59
|
isUpdateSession: boolean;
|
|
60
60
|
};
|
|
61
61
|
reConnention: number;
|
|
62
|
-
openSession: (item: AnyObject) => void
|
|
62
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
63
63
|
closeSession: () => AnyObject | null;
|
|
64
64
|
getCurrentSession: () => AnyObject | null;
|
|
65
65
|
setSessionList: (list: AnyObject[]) => void;
|
|
@@ -487,7 +487,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
487
487
|
currentFilterKey: import("vue").Ref<string>;
|
|
488
488
|
state: IState;
|
|
489
489
|
emit: (event: string, ...args: any[]) => void;
|
|
490
|
-
openSession: (item: AnyObject) => void
|
|
490
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
491
491
|
unreadTotal: import("vue").ComputedRef<number>;
|
|
492
492
|
setSessionList: (list: AnyObject[]) => void;
|
|
493
493
|
currentWidth: import("vue").ComputedRef<number>;
|
|
@@ -530,7 +530,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
530
530
|
}>>;
|
|
531
531
|
emit: (event: "close", ...args: any[]) => void;
|
|
532
532
|
state: IState;
|
|
533
|
-
openSession: (item: AnyObject) => void
|
|
533
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
534
534
|
showUserDetail: import("vue").Ref<boolean>;
|
|
535
535
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
536
536
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -785,7 +785,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
785
785
|
}>>;
|
|
786
786
|
emit: (event: "close", ...args: any[]) => void;
|
|
787
787
|
state: IState;
|
|
788
|
-
openSession: (item: AnyObject) => void
|
|
788
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
789
789
|
showUserDetail: import("vue").Ref<boolean>;
|
|
790
790
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
791
791
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1177,6 +1177,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1177
1177
|
chatMainRef: import("vue").Ref<HTMLElement | undefined>;
|
|
1178
1178
|
state: IState;
|
|
1179
1179
|
setMsgList: (list?: AnyObject[]) => void;
|
|
1180
|
+
setCurrentSessionItem: (item: AnyObject) => void;
|
|
1180
1181
|
currentInfo: {
|
|
1181
1182
|
page: number;
|
|
1182
1183
|
hasMore: boolean;
|
|
@@ -1408,7 +1409,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1408
1409
|
}>>;
|
|
1409
1410
|
emit: (event: "close", ...args: any[]) => void;
|
|
1410
1411
|
state: IState;
|
|
1411
|
-
openSession: (item: AnyObject) => void
|
|
1412
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
1412
1413
|
showUserDetail: import("vue").Ref<boolean>;
|
|
1413
1414
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
1414
1415
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1572,12 +1573,14 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1572
1573
|
MESSAGE_TYPE: typeof import("./constants").MESSAGE_TYPE;
|
|
1573
1574
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
1574
1575
|
ChatSearch: import("vue").DefineComponent<{}, {
|
|
1576
|
+
cssVars: import("vue").ComputedRef<import("vue").CSSProperties>;
|
|
1575
1577
|
inputRef: import("vue").Ref<any>;
|
|
1576
1578
|
showSearch: import("vue").Ref<boolean>;
|
|
1577
1579
|
keyword: import("vue").Ref<any>;
|
|
1578
1580
|
userList: import("vue").Ref<any>;
|
|
1579
1581
|
state: IState;
|
|
1580
|
-
openSession: (item: AnyObject) => void
|
|
1582
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
1583
|
+
handleInput: () => Promise<void>;
|
|
1581
1584
|
handleSearch: () => Promise<void>;
|
|
1582
1585
|
addSession: (userId: string) => Promise<void>;
|
|
1583
1586
|
NPopover: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as r,openBlock as n,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as u,withCtx as d,createBlock as m,Fragment as p,createElementVNode as l,renderSlot as h}from"vue";import{NConfigProvider as f,NSpin as S,NLayout as g,NLayoutContent as v}from"naive-ui";import b from"./components/SiderList.vue.js";import
|
|
1
|
+
import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as r,openBlock as n,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as u,withCtx as d,createBlock as m,Fragment as p,createElementVNode as l,renderSlot as h}from"vue";import{NConfigProvider as f,NSpin as S,NLayout as g,NLayoutContent as v}from"naive-ui";import b from"./components/SiderList.vue.js";import I from"./components/ChatHeader.vue.js";import y from"./components/ChatMain.vue.js";import j from"./components/ChatFooter.vue.js";import k from"./components/ChatSearch.vue.js";import{ChatSock as _}from"./utils/chatSock.js";import{instanceAxios as C,readMessageApi as L}from"./api/index.js";import{useTheme as N}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as x}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{SUBSCRIBE_MESSAGE_TYPE as M}from"./constants/index.js";import{InjectionIChatState as U,InjectionIChatStompClient as q,InjectionIChatEmits as T}from"./types/index.js";import"./utils/emoji.js";import{useSession as A}from"./hooks/useSession.js";const E={class:"c-biunique-chat__header"},O={class:"toolbar"};var w=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"}},emits:["template-click","unread-message-update"],setup(e,{expose:w,emit:V}){const J=e;C.defaults.baseURL=J.baseURL,C.defaults.headers.Authorization="bearer "+J.token;const R=N(),F=s(!1),G=s(),H=o({orgId:J.orgId,currentSessionItem:{},id:"",userInfo:{id:J.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1});t(U,H),t(q,G),t(T,V);const{openSession:$,closeSession:z,getCurrentSession:D,setSessionList:W,setUpdateSessionItem:B}=A(H);function K(){const e={headers:{AccessToken:J.token,UserId:J.userId},heartbeatFn(){try{G.value.send("test")}catch(e){G.value.disconnect(),K()}},connectCb(){console.log("连接成功"),G.value.subscribe("/user/topic/single",(async({body:e})=>{try{console.log(JSON.parse(e),"订阅新增消息");const s=JSON.parse(e),{messageVo:o,sessionVo:t}=s;switch(s.event){case M.MESSAGE:{if(s.messageVo.sender===H.userInfo.id)return;const e={receiver:o.sender,lastMessageSendTime:o.sendTime,sortTime:o.sendTime,lastMessage:o.content};o.sender===H.currentSessionItem.receiver&&(H.currentMsg=o,H.isAppendMsg=!0,await L({chatType:"SINGLE",messageIdSet:o.id,receiver:H.userInfo.id,sender:o.sender}),e.unreadNum=0),B(e);break}case M.NEW_SESSION:B(t)}}catch(e){console.log(e)}})),G.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{currentUser:o,sessionVos:t}=s;if(console.log("body",s),Object.assign(H.userInfo,o),!(null==t?void 0:t.length))return;W(t)}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};G.value=new _("/fdp-chat/websocket",e)}return async function(){K()}(),r((()=>{var e;null==(e=G.value)||e.disconnect()})),w({getUnreadData:function(){return H.sessionList.filter((e=>x(e.unreadNum)&&e.unreadNum>0))},openSession:$,closeSession:z,getCurrentSession:D}),(e,s)=>(n(),i("div",{class:"c-biunique-chat",style:a(c(R))},[u(c(f),{abstract:"",namespace:"c-biunique-chat__popover"},{default:d((()=>[F.value?(n(),m(c(S),{key:0,stroke:"#5585f5"})):(n(),i(p,{key:1},[l("div",E,[u(k),l("div",O,[h(e.$slots,"toolbar")])]),u(c(g),{class:"c-biunique-chat__body","has-sider":""},{default:d((()=>[u(b),u(c(v),{class:"chat-content"},{default:d((()=>[u(I),u(y),u(j)])),_:1}),h(e.$slots,"external")])),_:3})],64))])),_:3})],4))}});export{w as default};
|
|
@@ -6,3 +6,4 @@ export declare function toppingSessionApi(params: AnyObject): import("axios").Ax
|
|
|
6
6
|
export declare function uploadFileApi(params: FormData): import("axios").AxiosPromise<any>;
|
|
7
7
|
export declare function listUserApi(params: AnyObject): import("axios").AxiosPromise<any>;
|
|
8
8
|
export declare function getUserDetailApi(params: AnyObject): import("axios").AxiosPromise<any>;
|
|
9
|
+
export declare function readMessageApi(params: AnyObject): import("axios").AxiosPromise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import t from"axios";function e(t){const e=[];for(const o in t){const n=t[o];Array.isArray(n)?n.forEach((t=>{e.push(`${encodeURIComponent(o)}=${encodeURIComponent(t)}`)})):e.push(`${encodeURIComponent(o)}=${encodeURIComponent(n)}`)}return e.join("&")}const o=t.create({withCredentials:!0,timeout:5e3});function n(t){return o({headers:{"Content-Type":"application/x-www-form-urlencoded"},method:"post",url:"/chat/openSession",data:e(t)})}function r(t){return o({method:"get",url:"/chat/recordList",params:t})}function a(t){return o({method:"post",url:"/chat/toppingSession",data:t})}function s(t){return o({headers:{"Content-Type":"multipart/form-data"},method:"post",url:"/chat/uploadFile",data:t})}function u(t){return o({method:"get",url:"/user/listUser",params:t})}function i(t){return o({method:"get",url:"/user/getUserDetail",params:t})}o.interceptors.response.use((t=>{var e,o;if(null==(e=t.data)?void 0:e.result)return null==(o=t.data)?void 0:o.data;console.log("请求错误")}));export{r as getHistoryRecordApi,i as getUserDetailApi,o as instanceAxios,u as listUserApi,n as openSessionApi,a as toppingSessionApi,s as uploadFileApi};
|
|
1
|
+
import t from"axios";function e(t){const e=[];for(const o in t){const n=t[o];Array.isArray(n)?n.forEach((t=>{e.push(`${encodeURIComponent(o)}=${encodeURIComponent(t)}`)})):e.push(`${encodeURIComponent(o)}=${encodeURIComponent(n)}`)}return e.join("&")}const o=t.create({withCredentials:!0,timeout:5e3});function n(t){return o({headers:{"Content-Type":"application/x-www-form-urlencoded"},method:"post",url:"/chat/openSession",data:e(t)})}function r(t){return o({method:"get",url:"/chat/recordList",params:t})}function a(t){return o({method:"post",url:"/chat/toppingSession",data:t})}function s(t){return o({headers:{"Content-Type":"multipart/form-data"},method:"post",url:"/chat/uploadFile",data:t})}function u(t){return o({method:"get",url:"/user/listUser",params:t})}function i(t){return o({method:"get",url:"/user/getUserDetail",params:t})}function d(t){return o({method:"post",url:"/chat/readMessage",data:t})}o.interceptors.response.use((t=>{var e,o;if(null==(e=t.data)?void 0:e.result)return null==(o=t.data)?void 0:o.data;console.log("请求错误")}));export{r as getHistoryRecordApi,i as getUserDetailApi,o as instanceAxios,u as listUserApi,n as openSessionApi,d as readMessageApi,a as toppingSessionApi,s as uploadFileApi};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as t,ref as e,withDirectives as n,openBlock as s,createElementBlock as i,normalizeStyle as a,unref as o,createElementVNode as l,createVNode as
|
|
1
|
+
import{defineComponent as t,ref as e,withDirectives as n,openBlock as s,createElementBlock as i,normalizeStyle as a,unref as o,createElementVNode as l,createVNode as c,withCtx as r,createCommentVNode as u,Fragment as d,renderList as f,createBlock as p,createTextVNode as m,toDisplayString as g,vShow as h}from"vue";import{NPopover as v,NTooltip as y,NUpload as M,NUploadTrigger as k,NButton as x}from"naive-ui";import{format as C}from"date-fns";import{useState as T}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import{images as w,alt as E}from"../utils/emoji.js";import{MESSAGE_TYPE as I}from"../constants/index.js";import{uploadFileApi as _}from"../api/index.js";const S={class:"tool-box"},j=l("span",null,[l("i",{class:"chat--iconfont chat--icon-face"})],-1),L={class:"emoji-box"},F=l("span",null,"默认表情",-1),K={class:"list-box"},D=["onClick"],H=["src"],J=[l("i",{class:"chat--iconfont chat--icon-good"},null,-1)],N=["onClick"],O=[l("i",{class:"chat--iconfont chat--icon-image"},null,-1)],A=["onClick"],G=[l("i",{class:"chat--iconfont chat--icon-folder"},null,-1)],U={class:"btn-box"},X=l("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var z=t({__name:"ChatFooter",setup(t){const z=e(),B=e(""),{state:R,stompClient:q}=T(),{setCurrentSessionItem:P}=b(R),Q=e(!1);function V(t){["Enter"].includes(t.key)&&(function(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}(t)||(t.preventDefault(),Z()))}function W(){var t,e;B.value=(null==(e=null==(t=z.value)?void 0:t.innerText)?void 0:e.trim())||""}async function Y(t,e){const{file:n,name:s}=t.file,i=new FormData;i.append("sender",R.userInfo.id),i.append("file",n);const a=await _(i);if(!a)return console.log("上传失败");$({chatMessageType:e,msg:e===I.FILE?s:a,url:a})}function Z(){if(!(B.value.length>2e3))return B.value?void $({msg:B.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function $(t){const{chatMessageType:e=I.TEXT,msg:n,url:s}=t,i={msg:n,chatMessageType:e};e===I.FILE&&(i.fileUrl=s),[I.TEXT,I.BLEND].includes(e)&&(z.value.innerHTML="",B.value="");const a=C(new Date,"yyyy-MM-dd HH:mm:ss");R.currentMsg={content:i,sender:R.userInfo.id,id:"",sendTime:a,sending:!0,fail:!1},R.isAppendMsg=!0,P({lastMessageSendTime:a,lastMessage:i,sortTime:a});try{q.value.send("/app/chat/send",{},JSON.stringify({chatType:"SINGLE",content:i,receiver:R.currentSessionItem.receiver})),R.currentMsg={...R.currentMsg,fail:!1}}catch(t){R.currentMsg={...R.currentMsg,fail:!0}}finally{R.currentMsg={...R.currentMsg,sending:!1}}}return(t,e)=>n((s(),i("section",{class:"chat-footer",style:a({cursor:o(R).id?"default":"not-allowed"})},[l("div",S,[c(o(v),{show:Q.value,"onUpdate:show":e[0]||(e[0]=t=>Q.value=t),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:r((()=>[j])),default:r((()=>[l("div",L,[u(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),F,l("div",K,[(s(!0),i(d,null,f(o(w),((t,e)=>(s(),i(d,{key:e},[e>0?(s(),p(o(y),{key:0,"show-arrow":!1,trigger:"hover"},{trigger:r((()=>[l("i",{onClick:()=>function(t){Q.value=!1,$({chatMessageType:I.EMOJI,msg:t})}(e)},[l("img",{src:t},null,8,H)],8,D)])),default:r((()=>[m(" "+g(o(E)[e-1]||"微笑"),1)])),_:2},1024)):u("v-if",!0)],64)))),128))])])])),_:1},8,["show"]),l("span",{onClick:e[1]||(e[1]=()=>$({chatMessageType:o(I).EMOJI,msg:0}))},J),c(o(M),{abstract:"",multiple:"",accept:"image/*",onChange:e[2]||(e[2]=t=>Y(t,o(I).IMAGE))},{default:r((()=>[c(o(k),{abstract:""},{default:r((({handleClick:t})=>[l("span",{onClick:t},O,8,N)])),_:1})])),_:1}),c(o(M),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:e[3]||(e[3]=t=>Y(t,o(I).FILE))},{default:r((()=>[c(o(k),{abstract:""},{default:r((({handleClick:t})=>[l("span",{onClick:t},G,8,A)])),_:1})])),_:1})]),n(l("div",{ref_key:"inputRef",ref:z,class:"input-box",contenteditable:"",onKeydown:V,onInput:W},null,544),[[h,o(R).id]]),l("div",U,[X,c(o(x),{type:"primary",round:"",disabled:!B.value,onClick:Z},{default:r((()=>[m("发送")])),_:1},8,["disabled"])])],4)),[[h,o(R).id]])}});export{z as default};
|
|
@@ -23,7 +23,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
23
23
|
}>>;
|
|
24
24
|
emit: (event: "close", ...args: any[]) => void;
|
|
25
25
|
state: import("../types").IState;
|
|
26
|
-
openSession: (item: AnyObject) => void
|
|
26
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
27
27
|
showUserDetail: import("vue").Ref<boolean>;
|
|
28
28
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
29
29
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -278,7 +278,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
278
278
|
}>>;
|
|
279
279
|
emit: (event: "close", ...args: any[]) => void;
|
|
280
280
|
state: import("../types").IState;
|
|
281
|
-
openSession: (item: AnyObject) => void
|
|
281
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
282
282
|
showUserDetail: import("vue").Ref<boolean>;
|
|
283
283
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
284
284
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as a,openBlock as o,createElementBlock as t,Fragment as s,
|
|
1
|
+
import{defineComponent as e,ref as a,openBlock as o,createElementBlock as t,Fragment as s,unref as i,createElementVNode as r,createVNode as c,withCtx as n,toDisplayString as l,createCommentVNode as u}from"vue";import{NAvatar as h}from"naive-ui";import{useState as m}from"../hooks/useState.js";import v from"./PersonProfile.vue.js";import f from"./ChatSet.vue.js";import d from"./ChatFile.vue.js";import p from"./ChatRecord.vue.js";const w={key:0,class:"chat-header box-shadow"},C={class:"chat-header__left"},_={class:"name"},g={class:"chat-header__right"};var k=e({__name:"ChatHeader",setup(e){const{state:k}=m(),j=a(!1),S=a(!1),y=a("image"),I=a(!1);function U(e){y.value=e,S.value=!0}return(e,a)=>(o(),t(s,null,[i(k).id?(o(),t("section",w,[r("div",C,[c(v,{"user-id":i(k).currentSessionItem.receiver},{trigger:n((()=>[c(i(h),{round:"",size:30,src:i(k).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id"]),r("span",_,l(i(k).currentSessionItem.name),1)]),r("div",g,[r("i",{class:"chat--iconfont chat--icon-image",onClick:a[0]||(a[0]=()=>U("image"))}),r("i",{class:"chat--iconfont chat--icon-folder",onClick:a[1]||(a[1]=()=>U("file"))}),r("i",{class:"chat--iconfont chat--icon-list-search",onClick:a[2]||(a[2]=e=>I.value=!0)}),r("i",{class:"chat--iconfont chat--icon-set",onClick:a[3]||(a[3]=e=>j.value=!0)})])])):u("v-if",!0),c(f,{show:j.value,"onUpdate:show":a[4]||(a[4]=e=>j.value=e)},null,8,["show"]),c(d,{show:S.value,"onUpdate:show":a[5]||(a[5]=e=>S.value=e),type:y.value},null,8,["show","type"]),c(p,{show:I.value,"onUpdate:show":a[6]||(a[6]=e=>I.value=e)},null,8,["show"])],64))}});export{k as default};
|
|
@@ -4,6 +4,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
4
4
|
chatMainRef: import("vue").Ref<HTMLElement | undefined>;
|
|
5
5
|
state: import("../types").IState;
|
|
6
6
|
setMsgList: (list?: AnyObject[]) => void;
|
|
7
|
+
setCurrentSessionItem: (item: AnyObject) => void;
|
|
7
8
|
currentInfo: {
|
|
8
9
|
page: number;
|
|
9
10
|
hasMore: boolean;
|
|
@@ -235,7 +236,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
235
236
|
}>>;
|
|
236
237
|
emit: (event: "close", ...args: any[]) => void;
|
|
237
238
|
state: import("../types").IState;
|
|
238
|
-
openSession: (item: AnyObject) => void
|
|
239
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
239
240
|
showUserDetail: import("vue").Ref<boolean>;
|
|
240
241
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
241
242
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as t,watch as
|
|
1
|
+
import{defineComponent as e,ref as t,watch as s,openBlock as n,createElementBlock as o,normalizeClass as i,unref as a,createVNode as r,withCtx as m,Fragment as l,renderList as c,toDisplayString as d,createCommentVNode as u,createBlock as p,withModifiers as f}from"vue";import{NImageGroup as g,NAvatar as y,NImage as T}from"naive-ui";import{format as v,isToday as M,isYesterday as h}from"date-fns";import{getHistoryRecordApi as k,readMessageApi as L}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as _}from"../hooks/useSession.js";import{first as w,last as H,isNumber as S}from"lodash-es";import j from"./PersonProfile.vue.js";import I from"./MessageTemplate.vue.js";import{images as A}from"../utils/emoji.js";import{MESSAGE_TYPE as b}from"../constants/index.js";import{useScrollLoading as D}from"../hooks/useScrollLoading.js";const P={key:0,class:"time"},R={key:2,class:"message-box"},U=["data-time"],O=["innerHTML"],x=["src"],C=["href","onClick"];var F=e({__name:"ChatMain",setup(e){const F=t(),{state:G,setMsgList:N}=E(),{setCurrentSessionItem:J}=_(G),K={page:0,hasMore:!0,lastSendTime:v(new Date,"yyyy-MM-dd HH:mm:ss")};async function X(){try{if(!K.hasMore)return;K.page++;const e=await k({sessionKey:G.currentSessionItem.sessionKey,page:K.page,lastSendTime:K.lastSendTime});if(!Array.isArray(e)||0===e.length)return K.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=w(e).id;K.lastSendTime=H(e).sendTime,N(K.page>1?[...e,...G.msgList]:e),1===K.page&&G.currentSessionItem.unreadNum&&(await L({chatType:"SINGLE",messageIdSet:t,receiver:G.userInfo.id,sender:G.currentSessionItem.receiver}),J({unreadNum:0}))}catch(e){console.log(e)}}function Y(e){const{chatMessageType:t,messageTemplate:s}=e.content;return t!==b.TEMPLATE||!!s}function q(e,t){var s,n;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===b.TEMPLATE)return"system"===t?2==(null==(s=null==i?void 0:i.setting)?void 0:s.style.id):2!=(null==(n=null==i?void 0:i.setting)?void 0:n.style.id)}function z(e){var t,s;const{chatMessageType:n,messageTemplate:o}=e;return n===b.TEMPLATE&&3==(null==(s=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:s.id)}function B(e,t){var s;const n=S(e.sendTime)?e.sendTime:Date.parse(e.sendTime),o=null==(s=G.msgList[t-1])?void 0:s.sendTime;return n-(0===t?0:S(o)?o:Date.parse(o))>3e5}function Q(e){const t=new Date(e),s=Date.now()-t.getTime();if(s<6e4)return"刚刚";if(s<36e5)return Math.ceil(s/1e3/60)+"分钟前";if(M(t))return"今天 "+v(t,"HH:mm");if(h(t))return"昨天 "+v(t,"HH:mm");{const e=t.getFullYear(),s=(new Date).getFullYear();return v(t,e<s?"yyyy年M月d日 HH:mm":"M月d日 HH:mm")}}return D(F,(()=>{X()}),"top"),s((()=>G.id),(e=>{e&&(Object.assign(K,{page:0,hasMore:!0,lastSendTime:v(new Date,"yyyy-MM-dd HH:mm:ss")}),X())}),{immediate:!0}),s((()=>G.isAppendMsg),(e=>{e&&(N([...G.msgList,G.currentMsg]),G.isAppendMsg=!1,async function(){var e,t,s;const n=null!=(t=null==(e=F.value)?void 0:e.scrollHeight)?t:0;null==(s=F.value)||s.scrollTo({top:n,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(n(),o("div",{class:i(["chat-main",{"home-bg":!a(G).id}]),ref_key:"chatMainRef",ref:F},[r(a(g),{"show-toolbar-tooltip":""},{default:m((()=>[(n(!0),o(l,null,c(a(G).msgList,((e,t)=>(n(),o(l,{key:t},[Y(e)?(n(),o("div",{key:0,class:i(["message-item",{"message-item--mine":e.sender==a(G).userInfo.id}])},[B(e,t)?(n(),o("p",P,d(Q(e.sendTime)),1)):u("v-if",!0),q(e,"system")?(n(),p(I,{key:1,data:e},null,8,["data"])):(n(),o("div",R,[r(j,{"user-id":e.sender},{trigger:m((()=>[r(a(y),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(n(),o("div",{key:0,class:i(["content",{emoji:e.content.chatMessageType===a(b).EMOJI,template:e.content.chatMessageType===a(b).TEMPLATE,"template--3":z(e.content)}]),"data-time":e.__time},[e.content.chatMessageType===a(b).TEXT?(n(),o("pre",{key:0,innerHTML:e.__content},null,8,O)):u("v-if",!0),e.content.chatMessageType===a(b).EMOJI?(n(),o("img",{key:1,src:a(A)[e.__content]},null,8,x)):u("v-if",!0),q(e,"template")?(n(),p(I,{key:2,data:e},null,8,["data"])):u("v-if",!0),e.content.chatMessageType===a(b).IMAGE?(n(),p(a(T),{key:3,width:"240",src:e.__content},null,8,["src"])):u("v-if",!0),e.content.chatMessageType===a(b).FILE?(n(),o("a",{key:4,href:e.content.fileUrl,onClick:f((()=>function(e,t){const s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="blob",s.onload=function(n){if(200===s.status){const n=window.URL.createObjectURL(s.response),o=document.createElement("a");o.href=n,o.download=t,o.dispatchEvent(new MouseEvent("click")),window.URL.revokeObjectURL(e)}},s.send()}(e.content.fileUrl,e.__content)),["prevent"])},d(e.__content),9,C)):u("v-if",!0)],10,U)):u("v-if",!0)]))],2)):u("v-if",!0)],64)))),128))])),_:1})],2))}});export{F as default};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{}, {
|
|
2
|
+
cssVars: import("vue").ComputedRef<import("vue").CSSProperties>;
|
|
2
3
|
inputRef: import("vue").Ref<any>;
|
|
3
4
|
showSearch: import("vue").Ref<boolean>;
|
|
4
5
|
keyword: import("vue").Ref<any>;
|
|
5
6
|
userList: import("vue").Ref<any>;
|
|
6
7
|
state: import("../types").IState;
|
|
7
|
-
openSession: (item: import("../../..").AnyObject) => void
|
|
8
|
+
openSession: (item: import("../../..").AnyObject) => Promise<void>;
|
|
9
|
+
handleInput: () => Promise<void>;
|
|
8
10
|
handleSearch: () => Promise<void>;
|
|
9
11
|
addSession: (userId: string) => Promise<void>;
|
|
10
12
|
NPopover: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as o,watch as
|
|
1
|
+
import{defineComponent as e,ref as o,watch as s,nextTick as r,openBlock as a,createBlock as t,unref as n,withCtx as i,createVNode as l,createTextVNode as u,createElementVNode as f,normalizeStyle as c,createElementBlock as p,Fragment as m,renderList as v,toDisplayString as d}from"vue";import{NPopover as h,NButton as k,NIcon as w,NInput as y,NAvatar as g}from"naive-ui";import{SearchOutline as j}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{useSession as S}from"../hooks/useSession.js";import{listUserApi as _,openSessionApi as x}from"../api/index.js";import{isArray as C}from"lodash-es";import{useDebounceFn as b}from"@vueuse/core";import{useTheme as z}from"../../../../shared/hooks/useTheme.js";import"date-fns";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";const T={class:"user-list-wrapper"},U=["onClick"],D={class:"user-info"},E=f("span",null,"职务",-1),G=f("span",null,"部门",-1);var H=e({__name:"ChatSearch",setup(e){const H=z(),L=o(),M=o(!1),N=o(),R=o(),{state:q}=I(),{openSession:A}=S(q),B=b((async function(){if(!N.value)return void(R.value=[]);const e=await _({orgId:q.orgId,keyword:N.value});if(!C(e))return;R.value=e}),300);return s((()=>M.value),(async e=>{var o;e&&(await r(),null==(o=L.value)||o.focus())})),(e,o)=>(a(),t(n(h),{show:M.value,"onUpdate:show":o[1]||(o[1]=e=>M.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:i((()=>[l(n(k),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:i((()=>[l(n(w),{component:n(j),color:"#ffffff80"},null,8,["component"])])),default:i((()=>[u(" 搜索联系人 ")])),_:1})])),default:i((()=>[f("div",{class:"popover-search",style:c(n(H))},[l(n(y),{ref_key:"inputRef",ref:L,size:"small",clearable:"",autofocus:"",value:N.value,"onUpdate:value":o[0]||(o[0]=e=>N.value=e),valueModifiers:{trim:!0},onInput:n(B)},{prefix:i((()=>[l(n(w),{color:"#ffffff80",component:n(j)},null,8,["component"])])),_:1},8,["value","onInput"]),f("div",T,[(a(!0),p(m,null,v(R.value,(e=>(a(),p("div",{class:"user-item",key:e.id,onClick:()=>async function(e){M.value=!1;const o=await x({chatType:"SINGLE",receiver:e,sender:q.userInfo.id});A(o)}(e.id)},[l(n(g),{round:"",size:32,src:e.avatar},null,8,["src"]),f("div",D,[f("span",null,d(e.name),1),E,G])],8,U)))),128))])],4)])),_:1},8,["show"]))}});export{H as default};
|
|
@@ -206,7 +206,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
206
206
|
}>>;
|
|
207
207
|
emit: (event: "close", ...args: any[]) => void;
|
|
208
208
|
state: import("../types").IState;
|
|
209
|
-
openSession: (item: AnyObject) => void
|
|
209
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
210
210
|
showUserDetail: import("vue").Ref<boolean>;
|
|
211
211
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
212
212
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,useAttrs as s,openBlock as
|
|
1
|
+
import{defineComponent as e,useAttrs as s,openBlock as t,createBlock as o,unref as n,withCtx as i,createVNode as r,createElementVNode as a,toDisplayString as c}from"vue";import{NDrawer as u,NDrawerContent as m,NAvatar as l,NIcon as p,NSwitch as d}from"naive-ui";import{ChevronForwardOutline as f}from"@vicons/ionicons5";import{useState as v}from"../hooks/useState.js";import{useSession as h}from"../hooks/useSession.js";import S from"./PersonProfile.vue.js";import{toppingSessionApi as g}from"../api/index.js";import{isFunction as _}from"lodash-es";const I={class:"chat-set-wrapper"},w={class:"item user-info"},j={class:"item"},y=a("span",{class:"label"},"置顶聊天",-1);var b=e({__name:"ChatSet",setup(e){const b=s(),{state:k}=v(),{setCurrentSessionItem:C}=h(k);async function U(e){try{await g({sessionKey:k.currentSessionItem.sessionKey,id:k.currentSessionItem.id,topping:e}),C({topping:e})}catch(e){console.log(e)}}function x(){_(b["onUpdate:show"])&&b["onUpdate:show"](!1)}return(e,s)=>(t(),o(n(u),{width:320,"trap-focus":!1,"block-scroll":!1,to:".c-biunique-chat"},{default:i((()=>[r(n(m),{title:"聊天设置"},{default:i((()=>[a("div",I,[r(S,{"user-id":n(k).currentSessionItem.receiver,onClose:x},{trigger:i((()=>[a("div",w,[r(n(l),{round:"",size:40,src:n(k).currentSessionItem.avatar},null,8,["src"]),a("span",null,c(n(k).currentSessionItem.name),1),r(n(p),{size:24,component:n(f),class:"item__right"},null,8,["component"])])])),_:1},8,["user-id"]),a("div",j,[y,r(n(d),{value:n(k).currentSessionItem.topping,"onUpdate:value":[s[0]||(s[0]=e=>n(k).currentSessionItem.topping=e),U],class:"item__right"},null,8,["value"])])])])),_:1})])),_:1}))}});export{b as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as t,computed as l,openBlock as s,createElementBlock as
|
|
1
|
+
import{defineComponent as e,ref as t,computed as l,openBlock as s,createElementBlock as n,Fragment as o,unref as a,createElementVNode as i,toDisplayString as c,withModifiers as r,createBlock as d,createCommentVNode as m,renderList as u,withCtx as p,createTextVNode as v,normalizeClass as f,createVNode as g}from"vue";import{NIcon as y,NButton as k}from"naive-ui";import{ChevronForwardOutline as _,AlertCircleSharp as h}from"@vicons/ionicons5";import b from"../../../../shared/components/SvgIcon/SvgIcon.vue.js";import{useState as T}from"../hooks/useState.js";const C={class:"default-msg-template__header"},M={class:"title"},L={class:"default-msg-template__body"},S=["src"],E={class:"template-content"},H=["innerHTML"],N={key:0,class:"default-msg-template__btn-group"},w=i("i",{class:"chat--iconfont chat--icon-more"},null,-1),j={key:1,class:"describe-msg-template"},B={class:"describe-msg-template__header"},D={class:"title"},O={class:"txt"},x=i("i",{class:"chat--iconfont chat--icon-more"},null,-1),z={key:2,class:"system-msg-template"},F=["innerHTML"],I=["onClick"];var P=e({__name:"MessageTemplate",props:{data:{type:Object,required:!0}},setup(e){const P=e,R=t(),q=t(!0),{emit:V}=T(),W=l((()=>{if(!R.value)return!1;const{childNodes:e,clientWidth:t}=R.value;let l=0;for(let s=0;s<e.length;s++)if(e[s].nodeType===Node.ELEMENT_NODE){const t=parseFloat(window.getComputedStyle(e[s]).lineHeight);l+=e[s].scrollHeight/t}else if(e[s].nodeType===Node.TEXT_NODE){const n=e[s].nodeValue.trim();if(""!==n){const e=n.split(" "),s=Math.floor(t/parseFloat(window.getComputedStyle(R.value).fontSize));l+=Math.ceil(e.length/s)}}return l>6})),X=l((()=>P.data.content.messageTemplate.setting)),$=l((()=>X.value.serverSetting)),A=l((()=>($.value.topRightButton||[])[0])),G=l((()=>{const e=(X.value.content||"").split("##").filter((e=>e));if(!e)return[];const{dbParamsList:t}=X.value||{};return e.map((e=>(e||"").replace(/\\n|\n|\r/g,"<br>").replace(/\${(.*?)}/g,((e,l)=>{var s;if(0===(t||[]).length)return"";return(null==(s=t.find((e=>e.p_name===l)))?void 0:s.desc)||""}))))})),J=l((()=>{var e;return(null==(e=$.value)?void 0:e.toolbar_button)||[]})),K=l((()=>($.value.bottomButton||[])[0])),Q=l((()=>X.value.dbParamsList)),U=l((()=>P.data.content.messageTemplateData));function Y(e){V("template-click",e,P.data)}return(e,t)=>(s(),n(o,null,[1==a(X).style.id?(s(),n("div",{key:0,class:"default-msg-template",onClick:t[2]||(t[2]=()=>Y(a($)))},[i("div",C,[i("span",M,c(a(X).title),1),a(A)?(s(),n("span",{key:0,class:"btn",onClick:t[0]||(t[0]=r((()=>Y(a(A))),["stop"]))},c(a(A).title),1)):a($).address?(s(),d(a(y),{key:1,component:a(_),color:"#969696"},null,8,["component"])):m("v-if",!0)]),i("div",L,[a(X).style.icon?(s(),d(a(b),{key:0,class:"logo","icon-class":a(X).style.icon},null,8,["icon-class"])):a(X).style.image?(s(),n("img",{key:1,class:"logo",src:a(X).style.image},null,8,S)):m("v-if",!0),i("div",E,[(s(!0),n(o,null,u(a(G),(e=>(s(),n("div",{key:e,innerHTML:e},null,8,H)))),128))])]),a(J)?(s(),n("div",N,[(s(!0),n(o,null,u(a(J),((e,t)=>(s(),d(a(k),{type:"primary",round:"",ghost:"",onClick:r((()=>Y(e)),["stop"]),key:t},{default:p((()=>[v(c(e.title),1)])),_:2},1032,["onClick"])))),128))])):m("v-if",!0),a(K)?(s(),n("div",{key:1,class:"default-msg-template__footer",onClick:t[1]||(t[1]=r((()=>Y(a(K))),["stop"]))},[v(c(a(K).title)+" ",1),w])):m("v-if",!0)])):m("v-if",!0),3==a(X).style.id?(s(),n("div",j,[i("div",B,c(a(X).title),1),i("div",{class:f(["describe-msg-template__body",a(W)&&q.value?"overflow-hidden":""]),ref_key:"describeBodyRef",ref:R},[(s(!0),n(o,null,u(a(Q),((e,t)=>(s(),n(o,{key:t},[i("div",D,c(e.desc),1),i("div",O,c(a(U)[e.p_name]),1)],64)))),128))],2),a(W)?(s(),n("div",{key:0,class:f(["describe-msg-template__footer",q.value?"":"hidden"]),onClick:t[3]||(t[3]=()=>q.value=!1)},[v(" 展开全部 "),x],2)):m("v-if",!0)])):m("v-if",!0),2==a(X).style.id?(s(),n("div",z,[g(a(y),{component:a(h),color:"#ffc200",size:18},null,8,["component"]),i("span",{innerHTML:G.value.join("<br>")},null,8,F),(s(!0),n(o,null,u(a(J),((e,t)=>(s(),n("span",{class:"btn",onClick:()=>Y(e),key:t},c(e.title),9,I)))),128))])):m("v-if",!0)],64))}});export{P as default};
|
|
@@ -16,7 +16,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
16
16
|
}>>;
|
|
17
17
|
emit: (event: "close", ...args: any[]) => void;
|
|
18
18
|
state: import("../types").IState;
|
|
19
|
-
openSession: (item: AnyObject) => void
|
|
19
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
20
20
|
showUserDetail: import("vue").Ref<boolean>;
|
|
21
21
|
showLargeAvatar: import("vue").Ref<boolean>;
|
|
22
22
|
showPhone: import("vue").Ref<boolean>;
|
|
@@ -15,7 +15,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
15
15
|
currentFilterKey: import("vue").Ref<string>;
|
|
16
16
|
state: import("../types").IState;
|
|
17
17
|
emit: (event: string, ...args: any[]) => void;
|
|
18
|
-
openSession: (item: AnyObject) => void
|
|
18
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
19
19
|
unreadTotal: import("vue").ComputedRef<number>;
|
|
20
20
|
setSessionList: (list: AnyObject[]) => void;
|
|
21
21
|
currentWidth: import("vue").ComputedRef<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as s,computed as i,watch as
|
|
1
|
+
import{defineComponent as e,ref as s,computed as i,watch as t,withDirectives as a,openBlock as n,createElementBlock as l,normalizeStyle as r,unref as o,createBlock as u,createCommentVNode as d,createElementVNode as v,Fragment as m,renderList as c,withCtx as p,createTextVNode as f,toDisplayString as k,normalizeClass as _,createVNode as h,vShow as y}from"vue";import{NSpin as S,NTag as g,NAvatar as b,NBadge as x}from"naive-ui";import{useState as M}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import{vFlexibleResize as C}from"../../../../shared/directive/flexibleResize.js";import{listSort as j,formatTime as N}from"../utils/index.js";const T={class:"sider-list__filter box-shadow"},w=["onClick"],I={class:"avatar-right"},R={class:"name"},z={class:"msg-tip"},H={class:"msg-tip__content"},U=["innerHTML"];var B=e({__name:"SiderList",setup(e){const B="all",E="unread",O=s(300),V=s(),q=s(!1),A=s([{label:"全部",key:B},{label:"未读",key:E}]),D=s("all"),{state:F,emit:G}=M(),{openSession:J,unreadTotal:K,setSessionList:P}=L(F),Q=i((()=>Math.min(Math.max(O.value,240),360))),W=i((()=>j(F.sessionList)));function X(e){!e.id||F.sessionList.map((e=>e.id)).includes(e.id)?F.sessionList.forEach((s=>{if(s.receiver===e.receiver){let{unreadNum:i=0}=s;Object.assign(s,e),e.receiver!==F.currentSessionItem.receiver&&(s.unreadNum=++i)}})):P([...F.sessionList,e])}function Y({distance:e}){O.value=O.value+e}function Z(e,s=o(D)){var i;return s===B||(s===E?(null!=(i=e.unreadNum)?i:0)>0:void 0)}return t([()=>F.isChangeSession,()=>F.isUpdateSession],(([e,s])=>{e&&(X(F.currentSessionItem),F.isChangeSession=!1),s&&(X(F.updateSessionItem),F.isUpdateSession=!1)}),{immediate:!0}),t((()=>K.value),(e=>{const s=W.value.filter((e=>Z(e,E)));G("unread-message-update",e,s)})),(e,s)=>a((n(),l("section",{class:"sider-list",style:r({width:o(Q)+"px"})},[q.value?(n(),u(o(S),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),v("div",T,[(n(!0),l(m,null,c(A.value,(e=>(n(),u(o(g),{type:D.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>{return s=e.key,void(D.value=s);var s}},{default:p((()=>[f(k(e.label)+"("+k(o(K))+") ",1)])),_:2},1032,["type","onClick"])))),128))]),v("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:V},[(n(!0),l(m,null,c(o(W),(e=>a((n(),l("div",{key:e.id,onClick:()=>o(J)(e),class:_(["sider-list__box__item",{active:e.id===o(F).id},e.topping?"sider-list__box__item--top":""])},[h(o(b),{round:"",size:"large",src:e.avatar},null,8,["src"]),v("div",I,[v("div",R,[v("h4",null,k(e.name),1),v("span",null,k(e.lastMessage?o(N)(e.lastMessageSendTime).siderMsgTime:""),1)]),v("div",z,[v("div",H,[v("div",{innerHTML:e.lastMessageContent},null,8,U)]),h(o(x),{value:e.unreadNum>99?"99+":e.unreadNum},null,8,["value"])])])],10,w)),[[y,Z(e)]]))),128))],512)],4)),[[o(C),{mode:"VR",onMove:Y}]])}});export{B as default};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyObject } from '../../../../shared/types';
|
|
2
2
|
import { IState } from '../types';
|
|
3
3
|
export declare function useSession(state: IState): {
|
|
4
|
-
openSession: (item: AnyObject) => void
|
|
4
|
+
openSession: (item: AnyObject) => Promise<void>;
|
|
5
5
|
closeSession: () => AnyObject | null;
|
|
6
6
|
getCurrentSession: () => AnyObject | null;
|
|
7
7
|
setCurrentSessionItem: (item: AnyObject) => void;
|