Przeglądaj źródła

用户管理接口

zhangjie 2 lat temu
rodzic
commit
db82dad72d

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
     "deepmerge": "^4.2.2",
     "element-ui": "^2.13.1",
     "js-md5": "^0.7.3",
+    "qs": "^6.11.0",
     "vue": "^2.6.11",
     "vue-json-viewer": "^2.2.19",
     "vue-ls": "^3.2.1",

+ 11 - 7
pnpm-lock.yaml

@@ -20,6 +20,7 @@ specifiers:
   js-md5: ^0.7.3
   lint-staged: ^9.5.0
   prettier: ^1.19.1
+  qs: ^6.11.0
   sass: ^1.26.3
   sass-loader: ^8.0.2
   terser-webpack-plugin: ^1.2.3
@@ -38,6 +39,7 @@ dependencies:
   deepmerge: registry.npmmirror.com/deepmerge/4.2.2
   element-ui: registry.npmmirror.com/element-ui/2.15.10_vue@2.7.10
   js-md5: registry.npmmirror.com/js-md5/0.7.3
+  qs: registry.npmmirror.com/qs/6.11.0
   vue: registry.npmmirror.com/vue/2.7.10
   vue-json-viewer: registry.npmmirror.com/vue-json-viewer/2.2.22_vue@2.7.10
   vue-ls: registry.npmmirror.com/vue-ls/3.2.2
@@ -3575,7 +3577,6 @@ packages:
     dependencies:
       function-bind: registry.npmmirror.com/function-bind/1.1.1
       get-intrinsic: registry.npmmirror.com/get-intrinsic/1.1.3
-    dev: true
 
   registry.npmmirror.com/call-me-maybe/1.0.1:
     resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz}
@@ -6414,7 +6415,6 @@ packages:
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
     name: function-bind
     version: 1.1.1
-    dev: true
 
   registry.npmmirror.com/function.prototype.name/1.1.5:
     resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz}
@@ -6462,7 +6462,6 @@ packages:
       function-bind: registry.npmmirror.com/function-bind/1.1.1
       has: registry.npmmirror.com/has/1.0.3
       has-symbols: registry.npmmirror.com/has-symbols/1.0.3
-    dev: true
 
   registry.npmmirror.com/get-own-enumerable-property-symbols/3.0.2:
     resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz}
@@ -6731,7 +6730,6 @@ packages:
     name: has-symbols
     version: 1.0.3
     engines: {node: '>= 0.4'}
-    dev: true
 
   registry.npmmirror.com/has-tostringtag/1.0.0:
     resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz}
@@ -6788,7 +6786,6 @@ packages:
     engines: {node: '>= 0.4.0'}
     dependencies:
       function-bind: registry.npmmirror.com/function-bind/1.1.1
-    dev: true
 
   registry.npmmirror.com/hash-base/3.1.0:
     resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz}
@@ -8959,7 +8956,6 @@ packages:
     resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz}
     name: object-inspect
     version: 1.12.2
-    dev: true
 
   registry.npmmirror.com/object-is/1.1.5:
     resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz}
@@ -10162,6 +10158,15 @@ packages:
       side-channel: registry.npmmirror.com/side-channel/1.0.4
     dev: true
 
+  registry.npmmirror.com/qs/6.11.0:
+    resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz}
+    name: qs
+    version: 6.11.0
+    engines: {node: '>=0.6'}
+    dependencies:
+      side-channel: registry.npmmirror.com/side-channel/1.0.4
+    dev: false
+
   registry.npmmirror.com/qs/6.5.3:
     resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz}
     name: qs
@@ -11009,7 +11014,6 @@ packages:
       call-bind: registry.npmmirror.com/call-bind/1.0.2
       get-intrinsic: registry.npmmirror.com/get-intrinsic/1.1.3
       object-inspect: registry.npmmirror.com/object-inspect/1.12.2
-    dev: true
 
   registry.npmmirror.com/signal-exit/3.0.7:
     resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz}

+ 5 - 6
src/modules/admin/api.js

@@ -1,4 +1,4 @@
-import { $get, $post, $postParam } from "@/plugins/axios";
+import { $get, $post, $postParam, qsRepeatParams } from "@/plugins/axios";
 
 // common-select
 // export const appTypeList = datas => {
