operatingArea.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <!--
  2. * @Description: 头部
  3. * @Author: kcz
  4. * @Date: 2019-12-30 00:37:05
  5. * @LastEditors: kcz
  6. * @LastEditTime: 2021-05-27 23:01:59
  7. -->
  8. <template>
  9. <div class="operating-area">
  10. <!-- 头部操作按钮区域 start -->
  11. <!-- 操作左侧区域 start -->
  12. <div class="left-btn-box">
  13. <a-tooltip title="保存">
  14. <a v-if="toolbars.includes('save')" @click="$emit('handleSave')">
  15. <a-icon type="save" />
  16. <span v-if="showToolbarsText">保存</span>
  17. </a>
  18. </a-tooltip>
  19. <a-tooltip title="预览">
  20. <a v-if="toolbars.includes('preview')" @click="$emit('handlePreview')">
  21. <a-icon type="chrome" />
  22. <span v-if="showToolbarsText">预览</span>
  23. </a>
  24. </a-tooltip>
  25. <a-tooltip title="查询">
  26. <a v-if="toolbars.includes('preview')" @click="$emit('handleQuery')">
  27. <a-icon type="search" />
  28. <span v-if="showToolbarsText">查询</span>
  29. </a>
  30. </a-tooltip>
  31. <a-tooltip title="导入">
  32. <a
  33. v-if="toolbars.includes('importJson')"
  34. @click="$emit('handleOpenImportJsonModal')"
  35. >
  36. <a-icon type="upload" />
  37. <span v-if="showToolbarsText">导入</span>
  38. </a>
  39. </a-tooltip>
  40. <a-tooltip title="生成JSON">
  41. <a
  42. v-if="toolbars.includes('exportJson')"
  43. @click="$emit('handleOpenJsonModal')"
  44. >
  45. <a-icon type="credit-card" />
  46. <span v-if="showToolbarsText">生成JSON</span>
  47. </a>
  48. </a-tooltip>
  49. <a-tooltip title="生成代码">
  50. <a
  51. v-if="toolbars.includes('exportCode')"
  52. @click="$emit('handleOpenCodeModal')"
  53. >
  54. <a-icon type="code" />
  55. <span v-if="showToolbarsText">生成代码</span>
  56. </a>
  57. </a-tooltip>
  58. <a-tooltip title="清空">
  59. <a v-if="toolbars.includes('reset')" @click="$emit('handleReset')">
  60. <a-icon type="delete" />
  61. <span v-if="showToolbarsText">清空</span>
  62. </a>
  63. </a-tooltip>
  64. <a-divider type="vertical" />
  65. <a-tooltip title="撤销">
  66. <a
  67. v-if="toolbars.includes('undo')"
  68. :class="{ disabled: !(recordList.length > 0) }"
  69. @click="$emit('handleUndo')"
  70. >
  71. <a-icon type="undo" />
  72. <span v-if="showToolbarsText">撤销</span>
  73. </a>
  74. </a-tooltip>
  75. <a-tooltip title="重做">
  76. <a
  77. v-if="toolbars.includes('redo')"
  78. :class="{ disabled: !(redoList.length > 0) }"
  79. @click="$emit('handleRedo')"
  80. >
  81. <a-icon type="redo" />
  82. <span v-if="showToolbarsText">重做</span>
  83. </a>
  84. </a-tooltip>
  85. <!-- 按钮左侧插槽 start -->
  86. <slot name="left-action"></slot>
  87. <!-- 按钮左侧插槽 end -->
  88. </div>
  89. <!-- 操作左侧区域 end -->
  90. <!-- 操作右侧区域 start -->
  91. <div class="right-btn-box">
  92. <!-- 按钮右侧插槽 start -->
  93. <slot name="right-action"></slot>
  94. <!-- 按钮右侧插槽 end -->
  95. <a-tooltip title="关闭">
  96. <a v-if="toolbars.includes('close')" @click="$emit('handleClose')">
  97. <a-icon type="close" />
  98. </a>
  99. </a-tooltip>
  100. </div>
  101. <!-- 操作右侧区域 end -->
  102. <!-- 头部操作按钮区域 end -->
  103. </div>
  104. <!-- 操作区域 start -->
  105. </template>
  106. <script>
  107. export default {
  108. props: {
  109. toolbars: {
  110. type: Array,
  111. default: () => [
  112. "save",
  113. "preview",
  114. "importJson",
  115. "exportJson",
  116. "exportCode",
  117. "reset",
  118. "close"
  119. ]
  120. },
  121. recordList: {
  122. type: Array,
  123. require: true
  124. },
  125. redoList: {
  126. type: Array,
  127. require: true
  128. },
  129. showToolbarsText: {
  130. type: Boolean,
  131. default: false
  132. }
  133. }
  134. };
  135. </script>