userManger.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891
  1. <!-- -->
  2. <template>
  3. <div class="userManger_box">
  4. <el-card :style="'height:' + fullHeight + 'px'">
  5. <div class="card_box">
  6. <!-- 组织 -->
  7. <div
  8. class="userManger_left"
  9. :style="'height:' + (fullHeight - 100) + 'px'"
  10. >
  11. <el-tree
  12. :data="data"
  13. :props="defaultProps"
  14. @node-click="handleNodeClick"
  15. v-loading="loading"
  16. ></el-tree>
  17. </div>
  18. <!-- 搜索和表格 -->
  19. <div
  20. class="userManger_right"
  21. :style="'height:' + (fullHeight - 100) + 'px'"
  22. >
  23. <!-- 搜索 -->
  24. <el-row>
  25. <el-col>
  26. <!-- 组织搜索 -->
  27. <div class="search_box">
  28. <el-input
  29. size="mini"
  30. placeholder="请输入用户姓名"
  31. v-model.trim="nameVal"
  32. @change="searchData"
  33. clearable
  34. >
  35. </el-input>
  36. <el-input
  37. size="mini"
  38. placeholder="请输入手机号"
  39. v-model.trim="phoneVal"
  40. @change="searchData"
  41. clearable
  42. >
  43. </el-input>
  44. <div class="btn_box">
  45. <el-button type="primary" size="mini" @click="searchData"
  46. >搜索</el-button
  47. >
  48. <el-button type="primary" size="mini" @click="addrRole"
  49. >添加用户</el-button
  50. >
  51. </div>
  52. </div>
  53. </el-col>
  54. </el-row>
  55. <!-- 表格 -->
  56. <el-table
  57. :data="tableData"
  58. v-loading="loading2"
  59. stripe
  60. style="width: 100%; height: 90%;"
  61. >
  62. <el-table-column prop="ind" label="序号" width="90">
  63. </el-table-column>
  64. <el-table-column prop="real_name" label="姓名" width="190">
  65. </el-table-column>
  66. <el-table-column prop="username" label="账号名称" width="200">
  67. </el-table-column>
  68. <el-table-column prop="mobile" label="手机号" width="120">
  69. <template slot-scope="scope">
  70. <span>{{ scope.row.mobile || "无" }}</span>
  71. </template>
  72. </el-table-column>
  73. <el-table-column
  74. :show-overflow-tooltip="true"
  75. prop="org_list"
  76. label="所属组织"
  77. width="280"
  78. >
  79. <template slot-scope="scope">
  80. <span v-for="(item, index) in scope.row.org_list" :key="index"
  81. >{{ item.org_name }}
  82. <span v-if="index !== scope.row.org_list.length - 1">、</span>
  83. </span>
  84. </template>
  85. </el-table-column>
  86. <el-table-column prop="state" label="状态" width="120">
  87. <template slot-scope="scope">
  88. <span v-if="scope.row.state == '正常'">
  89. <span
  90. style="
  91. width: 6px;
  92. height: 6px;
  93. background: #30a031;
  94. border-radius: 50%;
  95. display: inline-block;
  96. margin: 0 0 2px 0;
  97. "
  98. ></span>
  99. <span>正常</span>
  100. </span>
  101. <span v-if="scope.row.state == '已停用'">
  102. <span
  103. style="
  104. width: 6px;
  105. height: 6px;
  106. background: #f93f3d;
  107. border-radius: 50%;
  108. display: inline-block;
  109. margin: 0 0 2px 0;
  110. "
  111. ></span>
  112. <span>停用</span>
  113. </span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column label="操作" width="280">
  117. <template slot-scope="scope">
  118. <a
  119. class="reset"
  120. href="javascript:;"
  121. @click="actionFunc(scope.row)"
  122. >编辑</a
  123. >
  124. <i class="line"></i>
  125. <a
  126. class="delete"
  127. :style="
  128. scope.row.state == '已停用'
  129. ? 'color: #1890ff'
  130. : 'color: #f56c6c;'
  131. "
  132. href="javascript:;"
  133. @click="outUse(scope.row)"
  134. >{{ scope.row.state == "已停用" ? "启用" : "停用" }}</a
  135. >
  136. <i class="line"></i>
  137. <a
  138. class="reset"
  139. href="javascript:;"
  140. @click="resetPwd(scope.row)"
  141. >重置密码</a
  142. >
  143. <i class="line"></i>
  144. <a
  145. class="delete"
  146. href="javascript:;"
  147. @click="deleteFunc(scope.row)"
  148. >删除</a
  149. >
  150. </template>
  151. </el-table-column>
  152. </el-table>
  153. <!-- 分页 -->
  154. <el-pagination
  155. v-if="tableData.length !== 0"
  156. @current-change="changeList"
  157. background
  158. layout="prev, pager, next, jumper"
  159. :current-page="page"
  160. :total="pageSum"
  161. >
  162. </el-pagination>
  163. </div>
  164. </div>
  165. </el-card>
  166. <!-- 添加 - 编辑 用户 -->
  167. <el-dialog
  168. :title="tltData"
  169. :visible.sync="userVisible"
  170. :close-on-click-modal="false"
  171. :close-on-press-escape="false"
  172. width="30%"
  173. >
  174. <el-form ref="form" :rules="rules" :model="form" label-width="150px">
  175. <el-form-item label="账号: " prop="user">
  176. <el-input
  177. style="width: 80%"
  178. size="mini"
  179. v-model.trim="form.user"
  180. ></el-input>
  181. </el-form-item>
  182. <el-form-item
  183. v-if="tltData == '添加用户'"
  184. label="密码: "
  185. prop="password"
  186. >
  187. <el-input
  188. style="width: 80%"
  189. size="mini"
  190. v-model.trim="form.password"
  191. ></el-input>
  192. </el-form-item>
  193. <el-form-item label="姓名: " prop="name">
  194. <el-input
  195. style="width: 80%"
  196. size="mini"
  197. v-model.trim="form.name"
  198. ></el-input>
  199. </el-form-item>
  200. <el-form-item label="隶属海关: " prop="judge">
  201. <!-- <el-cascader
  202. :change-on-select="true"
  203. filterable
  204. :v-model="form.judge"
  205. :key="refreshItem"
  206. :options="tissueList"
  207. @change="judgeData"
  208. :props="{
  209. multiple: true,
  210. label: 'org_name',
  211. value: 'id',
  212. children: 'childrens',
  213. checkStrictly: true
  214. }"
  215. clearable
  216. ></el-cascader> -->
  217. <el-cascader
  218. filterable
  219. @change="judgeData"
  220. :key="refreshItem"
  221. :change-on-select="true"
  222. v-model="form.judge"
  223. :options="tissueList"
  224. :props="{
  225. multiple: true,
  226. label: 'org_name',
  227. value: 'id',
  228. children: 'childrens',
  229. checkStrictly: true
  230. }"
  231. :clearable="true"
  232. placeholder="请选择隶属海关"
  233. ></el-cascader>
  234. </el-form-item>
  235. <el-form-item label="角色: " prop="role">
  236. <!-- <el-cascader
  237. filterable
  238. :v-model="form.role"
  239. :key="refreshItem"
  240. :options="roleData"
  241. @change="roleChange"
  242. :props="{
  243. value: 'id',
  244. label: 'role_name',
  245. multiple: true,
  246. emitPath: false,
  247. checkStrictly: true
  248. }"
  249. clearable
  250. ></el-cascader> -->
  251. <el-cascader
  252. filterable
  253. @change="roleChange"
  254. :key="refreshItem"
  255. :change-on-select="true"
  256. v-model="form.role"
  257. :options="roleData"
  258. :props="{
  259. value: 'id',
  260. label: 'role_name',
  261. multiple: true,
  262. emitPath: false,
  263. checkStrictly: true
  264. }"
  265. :clearable="true"
  266. placeholder="请选择角色"
  267. ></el-cascader>
  268. </el-form-item>
  269. <el-form-item label="手机号码: " prop="phone">
  270. <el-input
  271. style="width: 80%"
  272. size="mini"
  273. v-model.trim="form.phone"
  274. ></el-input>
  275. </el-form-item>
  276. <el-form-item label="邮箱: " prop="mailbox">
  277. <el-input
  278. style="width: 80%"
  279. size="mini"
  280. v-model.trim="form.mailbox"
  281. ></el-input>
  282. </el-form-item>
  283. <el-form-item
  284. v-if="tltData == '添加用户'"
  285. label="账号状态: "
  286. prop="state"
  287. >
  288. <el-select
  289. clearable
  290. size="mini"
  291. v-model="form.state"
  292. placeholder="请选择"
  293. >
  294. <el-option label="正常" value="1"></el-option>
  295. <el-option label="停用" value="4"></el-option>
  296. </el-select>
  297. </el-form-item>
  298. <el-form-item>
  299. <el-button size="small" type="primary" @click="submitForm"
  300. >确定</el-button
  301. >
  302. <el-button size="small" @click="resetForm">取消</el-button>
  303. </el-form-item>
  304. </el-form>
  305. </el-dialog>
  306. </div>
  307. </template>
  308. <script>
  309. export default {
  310. //import引入的组件需要注入到对象中才能使用
  311. components: {},
  312. data() {
  313. //input验证 - 密码框 - 禁止输入汉字
  314. const checkPath = (rule, value, callback) => {
  315. var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
  316. if (value == "") {
  317. callback(new Error("请输入密码"));
  318. }
  319. if (reg.test(value)) {
  320. callback(new Error("密码不能包含汉字!"));
  321. }
  322. if (value.indexOf("#") !== -1 || value.indexOf("@") !== -1) {
  323. callback();
  324. } else {
  325. callback(new Error("密码必须包含*#@_字符之一"));
  326. }
  327. };
  328. // input验证 - 验证手机号
  329. var checkphone = (rule, value, callback) => {
  330. if (value == "") {
  331. callback(new Error("请输入手机号"));
  332. } else if (!this.isCellPhone(value)) {
  333. //引入methods中封装的检查手机格式的方法
  334. callback(new Error("请输入正确的手机号!"));
  335. } else {
  336. callback();
  337. }
  338. };
  339. return {
  340. fullHeight: document.documentElement.clientHeight - 116, //
  341. loading: true, //加载 - 组织列表
  342. loading2: true, // 加载 - 表格列表
  343. // 树形图
  344. data: [],
  345. defaultProps: {
  346. children: "childrens",
  347. label: "org_name"
  348. },
  349. // 搜索
  350. nameVal: "",
  351. phoneVal: "",
  352. // 表格
  353. tableData: [],
  354. // 分页
  355. page: 1, //当前页码
  356. pageSum: 0, // 总数量
  357. // 弹框
  358. tltData: "添加用户",
  359. userVisible: false,
  360. form: {
  361. user: "", //账号
  362. password: "", // 密码
  363. name: "", // 姓名
  364. judge: [], // 隶属海关
  365. role: [], //角色
  366. phone: "", // 手机号码
  367. mailbox: "", //邮箱
  368. state: "" // 账号状态
  369. },
  370. rules: {
  371. user: [
  372. { required: true, message: "请输入账号", trigger: "blur" },
  373. { min: 3, max: 20, message: "长度在 3 到 20 位之间", trigger: "blur" }
  374. ],
  375. password: [
  376. { required: true, validator: checkPath, trigger: "blur" }
  377. // { validator: checkPath, trigger: "blur" }
  378. ],
  379. name: [
  380. { required: true, message: "请输入姓名", trigger: "blur" }
  381. // { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
  382. ],
  383. judge: [
  384. { required: true, message: "隶属海关,可多选", trigger: "change" }
  385. // { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
  386. ],
  387. role: [
  388. {
  389. required: true,
  390. message: "请选择角色,可多选",
  391. trigger: "change"
  392. }
  393. // { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
  394. ],
  395. phone: [{ required: true, validator: checkphone, trigger: "blur" }]
  396. },
  397. roleData: [], // 角色下拉框
  398. refreshItem: 0, //清除角色、组织值
  399. tissueList: [], // 组织下拉框
  400. editorObj: {}, //点击编辑选中当前的行数据
  401. org_id: "" //组织id
  402. };
  403. },
  404. //监听属性 类似于data概念
  405. computed: {},
  406. //监控data中的数据变化
  407. watch: {
  408. fullHeight(val) {
  409. //监控浏览器高度变化
  410. if (!this.timer) {
  411. this.fullHeight = val;
  412. this.timer = true;
  413. let that = this;
  414. setTimeout(function() {
  415. //防止过度调用监测事件,导致卡顿
  416. that.timer = false;
  417. }, 400);
  418. }
  419. },
  420. userVisible(val) {
  421. if (val == false) {
  422. // this.$refs["form"].resetFields();
  423. for (var key in this.form) {
  424. this.form[key] = "";
  425. // console.log(key)
  426. }
  427. this.refreshItem++;
  428. }
  429. }
  430. },
  431. //方法集合
  432. methods: {
  433. //动态获取浏览器高度
  434. get_boderHeight() {
  435. const that = this;
  436. window.onresize = () => {
  437. return (() => {
  438. window.fullHeight = document.documentElement.clientHeight;
  439. that.fullHeight = window.fullHeight;
  440. })();
  441. };
  442. },
  443. // 验证手机号是否正确
  444. isCellPhone(val) {
  445. if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
  446. return false;
  447. } else {
  448. return true;
  449. }
  450. },
  451. // 树形图
  452. handleNodeClick(data) {
  453. this.org_id = data.id;
  454. this.loading2 = true;
  455. this.userListData();
  456. },
  457. // 编辑
  458. actionFunc(e) {
  459. this.tltData = "编辑用户";
  460. this.editorObj = e;
  461. this.form.judge = [];
  462. var orgList = []; // 组织
  463. var roleList = []; // 角色
  464. for (var i = 0; i < e.org_list.length; i++) {
  465. var arr = [e.org_list[i].org_id];
  466. orgList.push(arr);
  467. }
  468. if (e.parent_list.length != 0) {
  469. var data = e.parent_list;
  470. for (var i = 0; i < data.length; i++) {
  471. var data2 = data[i];
  472. for (var j = 0; j < data2.length; j++) {
  473. orgList[i].unshift(data2[j].org_id);
  474. }
  475. }
  476. }
  477. // 角色
  478. for (var x = 0; x < e.role_list.length; x++) {
  479. var a = [e.role_list[x].role_id];
  480. roleList.push(a);
  481. }
  482. this.form = {
  483. user: e.username,
  484. password: "",
  485. name: e.real_name,
  486. judge: orgList,
  487. role: roleList,
  488. phone: e.mobile,
  489. mailbox: e.email,
  490. state: e.state
  491. };
  492. this.userVisible = true;
  493. },
  494. // 停用
  495. outUse(data) {
  496. if (data.state == "已停用") {
  497. var msg = "启用";
  498. } else if (data.state == "正常") {
  499. var msg = "停用";
  500. }
  501. this.$confirm("此操作将" + msg + "该账号, 是否继续?", "提示", {
  502. confirmButtonText: "确定",
  503. cancelButtonText: "取消",
  504. type: "warning"
  505. })
  506. .then(() => {
  507. this.$axios({
  508. method: "POST",
  509. url: "/api/api_gateway?method=sysmenage.usermanager.user_disable",
  510. data: this.qs.stringify({
  511. user_id: data.user_id,
  512. state: msg == "启用" ? 1 : 4
  513. })
  514. }).then(res => {
  515. if (res.data.data == true) {
  516. this.$message({
  517. type: "success",
  518. message: "成功",
  519. duration: 1500
  520. });
  521. this.userListData();
  522. }
  523. });
  524. })
  525. .catch(() => {
  526. this.$message({
  527. type: "info",
  528. message: "已取消"
  529. });
  530. });
  531. },
  532. // 重置密码
  533. resetPwd(data) {
  534. this.$prompt("请输入新密码", "提示", {
  535. confirmButtonText: "确定",
  536. cancelButtonText: "取消",
  537. inputPlaceholder: "默认密码为@12345678",
  538. inputErrorMessage: "新密码格式不正确",
  539. inputValidator: val => {
  540. if (escape(val).indexOf("%u") != -1) {
  541. return "不能输入汉字!";
  542. } else if (val.split(" ").join("").length == 0) {
  543. return "不能输入空格!";
  544. }
  545. }
  546. })
  547. .then(({ value }) => {
  548. this.$axios({
  549. method: "POST",
  550. url:
  551. "/api/api_gateway?method=sysmenage.usermanager.password_modify",
  552. data: this.qs.stringify({
  553. user_id: data.user_id,
  554. password: value == null ? "@12345678" : value
  555. })
  556. }).then(res => {
  557. if (res.data.data == true) {
  558. this.$message({
  559. message: "成功!",
  560. type: "success",
  561. duration: 1500
  562. });
  563. }
  564. this.userListData();
  565. });
  566. })
  567. .catch(() => {
  568. this.$message({
  569. type: "info",
  570. message: "取消输入"
  571. });
  572. });
  573. },
  574. // 删除
  575. deleteFunc(data) {
  576. this.$confirm("此操作将永久删除该账号, 是否继续?", "提示", {
  577. confirmButtonText: "确定",
  578. cancelButtonText: "取消",
  579. type: "warning"
  580. })
  581. .then(() => {
  582. this.$axios({
  583. method: "POST",
  584. url: "/api/api_gateway?method=sysmenage.usermanager.user_delete",
  585. data: this.qs.stringify({
  586. user_id: data.user_id
  587. })
  588. }).then(res => {
  589. if (res.data.data == true) {
  590. this.$message({
  591. message: "成功!",
  592. type: "success",
  593. duration: 1500
  594. });
  595. } else {
  596. this.$message({
  597. message: "失败!",
  598. type: "error",
  599. duration: 1500
  600. });
  601. }
  602. this.loading2 = true;
  603. this.userListData();
  604. });
  605. })
  606. .catch(() => {
  607. this.$message({
  608. type: "info",
  609. message: "已取消删除"
  610. });
  611. });
  612. },
  613. // 分页
  614. changeList(page) {
  615. this.loading2 = true;
  616. this.page = page;
  617. this.userListData();
  618. },
  619. // 搜索
  620. searchData() {
  621. this.loading2 = true;
  622. this.userListData();
  623. },
  624. // 添加用户
  625. addrRole() {
  626. this.tltData = "添加用户";
  627. this.userVisible = true;
  628. },
  629. // 添加 - 编辑 确定
  630. submitForm() {
  631. this.$refs["form"].validate(valid => {
  632. if (valid) {
  633. // 处理隶属海关、角色
  634. var orgList = []; //隶属海关
  635. var roleList = []; // 角色
  636. for (var i = 0; i < this.form.judge.length; i++) {
  637. orgList.push(this.form.judge[i][this.form.judge[i].length - 1]);
  638. }
  639. for (var j = 0; j < this.form.role.length; j++) {
  640. roleList.push(this.form.role[j]);
  641. }
  642. if (this.tltData == "添加用户") {
  643. var postData = this.qs.stringify({
  644. username: this.form.user, // 登录账号 必
  645. real_name: this.form.name, // 用户名 必
  646. password: this.form.password, // 密码 必
  647. org_id_list: JSON.stringify(orgList), //组织id数组 必
  648. role_id_list: JSON.stringify(roleList), // 角色id数组 必
  649. state: this.form.state, //用户状态
  650. mobile: this.form.phone, // 手机号
  651. email: this.form.mailbox //邮箱地址
  652. });
  653. var url = "/api/api_gateway?method=sysmenage.usermanager.user_add";
  654. } else if (this.tltData == "编辑用户") {
  655. var postData = this.qs.stringify({
  656. user_id: this.editorObj.user_id, // 用户id 必
  657. real_name: this.form.name, // 用户名 必
  658. org_id_list: JSON.stringify(orgList), //组织id数组 必
  659. role_id_list: JSON.stringify(roleList), //角色id数组 必
  660. mobile: this.form.phone, //手机号
  661. email: this.form.mailbox //邮箱地址
  662. });
  663. var url =
  664. "/api/api_gateway?method=sysmenage.usermanager.user_modify";
  665. }
  666. this.$axios({
  667. method: "POST",
  668. url,
  669. data: postData
  670. }).then(res => {
  671. if (res.data.data == true) {
  672. this.$message({
  673. message: "成功!",
  674. type: "success",
  675. duration: 1500
  676. });
  677. this.$refs["form"].resetFields();
  678. this.userVisible = false;
  679. this.userListData();
  680. }
  681. });
  682. } else {
  683. return false;
  684. }
  685. });
  686. },
  687. // 取消
  688. resetForm() {
  689. this.$refs["form"].resetFields();
  690. this.refreshItem++;
  691. this.userVisible = false;
  692. },
  693. // 获取用户列表
  694. userListData() {
  695. this.$axios({
  696. method: "POST",
  697. url: "/api/api_gateway?method=sysmenage.usermanager.user_list",
  698. data: this.qs.stringify({
  699. page: this.page,
  700. page_item: "10",
  701. real_name: this.nameVal, // 用户名称
  702. mobile: this.phoneVal, //电话
  703. org_id: this.org_id
  704. })
  705. })
  706. .then(res => {
  707. if (res.data.data.page_item !== 0) {
  708. var data = res.data.data.page_list;
  709. var list = [];
  710. data.forEach((item, index) => {
  711. item.ind = index + 1;
  712. list.push(item);
  713. });
  714. this.tableData = list;
  715. this.pageSum = res.data.data.page_item;
  716. }
  717. this.loading2 = false;
  718. })
  719. .catch(err => {
  720. this.loading2 = false;
  721. });
  722. },
  723. // 获取左侧组织列表
  724. organizationData() {
  725. this.$axios({
  726. method: "POST",
  727. url: "/api/api_gateway?method=sysmenage.usermanager.org_list",
  728. data: this.qs.stringify({
  729. page: this.page,
  730. page_item: "100000000",
  731. org_name: ""
  732. })
  733. })
  734. .then(res => {
  735. if (res.data.data.page_list.length !== 0) {
  736. var obj = {
  737. org_name: "全部",
  738. id: ""
  739. };
  740. var list = res.data.data.page_list;
  741. this.tissueList = list; // 弹框组织列表
  742. var data = res.data.data.page_list;
  743. this.data = [obj, ...data]; // 左侧组织列表
  744. }
  745. this.loading = false;
  746. })
  747. .catch(err => {
  748. this.loading = false;
  749. });
  750. },
  751. // 获取角色列表
  752. roleAxios() {
  753. this.$axios({
  754. method: "POST",
  755. url: "/api/api_gateway?method=sysmenage.usermanager.role_list",
  756. data: this.qs.stringify({
  757. page: this.page,
  758. page_item: "10000000",
  759. role_name: ""
  760. })
  761. })
  762. .then(res => {
  763. if (res.data.data.total_item !== 0) {
  764. this.roleData = res.data.data.page_list;
  765. }
  766. })
  767. .catch(err => {});
  768. },
  769. judgeData(item) {
  770. this.form.judge = item;
  771. },
  772. roleChange(item) {
  773. this.form.role = item;
  774. }
  775. },
  776. //生命周期 - 创建完成(可以访问当前this实例)
  777. created() {},
  778. //生命周期 - 挂载完成(可以访问DOM元素)
  779. mounted() {
  780. this.loading = true; // 加载 - 组织列表
  781. this.loading2 = true; // 加载 - 表格列表
  782. this.userListData(); //表格数据
  783. this.organizationData(); //左侧组织数据
  784. this.roleAxios(); // 角色列表
  785. },
  786. beforeCreate() {}, //生命周期 - 创建之前
  787. beforeMount() {}, //生命周期 - 挂载之前
  788. beforeUpdate() {}, //生命周期 - 更新之前
  789. updated() {}, //生命周期 - 更新之后
  790. beforeDestroy() {}, //生命周期 - 销毁之前
  791. destroyed() {}, //生命周期 - 销毁完成
  792. activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
  793. };
  794. </script>
  795. <style lang="less" scoped>
  796. .userManger_box {
  797. .card_box {
  798. display: flex;
  799. width: 100%;
  800. // 树形图
  801. .userManger_left {
  802. width: 19%;
  803. margin: 0 15px 0 0;
  804. padding: 5px;
  805. border: 1px solid #eeeeee;
  806. border-radius: 5px;
  807. overflow: hidden;
  808. overflow-y: auto;
  809. }
  810. // 搜索和表格
  811. .userManger_right {
  812. width: 80%;
  813. // border: 1px solid red;
  814. // 搜索
  815. .search_box {
  816. display: flex;
  817. /deep/.el-input {
  818. width: 20%;
  819. margin: 0 15px 0 0;
  820. }
  821. .btn_box {
  822. }
  823. }
  824. a {
  825. text-decoration: none;
  826. }
  827. .reset {
  828. color: #1890ff;
  829. }
  830. .delete {
  831. color: #f56c6c;
  832. }
  833. .line {
  834. display: inline-block;
  835. width: 1px;
  836. background: rgba(0, 0, 0, 0.09);
  837. margin: 0 11px;
  838. height: 14px;
  839. }
  840. }
  841. }
  842. /deep/.el-select {
  843. width: 80%;
  844. }
  845. /deep/.el-cascader {
  846. width: 80%;
  847. }
  848. }
  849. </style>