@@ -22,11 +22,10 @@ export const resetPwd = password => {
   return $postParam("/api/admin/user/change_password", { password });
 };
 export const userInsertOrUpdate = datas => {
-  if (datas.id) {
-    return $post("/api/admin/user/update", datas);
-  } else {
-    return $post("/api/admin/user/insert", datas);
-  }
+  const url = datas.id ? "/api/admin/user/update" : "/api/admin/user/insert";
+  return $postParam(url, datas, {
+    paramsSerializer: qsRepeatParams
+  });
 };
 
 // app-manage

+ 1 - 1
src/modules/admin/components/ModifyUser.vue

@@ -46,7 +46,7 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item prop="password" label="密码:">
+      <el-form-item v-if="!isEdit" prop="password" label="密码:">
         <el-input
           v-model.trim="modalForm.password"
           placeholder="请输入密码"

+ 6 - 12
src/modules/admin/views/UserManage.vue

@@ -39,11 +39,7 @@
         <el-table-column prop="id" label="ID" width="80"></el-table-column>
         <el-table-column prop="loginName" label="用户名"></el-table-column>
         <el-table-column prop="name" label="姓名"></el-table-column>
-        <el-table-column prop="roles" label="角色">
-          <template slot-scope="scope">
-            {{ scope.row.roles | rolesFilter }}
-          </template>
-        </el-table-column>
+        <el-table-column prop="roleNames" label="角色"> </el-table-column>
         <el-table-column prop="createTime" label="创建时间" width="170">
           <span slot-scope="scope">{{
             scope.row.createTime | timestampFilter
@@ -106,11 +102,6 @@ import { userListPage, userRoleList, userInsertOrUpdate } from "../api";
 export default {
   name: "user-manage",
   components: { ModifyUser },
-  filters: {
-    rolesFilter(val) {
-      return val.map(code => this.roleType[code]).join(",");
-    }
-  },
   data() {
     return {
       filter: {
@@ -128,7 +119,7 @@ export default {
     };
   },
   mounted() {
-    // this.initData();
+    this.initData();
   },
   methods: {
     async initData() {
@@ -151,7 +142,10 @@ export default {
         pageSize: this.size
       };
       const data = await userListPage(datas);
-      this.users = data.records;
+      this.users = data.records.map(item => {
+        item.roleNames = item.role.map(code => this.roleType[code]).join(",");
+        return item;
+      });
       this.total = data.total;
     },
     toPage(page) {

+ 9 - 9
src/modules/login/api.js

@@ -1,12 +1,12 @@
-// import { $postParam } from "@/plugins/axios";
+import { $postParam } from "@/plugins/axios";
 
 export const login = datas => {
-  // return $postParam("/api/admin/user/login", datas);
-  return Promise.resolve({
-    role: ["DEV", "TEST", "OPS", "ADMIN"],
-    session: "1212121212",
-    token: "token 121212",
-    name: "测试员",
-    ...datas
-  });
+  return $postParam("/api/admin/user/login", datas);
+  // return Promise.resolve({
+  //   role: ["DEV", "TEST", "OPS", "ADMIN"],
+  //   session: "1212121212",
+  //   token: "token 121212",
+  //   name: "测试员",
+  //   ...datas
+  // });
 };

+ 6 - 0
src/plugins/axios.js

@@ -2,6 +2,7 @@ import axios from "axios";
 import Vue from "vue";
 import { Message, MessageBox, Notification } from "element-ui";
 import router from "../router";
+import qs from "qs";
 
 import GLOBAL from "../config";
 import { getAuthorization } from "./crypto";
@@ -286,3 +287,8 @@ const $patch = (url, datas) => {
 };
 
 export { $get, $postParam, $post, $del, $put, $patch };
+
+// qs
+export function qsRepeatParams(params) {
+  return qs.stringify(params, { arrayFormat: "repeat" });
+}

+ 1 - 0
src/router.js

@@ -22,6 +22,7 @@ Router.prototype.push = function push(location, onResolve, onReject) {
 Vue.use(Router);
 
 let router = new Router({
+  mode: "history",
   routes: [
     {
       path: "/",