reportMap.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <div class="report-map">
  3. <div class="search-area">
  4. <a-tree-select
  5. v-model:value="searchForm.sysOrgCode"
  6. show-search
  7. style="width: 280px; margin-right: 15px"
  8. :dropdown-style="{ maxHeight: '200px', overflow: 'auto' }"
  9. placeholder="请选择部门..."
  10. allow-clear
  11. tree-default-expand-all
  12. :tree-data="sysOrgCodeList"
  13. tree-node-filter-prop="title"
  14. >
  15. <template #title="{ value: val, title }">
  16. {{ title }}
  17. </template>
  18. </a-tree-select>
  19. <a-button type="primary" preIcon="ant-design:search-outlined" style="margin-right: 15px" @click="getSearch">查询</a-button>
  20. <a-button preIcon="ant-design:sync-outlined" @click="onReset">重置</a-button>
  21. </div>
  22. <a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd" style="margin-bottom: 10px">新增</a-button>
  23. <a-table size="small" :dataSource="dataSource" :columns="columnsMap" :scroll="{ y: 620 }" :pagination="pagination" @change="pageChange">
  24. <template #action="{ record }">
  25. <a class="table-action-link" @click="handleEdit(record)">编辑</a>
  26. <a class="table-action-link" @click="handleDel(record)">删除</a>
  27. </template>
  28. </a-table>
  29. <!-- 添加/编辑弹窗 -->
  30. <a-modal v-model:visible="visibleMap" width="1000px" :footer="null" :title="titleMap" centered destroyOnClose>
  31. <reportModal :isToggle="isToggle" :sysOrgCodeList="sysOrgCodeList" :formState="formState" @Close="Close" />
  32. </a-modal>
  33. </div>
  34. </template>
  35. <script setup lang="ts">
  36. //ts语法
  37. import { ref, reactive, toRaw, watch, onMounted } from 'vue';
  38. import { listMap, queryDepartTreeSync, reportDel, queryTreeList } from '../reportManager.api';
  39. import { columnsMap } from '../reportManager.data';
  40. import reportModal from './report-modal.vue';
  41. let dataSource = ref<any[]>([]);
  42. let searchForm = reactive({
  43. sysOrgCode: '',
  44. });
  45. let sysOrgCodeList = ref<any[]>([]);
  46. //分页参数配置
  47. let pagination = reactive({
  48. current: 1, // 当前页码
  49. pageSize: 10, // 每页显示条数
  50. total: 0, // 总条目数,后端返回
  51. // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
  52. showSizeChanger: true, // 是否可改变每页显示条数
  53. pageSizeOptions: ['10', '20', '50'], // 可选的每页显示条数
  54. });
  55. let visibleMap = ref(false);
  56. let titleMap = ref('');
  57. let isToggle = ref('');
  58. let formState = reactive({
  59. id: '',
  60. sysOrgCode: '',
  61. formula: '',
  62. groupCol: '',
  63. groupRow: '',
  64. groupSheet: '',
  65. isCompute: true,
  66. mineCells: [],
  67. sheet: '',
  68. col: '',
  69. row: '',
  70. name: '',
  71. });
  72. //关闭弹窗
  73. function Close() {
  74. visibleMap.value = false;
  75. pagination.current = 1;
  76. getListMap();
  77. }
  78. //添加
  79. function handleAdd() {
  80. titleMap.value = '新增报表映射';
  81. visibleMap.value = true;
  82. isToggle.value = 'add';
  83. formState = {
  84. sysOrgCode: '',
  85. formula: '',
  86. groupCol: '',
  87. groupRow: '',
  88. groupSheet: '',
  89. isCompute: true,
  90. mineCells: [],
  91. sheet: '',
  92. col: '',
  93. row: '',
  94. name: '',
  95. };
  96. }
  97. //编辑
  98. function handleEdit(record) {
  99. titleMap.value = '编辑报表映射';
  100. visibleMap.value = true;
  101. isToggle.value = 'edit';
  102. formState = {
  103. id: record.id,
  104. sysOrgCode: record.sysOrgCode,
  105. formula: record.formula,
  106. groupCol: record.groupCol,
  107. groupRow: record.groupRow,
  108. groupSheet: record.groupSheet,
  109. isCompute: record.isCompute,
  110. mineCells: record.mineCells,
  111. sheet: record.sheet,
  112. col: record.col,
  113. row: record.row,
  114. name: record.name,
  115. };
  116. console.log(formState, '00000===========');
  117. }
  118. //删除
  119. async function handleDel(record) {
  120. await reportDel({ id: record.id });
  121. pagination.current = 1;
  122. getListMap();
  123. }
  124. //分页切换
  125. function pageChange(val) {
  126. pagination.current = val.current;
  127. pagination.pageSize = val.pageSize;
  128. getListMap();
  129. }
  130. //获取所属部门编号列表数据
  131. async function queryDepartTreeSyncList() {
  132. let res = await queryTreeList();
  133. console.log(res, '部门编号列表--------');
  134. res.forEach((el) => {
  135. el.value = el.orgCode;
  136. el.children.forEach((v) => {
  137. v.value = v.orgCode;
  138. });
  139. });
  140. sysOrgCodeList.value = res || [];
  141. }
  142. //获取数据列表
  143. async function getListMap() {
  144. let res = await listMap({ sysOrgCode: searchForm.sysOrgCode, pageNo: pagination.current, pageSize: pagination.pageSize });
  145. console.log(res, 'res=========');
  146. if (res.records && res.records.length != 0) {
  147. dataSource.value = res.records;
  148. pagination.total = res.total;
  149. } else {
  150. dataSource.value = res.records;
  151. }
  152. }
  153. //查询
  154. function getSearch() {
  155. pagination.current = 1;
  156. getListMap();
  157. }
  158. //重置
  159. function onReset() {
  160. pagination.current = 1;
  161. searchForm.sysOrgCode = '';
  162. getListMap();
  163. }
  164. onMounted(() => {
  165. queryDepartTreeSyncList();
  166. getListMap();
  167. });
  168. </script>
  169. <style lang="less" scoped>
  170. @import '/@/design/theme.less';
  171. .report-map {
  172. position: relative;
  173. width: 100%;
  174. height: 100%;
  175. padding: 10px;
  176. box-sizing: border-box;
  177. .search-area {
  178. display: flex;
  179. height: 60px;
  180. align-items: center;
  181. }
  182. }
  183. :deep(.zxm-select-selector) {
  184. width: 100%;
  185. // color: #fff;
  186. border: 1px solid var(--vent-form-item-border) !important;
  187. background-color: #ffffff00 !important;
  188. }
  189. :deep(.zxm-select-selection-item) {
  190. color: #fff !important;
  191. }
  192. // :deep(.zxm-select-selection-placeholder) {
  193. // color: #ccc !important;
  194. // }
  195. </style>