1. //异步1
    <template>
  2.  
  3. <div class="addequipment org">
  4. <div class="top">
  5. <div class="topfirst">菜单管理</div>
  6. <div class="addequi" @click='addNew'>添加</div>
  7. </div>
  8.  
  9. <div class="center ">
  10. <!-- 菜单tree -->
  11. <div class="inputlist">
  12. <el-tree
  13. class="org-tree"
  14. :data="menuList"
  15. :props="defaultProps"
  16. node-key="id"
  17. :expand-on-click-node="false"
  18. :load="loadChildNode"
  19. lazy
  20. >
  21. <span class="custom-tree-button" slot-scope="{ node, data }">
  22. <span @click='itemHandle(data)'>{{ node.label }}</span>
  23. <span>
  24. <el-button type="text" size="medium" icon="el-icon-edit-outline" @click="() => edit(data)">
  25. </el-button>
  26. <el-button type="text" size="medium" icon="el-icon-circle-plus-outline" @click="() => addNew(data)">
  27. </el-button>
  28. <el-button type="text" size="medium" icon="el-icon-delete" @click="() => deleteMenu(data)">
  29. </el-button>
  30. </span>
  31. </span>
  32. </el-tree>
  33. </div>
  34. <!-- 权限操作表格 -->
  35. <handlePermission
  36. ref='handlePermission'
  37. :isShowPermissionTable='isShowPermissionTable'
  38. :menuId='menuId'
  39. v-show='isShowPermissionTable'
  40. >
  41. </handlePermission>
  42. </div>
  43.  
  44. <!-- 新增修改菜单弹窗 -->
  45. <addNewMenu
  46. ref='addNewMenu'
  47. @getMenuTree='getData'
  48. >
  49. </addNewMenu>
  50.  
  51. </div>
  52. </template>
  53.  
  54. <script>
  55.  
  56. import addNewMenu from './component/addNewMenu'
  57. import handlePermission from './component/handlePermission'
  58. import {
  59. getMenuList,
  60. deleteMenu,
  61. listByPid,
  62. }
  63. from "@/api/menu.js";
  64.  
  65. export default {
  66. name: "menuMang",
  67. computed: {},
  68. data() {
  69. return {
  70. formLabelWidth: "120px",
  71. dialogFormVisible: false,
  72. dialogTitle: "添加",
  73. menuId: "",
  74. sPid: "",
  75. form: {
  76. id: "",
  77. name: "",
  78. type: 1,
  79. url: "",
  80. path: "",
  81. icon: "",
  82. enabled: true,
  83. parentId: "",
  84. sortNum: ""
  85. },
  86. menuList:[],
  87. defaultProps: {
  88. children: "children",
  89. label: "name"
  90. },
  91. menuId: '',
  92. isShowPermissionTable: false
  93. };
  94. },
  95. components: {
  96. addNewMenu,
  97. handlePermission
  98. },
  99.  
  100. mounted() {
  101. this.getData();
  102. },
  103. methods: {
  104. //点击父节点加载子级数据
  105. loadChildNode(node,resolve) {
  106. if(node.loading){
  107. this.itemHandle(node.data,resolve)
  108. }
  109. },
  110. // 点击节点
  111. itemHandle(data,resolve) {
  112. //动态加载子菜单
  113. console.log('data',data)
  114. this.menuId = ''
  115. if(resolve){
  116. listByPid({ pid: data.id }).then(res => {
  117. let { body, message } = res;
  118. if (message == "SUCCESS") {
  119. resolve(body)
  120. }
  121. })
  122. }
  123. // 如果节点type为0则加载权限操作表格
  124. if (data.type == 0) {
  125. this.menuId = data.id
  126. this.isShowPermissionTable = true
  127. this.$refs.handlePermission.getPermissionList(data.id)
  128. } else {
  129. this.isShowPermissionTable = false
  130. }
  131. },
  132.  
  133. //符合条件显示权限table
  134. showPermissionTable() {
  135. this.isShowPermissionTable = true
  136. this.$refs.handlePermission.showTable(this.menuId)
  137. },
  138.  
  139. // 加载菜单数据
  140. getData() {
  141. this.dialogFormVisible = false;
  142. getMenuList().then(res => {
  143. let {
  144. body,
  145. message
  146. } = res;
  147. if (res.code == 200) {
  148. this.menuList = res.body
  149. }
  150. });
  151. },
  152. //打开新增修改弹窗
  153. addNew(data) {
  154. let parentId = data.parentId
  155. let menuId = data.id
  156. this.$refs.addNewMenu.showDialog(1, menuId, parentId)
  157. },
  158. //打开编辑弹窗
  159. edit(data) {
  160. let parentId = data.parentId
  161. let menuId = data.id
  162. this.$refs.addNewMenu.showDialog(2, menuId, parentId)
  163. },
  164. //删除菜单
  165. deleteMenu(data) {
  166. this.$confirm('确定要删除吗')
  167. .then(_ => {
  168. deleteMenu({id: data.id}).then(res => {
  169. if (res.code === 200) {
  170. this.$message({
  171. message: '删除成功',
  172. type: 'success'
  173. });
  174. this.getData()
  175. } else {
  176. this.$message.error(res.message);
  177. }
  178. })
  179. })
  180. .catch(_ => {
  181. this.$message({
  182. message: '确认取消',
  183. type: 'info'
  184. });
  185. });
  186. },
  187. }
  188. };
  189. </script>
  190.  
  191. <style lang="less" scoped>
  192. .addequipment {
  193. position: absolute;
  194. top: 120px;
  195. left: 0;
  196.  
  197. width: 100%;
  198. box-sizing: border-box;
  199. padding: 1% 1% 0 5%;
  200. color: #FFFFFF;
  201. .top {
  202. width: 100%;
  203. height: 50px;
  204. background: rgba(2,31,42,.4);
  205. display: flex;
  206. align-items: center;
  207. font-size: 20px;
  208. margin-bottom: 20px;
  209. .topfirst {
  210. color: #01C1DA;
  211. padding: 0 40px 0 20px;
  212. }
  213. .addequi {
  214. background: #1490FF;
  215. width: 130px;
  216. height: 30px;
  217. font-size: 16px;
  218. text-align: center;
  219. line-height: 28px;
  220. border-radius: 4px;
  221. cursor: pointer;
  222. }
  223. }
  224. .center {
  225. width: 100%;
  226. box-sizing: border-box;
  227. padding: 10px;
  228. background:rgba(2,21,62,.4);
  229. overflow: hidden;
  230. .inputlist {
  231. width: 100%;
  232. font-size: 16px;
  233. color: #FFFFFF;
  234. float: left;
  235. box-sizing: border-box;
  236. padding: 30px 10px 0 10px;
  237. margin-bottom: .2rem;
  238. .org-tree {
  239. width: 100%;
  240. background: rgba(0, 0, 0, 0);
  241. color: #FFFFFF;
  242. }
  243. }
  244. .tablelist {
  245. width: 75%;
  246. margin-top: 30px;
  247. float: left;
  248. .styleed {
  249. display: inline-block;
  250. padding: 1px 2px;
  251. color: #12B1D2;
  252. cursor: pointer;
  253. }
  254. .span1 {
  255. display: inline-block ;
  256. width: 1px;
  257. height: 10px;
  258. background: #12B1D2;
  259. margin:0 3px 0 4px;
  260. }
  261. .span2 {
  262. display: inline-block ;
  263. width: 1px;
  264. height: 10px;
  265. background: #12B1D2;
  266. margin:0 3px 0 4px;
  267. }
  268. .span3 {
  269. display: inline-block;
  270. width: 1px;
  271. height: 10px;
  272. background: #12B1D2;
  273. margin:0 3px 0 4px;
  274. }
  275. }
  276. }
  277. }
  278. </style>
  1. //异步2
    <template>
  2. <div class="addequipment org">
  3. <div class="top">
  4. <div class="topfirst">组织管理</div><div class="addequi" @click="addUser">添加关联用户</div>
  5. </div>
  6. <div class="center ">
  7. <div class="inputlist">
  8. <el-tree
  9. class="org-tree"
  10. node-key="id"
  11. check-strictly
  12. :load="loadNode"
  13. :props="defaultProps"
  14. lazy
  15. ref="treeForm"
  16. @node-click="handleNodeClick"
  17. :expand-on-click-node="false"
  18. >
  19.  
  20. <span class="custom-tree-node" slot-scope="{ node, data }">
  21. <span>{{ node.label }}</span>
  22. <span>
  23. <el-button
  24. type="text"
  25. size="medium"
  26. icon="el-icon-edit-outline"
  27. @click="() => editor(node,data)">
  28. </el-button>
  29. <el-button
  30. type="text"
  31. size="medium"
  32. icon="el-icon-circle-plus-outline"
  33. @click="() => append(node, data)">
  34. </el-button>
  35. <el-button
  36. type="text"
  37. size="medium"
  38. icon="el-icon-delete"
  39. @click="() => remove(node, data)">
  40. </el-button>
  41. </span>
  42. </span>
  43. </el-tree>
  44. </div>
  45.  
  46. <div class="tablelist">
  47. <el-table ref="multipleTable" :data="tableData" border tooltip-effect="dark" style="width: 100%">
  48. <el-table-column
  49. align="center"
  50. label="用户账号"
  51. prop='username'
  52. show-overflow-tooltip>
  53. </el-table-column>
  54. <el-table-column
  55. align="center"
  56. label="用户姓名"
  57. prop='name'
  58. show-overflow-tooltip>
  59. </el-table-column>
  60. <el-table-column label="操作" align="center" show-overflow-tooltip>
  61. <template slot-scope="scope">
  62. <span class="styleed" @click="deviceDel(scope.row)">删除</span>
  63. </template>
  64. </el-table-column>
  65. </el-table>
  66. <div class="elPaination">
  67. <el-pagination
  68. @size-change="handleSizeChange"
  69. @current-change="handleCurrentChange"
  70. :current-page="currentPage4"
  71. :page-sizes="[10, 20, 40, 80]"
  72. :page-size="10"
  73. style="float: right"
  74. layout="total, sizes, prev, pager, next,jumper"
  75. :total="total">
  76. </el-pagination>
  77. </div>
  78. </div>
  79. </div>
  80.  
  81. <bindVs @updateing="updateing" ref="bindVs"></bindVs>
  82. <assignedOrder @updateing="updateingorg" ref="assignedOrder"></assignedOrder>
  83.  
  84. </div>
  85. </template>
  86.  
  87. <script>
  88.  
  89. import {orgListByPid,orglistUserShipPage,orgdelUserShip,orgaddUserShip,orgAdd,orgupdate,orgdel} from "@/api/systemMenu/org.js"
  90. import {formatDate} from "@/utils/index.js";
  91. import assignedOrder from "./component/assigned.vue";
  92. import bindVs from "./component/bindVs.vue";
  93. export default {
  94. name: "addequipment",
  95. components: {
  96. bindVs,
  97. assignedOrder
  98. },
  99. computed: {
  100.  
  101. },
  102. data() {
  103. return {
  104. menuList:[],
  105. ruleForm:{
  106. planName:'',
  107. name:'',
  108. type:null,
  109. code:null,
  110. addressName:'',
  111. },
  112. defaultProps: {
  113. children: 'children',
  114. label: 'name'
  115. },
  116. data : [],
  117. statData:{},
  118. options:[],
  119. option1:[],
  120. tableData: [],
  121. multipleSelection: [],
  122. currentPage4: 1,
  123. pageNum:1,
  124. pageSize:10,
  125. total:0,
  126. areaId:null,//区域id
  127. orgId:null, //组织id
  128. flag:true,
  129. node:[],
  130. reslover:[],
  131. nodelist:[],
  132. datalist:{},
  133. addoreditor:null,
  134.  
  135. flags : false,
  136. tempNode:[],
  137. tempNodelist:[],
  138. func :{},
  139. }
  140. },
  141. created() {
  142.  
  143. },
  144. mounted() {
  145.  
  146. },
  147. methods: {
  148. handleSizeChange(val) {
  149. this.pageSize = val
  150. this.orglistUserShipPage()
  151. },
  152. handleCurrentChange(val) {
  153. this.pageNum = val
  154. this.orglistUserShipPage()
  155. },
  156. //编辑
  157. editor (node,data) {
  158. this.addoreditor = 2
  159. this.$refs.assignedOrder.show(2,data.id)
  160. this.datalist = data
  161. let parent = node.parent
  162. this.nodelist = parent
  163. },
  164. //点击节点
  165. handleNodeClick (data,node) {
  166. this.orgId = data.id
  167. this.orglistUserShipPage()
  168. },
  169. //新增
  170. append(node,data) {
  171. this.nodelist = node
  172. this.datalist = data
  173. this.addoreditor = 1
  174. this.$refs.assignedOrder.show(1,data.id)
  175. },
  176. //删除节点
  177. remove(node, data) {
  178. this.$confirm(' ', '确认要删除吗?', {
  179. confirmButtonText: '确定',
  180. cancelButtonText: '取消',
  181. center: true,
  182. customClass:"massagebox"
  183. }).then(() => {
  184. orgdel({id:data.id}).then(res => {
  185. if(res.code == 200) {
  186. this.$message({
  187. type: 'success',
  188. message: '删除成功!'
  189. });
  190.  
  191. const parent = node.parent;
  192. let children = parent.childNodes || parent.data;
  193. const index = children.findIndex(d => d.key === data.id);
  194. children.splice(index, 1);
  195. }else {
  196. this.$message.error(res.message);
  197. }
  198. })
  199. }).catch(() => {
  200. this.$message({
  201. type: 'info',
  202. message: '已取消删除'
  203. });
  204. });
  205. },
  206. //更新节点
  207. updateingorg () {
  208. //1新增 2编辑
  209. let data = {
  210. id : '',
  211. limit : ''
  212. }
  213. if (this.addoreditor == 1) {
  214. data.id = this.datalist.id
  215. data.limit = this.datalist.limit
  216. }else {
  217. data.id = this.datalist.parentId
  218. data.limit = this.datalist.limit
  219. }
  220. orgListByPid(data).then((res) =>{
  221. if(res.code == 200) {
  222. let treelist = res.body
  223. let theChildren = this.nodelist.childNodes
  224. theChildren.splice(0, theChildren.length)
  225. this.nodelist.doCreateChildren(treelist)
  226. }
  227. })
  228.  
  229. },
  230. //更新
  231. updateing () {
  232. this.orglistUserShipPage()
  233. },
  234. //添加
  235. addUser () {
  236. this.$refs.bindVs.show(this.orgId);
  237. },
  238. //查看
  239. lookOver (row) {
  240. this.$refs.lookOver.show(row.id,row.deviceId)
  241. },
  242. //删除
  243. deviceDel (row) {
  244. this.$confirm(' ', '确认要删除吗?', {
  245. confirmButtonText: '确定',
  246. cancelButtonText: '取消',
  247. center: true,
  248. customClass:"massagebox"
  249. }).then(() => {
  250. orgdelUserShip({id:row.id}).then(res => {
  251. if(res.code == 200) {
  252. this.orglistUserShipPage()
  253. this.$message({
  254. type: 'success',
  255. message: '删除成功!'
  256. });
  257. }
  258. })
  259. }).catch(() => {
  260. this.$message({
  261. type: 'info',
  262. message: '已取消删除'
  263. });
  264. });
  265. },
  266. //分级加载组织节点
  267. loadNode(node, resolve) {
  268. console.log(1)
  269. if (node.level == 0) {
  270. this.orgListByPid(node,resolve)
  271. }else {
  272. this.orgListByPid(node,resolve)
  273. }
  274. },
  275. //查询table
  276. orgListByPid (node,resolve) {
  277. let id = node.level == 0?0:node.data.id
  278. let limit = node.level == 0? false : node.data.limit
  279. orgListByPid({id:id,limit:limit}).then((res) =>{
  280. let treelist = res.body
  281.  
  282. this.menuList = treelist;
  283. if (this.flag) {
  284. this.orgId = treelist[0].id
  285. this.orglistUserShipPage()
  286. this.flag = false
  287. }
  288. return resolve(treelist);
  289. })
  290. },
  291. //tabliet
  292. orglistUserShipPage () {
  293. let data = {
  294. orgId:this.orgId,//组织 ID
  295. pageNum:this.pageNum,//页数
  296. pageSize:this.pageSize,//页大小
  297. kw:null, //查询条件(通配查询条件)
  298. }
  299. orglistUserShipPage(data).then((res) =>{
  300. if(res.code == 200) {
  301. let data = res.body.datas
  302. this.total = res.body.total
  303. this.tableData = data
  304. }
  305. })
  306. },
  307. }
  308. }
  309. </script>
  310. <style lang="less" scoped>
  311. .addequipment {
  312. position: absolute;
  313. top: 120px;
  314. left: 0;
  315.  
  316. width: 100%;
  317. box-sizing: border-box;
  318. padding: 1% 1% 0 5%;
  319. color: #FFFFFF;
  320. .top {
  321. width: 100%;
  322. height: 50px;
  323. background: rgba(2,31,42,.4);
  324. display: flex;
  325. align-items: center;
  326. font-size: 20px;
  327. margin-bottom: 20px;
  328. .topfirst {
  329. color: #01C1DA;
  330. padding: 0 40px 0 20px;
  331. }
  332. .addequi {
  333. font-size: 16px;
  334. background: #1490FF;
  335. width: 130px;
  336. height: 30px;
  337. text-align: center;
  338. line-height: 28px;
  339. border-radius: 4px;
  340. cursor: pointer;
  341. }
  342. }
  343. .center {
  344. width: 100%;
  345. box-sizing: border-box;
  346. padding: 10px;
  347. background:rgba(2,21,62,.4);
  348. overflow: hidden;
  349. .inputlist {
  350. width: 25%;
  351. /*height: 77vh;*/
  352. font-size: 16px;
  353. color: #FFFFFF;
  354. float: left;
  355. box-sizing: border-box;
  356. padding: 30px 10px 30px 10px;
  357. .org-tree {
  358. width: 100%;
  359. background: rgba(0, 0, 0, 0);
  360. color: #FFFFFF;
  361. }
  362. }
  363. .tablelist {
  364. width: 75%;
  365. margin-top: 30px;
  366. float: left;
  367. .styleed {
  368. display: inline-block;
  369. padding: 1px 2px;
  370. color: #12B1D2;
  371. cursor: pointer;
  372. }
  373. .span1 {
  374. display: inline-block ;
  375. width: 1px;
  376. height: 10px;
  377. background: #12B1D2;
  378. margin:0 3px 0 4px;
  379. }
  380. .span2 {
  381. display: inline-block ;
  382. width: 1px;
  383. height: 10px;
  384. background: #12B1D2;
  385. margin:0 3px 0 4px;
  386. }
  387. .span3 {
  388. display: inline-block;
  389. width: 1px;
  390. height: 10px;
  391. background: #12B1D2;
  392. margin:0 3px 0 4px;
  393. }
  394. }
  395. }
  396. }
  397. .addequipment .customized_input {
  398. width: 160px!important;
  399. }
  400. .elPaination {
  401. width:100%;
  402. height: 40px;
  403. margin-top: 10px;
  404. color: #FFFFFF;
  405. }
  406. </style>
  1. //同步1
    <!-- 用户管理 -->
  2. <template>
  3. <div class="view-wrap" style="min-width:800px">
  4. <!-- 树形部分 -->
  5. <div class="div-box-tree">
  6. <div class="depart-page">
  7. <div>
  8. <!-- <span>机构名称</span> -->
  9. <el-select
  10. v-model="organizationName"
  11. @change="selectChange"
  12. size="small"
  13. placeholder="请选择机构"
  14. style="width:95%;"
  15. >
  16. <el-option
  17. v-for="item in organizationOptions"
  18. :key="item.value"
  19. :label="item.agencyName"
  20. :value="item.id"
  21. />
  22. </el-select>
  23. </div>
  24.  
  25. <div class="tree">
  26. <el-tree
  27. :data="deptTreeData"
  28. :props="props"
  29. node-key="id"
  30. :load="loadNode"
  31. @node-click="handleNodeClick"
  32. :expand-on-click-node="true"
  33. lazy
  34. :default-expand-all="true"
  35. ref="tree"
  36. >
  37. <span slot-scope="{ node, data }" class="custom-tree-node">
  38. <span>{{ node.label }}</span>
  39. <span>
  40. <el-button
  41. type="text"
  42. @click.stop="() => append(node, data, 'append')"
  43. >添加</el-button>
  44. <el-button
  45. v-if="node.level!==1"
  46. type="text"
  47. @click.stop="() => getModifyInfo(node, data, 'modify')"
  48. >修改</el-button>
  49. <el-button
  50. v-if="node.level!==1"
  51. type="text"
  52. @click.stop="() => remove(node, data)"
  53. >删除</el-button>
  54. </span>
  55. </span>
  56. </el-tree>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </template>
  62.  
  63. <script>
  64. import { post, get } from "@/utils/axios";
  65.  
  66. //树形部分
  67. import {getOrgnizationList, getOrgnizationListNew, getSubOrgnizationListById, addNewOrg, modifyNewOrg, deleteOrg, getDetailById} from '@/api/departManagement.js'
  68. export default {
  69. name: "empMng",
  70. data() {
  71. return {
  72.  
  73. //树形部分
  74. organizationName: '',
  75. organizationOptions: [],
  76. departOptions: [],
  77. deptTreeData: [],
  78. props: {
  79. label: 'deptName',
  80. children: 'children',
  81. },
  82. dialogFormVisible: false,
  83. addOrgForm: {
  84. deptNo:'',
  85. deptName:'',
  86. deptPinyin:'',
  87. parentDeptName: '',
  88. deptPath: '',
  89. deptFloor: '',
  90. orgName: ''
  91. },
  92. formLabelWidth:'120px',
  93. rules:{
  94. deptNo: [{ required: true, message: '请填写部门编号', trigger: 'blur' }],
  95. deptName: [{ required: true, message: '请填写部门名称', trigger: 'blur' }]
  96. },
  97. tempNode: {},
  98. func: {},
  99. parentOrgId: '',
  100. orgId: '',
  101. buttonText: '',
  102. childOrg: []
  103. };
  104. },
  105. //树形部分
  106. created() {
  107. },
  108. methods: {
  109. //树形部分
  110. //获取组织列表
  111. getOrgnizationList() {
  112. getOrgnizationList().then((res)=>{
  113. this.organizationOptions = res.data.data
  114. this.deptTreeData = [res.data.data[0]]
  115. // this.parentOrgId = this.organizationOptions[0].id
  116. this.organizationName = this.organizationOptions[0].deptName
  117. })
  118. },
  119. getOrgnizationList() {
  120. getOrgnizationListNew({
  121. agencyName: '',
  122. parkName: '',
  123. minUpdateTime: '',
  124. maxUpdateTime: '',
  125. pageNum: 1,
  126. pageSize: 999
  127. }).then((res)=>{
  128. this.organizationOptions = res.data.data.rows
  129. this.deptTreeData = [res.data.data.rows[0]]
  130. console.log('organizationName',this.organizationOptions)
  131. debugger
  132. this.organizationName = this.organizationOptions[0].agencyName
  133. this.parentOrgId = this.organizationOptions[0].id
  134. this.orgName = this.organizationOptions[0].agencyName
  135. });
  136. let that = this;
  137. get("property/dept/viewDeptByOrgId",{params:{orgId: "365c29ad69f54db0acf63ce404c21a5b"}}).then(function(res){
  138. console.log('res.data.data',res.data.data)
  139. that.deptTreeData = res.data.data
  140. })
  141. },
  142. //点击树节点
  143. handleNodeClick(data,event) {
  144. if (data.id) {
  145. this.parentOrgId = data.id
  146. this.queryForm.department = data.deptName
  147. // console.log('this.queryForm',this.queryForm)
  148. this.onSearch();
  149.  
  150. } else {
  151. return
  152. }
  153. this.tempNode.childNodes = []
  154. this.$refs.tree.load(this.tempNode, this.func)
  155. },
  156. // 选中组织
  157. selectChange(value) {
  158. // this.parentOrgId = value
  159. let sameItem = this.organizationOptions.find((item)=> {
  160. return item.id === value
  161. })
  162. this.deptTreeData = [sameItem]
  163. },
  164. getorgName(data) {
  165. if (data.level === 1) {
  166. this.addOrgForm.orgName = data.label
  167. } else {
  168. this.getorgName(data.parent)
  169. }
  170. },
  171. //添加
  172. append(data, node, type) {
  173. this.orgId = node.id
  174. this.dialogFormVisible = true
  175. this.buttonText = '确认添加'
  176. this.addOrgForm.parentDeptName = data.label
  177. this.addOrgForm.deptPath = data.level === 1 ? data.label : `${data.parent.label}/${data.label}`
  178. this.getorgName(data)
  179. this.addOrgForm.parentDeptName = data.label
  180. },
  181. //获取修改弹窗信息
  182. getModifyInfo(data, node, type) {
  183. console.log('data',data)
  184. this.parentOrgId = data.data.parentDeptId
  185. this.orgId = node.id
  186. this.dialogFormVisible = true
  187. this.buttonText = '确认修改'
  188. this.addOrgForm.parentDeptName = data.label
  189. this.addOrgForm.deptPath = data.level === 1 ? data.label : `${data.parent.label}/${data.label}`
  190. this.getorgName(data)
  191. this.addOrgForm.parentDeptName = data.label
  192.  
  193. getDetailById(this.orgId).then((res)=>{
  194. this.addOrgForm = res.data.data
  195. })
  196. },
  197. //删除
  198. remove(data,node) {
  199. this.$confirm("确认删除吗?", "提示", {
  200. confirmButtonText: "确定",
  201. cancelButtonText: "取消",
  202. type: "warning"
  203. }).then(() => {
  204. deleteOrg(node.id).then((res)=> {
  205. this.$message({
  206. type: "success",
  207. message: "删除成功!"
  208. });
  209. this.getOrgnizationList();
  210. })
  211. }).catch(()=>{
  212. return;
  213. })
  214. },
  215. loadNode(node, resolve) {
  216. if (node.level === 0) {
  217. // return resolve([{ deptName: this.organizationName }]);
  218. } else if (node.level > 0) {
  219. getSubOrgnizationListById(node.data.id).then((res)=>{
  220. this.childOrg = res.data.data
  221. resolve(this.childOrg);
  222. })
  223. }
  224. },
  225. submitForm(formName) {
  226. this.$refs[formName].validate((valid) => {
  227. if (valid) {
  228. if(this.buttonText === '确认添加') {
  229. let data = this.addOrgForm
  230. data.parentDeptId = this.orgId
  231. addNewOrg(data).then((res)=> {
  232. this.resetForm('ruleForm')
  233. this.getOrgnizationList();
  234. })
  235. } else if (this.buttonText === '确认修改') {
  236. let data = this.addOrgForm
  237. data.parentDeptId = this.parentOrgId
  238. modifyNewOrg(data).then((res)=> {
  239. this.resetForm('ruleForm')
  240. this.getOrgnizationList();
  241. })
  242. }
  243. } else {
  244. return false;
  245. }
  246. });
  247. },
  248. resetForm(formName) {
  249. this.dialogFormVisible = false
  250. this.$refs[formName].resetFields();
  251. }
  252. },
  253. mounted: function() {
  254. let _this = this;
  255. this.onSearch();
  256. //获取机构下拉
  257. get("/property/agency/page", {
  258. params: {
  259. agencyName: "",
  260. parkName: "",
  261. minUpdateTime: "",
  262. maxUpdateTime: "",
  263. pageNum: 1,
  264. pageSize: 9999,
  265. time: new Date().getTime()
  266. }
  267. }).then(function(res) {
  268. _this.agencyOptions = res.data.data.rows;
  269. });
  270.  
  271. //获取角色下拉
  272. get("/property/role/page", {
  273. params: {
  274. roleName: "",
  275. minUpdateTime: "",
  276. maxUpdateTime: "",
  277. pageNum: 1,
  278. pageSize: 9999,
  279. time: new Date().getTime()
  280. }
  281. }).then(function(res) {
  282. _this.roleOptions = res.data.data.rows;
  283. var noneRole = { roleId: "0", roleName: "无" };
  284. _this.roleOptions.push(noneRole);
  285. });
  286. }
  287. };
  288. </script>
  289.  
  290. <style lang="scss" scoped>
  291. .view-wrap {
  292. margin: 20px;
  293. }
  294. .ibox-content p {
  295. font-size: 14px;
  296. font-weight: bold;
  297. margin-bottom: 10px;
  298. }
  299. .ibox-content p span {
  300. margin-left: 6px;
  301. }
  302. .title {
  303. border-bottom: 1px solid #fff;
  304. margin: 20px 0;
  305. padding-bottom: 20px;
  306. }
  307.  
  308. .boxr {
  309. border-left: 10px solid #fff;
  310. }
  311. .boxl {
  312. border-right: 10px solid #fff;
  313. }
  314. h3 {
  315. padding-left: 20px;
  316. font-size: 18px;
  317. }
  318. .boxr,
  319. .boxl {
  320. background: #eee;
  321. }
  322.  
  323. .example {
  324. margin-left: 20px;
  325. }
  326. .btn1 {
  327. position: absolute;
  328. top: 300px;
  329. right: 150px;
  330. border-color: #71bedf;
  331. background: #71bedf;
  332. }
  333. .btn2 {
  334. position: absolute;
  335. right: 80px;
  336. top: 300px;
  337. background: #dfab5d;
  338. border-color: #dfab5d;
  339. color: #fff;
  340. }
  341.  
  342. .tianjiexample {
  343. padding-bottom: 150px;
  344. }
  345. .tongji {
  346. border-top: 8px solid #fff;
  347. }
  348. .biaoge {
  349. padding-right: 15px;
  350. }
  351. .fonts {
  352. font-size: 16px;
  353. }
  354. .btns {
  355. margin-left: 0px;
  356. }
  357. .div-box-wrap {
  358. width: 100%;
  359. overflow: auto;
  360. height: 100%;
  361. .div-box-tree {
  362. float: left;
  363. width: 25%;
  364. height: 100%;
  365. min-height: 420px;
  366. overflow: auto;
  367. }
  368. .div-box-table {
  369. float: right;
  370. width: 75%;
  371. height: 100%;
  372. }
  373. }
  374.  
  375. </style>

