1 |
- {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/department/index.vue?vue&type=style&index=0&id=0a56dfea&lang=scss&scoped=true","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/department/index.vue","mtime":1708395041890},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/css-loader/dist/cjs.js","mtime":1708395146948},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":1708395147772},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/postcss-loader/src/index.js","mtime":1708395147225},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/sass-loader/dist/cjs.js","mtime":1708395146389},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg0KLmRhc2hib2FyZCB7DQogICYtY29udGFpbmVyIHsNCiAgICBtYXJnaW46IDMwcHg7DQogIH0NCg0KICAmLXRleHQgew0KICAgIGZvbnQtc2l6ZTogMzBweDsNCiAgICBsaW5lLWhlaWdodDogNDZweDsNCiAgfQ0KfQ0KDQouZGFzaGJvYXJkLWNvbnRhaW5lciB7DQogIC5zZWFyY2gtY29udGVudCB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgaGVpZ2h0OiA3NHB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgIHBhZGRpbmctbGVmdDogMTBweDsNCg0KICAgIC5lbC1pbnB1dCB7DQogICAgICBtYXJnaW46IDAgMTBweDsNCiAgICB9DQoNCiAgICAuZWwtc2VsZWN0IHsNCiAgICAgIG1hcmdpbjogMCAxMHB4Ow0KICAgIH0NCg0KICAgIC5zZWFyY2gtYnRuIHsNCiAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQoNCiAgICAgIGRpdiB7DQogICAgICAgIC8vIG1hcmdpbjogMCA2cHg7DQogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICAgICAgd2lkdGg6IDgwcHg7DQogICAgICAgIGhlaWdodDogNDBweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4Ow0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICB9DQoNCiAgICAgIGRpdjpob3ZlciB7DQogICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIH0NCg0KICAgICAgLnNlYXJjaCB7DQogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI3NjZERDsNCiAgICAgICAgY29sb3I6ICNGN0Y4RkI7DQogICAgICB9DQoNCiAgICAgIC5zZWFyY2g6aG92ZXIgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEQ4NUY0Ow0KICAgICAgfQ0KDQogICAgICAucmVzZXQgew0KICAgICAgICBjb2xvcjogIzMzMzMzNDsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0Q3RDdENzsNCiAgICAgIH0NCg0KICAgICAgLnJlc2V0OmhvdmVyIHsNCiAgICAgICAgY29sb3I6ICMxRjlGRkY7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMxRjlGRkY7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgLnRhYmxlLWNvbnRlbnQgew0KICAgIG1hcmdpbi10b3A6IDE1cHg7DQogICAgd2lkdGg6IDEwMCU7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgICBwYWRkaW5nOiAwIDIwcHg7DQoNCiAgICAuYnRuIHsNCiAgICAgIG1hcmdpbjogMTVweCAyMHB4IDE1cHggMDsNCiAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIGZsb2F0OiBsZWZ0Ow0KICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgd2lkdGg6IDk4cHg7DQogICAgICBoZWlnaHQ6IDM0cHg7DQogICAgICBib3JkZXItcmFkaXVzOiAycHg7DQogICAgICBib3JkZXI6IDFweCBzb2xpZCAjQUJDN0ZEOw0KICAgICAgbGluZS1oZWlnaHQ6IDM0cHg7DQogICAgICBmb250LXdlaWdodDogNDAwOw0KICAgICAgZm9udC1zaXplOiAxNHB4Ow0KICAgICAgY29sb3I6ICMyMjUwQzg7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTdFRUZGOw0KICAgIH0NCg0KICAgIC5idG46aG92ZXIgew0KICAgICAgY29sb3I6ICNGRkZGRkY7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjI1MEM4Ow0KICAgICAgYm9yZGVyOiAxcHggc29saWQgIzIyNTBDODsNCiAgICB9DQoNCiAgICAuYnRuOmFjdGl2ZSB7DQogICAgICBjb2xvcjogI0ZGRkZGRjsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTREQTQ7DQogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMTk0REE0Ow0KICAgIH0NCg0KICAgIC5zdGFydFVzaW5nIHsNCiAgICAgICAgd2lkdGg6IDU0cHg7DQogICAgICAgIGhlaWdodDogMjRweDsNCiAgICAgICAgbWFyZ2luOiAxNC41cHggYXV0byAwOw0KICAgICAgICBsaW5lLWhlaWdodDogMjRweDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgIGNvbG9yOiAjMDA5NzREOw0KICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNFN0ZBRjA7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNCRUZEREQ7DQogICAgICB9DQoNCiAgICAgIC5EZWFjdGl2YXRlIHsNCiAgICAgICAgd2lkdGg6IDU0cHg7DQogICAgICAgIGhlaWdodDogMjRweDsNCiAgICAgICAgbWFyZ2luOiAxNC41cHggYXV0byAwOw0KICAgICAgICBsaW5lLWhlaWdodDogMjRweDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBmb250LXNpemU6IDEycHg7DQogICAgICAgIGNvbG9yOiAjRkY5OTMzOw0KICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkYzRTg7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGREU2Q0Y7DQogICAgICB9DQogICAgLm9wZXJhdGVCdG4gew0KICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAgICAgY29sb3I6ICMxRTlGRkY7DQoNCiAgICAgIGRpdiB7DQogICAgICAgIG1hcmdpbjogMCA1cHg7DQogICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAucGFnaW5hdGlvbiB7DQogICAgICBtYXJnaW46IDEwcHggMDsNCiAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgaGVpZ2h0OiAyMHB4Ow0KDQogICAgICAuZWwtcGFnaW5hdGlvbiB7DQogICAgICAgIGZsb2F0OiByaWdodDsNCiAgICAgIH0NCiAgICB9DQogIH0NCg0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2YA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA","file":"index.vue","sourceRoot":"src/views/system/department","sourcesContent":["<template>\r\n <div class=\"dashboard-container\">\r\n <div class=\"search-content\">\r\n <el-input style=\"width: 220px;\" v-model=\"searchData.deptName\" placeholder=\"请输入部门名称\" clearable></el-input>\r\n <el-select style=\"width: 220px;\" clearable placeholder=\"请选择状态\" v-model=\"searchData.status\">\r\n <el-option v-for=\"item in statusOptions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n <div class=\"search-btn\">\r\n <!-- <el-button type=\"primary\" @click=\"searchBtn()\">搜索</el-button>\r\n <el-button @click=\"reset()\">重置</el-button> -->\r\n <div class=\"search\" @click=\"searchBtn()\">查询</div>\r\n <div class=\"reset\" @click=\"reset()\">重置</div>\r\n </div>\r\n </div>\r\n <div class=\"table-content\">\r\n <div style=\"width: 100%;height: 30px;\">\r\n <div class=\"btn\" @click=\"addTopDept()\">\r\n <span class=\"icon font_family\"></span>\r\n 新增\r\n </div>\r\n <div class=\"btn\" @click=\"exportDeptList()\">\r\n <span class=\"icon font_family\"></span>\r\n <a>导出</a>\r\n </div>\r\n </div>\r\n <el-table :indent=\"50\" ref=\"tableRef\" v-loading=\"loading\" :data=\"deptList\" row-key=\"deptId\"\r\n :default-expand-all=\"true\" highlight-current-row style=\"width: 100%\"\r\n :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\">\r\n <el-table-column prop=\"deptName\" label=\"部门名称\" width=\"320\"></el-table-column>\r\n <el-table-column prop=\"deptCode\" label=\"部门编码\"></el-table-column>\r\n <el-table-column prop=\"orderNum\" label=\"排序\" width=\"200\"></el-table-column>\r\n <el-table-column prop=\"status\" label=\"状态\" width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"startUsing\" v-if=\"scope.row.status == '1'\">启用</div>\r\n <div class=\"Deactivate\" v-else>停用</div>\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column prop=\"remarks\" label=\"备注\" show-overflow-tooltip></el-table-column> -->\r\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" width=\"200\">\r\n <template #default=\"scope\">\r\n <span>{{ parseTime(scope.row.createTime) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" align=\"center\" class-name=\"small-padding fixed-width\" width=\"200\">\r\n <template slot-scope=\"scope\">\r\n <el-button type=\"text\" style=\"color: #2866DD;font-size: 14px;\"\r\n @click=\"handleUpdate(scope.row, scope.row.status)\">修改</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;font-size: 14px\" @click=\"handleAdd(scope.row)\"\r\n v-hasPermi=\"['system:dept:add']\">新增</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;font-size: 14px\" @click=\"handleDelete(scope.row)\">删除</el-button>\r\n </template>\r\n </el-table-column>\r\n <template v-slot:empty>\r\n <svg-icon icon-class=\"search-none\" style=\"font-size: 64px\" />\r\n <p>暂无数据</p>\r\n </template>\r\n </el-table>\r\n <editDeptDialog :editDeptData=\"editDeptData\" @updateDept=\"updateDept\"></editDeptDialog>\r\n <addDeptDialog :addDeptData=\"addDeptData\" v-if=\"addDeptData.dialogVisible\" @addDeptBtn=\"addDeptBtn\"></addDeptDialog>\r\n <addTopDeptDialog v-if=\"addTopDeptData.dialogVisible\" :addTopDeptData=\"addTopDeptData\"\r\n @addTopDeptBtn=\"addTopDeptBtn\"></addTopDeptDialog>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { Message } from \"element-ui\";\r\nimport { mapGetters } from 'vuex'\r\nimport { getDeptList, delDept, updateDept, exportDeptList, addDept } from '@/api/sysManage'\r\nimport editDeptDialog from './components/editDeptDialog.vue'\r\nimport addDeptDialog from './components/addDeptDialog.vue'\r\nimport addTopDeptDialog from './components/addTopDeptDialog.vue'\r\nexport default {\r\n name: 'home',\r\n computed: {\r\n ...mapGetters([\r\n 'name'\r\n ])\r\n },\r\n components: {\r\n editDeptDialog,\r\n addDeptDialog,\r\n addTopDeptDialog\r\n },\r\n data() {\r\n return {\r\n searchData: {\r\n deptName: '',\r\n status: ''\r\n },\r\n loading: true,\r\n deptList: [],\r\n statusOptions: [\r\n {\r\n label: '启用',\r\n value: '1'\r\n },\r\n {\r\n label: '停用',\r\n value: '2'\r\n }\r\n ],\r\n editDeptData: {\r\n dialogVisible: false,\r\n data: {}\r\n },\r\n addDeptData: {\r\n dialogVisible: false,\r\n data: {}\r\n },\r\n addTopDeptData: {\r\n dialogVisible: false,\r\n }\r\n }\r\n },\r\n created() {\r\n this.getDeptList(this.searchData)\r\n },\r\n methods: {\r\n handleUpdate(row, status) {\r\n if (status == \"1\") {\r\n row.status = true\r\n } else {\r\n row.status = false\r\n }\r\n this.editDeptData.data = { ...row }\r\n this.editDeptData.dialogVisible = true\r\n },\r\n handleAdd(row) {\r\n this.addDeptData.data = row\r\n this.addDeptData.dialogVisible = true\r\n },\r\n addTopDept() {\r\n this.addTopDeptData.dialogVisible = true\r\n },\r\n addDeptBtn(payload) {\r\n let updateData = { ...payload }\r\n delete updateData.parentName\r\n if (updateData.status) {\r\n updateData.status = 1\r\n } else {\r\n updateData.status = 2\r\n }\r\n addDept(updateData).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '添加成功!'\r\n });\r\n this.getDeptList(this.searchData)\r\n this.addDeptData.dialogVisible = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n },\r\n addTopDeptBtn(payload) {\r\n let updateData = { ...payload }\r\n if (updateData.status) {\r\n updateData.status = 1\r\n } else {\r\n updateData.status = 2\r\n }\r\n delete updateData.parentName\r\n addDept(updateData).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '添加成功!'\r\n });\r\n this.getDeptList(this.searchData)\r\n this.addTopDeptData.dialogVisible = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n },\r\n exportDeptList() {\r\n let params = {\r\n deptName:this.searchData.deptName,\r\n status:this.searchData.status\r\n }\r\n exportDeptList(params).then(res => {\r\n \r\n if (res.type == \"application/json\") {\r\n const reader = new FileReader(); \r\n reader.readAsText(res, 'utf-8'); \r\n reader.onload = function () {\r\n const msg = JSON.parse(reader.result);\r\n if(msg.code == 200){\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '部门信息.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n } else{\r\n Message({\r\n type: 'error',\r\n message: msg.msg\r\n });\r\n } \r\n }\r\n }else{\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '部门信息.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n\r\n\r\n })\r\n },\r\n getDeptList(params) {\r\n getDeptList(params).then(res => {\r\n this.loading = true;\r\n if (res.code == 200) {\r\n this.deptList = this.handleTree(res.data, \"deptId\")\r\n // this.deptList = res.data\r\n this.loading = false;\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n })\r\n }\r\n })\r\n },\r\n parseTime(time, pattern) {\r\n if (arguments.length === 0 || !time) {\r\n return null\r\n }\r\n const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'\r\n let date\r\n if (typeof time === 'object') {\r\n date = time\r\n } else {\r\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\r\n time = parseInt(time)\r\n } else if (typeof time === 'string') {\r\n time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\\.[\\d]{3}/gm), '');\r\n }\r\n if ((typeof time === 'number') && (time.toString().length === 10)) {\r\n time = time * 1000\r\n }\r\n date = new Date(time)\r\n }\r\n const formatObj = {\r\n y: date.getFullYear(),\r\n m: date.getMonth() + 1,\r\n d: date.getDate(),\r\n h: date.getHours(),\r\n i: date.getMinutes(),\r\n s: date.getSeconds(),\r\n a: date.getDay()\r\n }\r\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\r\n let value = formatObj[key]\r\n // Note: getDay() returns 0 on Sunday\r\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }\r\n if (result.length > 0 && value < 10) {\r\n value = '0' + value\r\n }\r\n return value || 0\r\n })\r\n return time_str\r\n },\r\n //删除部门\r\n handleDelete(scope) {\r\n this.$confirm('确定要删除吗?', '信息提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n delDept(scope.deptId).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n this.getDeptList(this.searchData)\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消删除'\r\n });\r\n });\r\n },\r\n //修改\r\n editDept(scope) {\r\n let newScope = { ...scope }\r\n if (newScope.status == '1') {\r\n newScope.status = false\r\n } else {\r\n newScope.status = true\r\n }\r\n this.editDeptData.data = { ...scope }\r\n this.editDeptData.dialogVisible = true\r\n },\r\n updateDept(payload) {\r\n updateDept(payload).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '修改成功!'\r\n });\r\n this.editDeptData.dialogVisible = false\r\n this.getDeptList(this.searchData)\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n },\r\n searchBtn() {\r\n this.getDeptList(this.searchData)\r\n },\r\n reset() {\r\n this.searchData = {\r\n deptName: '',\r\n status: ''\r\n }\r\n this.getDeptList(this.searchData)\r\n },\r\n handleTree(data, id, parentId, children) {\r\n let config = {\r\n id: id || 'id',\r\n parentId: parentId || 'parentId',\r\n childrenList: children || 'children'\r\n };\r\n\r\n var childrenListMap = {};\r\n var nodeIds = {};\r\n var tree = [];\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (childrenListMap[parentId] == null) {\r\n childrenListMap[parentId] = [];\r\n }\r\n nodeIds[d[config.id]] = d;\r\n childrenListMap[parentId].push(d);\r\n }\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (nodeIds[parentId] == null) {\r\n tree.push(d);\r\n }\r\n }\r\n\r\n for (let t of tree) {\r\n adaptToChildrenList(t);\r\n }\r\n\r\n function adaptToChildrenList(o) {\r\n if (childrenListMap[o[config.id]] !== null) {\r\n o[config.childrenList] = childrenListMap[o[config.id]];\r\n }\r\n if (o[config.childrenList]) {\r\n for (let c of o[config.childrenList]) {\r\n adaptToChildrenList(c);\r\n }\r\n }\r\n }\r\n return tree;\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dashboard {\r\n &-container {\r\n margin: 30px;\r\n }\r\n\r\n &-text {\r\n font-size: 30px;\r\n line-height: 46px;\r\n }\r\n}\r\n\r\n.dashboard-container {\r\n .search-content {\r\n width: 100%;\r\n height: 74px;\r\n background-color: #fff;\r\n display: flex;\r\n align-items: center;\r\n padding-left: 10px;\r\n\r\n .el-input {\r\n margin: 0 10px;\r\n }\r\n\r\n .el-select {\r\n margin: 0 10px;\r\n }\r\n\r\n .search-btn {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n margin-left: 10px;\r\n\r\n div {\r\n // margin: 0 6px;\r\n display: inline-block;\r\n width: 80px;\r\n height: 40px;\r\n border-radius: 2px;\r\n font-size: 14px;\r\n line-height: 40px;\r\n text-align: center;\r\n }\r\n\r\n div:hover {\r\n cursor: pointer;\r\n }\r\n\r\n .search {\r\n margin-right: 10px;\r\n background-color: #2766DD;\r\n color: #F7F8FB;\r\n }\r\n\r\n .search:hover {\r\n background-color: #4D85F4;\r\n }\r\n\r\n .reset {\r\n color: #333334;\r\n border: 1px solid #D7D7D7;\r\n }\r\n\r\n .reset:hover {\r\n color: #1F9FFF;\r\n border: 1px solid #1F9FFF;\r\n }\r\n }\r\n }\r\n\r\n .table-content {\r\n margin-top: 15px;\r\n width: 100%;\r\n background-color: #fff;\r\n padding: 0 20px;\r\n\r\n .btn {\r\n margin: 15px 20px 15px 0;\r\n cursor: pointer;\r\n float: left;\r\n text-align: center;\r\n width: 98px;\r\n height: 34px;\r\n border-radius: 2px;\r\n border: 1px solid #ABC7FD;\r\n line-height: 34px;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #2250C8;\r\n background-color: #E7EEFF;\r\n }\r\n\r\n .btn:hover {\r\n color: #FFFFFF;\r\n background-color: #2250C8;\r\n border: 1px solid #2250C8;\r\n }\r\n\r\n .btn:active {\r\n color: #FFFFFF;\r\n background-color: #194DA4;\r\n border: 1px solid #194DA4;\r\n }\r\n\r\n .startUsing {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #00974D;\r\n border-radius: 4px;\r\n background-color: #E7FAF0;\r\n border: 1px solid #BEFDDD;\r\n }\r\n\r\n .Deactivate {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #FF9933;\r\n border-radius: 4px;\r\n background-color: #FFF3E8;\r\n border: 1px solid #FDE6CF;\r\n }\r\n .operateBtn {\r\n display: flex;\r\n justify-content: center;\r\n color: #1E9FFF;\r\n\r\n div {\r\n margin: 0 5px;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .pagination {\r\n margin: 10px 0;\r\n width: 100%;\r\n height: 20px;\r\n\r\n .el-pagination {\r\n float: right;\r\n }\r\n }\r\n }\r\n\r\n}\r\n</style>\r\n"]}]}
|