index.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <div class="layer2d p-4">
  3. <div class="layer2d-body">
  4. <BasicTable @register="registerTable">
  5. <template #toolbar>
  6. <Button type="primary" @click="handleCreate(null)">
  7. 新增
  8. </Button>
  9. <!-- <Button type="primary" danger :disabled="hasSelected" @click="delAllData">
  10. 批量删除
  11. </Button> -->
  12. </template>
  13. <template #level="{ record }">
  14. <div>{{ record.minimumLevel }}-{{ record.maximumLevel }}</div>
  15. </template>
  16. <template #show="{ record }">
  17. <div>{{ record.show ? '显示' : '隐藏' }}</div>
  18. </template>
  19. <template #func="{ record }">
  20. <TableAction :actions="[
  21. {
  22. label: '编辑',
  23. tooltip: '编辑',
  24. //icon: 'clarity:note-edit-line',
  25. onClick: handleEdit.bind(null, record),
  26. },
  27. {
  28. label: '删除',
  29. tooltip: '删除',
  30. //icon: 'ant-design:delete-outlined',
  31. //color: 'error',
  32. popConfirm: {
  33. title: '确定删除该数据吗?',
  34. confirm: handleDelete.bind(null, record),
  35. },
  36. },
  37. ]" />
  38. </template>
  39. </BasicTable>
  40. </div>
  41. <!-- 弹出框 -->
  42. <Modal @register="registerDrawer" @success="handleSuccess" />
  43. </div>
  44. </template>
  45. <script>
  46. import { defineComponent, onMounted, watch, ref, reactive, toRefs, computed } from 'vue';
  47. // 导入表格组件,表格事件
  48. import { BasicTable, useTable, TableAction } from '/@/components/Table';
  49. import { Button } from 'ant-design-vue';
  50. import { message, notification } from 'ant-design-vue';
  51. import moment from 'moment'
  52. import { session } from '/@/utils/Memory';
  53. import { get3dLayers } from '/@/api/sys/mapTools';
  54. import { removeLayer3d } from '/@/api/twoAndThree/menu';
  55. import { columns } from "./config.data";
  56. // 加载自定义侧边弹出框 组件
  57. import { useModal } from '/@/components/Modal';
  58. // 导入子页面【新增、修改】
  59. import Modal from './Modal.vue';
  60. import { isArray } from '/@/utils/is';
  61. export default defineComponent({
  62. components: { BasicTable, TableAction, Button, Modal },
  63. name: "tools",
  64. setup() {
  65. const [registerDrawer, { openModal }] = useModal(); //使用弹出框
  66. const getAllData = () => {
  67. return new Promise((resolve) => {
  68. get3dLayers().then(res => {
  69. if (res.code === 200 && res.data.length) {
  70. resolve(res.data)
  71. } else {
  72. message.error('暂无图层数据!')
  73. resolve(false)
  74. }
  75. })
  76. })
  77. }
  78. //判断是否选中数据
  79. const hasSelected = computed(() => {
  80. const rowSelection = getRowSelection();
  81. return !rowSelection.selectedRowKeys?.length;
  82. });
  83. //注册tag表格
  84. const [
  85. registerTable,
  86. { reload, getRowSelection, getSelectRowKeys, setSelectedRowKeys }
  87. ] = useTable({
  88. title: '图层列表', //'菜单列表'
  89. api: getAllData, //加载数据
  90. // dataSource: getAllData,
  91. columns: columns,
  92. useSearchForm: false, //开启搜索区域
  93. bordered: true,
  94. canResize: false,
  95. showTableSetting: true, // 显示表格设置
  96. tableSetting: {
  97. redo: true,
  98. size: true,
  99. setting: false,
  100. fullScreen: false
  101. },
  102. showIndexColumn: true,
  103. pagination: {
  104. // pageSize: 10,
  105. hideOnSinglePage: false
  106. },
  107. rowKey: (record) => record.id,
  108. actionColumn: {
  109. width: 150,
  110. title: '操作',
  111. dataIndex: 'func',
  112. slots: { customRender: 'func' },
  113. },
  114. rowSelection: {
  115. type: 'checkbox',
  116. },
  117. });
  118. /**
  119. * 操作成功,重新加载页面
  120. */
  121. function handleSuccess() {
  122. reload();
  123. }
  124. /**
  125. * 打开新增菜单
  126. */
  127. function handleCreate() {
  128. openModal(true, {
  129. isUpdate: false,
  130. });
  131. }
  132. /**
  133. * 打开 编辑菜单
  134. * @param record
  135. */
  136. function handleEdit(record) {
  137. openModal(true, {
  138. record,
  139. isUpdate: true,
  140. });
  141. }
  142. /**
  143. * 执行 删除操作
  144. * @param record
  145. */
  146. async function handleDelete(record) {
  147. try {
  148. let ids = isArray(record._id) ? record._id : record._id;
  149. await removeLayer3d(ids);
  150. notification.success({
  151. message: '成功',
  152. description: '删除三维图层成功!',
  153. duration: 2,
  154. });
  155. await reload();
  156. } catch (e) {
  157. return Promise.reject(e);
  158. }
  159. }
  160. return {
  161. handleSuccess,
  162. registerDrawer,
  163. hasSelected,
  164. registerTable,
  165. reload,
  166. getRowSelection,
  167. getSelectRowKeys,
  168. setSelectedRowKeys,
  169. handleEdit,
  170. handleDelete,
  171. handleCreate,
  172. }
  173. }
  174. })
  175. </script>
  176. <style lang="less" scoped>
  177. .layer2d {
  178. .layer2d-body {
  179. width: 100%;
  180. height: 100%;
  181. padding: 0 20px;
  182. background-color: #fff;
  183. }
  184. }
  185. </style>