orgIndex.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <template>
  2. <div class="app-container">
  3. <div class="filter-container">
  4. <div class="filter-container-lt">
  5. <el-input
  6. placeholder="组织名称"
  7. class="filter-item"
  8. style="width: 300px;"
  9. clearable
  10. v-model="listQuery.searchKey"
  11. @keyup.enter.native="handleFilter"
  12. />
  13. <el-button
  14. v-waves
  15. type="primary"
  16. class="filter-item"
  17. icon="el-icon-search"
  18. @click="handleFilter"
  19. >搜索</el-button
  20. >
  21. </div>
  22. <div class="filter-container-rt">
  23. <el-button
  24. v-waves
  25. type="primary"
  26. class="filter-item"
  27. icon="el-icon-circle-plus-outline"
  28. style="margin-left: 10px;"
  29. @click="handleCreate"
  30. >新建</el-button
  31. >
  32. </div>
  33. </div>
  34. <el-table
  35. v-loading="listLoading"
  36. :data="list"
  37. stripe
  38. border
  39. fit
  40. highlight-current-row
  41. style="width: 100%;"
  42. >
  43. <el-table-column type="index" label="序号" align="center" width="120" />
  44. <el-table-column label="id" align="center" width="200" prop="id" />
  45. <el-table-column
  46. label="组织名称"
  47. min-width="100"
  48. align="center"
  49. prop="name"
  50. />
  51. <el-table-column
  52. label="组织分类"
  53. align="center"
  54. width="180"
  55. prop="category"
  56. >
  57. <template slot-scope="scope">
  58. {{ getValueByKey(scope.row.category, orgCategory) }}
  59. </template>
  60. </el-table-column>
  61. <el-table-column
  62. label="排序"
  63. align="center"
  64. width="150"
  65. prop="sortCode"
  66. />
  67. <el-table-column
  68. label="创建时间"
  69. align="center"
  70. width="150"
  71. prop="createTime"
  72. />
  73. <el-table-column
  74. label="更新时间"
  75. align="center"
  76. width="150"
  77. prop="updateTime"
  78. />
  79. <el-table-column fixed="right" label="操作" align="center" width="200">
  80. <template slot-scope="scope">
  81. <el-button
  82. type="primary"
  83. size="mini"
  84. icon="el-icon-edit"
  85. circle
  86. title="编辑"
  87. @click="handleUpdate(scope.row)"
  88. />
  89. <el-button
  90. size="mini"
  91. type="danger"
  92. icon="el-icon-delete"
  93. circle
  94. title="删除"
  95. @click="handleDelete(scope.row)"
  96. />
  97. </template>
  98. </el-table-column>
  99. </el-table>
  100. <!-- 分页 -->
  101. <swPage
  102. v-if="total > 0"
  103. key="2"
  104. :listQuery="listQuery"
  105. :total="total"
  106. pos="btmRight"
  107. @retPage="retPage"
  108. />
  109. <!-- 新增或编辑对话框-->
  110. <addOrEditOrgDialog
  111. :addOrEditData="addOrEditData"
  112. @refreshTable="refreshData"
  113. />
  114. </div>
  115. </template>
  116. <script>
  117. import waves from "@/directive/waves"; // 水波纹指令
  118. import addOrEditOrgDialog from "./components/org/addOrEditOrgDialog";
  119. // import authOrgDialog from "./components/org/authOrgDialog";
  120. import swPage from "@/views/common/swPage";
  121. import { orgCategory } from "@/constants/index";
  122. import { getValueByKey } from "@/utils/index";
  123. import { fetchList, deleteOrg } from "@/api/auth/org";
  124. export default {
  125. name: "orgIndex",
  126. components: {
  127. addOrEditOrgDialog,
  128. swPage
  129. },
  130. directives: {
  131. waves
  132. },
  133. data() {
  134. return {
  135. orgCategory,
  136. list: null,
  137. total: null,
  138. listLoading: true,
  139. listQuery: {
  140. page: 1,
  141. limit: 20,
  142. searchKey: null
  143. },
  144. addOrEditData: {
  145. //添加 或者 编辑 dialog 数据
  146. status: "create", //[create ,update]
  147. visible: false,
  148. orgData: null //选中的组织
  149. }
  150. };
  151. },
  152. created() {
  153. this.getList();
  154. },
  155. methods: {
  156. getValueByKey,
  157. refreshData() {
  158. this.addOrEditData.status = "create";
  159. this.addOrEditData.visible = false;
  160. this.addOrEditData.orgData = null; //选中的组织
  161. this.handleFilter();
  162. },
  163. getList() {
  164. //查询
  165. this.listLoading = true;
  166. fetchList(this.listQuery)
  167. .then(response => {
  168. this.list = response.data.rows;
  169. this.total = response.data.total;
  170. })
  171. .finally(() => {
  172. this.listLoading = false;
  173. });
  174. },
  175. retPage() {
  176. //分页
  177. this.getList();
  178. },
  179. handleFilter() {
  180. //查询
  181. this.listQuery.page = 1;
  182. this.getList();
  183. },
  184. handleCreate() {
  185. //触发添加dialog
  186. //查询组织 - 角色
  187. this.addOrEditData.status = "create";
  188. this.addOrEditData.visible = true;
  189. this.addOrEditData.orgData = null;
  190. },
  191. handleUpdate(row) {
  192. //触发更新Dialog和创建的dialog共用一个dialog
  193. this.addOrEditData.status = "update";
  194. this.addOrEditData.visible = true;
  195. this.addOrEditData.orgData = row;
  196. },
  197. handleDelete(row) {
  198. //删除
  199. this.$confirm("删除此组织与下级组织吗??", "提示", {
  200. confirmButtonText: "确定",
  201. cancelButtonText: "取消",
  202. type: "warning"
  203. }).then(() => {
  204. deleteOrg([{ id: row.id }]).then(() => {
  205. this.$notify({
  206. title: "成功",
  207. message: "删除成功",
  208. type: "success",
  209. duration: 3000
  210. });
  211. const index = this.list.indexOf(row);
  212. this.list.splice(index, 1); //数值删除
  213. });
  214. });
  215. }
  216. }
  217. };
  218. </script>
  219. <style rel="stylesheet/scss" lang="scss" scoped>
  220. @import "@/styles/layout.scss";
  221. </style>