tree 树形加载及增删改的更多相关文章

  1. Tree:加载列表数据

    Tree控件,需要提供一个树形的JSON数据,才能正常显示. 通常,开发者在后台可以这样做: 1)从数据库查询出一个列表数据 2)在后台,将列表数据转换为树形数据 3)通过JSON方式返回 在前台页面 ...

  2. Web版RSS阅读器(二)——使用dTree树形加载rss订阅分组列表

    在上一边博客<Web版RSS阅读器(一)——dom4j读取xml(opml)文件>中已经讲过如何读取rss订阅文件了.这次就把订阅的文件读取到页面上,使用树形结构进行加载显示. 不打算使用 ...

  3. jquery easyui tree动态加载子节点

    1.前端tree绑定时,使用onBeforeExpand事件:当节点展开时触发加载子节点,自动会向服务端发送请求:url为绑定url,参数为当前节点id this.tree = { method: ' ...

  4. spring mvc easyui tree 异步加载树

    使用spring mvc 注解 异步加载一棵树 jsp: <ul id="orgInfoTree"></ul> $(function(){ loadOrgT ...

  5. jquery easyui tree异步加载子节点

    easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立.如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参数. <ul id=& ...

  6. vue elementUi tree 懒加载使用详情

    背景:vue下使用elementUI 文档:http://element-cn.eleme.io/#/zh-CN/component/tree#tree-shu-xing-kong-jian 需求:只 ...

  7. 后台返回平铺数据,如何转换成树形json并渲染树形结构,ant tree 异步加载

    如何后台返回对象数组(平铺式) 1.根据字段标识(板块)获取根节点 ### initTreeData(dataOrg){ var resultArr=dataOrg[0] var secArr=[]; ...

  8. MVC4中EasyUI Tree异步加载JSON数据生成树

      1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summar ...

  9. ant-design-vue中tree增删改

    ant-design-vue中tree增删改 1. 使用背景 新项目中使用了ant-design-vue组件库.该组件库完全根基数据双向绑定的模式实现.只有表单组件提供少量的方法.所以,在使用ant- ...

随机推荐

  1. linux服务之dns

    安装dig工具 [root@cu-app-107 ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core) [root@cu-ap ...

  2. ISO/IEC 9899:2011 条款6.5.7——按位移位操作符

    6.5.7 按位移位操作符 语法 1.shift-expression: additive-expression shift-expression    <<    additive-ex ...

  3. 在gitlab新建分支,IDEA切换时找不到的解决办法

    VCS——>Git——>Fetch

  4. 从Windows转mac遇到的一些坑

    本屌由于运气,分了一台imac来办公,由于以前一直都在用windows,现在用Mac有很多不适应的地方.下面介绍一下Mac与Windows有明显区别的地方: mac与windows鼠标滑轮方向不同. ...

  5. SVL-VI SLAM

    3.4. Mappoints management and key frame process如果在步骤3.3中成功跟踪地图点,则缓存地图点以在下一帧中优先化.当完成当前帧的跟踪时,应该为下一帧更新帧 ...

  6. 【Redis】Redis 主从模式搭建

    主从模式介绍 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据 ...

  7. 转 mysql mysql命令行中执行sql的几种方式总结

    https://www.jb51.net/article/96394.htm 1.直接输入sql执行 MySQL> select now(); +---------------------+ | ...

  8. Spring4.X整合redis

    包和版本的依赖关系很严重 我的配置 spring-data-redis-1.6.6.RELEASE.jar spring-tx-4.2.5.RELEASE.jar redis-2.7.2.jar co ...

  9. clickHouse可视化查询工具

    clickHouse以卓越的查询性能著称,目前在大数据的存储和分析领域有广泛应用,目前TreeSoft已支持clickHouse的数据在线查询分析,可以与Mysql,oracle等数据库并存操作. 1 ...

  10. 【VS开发】ClientToScreen 和ScreenToClient 用法

    ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->GetWindowRect(&rc);是获取整个窗体的大小pWnd->GetClientRect(& ...