project.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <template>
  2. <el-row>
  3. <el-col :span="4">
  4. <div class="box">
  5. <el-scrollbar>
  6. <basic-container>
  7. <avue-tree
  8. :option="treeOption"
  9. :data="treeData"
  10. @node-click="nodeClick"
  11. />
  12. </basic-container>
  13. </el-scrollbar>
  14. </div>
  15. </el-col>
  16. <el-col :span="20">
  17. <basic-container>
  18. <avue-crud
  19. ref="crud"
  20. :data="data"
  21. :option="tableOption"
  22. :page.sync="page"
  23. :table-loading="loading"
  24. @size-change="sizeChange"
  25. @current-change="currentChange"
  26. @search-change="searchChange"
  27. @refresh-change="refreshChange"
  28. @row-save="rowSave"
  29. @row-del="rowDel"
  30. @row-update="rowUpdate"
  31. @cell-dblclick="cellDblclick"
  32. @on-load="getList"
  33. @saveColumn="saveColumn">
  34. <template slot="menuLeft">
  35. <el-button type="primary"
  36. size="small"
  37. icon="el-icon-upload2"
  38. plain
  39. @click="handleDelete">导 出
  40. </el-button>
  41. </template>
  42. </avue-crud>
  43. </basic-container>
  44. </el-col>
  45. </el-row>
  46. </template>
  47. <script>
  48. import { getDeptLazyTree, getDeptTree } from "@/api/basicData/basicFeesDesc";
  49. export default {
  50. data() {
  51. return {
  52. loading: false,
  53. data: [],
  54. tableOption: {
  55. align: "center",
  56. menuAlign: "center",
  57. height: window.innerHeight - 345,
  58. searchMenuSpan: 12,
  59. menuWidth: "140",
  60. column: [
  61. {
  62. label: "项目名称",
  63. prop: "name",
  64. search: true,
  65. rules: [
  66. {
  67. required: true,
  68. message: "请输入类别名称",
  69. trigger: "blur"
  70. }
  71. ],
  72. overHidden: true
  73. },
  74. {
  75. label: "收费建议",
  76. prop: "sort",
  77. rules: [
  78. {
  79. required: true,
  80. message: "请输入排序",
  81. trigger: "blur"
  82. }
  83. ],
  84. overHidden: true
  85. },
  86. {
  87. label: "收费金额",
  88. prop: "status",
  89. search: true,
  90. addDisplay: false,
  91. editDisplay: false,
  92. overHidden: true
  93. },
  94. {
  95. label: "计价单位",
  96. prop: "user",
  97. addDisplay: false,
  98. editDisplay: false,
  99. overHidden: true
  100. },
  101. {
  102. label: "备注",
  103. prop: "date",
  104. addDisplay: false,
  105. editDisplay: false,
  106. overHidden: true
  107. },
  108. {
  109. label: "频率",
  110. prop: "date",
  111. addDisplay: false,
  112. editDisplay: false,
  113. overHidden: true
  114. },
  115. {
  116. label: "保质期",
  117. prop: "date",
  118. addDisplay: false,
  119. editDisplay: false,
  120. overHidden: true
  121. },
  122. {
  123. label: "标准工时",
  124. prop: "date",
  125. addDisplay: false,
  126. editDisplay: false,
  127. overHidden: true
  128. },
  129. {
  130. label: "创建人",
  131. prop: "user",
  132. addDisplay: false,
  133. editDisplay: false,
  134. overHidden: true
  135. },
  136. {
  137. label: "创建时间",
  138. prop: "date",
  139. addDisplay: false,
  140. editDisplay: false,
  141. overHidden: true
  142. }
  143. ]
  144. },
  145. page: {
  146. currentPage: 1,
  147. total: 0,
  148. pageSize: 10
  149. },
  150. treeOption: {
  151. nodeKey: "id",
  152. lazy: true,
  153. treeLoad: function(node, resolve) {
  154. const parentId = node.level === 0 ? 0 : node.data.id;
  155. getDeptLazyTree(parentId).then(res => {
  156. resolve(
  157. res.data.data.map(item => {
  158. return {
  159. ...item,
  160. leaf: !item.hasChildren
  161. };
  162. })
  163. );
  164. });
  165. },
  166. addBtn: false,
  167. menu: false,
  168. size: "small",
  169. props: {
  170. labelText: "标题",
  171. label: "title",
  172. value: "value",
  173. children: "children"
  174. }
  175. }
  176. };
  177. },
  178. methods: {
  179. getList() {
  180. this.loading = true;
  181. setTimeout(() => {
  182. this.loading = false;
  183. this.data = [
  184. {
  185. name: "公司设立",
  186. sort: "2300",
  187. status: "2300",
  188. user: "次",
  189. date: "2021-07-08"
  190. }
  191. ];
  192. this.page.total = 1;
  193. }, 1000);
  194. },
  195. searchChange(params, done) {
  196. this.getList(this.page, params);
  197. done();
  198. },
  199. sizeChange(val) {
  200. this.page.pageSize = val;
  201. this.getList();
  202. },
  203. currentChange(val) {
  204. this.page.currentPage = val;
  205. this.getList();
  206. },
  207. refreshChange() {
  208. this.page.currentPage = 1;
  209. this.getList();
  210. },
  211. rowSave(row, done, loading) {
  212. setTimeout(() => {
  213. this.$message.success("保存成功");
  214. loading();
  215. done();
  216. }, 1000);
  217. },
  218. rowUpdate(row, index, done, loading) {
  219. setTimeout(() => {
  220. this.$message.success("修改成功");
  221. loading();
  222. done();
  223. }, 1000);
  224. },
  225. rowDel(row, index) {
  226. this.$message.success("删除成功");
  227. },
  228. cellDblclick(row, column, cell, event) {
  229. console.log(row, column, cell, event);
  230. this.$refs.crud.rowEdit(row);
  231. },
  232. saveColumn(row, column) {
  233. console.log(row, column);
  234. },
  235. //展开主页左边类型
  236. nodeClick(data) {
  237. this.treeDeptId = data.id;
  238. this.page.currentPage = 1;
  239. this.getList(this.page);
  240. },
  241. //查询全部
  242. initData() {
  243. getDeptTree().then(res => {
  244. console.log(this.form);
  245. const column = this.findObject(this.option.column, "feesTypeId");
  246. column.dicData = res.data.data;
  247. });
  248. }
  249. }
  250. };
  251. </script>
  252. <style></style>