index.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <el-row>
  3. <el-col :span="5">
  4. <div class="box">
  5. <el-scrollbar>
  6. <basic-container>
  7. <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick"/>
  8. </basic-container>
  9. </el-scrollbar>
  10. </div>
  11. </el-col>
  12. <el-col :span="19">
  13. <basic-container>
  14. <avue-crud :option="option"
  15. :data="dataList"
  16. ref="crud"
  17. v-model="form"
  18. :page.sync="page"
  19. @row-del="rowDel"
  20. @row-update="rowUpdate"
  21. :before-open="beforeOpen"
  22. :before-close="beforeClose"
  23. @row-save="rowSave"
  24. @search-change="searchChange"
  25. @search-reset="searchReset"
  26. @selection-change="selectionChange"
  27. @current-change="currentChange"
  28. @size-change="sizeChange"
  29. @refresh-change="refreshChange"
  30. @on-load="onLoad"
  31. @tree-load="treeLoad">
  32. </avue-crud>
  33. </basic-container>
  34. </el-col>
  35. </el-row>
  36. </template>
  37. <script>
  38. import option from "./configuration/mainList.json";
  39. import {customerList, typeSave,detail,deleteDetails,getDeptLazyTree,getDeptTree} from "@/api/basicData/basicStorageDesc"
  40. export default {
  41. name: "customerInformation",
  42. data() {
  43. return {
  44. form: {},
  45. option: option,
  46. treeOption: {
  47. nodeKey: 'id',
  48. lazy: true,
  49. treeLoad: function (node, resolve) {
  50. const parentId = (node.level === 0) ? 0 : node.data.id;
  51. getDeptLazyTree(parentId).then(res => {
  52. resolve(res.data.data.map(item => {
  53. return {
  54. ...item,
  55. leaf: !item.hasChildren
  56. }
  57. }))
  58. });
  59. },
  60. addBtn: false,
  61. menu: false,
  62. size: 'small',
  63. props: {
  64. labelText: '标题',
  65. label: 'title',
  66. value: 'value',
  67. children: 'children'
  68. }
  69. },
  70. parentId:0,
  71. dataList: [],
  72. page: {
  73. pageSize: 10,
  74. pagerCount: 5,
  75. total: 0,
  76. },
  77. treeDeptId:'',
  78. }
  79. },
  80. created() {
  81. // customerList({parentId:0}).then(res => {
  82. // console.log(res.data.data.records)
  83. // this.dataList = res.data.data.records
  84. // })
  85. },
  86. mounted() {
  87. option.height = window.innerHeight - 350 ;
  88. //查询服务类别字典项
  89. getDeptTree().then(res => {
  90. this.findObject(this.option.column, "storageTypeId").dicData = res.data.data;
  91. });
  92. },
  93. methods: {
  94. //展开主页左边类型
  95. nodeClick(data) {
  96. this.treeDeptId = data.id;
  97. this.page.currentPage = 1;
  98. this.onLoad(this.page);
  99. },
  100. //删除列表后面的删除按钮触发触发(row, index, done)
  101. rowDel(row, index, done) {
  102. this.$confirm("确定将选择数据删除?", {
  103. confirmButtonText: "确定",
  104. cancelButtonText: "取消",
  105. type: "warning"
  106. }).then(() => {
  107. return deleteDetails(row.id);
  108. }).then(() => {
  109. this.$message({
  110. type: "success",
  111. message: "操作成功!"
  112. });
  113. // 数据回调进行刷新
  114. done(row);
  115. });
  116. },
  117. //修改时的修改按钮点击触发
  118. rowUpdate(row, index, done, loading) {
  119. typeSave(row).then(() => {
  120. this.$message({
  121. type: "success",
  122. message: "操作成功!"
  123. });
  124. // 数据回调进行刷新
  125. done(row);
  126. }, error => {
  127. window.console.log(error);
  128. loading();
  129. });
  130. },
  131. //新增修改时保存触发
  132. rowSave(row, done, loading) {
  133. console.log(row)
  134. typeSave(row).then(res => {
  135. console.log(res)
  136. this.page.currentPage = 1;
  137. this.onLoad(this.page, {});
  138. done()
  139. }, error => {
  140. window.console.log(error);
  141. loading();
  142. })
  143. },
  144. //查询全部
  145. initData(){
  146. getDeptTree().then(res => {
  147. const column = this.findObject(this.option.column, "storageTypeId");
  148. column.dicData = res.data.data;
  149. });
  150. },
  151. //新增子项触发
  152. handleAdd(row) {
  153. this.parentId = row.id;
  154. // const column = this.findObject(this.option.column, "parentId");
  155. // column.value = row.id;
  156. // column.addDisabled = true;
  157. this.$refs.crud.rowAdd();
  158. },
  159. //新增子项和新增触发查询所有
  160. beforeOpen(done, type) {
  161. if (["add", "edit"].includes(type)) {
  162. this.option.column.forEach(e=>{
  163. if(e.prop=='storageTypeId'){
  164. this.$set(this.option.column,3,{...e,value:this.treeDeptId})
  165. }
  166. })
  167. }
  168. if (["edit", "view"].includes(type)) {
  169. detail(this.form.id).then(res => {
  170. this.form = res.data.data;
  171. });
  172. }
  173. done();
  174. },
  175. //点击新增时触发
  176. beforeClose(done) {
  177. this.parentId = "";
  178. // const column = this.findObject(this.option.column, "parentId");
  179. // column.value = "";
  180. // column.addDisabled = false;
  181. done();
  182. },
  183. //点击搜索按钮触发
  184. searchChange(params, done) {
  185. this.page.currentPage = 1;
  186. this.onLoad(this.page, params);
  187. done()
  188. },
  189. searchReset() {
  190. this.query = {};
  191. this.treeDeptId = '';
  192. this.onLoad(this.page);
  193. },
  194. selectionChange() {
  195. console.log('1')
  196. },
  197. currentChange() {
  198. console.log('1')
  199. },
  200. sizeChange() {
  201. console.log('1')
  202. },
  203. refreshChange() {
  204. console.log('1')
  205. },
  206. onLoad(page, params = {parentId:0}) {
  207. let queryParams = Object.assign({}, params, {size: page.pageSize, current: page.currentPage,parentId:0,storageTypeId:this.treeDeptId})
  208. customerList(queryParams).then(res => {
  209. this.dataList = res.data.data.records
  210. this.page.total = res.data.data.total
  211. })
  212. },
  213. //树桩列点击展开触发
  214. treeLoad(tree, treeNode, resolve) {
  215. const parentId = tree.id;
  216. customerList({parentId:parentId}).then(res => {
  217. resolve(res.data.data.records);
  218. });
  219. },
  220. }
  221. }
  222. // {
  223. // "label": "仓库",
  224. // "prop": "storageTypeId",
  225. // "dicData": [],
  226. // "type": "tree",
  227. // "overHidden": true,
  228. // "width":150,
  229. // "addDisabled": false,
  230. // "multiple": false,
  231. // "props": {
  232. // "label": "title"
  233. // },
  234. // "rules": [{
  235. // "required": true,
  236. // "message": " ",
  237. // "trigger": "click"
  238. // }],
  239. // "dicUrl": "/api/blade-system/tenant/select",
  240. // "hide": "!website.tenantMode",
  241. // "addDisplay": "website.tenantMode",
  242. // "editDisplay": "website.tenantMode",
  243. // "viewDisplay": "website.tenantMode"
  244. // },
  245. </script>
  246. <style scoped>
  247. </style>