cnhis-design-vue 3.2.4-beta.1 → 3.2.4-beta.11
Sign up to get free protection for your applications and to get access to all the features.
- 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/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/button-print/src/ButtonPrint.vue2.js +1 -1
- package/es/components/callback/src/components/render/popupMaps.d.ts +5 -0
- package/es/components/card-reader-sdk/src/cardReaderSDK.js +1 -1
- package/es/components/card-reader-sdk/src/constants/index.d.ts +92 -0
- package/es/components/card-reader-sdk/src/constants/index.js +1 -1
- package/es/components/classification/src/index.vue.d.ts +3 -0
- package/es/components/date-picker/src/DatePicker.vue2.js +1 -1
- package/es/components/form-config/index.d.ts +23 -0
- package/es/components/form-config/src/FormConfig.vue.d.ts +23 -0
- package/es/components/form-config/src/components/FormConfigCreator.vue.d.ts +5 -0
- package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +11 -0
- package/es/components/form-render/index.d.ts +5 -0
- package/es/components/form-render/index.js +1 -1
- package/es/components/form-render/src/FormRender.vue.d.ts +5 -0
- package/es/components/form-render/src/FormRender.vue2.js +1 -1
- package/es/components/form-render/src/FormRenderWrapper.vue.d.ts +5 -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/components/renderer/lineBar/FormCollapse.vue.d.ts +1 -0
- package/es/components/form-render/src/components/renderer/lineBar/index.d.ts +1 -0
- package/es/components/form-render/src/hooks/useFieldListAdaptor.js +1 -1
- package/es/components/form-render/src/hooks/useFieldNormalize.d.ts +2 -0
- package/es/components/form-render/src/hooks/useFieldNormalize.js +1 -1
- package/es/components/form-render/src/types/fieldItem.d.ts +1 -0
- package/es/components/form-render/src/types/index.d.ts +1 -0
- package/es/components/form-render/src/utils/dom.js +1 -1
- package/es/components/form-render/src/utils/schema.d.ts +1 -0
- package/es/components/form-render/src/utils/schema.js +1 -1
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/index.js +1 -1
- 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/info-header/index.d.ts +15 -0
- package/es/components/info-header/src/InfoHeader.vue.d.ts +15 -0
- package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue.d.ts +1 -0
- package/es/components/info-header/src/components/infoDescription/DescriptionList.vue.d.ts +1 -0
- package/es/components/info-header/src/components/infoDescription/index.vue.d.ts +6 -0
- package/es/components/info-header/src/components/patientInfo/index.vue.d.ts +5 -0
- 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 +6 -0
- package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +6 -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/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};
|
@@ -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;
|
@@ -1 +1 @@
|
|
1
|
-
import{computed as s}from"vue";import{transformLastMessage as e}from"../utils/index.js";function
|
1
|
+
import{computed as s}from"vue";import{transformLastMessage as e}from"../utils/index.js";import{uniqBy as t}from"lodash-es";function n(n){function i(s){Object.assign(n.currentSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):n.currentSessionItem.lastMessageContent||""}),n.isChangeSession=!0,n.id!==n.currentSessionItem.id&&(n.msgList=[],n.id=n.currentSessionItem.id)}return{openSession:async function(s){i(s)},closeSession:function(){if(!n.id)return null;const{currentSessionItem:s}=n;return n.currentSessionItem={},n.msgList=[],n.id="",s},getCurrentSession:function(){return n.id?n.currentSessionItem:null},setCurrentSessionItem:i,setUpdateSessionItem:function(s){Object.assign(n.updateSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):""}),n.isUpdateSession=!0},unreadTotal:s((()=>n.sessionList.reduce(((s,e)=>s+ +e.unreadNum),0))),setSessionList:function(s){n.sessionList=t(s.map((s=>{const{lastMessage:t}=s;return{...s,lastMessageContent:Reflect.has(s,"lastMessageContent")?s.lastMessageContent:t?e(t):""}})),"id")}}}export{n as useSession};
|