• ruoyi-nbcio-plus基于vue3的flowable的websocket消息组件的升级修改(二)


    更多ruoyi-nbcio功能请看演示系统

    gitee源代码地址

    前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

    演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/

    更多nbcio-boot功能请看演示系统 

    gitee源代码地址

    后端代码: https://gitee.com/nbacheng/nbcio-boot

    前端代码:https://gitee.com/nbacheng/nbcio-vue.git

    在线演示(包括H5) : http://122.227.135.243:9888

    接上一节

    4、NModal.vue文件vue3修改如下:

    1. <script setup lang="ts" name="NModal">
    2. const props = defineProps({
    3. title: String,
    4. // 可使用 .sync 修饰符
    5. visible: Boolean,
    6. // 是否全屏弹窗,当全屏时无论如何都会禁止 body 滚动。可使用 .sync 修饰符
    7. fullscreen: {
    8. type: Boolean,
    9. default: false
    10. },
    11. // 是否允许切换全屏(允许后右上角会出现一个按钮)
    12. switchFullscreen: {
    13. type: Boolean,
    14. default: false
    15. },
    16. // 点击确定按钮的时候是否关闭弹窗
    17. okClose: {
    18. type: Boolean,
    19. default: true
    20. }
    21. })
    22. const instance = getCurrentInstance();
    23. // 内部使用的 slots ,不再处理
    24. const usedSlots = ref('title')
    25. const isNoTitle = computed(() => {
    26. return !props.title && !allSlotsKeys.includes('title')
    27. })
    28. const slotsKeys = computed(() => {
    29. return Object.keys(instance.slots).filter(key => !usedSlots.value.includes(key))
    30. })
    31. const scopedSlotsKeys = computed(() => {
    32. return Object.keys(instance.slots).filter(key => !usedSlots.value.includes(key))
    33. })
    34. const allSlotsKeys = computed(() => {
    35. return Object.keys(instance.slots).concat(Object.keys(instance.slots))
    36. })
    37. script>
    38. <style lang="less">
    39. .j-modal-box {
    40. &.fullscreen {
    41. top: 0;
    42. left: 0;
    43. padding: 0;
    44. // 兼容1.6.2版本的antdv
    45. & .ant-modal {
    46. top: 0;
    47. padding: 0;
    48. height: 100vh;
    49. }
    50. & .ant-modal-content {
    51. height: 100vh;
    52. border-radius: 0;
    53. & .ant-modal-body {
    54. /* title 和 footer 各占 55px */
    55. height: calc(100% - 55px - 55px);
    56. overflow: auto;
    57. }
    58. }
    59. &.no-title, &.no-footer {
    60. .ant-modal-body {
    61. height: calc(100% - 55px);
    62. }
    63. }
    64. &.no-title.no-footer {
    65. .ant-modal-body {
    66. height: 100%;
    67. }
    68. }
    69. }
    70. .j-modal-title-row {
    71. .left {
    72. width: calc(100% - 56px - 56px);
    73. }
    74. .right {
    75. width: 56px;
    76. position: inherit;
    77. .ant-modal-close {
    78. right: 56px;
    79. color: rgba(0, 0, 0, 0.45);
    80. &:hover {
    81. color: rgba(0, 0, 0, 0.75);
    82. }
    83. }
    84. }
    85. }
    86. &.no-title{
    87. .ant-modal-header {
    88. padding: 0px 24px;
    89. border-bottom: 0px !important;
    90. }
    91. }
    92. }
    93. @media (max-width: 767px) {
    94. .j-modal-box.fullscreen {
    95. margin: 0;
    96. max-width: 100vw;
    97. }
    98. }
    99. style>

    5、DynamicNotice.vue文件vue3

    1. <script setup lang="ts" name="DynamicNotice">
    2. const props = defineProps({
    3. path : {
    4. type: String,
    5. },
    6. formData : {
    7. type: Object,
    8. default: {},
    9. }
    10. })
    11. const compName = ref(props.path)
    12. const compModelRef = ref(null)
    13. const DyDetail = () => {
    14. setTimeout(() => {
    15. if(props.path){
    16. compModelRef.value?.view(props.formData);
    17. }
    18. }, 200)
    19. }
    20. const comp = computed(() => {
    21. if(!props.path){
    22. return null;
    23. }
    24. //去掉这个编译警告Critical dependency: the request of a dependency is an expression
    25. //return () => Promise.resolve(require(`@/views/${props.path}.vue`).default)
    26. return markRaw(defineAsyncComponent( () => import(/* @vite-ignore */`@/views/${props.path}.vue`).default));
    27. })
    28. //暴露detail方法
    29. defineExpose({
    30. DyDetail
    31. });
    32. script>

    6、效果图如下:

  • 相关阅读:
    springboot大学生拼车管理系统毕业设计源码201507
    在Windows环境下将Tomcat发布成服务,并配置JVM参数
    W6_二叉树
    基于51单片机的智能红外遥控防雨晾衣架 雨滴光强检测系统proteus仿真原理图PCB
    汽车网络安全渗透测试概述
    命令模式(command)
    C语言集合运算
    E. Iva & Pav -前缀和 + 二分 +位运算
    Redis到底是AP还是CP?
    学习 Axure RP 的不同阶段
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/137917930