yuantianjiao 6 years ago
parent
commit
639d3146ef

+ 5
- 2
src/pages/system/caseManager/caseInfo/index.vue View File

@@ -32,10 +32,10 @@
32 32
               size="mini"
33 33
               type="warning"
34 34
               @click="editItem(scope.$index, scope.row)">编辑</el-button>
35
-            <!-- <el-button
35
+            <el-button
36 36
               size="mini"
37 37
               type="success"
38
-              @click="keyManager(scope.$index, scope.row)">钥匙管理</el-button> -->
38
+              @click="pplConcerned(scope.$index, scope.row)">相关人员</el-button>
39 39
           </template>
40 40
         </el-table-column>
41 41
       </el-table>
@@ -76,6 +76,9 @@ export default {
76 76
     this.getList()
77 77
   },
78 78
   methods: {
79
+    pplConcerned (index, row) { // 相关人员
80
+      this.$router.push({name: 'pplConcerned', query: {id: row.CaseId}})
81
+    },
79 82
     getList () { // 获取列表
80 83
       this.$ajax(this.$api.caseManager.getCaseList.url, {
81 84
         method: this.$api.caseManager.getCaseList.method,

+ 158
- 0
src/pages/system/caseManager/caseInfo/pplConcerned/editPPLConcerned/index.vue View File

@@ -0,0 +1,158 @@
1
+<template>
2
+  <div class="subPage">
3
+    <form class="mainForm">
4
+      <ul>
5
+        <li class="flex-h">
6
+          <span>用户类型:</span>
7
+          <div class="flex-item">
8
+            <el-select v-model="postData.UserType" placeholder="请选择">
9
+              <el-option
10
+                v-for="item in typeList"
11
+                :key="item.TypeId"
12
+                :label="item.TypeName"
13
+                :value="item.TypeId">
14
+              </el-option>
15
+            </el-select>
16
+          </div>
17
+        </li>
18
+        <li class="flex-h">
19
+          <span>用户姓名:</span>
20
+          <div class="flex-item">
21
+            <div style="width:50%">
22
+              <el-input
23
+                placeholder="请输入名称"
24
+                v-model="postData.UserName"
25
+                clearable>
26
+              </el-input>
27
+            </div>
28
+          </div>
29
+        </li>
30
+        <li class="flex-h">
31
+          <span>手机号码:</span>
32
+          <div class="flex-item">
33
+            <div style="width:50%">
34
+              <el-input
35
+                placeholder="请输入手机号码"
36
+                v-model="postData.Tel"
37
+                clearable>
38
+              </el-input>
39
+            </div>
40
+          </div>
41
+        </li>
42
+        <li style="text-align:center">
43
+          <el-button type="primary" size="mini" @click="submit">保存</el-button>
44
+          <el-button type="danger" size="mini" @click="cancel">取消</el-button>
45
+        </li>
46
+      </ul>
47
+    </form>
48
+  </div>
49
+</template>
50
+
51
+<script>
52
+import { mapState } from 'vuex'
53
+
54
+export default {
55
+  name: '',
56
+  data () {
57
+    return {
58
+      postData: {
59
+        CaseUserId: '', // 主键id
60
+        OrgId: '', // 机构id
61
+        CaseId: this.$route.query.id, // 案场id
62
+        UserName: '', // 用户名称
63
+        Tel: '', // 电话
64
+        UserType: '', // 用户类型
65
+      },
66
+      typeList: [],
67
+    }
68
+  },
69
+  computed: {
70
+    ...mapState({
71
+      cases: x => x.app.cases.list,
72
+      defaultCaseId: x => x.app.cases.default,
73
+      OrgId: x => x.app.user.OrgId,
74
+    }),
75
+    CaseId: {
76
+      get () {
77
+        return this.postData.caseid || this.defaultCaseId
78
+      },
79
+      set (val) {
80
+        this.postData.caseid = val
81
+      }
82
+    }
83
+  },
84
+  created () {
85
+    this.getUserTypeList()
86
+    this.getCaseUserInfo()
87
+  },
88
+  components: {},
89
+  methods: {
90
+    getCaseUserInfo () {
91
+      if (this.$route.query.userid !== undefined) {
92
+        this.$ajax(this.$api.caseManager.getCaseUserInfo.url, {
93
+          method: this.$api.caseManager.getCaseUserInfo.method,
94
+          urlData: {id: this.$route.query.userid}
95
+        }).then(res => {
96
+          this.postData = res
97
+        })
98
+      }
99
+    },
100
+    getUserTypeList () { // 获取用户类型
101
+      this.$ajax(this.$api.caseManager.getUserTypeList.url, {
102
+        method: this.$api.caseManager.getUserTypeList.method,
103
+      }).then(res => {
104
+        this.typeList = res
105
+        this.postData.UserType = res[0].TypeId
106
+      })
107
+    },
108
+    submit () { // 提交数据
109
+      if (this.postData.UserName === '') {
110
+        this.$message({
111
+          type: 'error',
112
+          message: '用户名称不能为空'
113
+        })
114
+        return false
115
+      }
116
+      if (this.postData.Tel === '') {
117
+        this.$message({
118
+          type: 'error',
119
+          message: '手机号码不能为空'
120
+        })
121
+        return false
122
+      }
123
+      this.postData.OrgId = this.OrgId
124
+      if (this.$route.query.userid !== undefined) {
125
+        this.$ajax(this.$api.caseManager.editCaseUser.url, {
126
+          method: this.$api.caseManager.editCaseUser.method,
127
+          data: this.postData
128
+        }).then(res => {
129
+          this.$message({
130
+            type: 'success',
131
+            message: '操作成功'
132
+          })
133
+          this.$router.push({ name: 'pplConcerned', query: { id: this.$route.query.id } })
134
+        })
135
+      } else {
136
+        this.$ajax(this.$api.caseManager.addCaseUser.url, {
137
+          method: this.$api.caseManager.addCaseUser.method,
138
+          data: this.postData
139
+        }).then(res => {
140
+          this.$message({
141
+            type: 'success',
142
+            message: '操作成功'
143
+          })
144
+          this.$router.push({ name: 'pplConcerned', query: { id: this.$route.query.id } })
145
+        })
146
+      }
147
+    },
148
+    cancel () { // 取消
149
+      this.$router.push({ name: 'pplConcerned', query: { id: this.$route.query.id } })
150
+    }
151
+  }
152
+}
153
+</script>
154
+
155
+<!-- Add "scoped" attribute to limit CSS to this component only -->
156
+<style lang="scss" scoped>
157
+@import "page.scss";
158
+</style>

+ 56
- 0
src/pages/system/caseManager/caseInfo/pplConcerned/editPPLConcerned/page.scss View File

@@ -0,0 +1,56 @@
1
+span{
2
+  em{
3
+    color: red;
4
+  }
5
+}
6
+.map{
7
+  height: 500px;
8
+  background: #eee;
9
+  position: relative;
10
+  overflow: hidden;
11
+  box-sizing: border-box;
12
+  border: 1px solid #dcdfe6;
13
+
14
+  &>div.search{
15
+    display: inline-block;
16
+    position: absolute;
17
+  }
18
+
19
+  &>div.flex-item{
20
+    width: 100%;
21
+    &>div{
22
+      width: 100%;
23
+      height: 100%;
24
+      position: relative;
25
+      overflow: hidden;
26
+    }
27
+  }
28
+}
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+

+ 115
- 0
src/pages/system/caseManager/caseInfo/pplConcerned/index.vue View File

@@ -0,0 +1,115 @@
1
+<template>
2
+  <div class="subPage">
3
+    <div class="system-table-search">
4
+      <div class="flex-h">
5
+        <div class="flex-item flex-h">
6
+          <el-button size="mini" type="success" @click="addPPLConcerned">新增相关人员</el-button>
7
+        </div>
8
+      </div>
9
+      <div class="moreFilter"></div>
10
+    </div>
11
+    <div class="system-table-box">
12
+      <el-table
13
+        :data="currentList"
14
+        stripe
15
+        style="width: 100%">
16
+        <el-table-column
17
+          prop="UserType"
18
+          label="用户类型">
19
+        </el-table-column>
20
+        <el-table-column
21
+          prop="UserName"
22
+          label="用户名称">
23
+        </el-table-column>
24
+        <el-table-column
25
+          prop="Tel"
26
+          label="手机号">
27
+        </el-table-column>
28
+        <el-table-column label="操作" width="200">
29
+          <template slot-scope="scope">
30
+            <el-button
31
+              size="mini"
32
+              type="warning"
33
+              @click="editItem(scope.$index, scope.row)">编辑</el-button>
34
+          </template>
35
+        </el-table-column>
36
+      </el-table>
37
+    </div>
38
+    <el-pagination
39
+      @current-change="handleCurrentChange"
40
+      :current-page.sync="postData.page"
41
+      :page-size="postData.pagesize"
42
+      layout="prev, pager, next, jumper"
43
+      :total="total">
44
+    </el-pagination>
45
+  </div>
46
+</template>
47
+
48
+<script>
49
+
50
+export default {
51
+  name: '',
52
+  data () {
53
+    return {
54
+      total: 0,
55
+      postData: { // 表格搜索条件
56
+        caseid: this.$route.query.id, // 案场名称
57
+        page: 1, // 当前页码
58
+        pagesize: 10, // 请求数据量
59
+      },
60
+      currentList: [],
61
+      typeList: [],
62
+    }
63
+  },
64
+  created () {
65
+    this.getUserTypeList().then(() => {
66
+      this.getList()
67
+    })
68
+  },
69
+  methods: {
70
+    getUserTypeList () { // 获取用户类型
71
+      return new Promise((resolve) => {
72
+        this.$ajax(this.$api.caseManager.getUserTypeList.url, {
73
+          method: this.$api.caseManager.getUserTypeList.method,
74
+        }).then(res => {
75
+          this.typeList = res
76
+          resolve()
77
+        })
78
+      })
79
+    },
80
+    addPPLConcerned () { // 添加相关人员
81
+      this.$router.push({ name: 'editPPLConcerned', query: { id: this.$route.query.id } })
82
+    },
83
+    getList () { // 获取列表
84
+      this.$ajax(this.$api.caseManager.getCaseUserList.url, {
85
+        method: this.$api.caseManager.getCaseUserList.method,
86
+        queryData: this.postData
87
+      }).then(res => {
88
+        for (var n = 0; n < res.list.length; n++) {
89
+          res.list[n].UserType = this.typeList.filter(x => x.TypeId === res.list[n].UserType)[0].TypeName
90
+        }
91
+        this.currentList = res.list
92
+        this.postData.page = res.page
93
+        this.total = res.pagenum
94
+      })
95
+    },
96
+    handleCurrentChange (val) { // 跳转到分页
97
+      this.getList()
98
+    },
99
+    editItem (index, row) { // 修改
100
+      this.$router.push({ name: 'editPPLConcerned', query: { id: this.$route.query.id, userid: row.CaseUserId } })
101
+    },
102
+    searchList (key) { // 搜索列表
103
+      this.postData.name = key
104
+      this.currentList = []
105
+      this.postData.page = 1
106
+      this.getList()
107
+    }
108
+  }
109
+}
110
+</script>
111
+
112
+<!-- Add "scoped" attribute to limit CSS to this component only -->
113
+<style lang="scss" scoped>
114
+@import "page.scss";
115
+</style>

+ 36
- 0
src/pages/system/caseManager/caseInfo/pplConcerned/page.scss View File

@@ -0,0 +1,36 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+

+ 14
- 8
src/pages/system/page.js View File

@@ -6,13 +6,14 @@ import userManager from './systemSet/userManager/index' // 用户管理
6 6
 import addUser from './systemSet/userManager/add' // 添加用户
7 7
 import editUser from './systemSet/userManager/edit' // 编辑用户
8 8
 import roleManager from './systemSet/roleManager/index' // 角色管理
9
-import addRole from './systemSet/roleManager/add' // 添加角色
10
-import editRole from './systemSet/roleManager/edit' // 编辑角色
9
+import editRole from './systemSet/roleManager/add' // 编辑角色
11 10
 
12 11
 import caseManager from './caseManager/index' // 案场管理
13 12
 import caseInfo from './caseManager/caseInfo/index' // 案场信息
14 13
 import addCase from './caseManager/caseInfo/addCase/index' // 新增案场
15 14
 import editCase from './caseManager/caseInfo/editCase/index' // 新增案场
15
+import pplConcerned from './caseManager/caseInfo/pplConcerned/index' // 相关人员
16
+import editPPLConcerned from './caseManager/caseInfo/pplConcerned/editPPLConcerned/index' // 编辑相关人员
16 17
 import keyManager from './caseManager/keyManager/index' // 钥匙管理
17 18
 import addKey from './caseManager/keyManager/add' // 新增钥匙
18 19
 import caseAreaManager from './caseManager/caseAreaManager/index' // 案场区域管理
@@ -92,12 +93,7 @@ export default {
92 93
           path: 'roleManager',
93 94
           name: 'roleManager',
94 95
           component: roleManager,
95
-          children: [{ // 添加角色
96
-            path: 'addRole',
97
-            name: 'addRole',
98
-            component: addRole,
99
-            children: []
100
-          }, { // 编辑角色
96
+          children: [{ // 编辑角色
101 97
             path: 'editRole',
102 98
             name: 'editRole',
103 99
             component: editRole,
@@ -122,6 +118,16 @@ export default {
122 118
             name: 'editCase',
123 119
             component: editCase,
124 120
             children: []
121
+          }, { // 相关人员
122
+            path: 'pplConcerned',
123
+            name: 'pplConcerned',
124
+            component: pplConcerned,
125
+            children: [{ // 编辑相关人员
126
+              path: 'editPPLConcerned',
127
+              name: 'editPPLConcerned',
128
+              component: editPPLConcerned,
129
+              children: []
130
+            }]
125 131
           }]
126 132
         }, { // 钥匙管理
127 133
           path: 'keyManager',

+ 36
- 62
src/pages/system/systemSet/roleManager/add.vue View File

@@ -2,57 +2,18 @@
2 2
   <div class="subPage">
3 3
     <form class="mainForm">
4 4
       <ul>
5
-        <li class="flex-h">
6
-          <span>角色名:</span>
7
-          <div class="flex-item">
8
-            <div style="width:50%">
9
-              <el-input
10
-                placeholder="只能输入英文"
11
-                v-model="postData.roleId"
12
-                clearable>
13
-              </el-input>
14
-            </div>
15
-          </div>
16
-        </li>
17 5
         <li class="flex-h">
18 6
           <span>角色名称:</span>
19 7
           <div class="flex-item">
20 8
             <div style="width:50%">
21 9
               <el-input
22 10
                 placeholder="请输入角色名称"
23
-                v-model="postData.roleName"
11
+                v-model="detail.RoleName"
24 12
                 clearable>
25 13
               </el-input>
26 14
             </div>
27 15
           </div>
28 16
         </li>
29
-        <li class="flex-h">
30
-          <span>禁用角色:</span>
31
-          <div class="flex-item">
32
-            <div style="width:50%" class="switch">
33
-              <el-switch
34
-                v-model="postData.disable"
35
-                active-color="#13ce66"
36
-                inactive-color="#ff4949">
37
-              </el-switch>
38
-            </div>
39
-          </div>
40
-        </li>
41
-        <li class="flex-h">
42
-          <span>数据权限:</span>
43
-          <div class="flex-item">
44
-            <div style="width:50%">
45
-              <el-select v-model="postData.permission" placeholder="请选择">
46
-                <el-option
47
-                  v-for="item in permissionList"
48
-                  :key="item.value"
49
-                  :label="item.name"
50
-                  :value="item.value">
51
-                </el-option>
52
-              </el-select>
53
-            </div>
54
-          </div>
55
-        </li>
56 17
         <li class="flex-h">
57 18
           <span>备注:</span>
58 19
           <div class="flex-item">
@@ -61,7 +22,7 @@
61 22
                 placeholder="请输入备注"
62 23
                 type="textarea"
63 24
                 :autosize="{ minRows: 3, maxRows: 5}"
64
-                v-model="postData.remark"
25
+                v-model="detail.Remark"
65 26
                 clearable>
66 27
               </el-input>
67 28
             </div>
@@ -77,39 +38,52 @@
77 38
 </template>
78 39
 
79 40
 <script>
41
+import { createNamespacedHelpers, mapState } from 'vuex'
42
+
43
+const { mapState: mapRoleState, mapActions: mapRoleActions } = createNamespacedHelpers('role')
80 44
 export default {
81 45
   name: '',
82 46
   data () {
83
-    return {
84
-      postData: {
85
-        roleId: '', // 角色名
86
-        roleName: '', // 角色姓名
87
-        disable: false, // 禁用角色
88
-        permission: '', // 数据权限
89
-        remark: '' // 备注
90
-      },
91
-      permissionList: [{
92
-        value: '0',
93
-        name: '个人数据'
94
-      }, {
95
-        value: '1',
96
-        name: '所属组织全部数据'
97
-      }, {
98
-        value: '2',
99
-        name: '所属组织及下层全部数据'
100
-      }]
101
-    }
47
+    return {}
102 48
   },
103 49
   components: {},
50
+  computed: {
51
+    ...mapRoleState({
52
+      detail: x => x.roleInfo,
53
+    }),
54
+    ...mapState({
55
+      caseid: x => x.app.cases.default,
56
+      orgid: x => x.app.user.OrgId,
57
+    })
58
+  },
104 59
   methods: {
60
+    ...mapRoleActions([
61
+      'GetRoleByID',
62
+      'AddRole',
63
+      'UpdateRole',
64
+      'SetRoleNull',
65
+    ]),
105 66
     submit () {
106
-      console.log(this.postData)
67
+      if ((this.detail.RoleId || '') === '') {
68
+        this.detail.CaseId = this.caseid
69
+        this.detail.OrgId = this.orgid
70
+        this.AddRole(this.detail)
71
+      } else {
72
+        this.UpdateRole(this.detail)
73
+      }
107 74
     },
108 75
     cancel () {
109 76
       this.$router.go(-1)
110 77
     }
111 78
   },
112
-  mounted () { }
79
+  beforeMount () {
80
+    const { id } = this.$route.query
81
+    if (id && id !== '') {
82
+      this.GetRoleByID({ roleid: id })
83
+    } else {
84
+      this.SetRoleNull()
85
+    }
86
+  }
113 87
 }
114 88
 </script>
115 89
 

+ 0
- 118
src/pages/system/systemSet/roleManager/edit.vue View File

@@ -1,118 +0,0 @@
1
-<template>
2
-  <div class="subPage">
3
-    <form class="mainForm">
4
-      <ul>
5
-        <li class="flex-h">
6
-          <span>角色名:</span>
7
-          <div class="flex-item">
8
-            <div style="width:50%">
9
-              <el-input
10
-                placeholder="只能输入英文"
11
-                v-model="postData.roleId"
12
-                clearable>
13
-              </el-input>
14
-            </div>
15
-          </div>
16
-        </li>
17
-        <li class="flex-h">
18
-          <span>角色名称:</span>
19
-          <div class="flex-item">
20
-            <div style="width:50%">
21
-              <el-input
22
-                placeholder="请输入角色名称"
23
-                v-model="postData.roleName"
24
-                clearable>
25
-              </el-input>
26
-            </div>
27
-          </div>
28
-        </li>
29
-        <li class="flex-h">
30
-          <span>禁用角色:</span>
31
-          <div class="flex-item">
32
-            <div style="width:50%" class="switch">
33
-              <el-switch
34
-                v-model="postData.disable"
35
-                active-color="#13ce66"
36
-                inactive-color="#ff4949">
37
-              </el-switch>
38
-            </div>
39
-          </div>
40
-        </li>
41
-        <li class="flex-h">
42
-          <span>数据权限:</span>
43
-          <div class="flex-item">
44
-            <div style="width:50%">
45
-              <el-select v-model="postData.permission" placeholder="请选择">
46
-                <el-option
47
-                  v-for="item in permissionList"
48
-                  :key="item.value"
49
-                  :label="item.name"
50
-                  :value="item.value">
51
-                </el-option>
52
-              </el-select>
53
-            </div>
54
-          </div>
55
-        </li>
56
-        <li class="flex-h">
57
-          <span>备注:</span>
58
-          <div class="flex-item">
59
-            <div>
60
-              <el-input
61
-                placeholder="请输入备注"
62
-                type="textarea"
63
-                :autosize="{ minRows: 3, maxRows: 5}"
64
-                v-model="postData.remark"
65
-                clearable>
66
-              </el-input>
67
-            </div>
68
-          </div>
69
-        </li>
70
-        <li style="text-align:center">
71
-          <el-button type="primary" size="mini" @click='submit'>保存</el-button>
72
-          <el-button type="danger" size="mini" @click="cancel">取消</el-button>
73
-        </li>
74
-      </ul>
75
-    </form>
76
-  </div>
77
-</template>
78
-
79
-<script>
80
-export default {
81
-  name: '',
82
-  data () {
83
-    return {
84
-      postData: {
85
-        roleId: '', // 角色名
86
-        roleName: '', // 角色姓名
87
-        disable: false, // 禁用角色
88
-        permission: '', // 数据权限
89
-        remark: '' // 备注
90
-      },
91
-      permissionList: [{
92
-        value: '0',
93
-        name: '个人数据'
94
-      }, {
95
-        value: '1',
96
-        name: '所属组织全部数据'
97
-      }, {
98
-        value: '2',
99
-        name: '所属组织及下层全部数据'
100
-      }]
101
-    }
102
-  },
103
-  components: {},
104
-  methods: {
105
-    submit () {
106
-      console.log(this.postData)
107
-    },
108
-    cancel () {
109
-      this.$router.go(-1)
110
-    }
111
-  },
112
-  mounted () { }
113
-}
114
-</script>
115
-
116
-<!-- Add "scoped" attribute to limit CSS to this component only -->
117
-<style lang="scss" scoped>
118
-</style>

+ 38
- 101
src/pages/system/systemSet/roleManager/index.vue View File

@@ -3,23 +3,20 @@
3 3
     <div class="system-table-search">
4 4
       <div class="flex-h">
5 5
         <div class="flex-item flex-h">
6
-          <el-button size="mini" type="success" @click='addRole'>新增角色</el-button>
6
+          <el-button size="mini" type="success" @click='editRole'>新增角色</el-button>
7 7
         </div>
8
-        <tableSearch value='分配权限' @exportSearchKey="searchList"></tableSearch>
8
+        <tableSearch value='角色名称' @exportSearchKey="searchList"></tableSearch>
9 9
       </div>
10 10
       <div class="moreFilter"></div>
11 11
     </div>
12 12
     <div class="system-table-box">
13
-      <el-table :data="tableData" stripe style="width: 100%">
14
-        <el-table-column fixed='left' prop="role" label="角色标识" width="150">
13
+      <el-table :data="roles.list" stripe style="width: 100%">
14
+        <el-table-column prop="RoleName" label="角色名">
15 15
         </el-table-column>
16
-        <el-table-column prop="roleName" label="角色名" width="150">
17
-        </el-table-column>
18
-        <el-table-column prop="disable" label="是否禁用角色" width="150">
19
-        </el-table-column>
20
-        <el-table-column prop="permission" label="数据权限">
21
-        </el-table-column>
22
-        <el-table-column prop="createTime" label="创建时间" width="200">
16
+        <el-table-column label="创建时间" width="300">
17
+          <template slot-scope="scope">
18
+            <label>{{FormatDate(scope.row.CreateDate)}}</label>
19
+          </template>
23 20
         </el-table-column>
24 21
         <el-table-column fixed='right' label="操作" width="300">
25 22
           <template slot-scope="scope">
@@ -30,9 +27,15 @@
30 27
         </el-table-column>
31 28
       </el-table>
32 29
     </div>
33
-    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage" :page-size="10" layout="prev, pager, next, jumper" :total="100">
30
+    <el-pagination
31
+    @size-change="handleSizeChange"
32
+    @current-change="handleCurrentChange"
33
+    :current-page.sync="currentPage"
34
+    :page-size="10"
35
+    layout="prev, pager, next, jumper"
36
+    :total="roles.pagenum">
34 37
     </el-pagination>
35
-    <el-dialog title="请选择机构" :visible.sync="dialogTableVisible">
38
+    <!-- <el-dialog title="请选择机构" :visible.sync="dialogTableVisible">
36 39
       <el-tree
37 40
         class="flxe-h"
38 41
         :data="treeData"
@@ -44,13 +47,16 @@
44 47
         <div class="flex-h" style="justify-content: flex-end;margin-top: 1rem">
45 48
           <el-button type='success' @click="getCheckedNodes">确定</el-button>
46 49
         </div>
47
-    </el-dialog>
50
+    </el-dialog> -->
48 51
   </div>
49 52
 </template>
50 53
 
51 54
 <script>
55
+import { createNamespacedHelpers } from 'vuex'
52 56
 import tableSearch from '@/components/tableSearch/index'
53 57
 
58
+const { mapState: mapRoleState, mapActions: mapRoleActions } = createNamespacedHelpers('role')
59
+
54 60
 export default {
55 61
   name: '',
56 62
   data () {
@@ -61,94 +67,24 @@ export default {
61 67
         key: '111' // 搜索关键字
62 68
       },
63 69
       dialogTableVisible: false,
64
-      tableData: [
65
-        {
66
-          role: '赵日天',
67
-          roleName: '赵日天',
68
-          disable: '赵日地',
69
-          permission: '赵日天',
70
-          createTime: '赵爸爸'
71
-        }, {
72
-          role: '赵日天',
73
-          roleName: '赵日天',
74
-          disable: '赵日地',
75
-          permission: '赵日天',
76
-          createTime: '赵爸爸'
77
-        }, {
78
-          role: '赵日天',
79
-          roleName: '赵日天',
80
-          disable: '赵日地',
81
-          permission: '赵日天',
82
-          createTime: '赵爸爸'
83
-        }, {
84
-          role: '赵日天',
85
-          roleName: '赵日天',
86
-          disable: '赵日地',
87
-          permission: '赵日天',
88
-          createTime: '赵爸爸'
89
-        }, {
90
-          role: '赵日天',
91
-          roleName: '赵日天',
92
-          disable: '赵日地',
93
-          permission: '赵日天',
94
-          createTime: '赵爸爸'
95
-        }, {
96
-          role: '赵日天',
97
-          roleName: '赵日天',
98
-          disable: '赵日地',
99
-          permission: '赵日天',
100
-          createTime: '赵爸爸'
101
-        }, {
102
-          role: '赵日天',
103
-          roleName: '赵日天',
104
-          disable: '赵日地',
105
-          permission: '赵日天',
106
-          createTime: '赵爸爸'
107
-        }, {
108
-          role: '赵日天',
109
-          roleName: '赵日天',
110
-          disable: '赵日地',
111
-          permission: '赵日天',
112
-          createTime: '赵爸爸'
113
-        }
114
-      ],
115
-      treeData: [{
116
-        label: '根目录',
117
-        rank: '0',
118
-        img: '',
119
-        children: [{
120
-          label: '共享课程&书吧',
121
-          rank: '0',
122
-          img: '',
123
-          children: [{
124
-            label: '健身',
125
-            rank: '0',
126
-            img: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/163306109741.png',
127
-          }, {
128
-            label: '健康',
129
-            rank: '0',
130
-            img: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/163325263583.png',
131
-          }, {
132
-            label: '艺术',
133
-            rank: '0',
134
-            img: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/104118813781.png',
135
-          }, {
136
-            label: '社交',
137
-            rank: '0',
138
-            img: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/163339496588.png',
139
-          }, {
140
-            label: '教育',
141
-            rank: '0',
142
-            img: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/163351586373.png',
143
-          }]
144
-        }]
145
-      }]
146 70
     }
147 71
   },
72
+  computed: {
73
+    ...mapRoleState({
74
+      roles: x => x.roleList,
75
+    }),
76
+  },
148 77
   components: {
149 78
     tableSearch
150 79
   },
151 80
   methods: {
81
+    ...mapRoleActions([
82
+      'GetRolesList',
83
+    ]),
84
+    FormatDate (date) {
85
+      console.log()
86
+      return this.toolClass.dateFormat(date)
87
+    },
152 88
     handleSizeChange (val) {
153 89
       console.log(`每页 ${val} 条`)
154 90
     },
@@ -157,8 +93,7 @@ export default {
157 93
     },
158 94
     handleEdit (index, row) {
159 95
       // 编辑
160
-      console.log(index, row)
161
-      this.$router.push({ name: 'editRole' })
96
+      this.$router.push({ name: 'editRole', query: { id: row.RoleId } })
162 97
     },
163 98
     handleDelete (index, row) {
164 99
       // 删除
@@ -189,8 +124,7 @@ export default {
189 124
       console.log(node)
190 125
     },
191 126
     searchList (key) {
192
-      // 搜索列表
193
-      console.log(key)
127
+      this.GetRolesList({name: key})
194 128
     },
195 129
     addRole () {
196 130
       this.$router.push({ name: 'addRole' })
@@ -198,7 +132,10 @@ export default {
198 132
     getCheckedNodes () { // 获取选中的节点
199 133
       console.log(this.$refs.tree.getCheckedNodes())
200 134
     }
201
-  }
135
+  },
136
+  beforeMount () {
137
+    this.GetRolesList()
138
+  },
202 139
 }
203 140
 </script>
204 141
 

+ 116
- 87
src/pages/system/systemSet/userManager/add.vue View File

@@ -3,36 +3,12 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>用户名:</span>
6
+          <span>帐户名称:</span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-input
10
-                placeholder="请输入用户名"
11
-                v-model="postData.userName"
12
-                clearable>
13
-              </el-input>
14
-            </div>
15
-          </div>
16
-        </li>
17
-        <li class="flex-h">
18
-          <span>密码:</span>
19
-          <div class="flex-item">
20
-            <div style="width:50%">
21
-              <el-input
22
-                placeholder="请输入密码"
23
-                v-model="postData.passWord"
24
-                clearable>
25
-              </el-input>
26
-            </div>
27
-          </div>
28
-        </li>
29
-        <li class="flex-h">
30
-          <span>确认密码:</span>
31
-          <div class="flex-item">
32
-            <div style="width:50%">
33
-              <el-input
34
-                placeholder="请再输入一次密码"
35
-                v-model="postData.checkPassWord"
10
+                placeholder="请输入帐户名称"
11
+                v-model="postData.UserName"
36 12
                 clearable>
37 13
               </el-input>
38 14
             </div>
@@ -42,11 +18,14 @@
42 18
           <span>用户头像:</span>
43 19
           <div class="flex-item">
44 20
             <div>
45
-              <a class="formImg">
46
-                <img src="" class="centerLabel contain" alt="">
47
-                <i class="iconfont icon-quxiao"></i>
48
-              </a>
49
-              <el-button type="success" size="mini">上传图片</el-button>
21
+              <el-upload
22
+                class="avatar-uploader"
23
+                :action='$api.file.image.url'
24
+                :show-file-list="false"
25
+                :on-success="handleAvatarSuccess">
26
+                <img v-if="postData.HeadImgUrl" :src="postData.HeadImgUrl" class="avatar">
27
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
28
+              </el-upload>
50 29
             </div>
51 30
           </div>
52 31
         </li>
@@ -56,7 +35,7 @@
56 35
             <div style="width:50%">
57 36
               <el-input
58 37
                 placeholder="请输入真实姓名"
59
-                v-model="postData.realName"
38
+                v-model="postData.RealName"
60 39
                 clearable>
61 40
               </el-input>
62 41
             </div>
@@ -68,7 +47,7 @@
68 47
             <div style="width:50%">
69 48
               <el-input
70 49
                 placeholder="请输入邮箱"
71
-                v-model="postData.email"
50
+                v-model="postData.Email"
72 51
                 clearable>
73 52
               </el-input>
74 53
             </div>
@@ -80,7 +59,7 @@
80 59
             <div style="width:50%">
81 60
               <el-input
82 61
                 placeholder="请输入工号"
83
-                v-model="postData.number"
62
+                v-model="postData.workNo"
84 63
                 clearable>
85 64
               </el-input>
86 65
             </div>
@@ -92,7 +71,7 @@
92 71
             <div style="width:50%">
93 72
               <el-input
94 73
                 placeholder="请输入手机号"
95
-                v-model="postData.mobile"
74
+                v-model="postData.Phone"
96 75
                 clearable>
97 76
               </el-input>
98 77
             </div>
@@ -102,14 +81,9 @@
102 81
           <span>用户标签:</span>
103 82
           <div class="flex-item">
104 83
             <div style="width:50%">
105
-              <el-select v-model="postData.userLabel" placeholder="请选择">
106
-                <el-option
107
-                  v-for="item in userLabelList"
108
-                  :key="item.value"
109
-                  :label="item.label"
110
-                  :value="item.value">
111
-                </el-option>
112
-              </el-select>
84
+              <el-checkbox-group v-model="TagIds" @change="handleCheckedCitiesChange">
85
+                <el-checkbox v-for="(item,index) in TagList" :label="item.TagId" :key="index">{{item.TagName}}</el-checkbox>
86
+              </el-checkbox-group>
113 87
             </div>
114 88
           </div>
115 89
         </li>
@@ -117,39 +91,28 @@
117 91
           <span>用户类型:</span>
118 92
           <div class="flex-item">
119 93
             <div style="width:50%">
120
-              <el-select v-model="postData.userLabel" placeholder="请选择">
94
+              <el-select v-model="postData.TypeId" placeholder="请选择">
121 95
                 <el-option
122
-                  v-for="item in userLabelList"
123
-                  :key="item.value"
124
-                  :label="item.label"
125
-                  :value="item.value">
96
+                  v-for="item in typeList"
97
+                  :key="item.TypeId"
98
+                  :label="item.TypeName"
99
+                  :value="item.TypeId">
126 100
                 </el-option>
127 101
               </el-select>
128 102
             </div>
129 103
           </div>
130 104
         </li>
131 105
         <li class="flex-h">
132
-          <span>锁定用户:</span>
106
+          <span>选择案场:</span>
133 107
           <div class="flex-item">
134
-            <div style="width:50%" class="switch">
135
-              <el-switch
136
-                v-model="postData.lockUser"
137
-                active-color="#13ce66"
138
-                inactive-color="#ff4949">
139
-              </el-switch>
140
-            </div>
141
-          </div>
142
-        </li>
143
-        <li class="flex-h">
144
-          <span>是否案场联系人:</span>
145
-          <div class="flex-item">
146
-            <div style="width:50%" class="switch">
147
-              <el-switch
148
-                v-model="postData.linkMan"
149
-                active-color="#13ce66"
150
-                inactive-color="#ff4949">
151
-              </el-switch>
152
-            </div>
108
+            <el-select v-model="CaseId" placeholder="请选择">
109
+              <el-option
110
+                v-for="item in cases"
111
+                :key="item.CaseId"
112
+                :label="item.CaseName"
113
+                :value="item.CaseId">
114
+              </el-option>
115
+            </el-select>
153 116
           </div>
154 117
         </li>
155 118
         <li style="text-align:center">
@@ -162,41 +125,107 @@
162 125
 </template>
163 126
 
164 127
 <script>
165
-import { createNamespacedHelpers } from 'vuex'
166
-const { mapState: mapUserState } = createNamespacedHelpers('user')
128
+import { mapState } from 'vuex'
129
+
167 130
 export default {
168 131
   name: '',
169 132
   data () {
170 133
     return {
134
+      TagIds: [],
135
+      typeList: [],
136
+      TagList: [],
137
+      CheckPwd: '',
171 138
       postData: {
172
-        userName: '', // 用户名
173
-        passWord: '', // 密码
174
-        checkPassWord: '', // 确认密码
175
-        realName: '', // 真实姓名
176
-        email: '', // 邮箱
177
-        number: '', // 工号
178
-        mobile: '', // 手机号
179
-        userLabel: '',
180
-        lockUser: true,
181
-        linkMan: true
139
+        UserId: '', // 用户id
140
+        UserName: '', // 用户名
141
+        RealName: '', // 真实姓名
142
+        Pwd: '', // 密码
143
+        OrgId: '', // 机构id
144
+        Sex: '', // 性别
145
+        WorkNo: '', // 工号
146
+        Email: '', // 邮箱
147
+        Phone: '', // 手机号
148
+        HeadImgUrl: '', // 头像
149
+        TypeId: '', // 用户类型id
150
+        TagIds: '', // 用户标签
151
+        BelongCaseId: '', // 所属案场id
182 152
       }
183 153
     }
184 154
   },
185 155
   components: {},
186 156
   computed: {
187
-    ...mapUserState({
188
-      userLabelList: x => x.userLabelList,
189
-    })
157
+    ...mapState({
158
+      cases: x => x.app.cases.list,
159
+      defaultCaseId: x => x.app.cases.default,
160
+    }),
161
+    CaseId: {
162
+      get () {
163
+        return this.postData.BelongCaseId || this.defaultCaseId
164
+      },
165
+      set (val) {
166
+        this.postData.BelongCaseId = val
167
+      }
168
+    }
169
+  },
170
+  created () {
171
+    this.getCaseTagList()
172
+    this.getUserTypeList()
190 173
   },
191 174
   methods: {
192
-    submit () {
193
-      console.log(this.postData)
175
+    getCaseTagList () { // 获取标签数据
176
+      this.$ajax(this.$api.caseManager.getCaseTagList.url, {
177
+        method: this.$api.caseManager.getCaseTagList.method,
178
+        queryData: { caseid: this.CaseId, page: 1, pagesize: 10000 }
179
+      }).then(res => {
180
+        this.TagList = res.list
181
+      })
182
+    },
183
+    getUserTypeList () { // 获取用户类型
184
+      this.$ajax(this.$api.caseManager.getUserTypeList.url, {
185
+        method: this.$api.caseManager.getUserTypeList.method,
186
+      }).then(res => {
187
+        this.typeList = res
188
+        this.postData.TypeId = res[0].TypeId
189
+      })
190
+    },
191
+    handleCheckedCitiesChange (val) {
192
+      this.postData.TagIds = val.join(',')
193
+    },
194
+    handleAvatarSuccess (res, file) {
195
+      this.postData.HeadImgUrl = res.result.url
196
+    },
197
+    submit () { // 提交数据
198
+      if (this.postData.UserName === '') {
199
+        this.$message({
200
+          type: 'error',
201
+          message: '帐户名称不能为空'
202
+        })
203
+        return false
204
+      }
205
+      if (this.postData.Phone === '') {
206
+        this.$message({
207
+          type: 'error',
208
+          message: '手机号不能为空'
209
+        })
210
+        return false
211
+      }
212
+      if (this.postData.BelongCaseId === '') this.postData.BelongCaseId = this.CaseId
213
+      this.$ajax(this.$api.systemSet.addUser.url, {
214
+        method: this.$api.systemSet.addUser.method,
215
+        data: this.postData
216
+      }).then(res => {
217
+        this.$message({
218
+          type: 'success',
219
+          message: '操作成功'
220
+        })
221
+        this.$router.push({name: 'userManager'})
222
+      })
194 223
     },
195 224
     cancel () {
196 225
       this.$router.go(-1)
197 226
     }
198 227
   },
199
-  mounted () {}
228
+  mounted () { }
200 229
 }
201 230
 </script>
202 231
 

+ 134
- 87
src/pages/system/systemSet/userManager/edit.vue View File

@@ -3,36 +3,12 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>用户名:</span>
6
+          <span>帐户名称:</span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9 9
               <el-input
10
-                placeholder="请输入用户名"
11
-                v-model="postData.userName"
12
-                clearable>
13
-              </el-input>
14
-            </div>
15
-          </div>
16
-        </li>
17
-        <li class="flex-h">
18
-          <span>密码:</span>
19
-          <div class="flex-item">
20
-            <div style="width:50%">
21
-              <el-input
22
-                placeholder="请输入密码"
23
-                v-model="postData.passWord"
24
-                clearable>
25
-              </el-input>
26
-            </div>
27
-          </div>
28
-        </li>
29
-        <li class="flex-h">
30
-          <span>确认密码:</span>
31
-          <div class="flex-item">
32
-            <div style="width:50%">
33
-              <el-input
34
-                placeholder="请再输入一次密码"
35
-                v-model="postData.checkPassWord"
10
+                placeholder="请输入帐户名称"
11
+                v-model="postData.UserName"
36 12
                 clearable>
37 13
               </el-input>
38 14
             </div>
@@ -42,11 +18,14 @@
42 18
           <span>用户头像:</span>
43 19
           <div class="flex-item">
44 20
             <div>
45
-              <a class="formImg">
46
-                <img src="" class="centerLabel contain" alt="">
47
-                <i class="iconfont icon-quxiao"></i>
48
-              </a>
49
-              <el-button type="success" size="mini">上传图片</el-button>
21
+              <el-upload
22
+                class="avatar-uploader"
23
+                :action='$api.file.image.url'
24
+                :show-file-list="false"
25
+                :on-success="handleAvatarSuccess">
26
+                <img v-if="postData.HeadImgUrl" :src="postData.HeadImgUrl" class="avatar">
27
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
28
+              </el-upload>
50 29
             </div>
51 30
           </div>
52 31
         </li>
@@ -56,7 +35,7 @@
56 35
             <div style="width:50%">
57 36
               <el-input
58 37
                 placeholder="请输入真实姓名"
59
-                v-model="postData.realName"
38
+                v-model="postData.RealName"
60 39
                 clearable>
61 40
               </el-input>
62 41
             </div>
@@ -68,7 +47,7 @@
68 47
             <div style="width:50%">
69 48
               <el-input
70 49
                 placeholder="请输入邮箱"
71
-                v-model="postData.email"
50
+                v-model="postData.Email"
72 51
                 clearable>
73 52
               </el-input>
74 53
             </div>
@@ -80,7 +59,7 @@
80 59
             <div style="width:50%">
81 60
               <el-input
82 61
                 placeholder="请输入工号"
83
-                v-model="postData.number"
62
+                v-model="postData.workNo"
84 63
                 clearable>
85 64
               </el-input>
86 65
             </div>
@@ -92,7 +71,7 @@
92 71
             <div style="width:50%">
93 72
               <el-input
94 73
                 placeholder="请输入手机号"
95
-                v-model="postData.mobile"
74
+                v-model="postData.Phone"
96 75
                 clearable>
97 76
               </el-input>
98 77
             </div>
@@ -102,14 +81,9 @@
102 81
           <span>用户标签:</span>
103 82
           <div class="flex-item">
104 83
             <div style="width:50%">
105
-              <el-select v-model="postData.userLabel" placeholder="请选择">
106
-                <el-option
107
-                  v-for="item in userLabelList"
108
-                  :key="item.value"
109
-                  :label="item.label"
110
-                  :value="item.value">
111
-                </el-option>
112
-              </el-select>
84
+              <el-checkbox-group v-model="TagIds" @change="handleCheckedCitiesChange">
85
+                <el-checkbox v-for="(item,index) in TagList" :label="item.TagId" :key="index">{{item.TagName}}</el-checkbox>
86
+              </el-checkbox-group>
113 87
             </div>
114 88
           </div>
115 89
         </li>
@@ -117,39 +91,28 @@
117 91
           <span>用户类型:</span>
118 92
           <div class="flex-item">
119 93
             <div style="width:50%">
120
-              <el-select v-model="postData.userLabel" placeholder="请选择">
94
+              <el-select v-model="postData.TypeId" placeholder="请选择">
121 95
                 <el-option
122
-                  v-for="item in userLabelList"
123
-                  :key="item.value"
124
-                  :label="item.label"
125
-                  :value="item.value">
96
+                  v-for="item in typeList"
97
+                  :key="item.TypeId"
98
+                  :label="item.TypeName"
99
+                  :value="item.TypeId">
126 100
                 </el-option>
127 101
               </el-select>
128 102
             </div>
129 103
           </div>
130 104
         </li>
131 105
         <li class="flex-h">
132
-          <span>锁定用户:</span>
133
-          <div class="flex-item">
134
-            <div style="width:50%" class="switch">
135
-              <el-switch
136
-                v-model="postData.lockUser"
137
-                active-color="#13ce66"
138
-                inactive-color="#ff4949">
139
-              </el-switch>
140
-            </div>
141
-          </div>
142
-        </li>
143
-        <li class="flex-h">
144
-          <span>是否案场联系人:</span>
106
+          <span>选择案场:</span>
145 107
           <div class="flex-item">
146
-            <div style="width:50%" class="switch">
147
-              <el-switch
148
-                v-model="postData.linkMan"
149
-                active-color="#13ce66"
150
-                inactive-color="#ff4949">
151
-              </el-switch>
152
-            </div>
108
+            <el-select v-model="CaseId" placeholder="请选择">
109
+              <el-option
110
+                v-for="item in cases"
111
+                :key="item.CaseId"
112
+                :label="item.CaseName"
113
+                :value="item.CaseId">
114
+              </el-option>
115
+            </el-select>
153 116
           </div>
154 117
         </li>
155 118
         <li style="text-align:center">
@@ -162,41 +125,125 @@
162 125
 </template>
163 126
 
164 127
 <script>
165
-import { createNamespacedHelpers } from 'vuex'
166
-const { mapState: mapUserState } = createNamespacedHelpers('user')
128
+import { mapState } from 'vuex'
129
+
167 130
 export default {
168 131
   name: '',
169 132
   data () {
170 133
     return {
134
+      TagIds: [],
135
+      typeList: [],
136
+      TagList: [],
137
+      CheckPwd: '',
171 138
       postData: {
172
-        userName: '', // 用户名
173
-        passWord: '', // 密码
174
-        checkPassWord: '', // 确认密码
175
-        realName: '', // 真实姓名
176
-        email: '', // 邮箱
177
-        number: '', // 工号
178
-        mobile: '', // 手机号
179
-        userLabel: '',
180
-        lockUser: true,
181
-        linkMan: true
139
+        UserId: '', // 用户id
140
+        UserName: '', // 用户名
141
+        RealName: '', // 真实姓名
142
+        Pwd: '', // 密码
143
+        OrgId: '', // 机构id
144
+        Sex: '', // 性别
145
+        WorkNo: '', // 工号
146
+        Email: '', // 邮箱
147
+        Phone: '', // 手机号
148
+        HeadImgUrl: '', // 头像
149
+        TypeId: '', // 用户类型id
150
+        TagIds: '', // 用户标签
151
+        BelongCaseId: '', // 所属案场id
182 152
       }
183 153
     }
184 154
   },
185 155
   components: {},
186 156
   computed: {
187
-    ...mapUserState({
188
-      userLabelList: x => x.userLabelList,
189
-    })
157
+    ...mapState({
158
+      cases: x => x.app.cases.list,
159
+      defaultCaseId: x => x.app.cases.default,
160
+    }),
161
+    CaseId: {
162
+      get () {
163
+        return this.postData.BelongCaseId || this.defaultCaseId
164
+      },
165
+      set (val) {
166
+        this.postData.BelongCaseId = val
167
+      }
168
+    }
169
+  },
170
+  created () {
171
+    this.getCaseTagList()
172
+    this.getUserTypeList()
173
+    this.getUserInfo()
190 174
   },
191 175
   methods: {
192
-    submit () {
193
-      console.log(this.postData)
176
+    getUserInfo () { // 获取用户信息
177
+      this.$ajax(this.$api.systemSet.getUserInfo.url, {
178
+        method: this.$api.systemSet.getUserInfo.method,
179
+        urlData: { id: this.$route.query.id }
180
+      }).then(res => {
181
+        for (var n = 0; n < res.UserTag.length; n++) {
182
+          this.TagIds.push(res.UserTag[n].TagId)
183
+        }
184
+        if (res.UserType !== null) res.TypeId = res.UserType[0].TypeId
185
+        for (var key in this.postData) {
186
+          if (res[key] !== undefined) {
187
+            this.postData[key] = res[key]
188
+          }
189
+        }
190
+      })
191
+    },
192
+    getCaseTagList () { // 获取标签数据
193
+      this.$ajax(this.$api.caseManager.getCaseTagList.url, {
194
+        method: this.$api.caseManager.getCaseTagList.method,
195
+        queryData: { caseid: this.CaseId, page: 1, pagesize: 10000 }
196
+      }).then(res => {
197
+        this.TagList = res.list
198
+      })
199
+    },
200
+    getUserTypeList () { // 获取用户类型
201
+      this.$ajax(this.$api.caseManager.getUserTypeList.url, {
202
+        method: this.$api.caseManager.getUserTypeList.method,
203
+      }).then(res => {
204
+        this.typeList = res
205
+        this.postData.TypeId = res[0].TypeId
206
+      })
207
+    },
208
+    handleCheckedCitiesChange (val) {
209
+      this.postData.TagIds = val.join(',')
210
+    },
211
+    handleAvatarSuccess (res, file) {
212
+      this.postData.HeadImgUrl = res.result.url
213
+    },
214
+    submit () { // 提交数据
215
+      if (this.postData.UserName === '') {
216
+        this.$message({
217
+          type: 'error',
218
+          message: '帐户名称不能为空'
219
+        })
220
+        return false
221
+      }
222
+      if (this.postData.Phone === '') {
223
+        this.$message({
224
+          type: 'error',
225
+          message: '手机号不能为空'
226
+        })
227
+        return false
228
+      }
229
+      if (this.postData.BelongCaseId === '') this.postData.BelongCaseId = this.CaseId
230
+      if (this.postData.TagIds === '') this.postData.TagIds = this.TagIds.join(',')
231
+      this.$ajax(this.$api.systemSet.editUser.url, {
232
+        method: this.$api.systemSet.editUser.method,
233
+        data: this.postData
234
+      }).then(res => {
235
+        this.$message({
236
+          type: 'success',
237
+          message: '操作成功'
238
+        })
239
+        this.$router.push({ name: 'userManager' })
240
+      })
194 241
     },
195 242
     cancel () {
196 243
       this.$router.go(-1)
197 244
     }
198 245
   },
199
-  mounted () {}
246
+  mounted () { }
200 247
 }
201 248
 </script>
202 249
 

+ 148
- 78
src/pages/system/systemSet/userManager/index.vue View File

@@ -5,53 +5,63 @@
5 5
         <div class="flex-item flex-h">
6 6
           <el-button size="mini" type="success" @click="addUser">新增用户</el-button>
7 7
         </div>
8
-        <tableSearch value='请输入用户名' @exportSearchKey="searchList"></tableSearch>
8
+        <ul>
9
+          <li>
10
+            <span>选择案场:</span>
11
+            <el-select v-model="CaseId" placeholder="请选择">
12
+              <el-option
13
+                v-for="item in cases"
14
+                :key="item.CaseId"
15
+                :label="item.CaseName"
16
+                :value="item.CaseId">
17
+              </el-option>
18
+            </el-select>
19
+          </li>
20
+        </ul>
21
+        <el-button
22
+          size="mini"
23
+          type="primary" @click="search">搜索</el-button>
9 24
       </div>
10 25
       <div class="moreFilter"></div>
11 26
     </div>
12 27
     <div class="system-table-box">
13 28
       <el-table
14
-        :data="tableData"
29
+        :data="currentList"
15 30
         stripe
16 31
         style="width: 100%">
17 32
         <el-table-column
18 33
           fixed
19
-          prop="userName"
34
+          prop="UserName"
20 35
           label="用户名"
21 36
           width="150">
22 37
         </el-table-column>
23 38
         <el-table-column
24
-          prop="realName"
39
+          prop="RealName"
25 40
           label="真实姓名"
26 41
           width="120">
27 42
         </el-table-column>
28 43
         <el-table-column
29
-          prop="email"
44
+          prop="Email"
30 45
           label="邮箱"
31 46
           width="150">
32 47
         </el-table-column>
33 48
         <el-table-column
34
-          prop="workNum"
49
+          prop="WorkNo"
35 50
           label="工号"
36 51
           width="200">
37 52
         </el-table-column>
38 53
         <el-table-column
39
-          prop="mobile"
54
+          prop="Phone"
40 55
           label="手机号"
41 56
           width="100">
42 57
         </el-table-column>
43 58
         <el-table-column
44
-          prop="userType"
59
+          prop="UserTypeNames"
45 60
           label="用户类型"
46 61
           width="100">
47 62
         </el-table-column>
48 63
         <el-table-column
49
-          prop="lock"
50
-          label="是否锁定"
51
-          width="100">
52
-        </el-table-column>
53
-        <el-table-column
54
-          prop="creatTime"
64
+          prop="CreateDate"
55 65
           label="创建时间"
56 66
           width="200">
57 67
         </el-table-column>
@@ -74,14 +84,13 @@
74 84
       </el-table>
75 85
     </div>
76 86
     <el-pagination
77
-      @size-change="handleSizeChange"
78 87
       @current-change="handleCurrentChange"
79
-      :current-page.sync="currentPage"
80
-      :page-size="10"
88
+      :current-page.sync="postData.page"
89
+      :page-size="postData.pagesize"
81 90
       layout="prev, pager, next, jumper"
82
-      :total="100">
91
+      :total="total">
83 92
     </el-pagination>
84
-    <el-dialog title='绑定角色' :visible.sync="dialogTableVisible">
93
+    <el-dialog v-if="currentEditItem != null" :title="'绑定角色 - ' + currentEditItem.UserName" :visible.sync="dialogTableVisible">
85 94
       <form class="mainForm">
86 95
         <ul>
87 96
           <li class="flex-h">
@@ -90,7 +99,7 @@
90 99
               <div>
91 100
                 <el-input
92 101
                   placeholder="请输入角色名称并按回车搜索"
93
-                  v-model="postData.searchData"
102
+                  v-model="postData.name"
94 103
                   @change='getRole'
95 104
                   clearable>
96 105
                 </el-input>
@@ -102,11 +111,11 @@
102 111
             <div class="flex-item">
103 112
               <div>
104 113
                 <el-button
105
-                  v-for="tag in searchTags"
106
-                  :key="tag.name"
114
+                  v-for="tag in searchTagList"
115
+                  :key="tag.RoleId"
107 116
                   style="margin-right:1rem"
108 117
                   @click='addTag(tag)'>
109
-                  {{tag.name}}
118
+                  {{tag.RoleName}}
110 119
                   </el-button>
111 120
               </div>
112 121
             </div>
@@ -117,15 +126,20 @@
117 126
               <div>
118 127
                 <el-tag
119 128
                   v-for="tag in tags"
120
-                  :key="tag.name"
129
+                  :key="tag.RoleId"
121 130
                   style="margin-right:1rem"
122 131
                   @close="handleClose(tag)"
123 132
                   closable>
124
-                  {{tag.name}}
133
+                  {{tag.RoleName}}
125 134
                 </el-tag>
126 135
               </div>
127 136
             </div>
128 137
           </li>
138
+          <li style="text-align:right;">
139
+            <el-button
140
+              size="mini"
141
+              type="success" @click="bindRoles">确认绑定</el-button>
142
+          </li>
129 143
         </ul>
130 144
       </form>
131 145
     </el-dialog>
@@ -133,69 +147,115 @@
133 147
 </template>
134 148
 
135 149
 <script>
136
-import tableSearch from '@/components/tableSearch/index'
137
-import { createNamespacedHelpers } from 'vuex'
138
-const { mapState: mapUserState, mapActions: mapUserActions } = createNamespacedHelpers('user')
150
+import { mapState } from 'vuex'
151
+
139 152
 export default {
140 153
   name: '',
141 154
   data () {
142 155
     return {
143
-      currentPage: 0, // 当前页码
156
+      currentEditItem: null,
144 157
       dialogTableVisible: false,
145
-      tableSearch: { // 表格搜索条件
146
-        key: '111', // 搜索关键字
158
+      total: 0,
159
+      postData: { // 表格搜索条件
160
+        caseid: '',
161
+        name: '', // 搜索关键词
162
+        page: 1, // 当前页码
163
+        pagesize: 10000, // 请求数据量
147 164
       },
148
-      tableData: [{
149
-        userName: '赵日天',
150
-        realName: '13446666666',
151
-        email: '赵日地',
152
-        workNum: '赵爸爸',
153
-        mobile: '1376975175',
154
-        userType: '1',
155
-        lock: true,
156
-        creatTime: '2018-08-08 10:00:00'
157
-      }],
158
-      postData: {
159
-        searchData: ''
160
-      },
161
-      tags: [
162
-        { name: '角色0' },
163
-        { name: '角色1' },
164
-        { name: '角色2' },
165
-        { name: '角色3' },
166
-        { name: '角色4' }
167
-      ]
165
+      currentList: [],
166
+      searchTagList: [],
167
+      tags: [],
168 168
     }
169 169
   },
170
-  components: {
171
-    tableSearch,
172
-  },
173 170
   computed: {
174
-    ...mapUserState({
175
-      searchTags: x => x.roleList,
176
-    })
171
+    ...mapState({
172
+      cases: x => x.app.cases.list,
173
+      defaultCaseId: x => x.app.cases.default
174
+    }),
175
+    CaseId: {
176
+      get () {
177
+        return this.postData.caseid || this.defaultCaseId
178
+      },
179
+      set (val) {
180
+        this.postData.caseid = val
181
+      }
182
+    }
183
+  },
184
+  created () {
185
+    this.getList()
177 186
   },
178 187
   methods: {
179
-    handleSizeChange (val) {
180
-      console.log(`每页 ${val} 条`)
188
+    bindRoles () { // 绑定角色
189
+      this.$ajax(this.$api.systemSet.bindRoles.url, {
190
+        method: this.$api.systemSet.bindRoles.method,
191
+        queryData: {
192
+          userid: this.currentEditItem.UserId,
193
+          roles: this.returnRoles()
194
+        }
195
+      }).then(res => {
196
+        this.$message({
197
+          type: 'success',
198
+          message: '操作成功'
199
+        })
200
+        this.dialogTableVisible = false
201
+        this.postData.name = ''
202
+        this.tags = []
203
+        this.searchTagList = []
204
+      })
205
+    },
206
+    returnRoles () {
207
+      var arr = []
208
+      for (var n = 0; n < this.tags.length; n++) {
209
+        arr.push(this.tags[n].RoleId)
210
+      }
211
+      return arr.join(',')
212
+    },
213
+    search () { // 搜索
214
+      this.postData.page = 1
215
+      this.currentList = []
216
+      this.getList()
217
+    },
218
+    getList () { // 获取列表
219
+      this.$ajax(this.$api.systemSet.getUserList.url, {
220
+        method: this.$api.systemSet.getUserList.method,
221
+        queryData: { ...this.postData, caseid: this.CaseId }
222
+      }).then(res => {
223
+        for (var n = 0; n < res.list.length; n++) {
224
+          res.list[n].CreateDate = this.returnTime(res.list[n].CreateDate)
225
+        }
226
+        this.currentList = res.list
227
+        this.postData.page = res.page
228
+        this.total = res.pagenum
229
+      })
230
+    },
231
+    returnTime (val) {
232
+      val = new Date(val)
233
+      return val.getFullYear() + '-' + this.returnNum(val.getMonth() + 1) + '-' + this.returnNum(val.getDate()) + ' ' + this.returnNum(val.getHours()) + ':' + this.returnNum(val.getMinutes()) + ':' + this.returnNum(val.getSeconds())
181 234
     },
182
-    handleCurrentChange (val) {
183
-      console.log(`当前页: ${val}`)
235
+    returnNum (num) {
236
+      return num > 9 ? num : '0' + num
237
+    },
238
+    handleCurrentChange (val) { // 跳转到分页
239
+      this.getList()
184 240
     },
185 241
     handleEdit (index, row) { // 编辑
186
-      console.log(index, row)
187
-      this.$router.push({ name: 'editUser', query: { realName: row.realName } })
242
+      this.$router.push({ name: 'editUser', query: { id: row.UserId } })
188 243
     },
189 244
     handleDelete (index, row) { // 删除
190
-      console.log(index, row)
191 245
       this.$confirm('确认删除此用户?', '提示', {
192 246
         confirmButtonText: '确定',
193 247
         cancelButtonText: '取消',
194 248
         type: 'warning'
195 249
       }).then(() => {
196
-        this.$message({
197
-          type: 'success',
198
-          message: '删除成功!'
250
+        this.$ajax(this.$api.systemSet.deleteUser.url, {
251
+          method: this.$api.systemSet.deleteUser.method,
252
+          urlData: { id: row.UserId }
253
+        }).then(res => {
254
+          this.$message({
255
+            type: 'success',
256
+            message: '删除成功!'
257
+          })
258
+          this.getList()
199 259
         })
200 260
       }).catch(() => {
201 261
         this.$message({
@@ -205,11 +265,14 @@ export default {
205 265
       })
206 266
     },
207 267
     handleBind (index, row) {
208
-      console.log(index, row)
209
-      this.dialogTableVisible = true
210
-    },
211
-    searchList (key) { // 搜索列表
212
-      console.log(key)
268
+      this.$ajax(this.$api.systemSet.getUserRoles.url, {
269
+        method: this.$api.systemSet.getUserRoles.method,
270
+        queryData: { userid: row.UserId }
271
+      }).then(res => {
272
+        if (res !== null) this.tags = res
273
+        this.currentEditItem = row
274
+        this.dialogTableVisible = true
275
+      })
213 276
     },
214 277
     addUser () {
215 278
       this.$router.push({ name: 'addUser' })
@@ -217,14 +280,21 @@ export default {
217 280
     handleClose (tag) {
218 281
       this.tags.splice(this.tags.indexOf(tag), 1)
219 282
     },
220
-    ...mapUserActions(['upDateRoleList']),
221
-    addTag (tag) {
222
-      // 调用添加绑定角色接口
223
-      this.tags.push(tag)
224
-      this.upDateRoleList(tag)
283
+    addTag (tag) { // 调用添加绑定角色接口
284
+      if (!this.tags.filter(x => x.RoleId === tag.RoleId)[0]) {
285
+        this.tags.push({
286
+          RoleId: tag.RoleId,
287
+          RoleName: tag.RoleName
288
+        })
289
+      }
225 290
     },
226 291
     getRole () { // 绑定角色搜索事件,发送请求搜索角色列表
227
-      console.log(this.postData.searchData)
292
+      this.$ajax(this.$api.caseManager.getRolesList.url, {
293
+        method: this.$api.caseManager.getRolesList.method,
294
+        data: this.postData
295
+      }).then(res => {
296
+        this.searchTagList = res.list
297
+      })
228 298
     }
229 299
   }
230 300
 }

+ 3
- 1
src/store/index.js View File

@@ -7,13 +7,15 @@ Vue.use(Vuex)
7 7
 const store = new Vuex.Store({
8 8
   state: {
9 9
     loadding: false,
10
+    pageSize: 10,
10 11
   }
11 12
 })
12 13
 Vuex.Store.prototype.$api = api
13 14
 Vuex.Store.prototype.$ajax = Ajax
14 15
 export const modules = {
15 16
   app: () => require('./app').default,
16
-  cms: () => require('./cms').default
17
+  cms: () => require('./cms').default,
18
+  role: () => require('./system/role').default,
17 19
 }
18 20
 
19 21
 Object.keys(modules).forEach((modKey) => {

+ 71
- 0
src/store/system/role.js View File

@@ -0,0 +1,71 @@
1
+import ajax from '../../util/ajax'
2
+import api from '../../util/api'
3
+
4
+export default {
5
+  namespaced: true,
6
+  state: {
7
+    roleList: [],
8
+    roleInfo: {},
9
+  },
10
+  mutations: {
11
+    updateList (state, payload) {
12
+      state.roleList = payload || []
13
+    },
14
+    updateInfo (state, payload) {
15
+      state.roleInfo = payload || {}
16
+    },
17
+  },
18
+  actions: {
19
+    GetRolesList ({ commit }, payload) {
20
+      ajax(api.role.list.url, {
21
+        method: api.role.list.method,
22
+        queryData: {
23
+          ...payload,
24
+        }
25
+      }).then(res => {
26
+        commit('updateList', res)
27
+      })
28
+    },
29
+    GetRoleByID ({ commit }, { roleid }) {
30
+      ajax(api.role.info.url, {
31
+        method: api.role.info.method,
32
+        urlData: {
33
+          id: roleid,
34
+        }
35
+      }).then(res => {
36
+        commit('updateInfo', res)
37
+      })
38
+    },
39
+    AddRole ({ commit }, payload) {
40
+      ajax(api.role.add.url, {
41
+        method: api.role.add.method,
42
+        data: {
43
+          ...payload
44
+        }
45
+      }).then(res => {
46
+        commit('updateInfo', res)
47
+      })
48
+    },
49
+    UpdateRole ({ commit }, payload) {
50
+      ajax(api.role.update.url, {
51
+        method: api.role.update.method,
52
+        data: {
53
+          ...payload
54
+        }
55
+      }).then(res => {
56
+      })
57
+    },
58
+    DelRole ({ commit }, payload) {
59
+      ajax(api.role.delete.url, {
60
+        method: api.role.delete.method,
61
+        data: {
62
+          ...payload
63
+        }
64
+      }).then(res => {
65
+      })
66
+    },
67
+    SetRoleNull ({ commit }) {
68
+      commit('updateInfo', {})
69
+    }
70
+  }
71
+}

+ 6
- 0
src/style/main.css View File

@@ -337,6 +337,12 @@ select:focus {
337 337
   margin-right: 20px;
338 338
 }
339 339
 
340
+.el-tag{
341
+  height: 40px;
342
+  line-height: 40px;
343
+  margin-bottom: 10px;
344
+}
345
+
340 346
 
341 347
 
342 348
 

+ 138
- 59
src/util/api.js View File

@@ -1,250 +1,329 @@
1 1
 const baseUrl = '/api'
2
+const common = '/common'
3
+const guest = '/guest'
4
+
2 5
 const $api = {
3 6
   login: { // 登陆
4 7
     signin: {
5 8
       method: 'post',
6
-      url: `${baseUrl}/guest/signin`
9
+      url: `${baseUrl}${guest}/signin`
7 10
     }
8 11
   },
9 12
   system: {
10 13
     init: { // 初始化菜单
11 14
       method: 'get',
12
-      url: `${baseUrl}/common/system/init`
15
+      url: `${baseUrl}${common}/system/init`
13 16
     }
14 17
   },
18
+  systemSet: {
19
+    getUserList: { // 获取用户列表
20
+      method: 'get',
21
+      url: `${baseUrl}/common/user`
22
+    },
23
+    getUserInfo: { // 获取用户信息
24
+      method: 'get',
25
+      url: `${baseUrl}/common/user/:id`
26
+    },
27
+    addUser: { // 新增用户
28
+      method: 'post',
29
+      url: `${baseUrl}/common/user`
30
+    },
31
+    editUser: { // 更新用户
32
+      method: 'put',
33
+      url: `${baseUrl}/common/user`
34
+    },
35
+    deleteUser: { // 删除用户
36
+      method: 'delete',
37
+      url: `${baseUrl}/common/user/:id`
38
+    },
39
+    bindRoles: { // 绑定角色
40
+      method: 'put',
41
+      url: `${baseUrl}/common/userrole`
42
+    },
43
+    getUserRoles: { // 获取用户绑定角色
44
+      method: 'get',
45
+      url: `${baseUrl}/common/userrole`
46
+    },
47
+  },
15 48
   channelManager: {
16 49
     getChannelList: { // 渠道列表
17 50
       method: 'get',
18
-      url: `${baseUrl}/common/`
51
+      url: `${baseUrl}${common}/`
19 52
     },
20 53
   },
21 54
   caseManager: {
55
+    getRolesList: { // 获取角色列表
56
+      method: 'get',
57
+      url: `${baseUrl}/common/role`
58
+    },
22 59
     getCaseList: { // 获取案场列表
23 60
       method: 'get',
24
-      url: `${baseUrl}/common/case/info`
61
+      url: `${baseUrl}${common}/case/info`
25 62
     },
26 63
     addCase: { // 新增案场
27 64
       method: 'post',
28
-      url: `${baseUrl}/common/case/info`
65
+      url: `${baseUrl}${common}/case/info`
29 66
     },
30 67
     getCaseInfo: { // 查询案场
31 68
       method: 'get',
32
-      url: `${baseUrl}/common/case/info/:id`
69
+      url: `${baseUrl}${common}/case/info/:id`
33 70
     },
34 71
     editCase: { // 编辑案场
35 72
       method: 'put',
36
-      url: `${baseUrl}/common/case/info/:id`
73
+      url: `${baseUrl}${common}/case/info/:id`
74
+    },
75
+    getCaseUserList: { // 获取案场相关人员列表
76
+      method: 'get',
77
+      url: `${baseUrl}${common}/case/user`
78
+    },
79
+    getCaseUserInfo: { // 获取案场相关人员信息
80
+      method: 'get',
81
+      url: `${baseUrl}${common}/case/user/:id`
82
+    },
83
+    addCaseUser: { // 新增案场相关人员
84
+      method: 'post',
85
+      url: `${baseUrl}${common}/case/user`
86
+    },
87
+    editCaseUser: { // 更新案场相关人员
88
+      method: 'put',
89
+      url: `${baseUrl}${common}/case/user`
37 90
     },
38 91
     getKeyList: { // 获取钥匙列表
39 92
       method: 'get',
40
-      url: `${baseUrl}/common/case/key`
93
+      url: `${baseUrl}${common}/case/key`
41 94
     },
42 95
     addKey: { // 新增钥匙
43 96
       method: 'post',
44
-      url: `${baseUrl}/common/case/key`
97
+      url: `${baseUrl}${common}/case/key`
45 98
     },
46 99
     cancelKey: { // 取消钥匙
47 100
       method: 'put',
48
-      url: `${baseUrl}/common/case/unlock/:id`
101
+      url: `${baseUrl}${common}/case/unlock/:id`
49 102
     },
50 103
     getCaseAreaList: { // 获取案场区域列表
51 104
       method: 'get',
52
-      url: `${baseUrl}/common/case/area`
105
+      url: `${baseUrl}${common}/case/area`
53 106
     },
54 107
     addCaseArea: { // 新增案场区域
55 108
       method: 'post',
56
-      url: `${baseUrl}/common/case/area`
109
+      url: `${baseUrl}${common}/case/area`
57 110
     },
58 111
     deleteCaseArea: { // 删除案场区域
59 112
       method: 'delete',
60
-      url: `${baseUrl}/common/case/area/:id`
113
+      url: `${baseUrl}${common}/case/area/:id`
61 114
     },
62 115
     getCaseAreaInfo: { // 获取案场区域信息
63 116
       method: 'get',
64
-      url: `${baseUrl}/common/case/area/:id`
117
+      url: `${baseUrl}${common}/case/area/:id`
65 118
     },
66 119
     editCaseArea: { // 更新案场区域信息
67 120
       method: 'put',
68
-      url: `${baseUrl}/common/case/area`
121
+      url: `${baseUrl}${common}/case/area`
69 122
     },
70 123
     getCaseTableList: { // 获取案场桌位列表
71 124
       method: 'get',
72
-      url: `${baseUrl}/common/case/table`
125
+      url: `${baseUrl}${common}/case/table`
73 126
     },
74 127
     addCaseTable: { // 新增案场桌位
75 128
       method: 'post',
76
-      url: `${baseUrl}/common/case/table`
129
+      url: `${baseUrl}${common}/case/table`
77 130
     },
78 131
     getCaseTableInfo: { // 查询案场桌位信息
79 132
       method: 'get',
80
-      url: `${baseUrl}/common/case/table/:id`
133
+      url: `${baseUrl}${common}/case/table/:id`
81 134
     },
82 135
     editCaseTable: { // 更新案场桌位信息
83 136
       method: 'put',
84
-      url: `${baseUrl}/common/case/table`
137
+      url: `${baseUrl}${common}/case/table`
85 138
     },
86 139
     deleteCaseTable: { // 删除案场桌位信息
87 140
       method: 'delete',
88
-      url: `${baseUrl}/common/case/table/:id`
141
+      url: `${baseUrl}${common}/case/table/:id`
89 142
     },
90 143
     getCaseTagList: { // 获取案场标签列表
91 144
       method: 'get',
92
-      url: `${baseUrl}/common/case/tag`
145
+      url: `${baseUrl}${common}/case/tag`
93 146
     },
94 147
     addCaseTag: { // 新增案场标签
95 148
       method: 'post',
96
-      url: `${baseUrl}/common/case/tag`
149
+      url: `${baseUrl}${common}/case/tag`
97 150
     },
98 151
     getTagInfo: { // 获取案场标签信息
99 152
       method: 'get',
100
-      url: `${baseUrl}/common/case/tag/:id`
153
+      url: `${baseUrl}${common}/case/tag/:id`
101 154
     },
102 155
     deleteCaseTag: { // 删除案场标签
103 156
       method: 'delete',
104
-      url: `${baseUrl}/common/case/tag/:id`
157
+      url: `${baseUrl}${common}/case/tag/:id`
158
+    },
159
+    getUserTypeList: { // 获取用户类型列表
160
+      method: 'get',
161
+      url: `${baseUrl}/common/usertype`
105 162
     },
106 163
   },
107 164
   goodsManager: {
108 165
     getGoodsSpecList: { // 商品规格列表
109 166
       method: 'get',
110
-      url: `${baseUrl}/common/spec/goods`
167
+      url: `${baseUrl}${common}/spec/goods`
111 168
     },
112 169
     addGoodsSpec: { // 新增商品规格
113 170
       method: 'post',
114
-      url: `${baseUrl}/common/spec/goods`
171
+      url: `${baseUrl}${common}/spec/goods`
115 172
     },
116 173
     getGoodsSpecById: { // 根据id获取商品规格
117 174
       method: 'get',
118
-      url: `${baseUrl}/common/spec/goods/:id`
175
+      url: `${baseUrl}${common}/spec/goods/:id`
119 176
     },
120 177
     editGoodsSpec: { // 编辑商品规格
121 178
       method: 'put',
122
-      url: `${baseUrl}/common/spec/goods/:id`
179
+      url: `${baseUrl}${common}/spec/goods/:id`
123 180
     },
124 181
     deleteGoodsSpec: { // 删除商品规格
125 182
       method: 'delete',
126
-      url: `${baseUrl}/common/spec/goods/:id`
183
+      url: `${baseUrl}${common}/spec/goods/:id`
127 184
     },
128 185
     getGoodsTypeList: { // 商品种类列表
129 186
       method: 'get',
130
-      url: `${baseUrl}/common/type/goods`
187
+      url: `${baseUrl}${common}/type/goods`
131 188
     },
132 189
     addGoodsType: { // 新增商品种类
133 190
       method: 'post',
134
-      url: `${baseUrl}/common/type/goods`
191
+      url: `${baseUrl}${common}/type/goods`
135 192
     },
136 193
     getGoodsTypeById: { // 根据id获取商品种类
137 194
       method: 'get',
138
-      url: `${baseUrl}/common/type/goods/:id`
195
+      url: `${baseUrl}${common}/type/goods/:id`
139 196
     },
140 197
     editGoodsType: { // 编辑商品种类
141 198
       method: 'put',
142
-      url: `${baseUrl}/common/type/goods/:id`
199
+      url: `${baseUrl}${common}/type/goods/:id`
143 200
     },
144 201
     deleteGoodsType: { // 删除商品种类
145 202
       method: 'delete',
146
-      url: `${baseUrl}/common/type/goods/:id`
203
+      url: `${baseUrl}${common}/type/goods/:id`
147 204
     },
148 205
   },
149 206
   cms: {
150 207
     location: { // 图片位置
151 208
       method: 'get',
152
-      url: `${baseUrl}/common/cms/location`
209
+      url: `${baseUrl}${common}/cms/location`
153 210
     },
154 211
     imageList: { // 轮播图列表
155 212
       method: 'get',
156
-      url: `${baseUrl}/common/cms/image`
213
+      url: `${baseUrl}${common}/cms/image`
157 214
     },
158 215
     imageDetail: { // 轮播图详情
159 216
       method: 'get',
160
-      url: `${baseUrl}/common/cms/image/:id`
217
+      url: `${baseUrl}${common}/cms/image/:id`
161 218
     },
162 219
     addImage: { // 添加轮播图
163 220
       method: 'post',
164
-      url: `${baseUrl}/common/cms/image`
221
+      url: `${baseUrl}${common}/cms/image`
165 222
     },
166 223
     editImage: { // 编辑轮播图
167 224
       method: 'put',
168
-      url: `${baseUrl}/common/cms/image/:id`
225
+      url: `${baseUrl}${common}/cms/image/:id`
169 226
     },
170 227
     deleteDetail: { // 删除轮播图
171 228
       method: 'delete',
172
-      url: `${baseUrl}/common/cms/image/:id`
229
+      url: `${baseUrl}${common}/cms/image/:id`
173 230
     },
174 231
     case: { // 首页案场列表
175 232
       method: 'get',
176
-      url: `${baseUrl}/common/cms/case`
233
+      url: `${baseUrl}${common}/cms/case`
177 234
     },
178 235
     caseDetail: { // 首页案场详情
179 236
       method: 'get',
180
-      url: `${baseUrl}/common/cms/case/:id`
237
+      url: `${baseUrl}${common}/cms/case/:id`
181 238
     },
182 239
     addCase: { // 添加首页案场
183 240
       method: 'post',
184
-      url: `${baseUrl}/common/cms/case`
241
+      url: `${baseUrl}${common}/cms/case`
185 242
     },
186 243
     editCase: { // 添加首页案场
187 244
       method: 'put',
188
-      url: `${baseUrl}/common/cms/case/:id`
245
+      url: `${baseUrl}${common}/cms/case/:id`
189 246
     },
190 247
     deleteCase: { // 添加首页案场
191 248
       method: 'delete',
192
-      url: `${baseUrl}/common/cms/case/:id`
249
+      url: `${baseUrl}${common}/cms/case/:id`
193 250
     },
194 251
     info: { // 首页消息列表
195 252
       method: 'get',
196
-      url: `${baseUrl}/common/cms/info`
253
+      url: `${baseUrl}${common}/cms/info`
197 254
     },
198 255
     infoDetail: { // 首页消息详情
199 256
       method: 'get',
200
-      url: `${baseUrl}/common/cms/info/:id`
257
+      url: `${baseUrl}${common}/cms/info/:id`
201 258
     },
202 259
     addInfo: { // 新增首页消息
203 260
       method: 'post',
204
-      url: `${baseUrl}/common/cms/info`
261
+      url: `${baseUrl}${common}/cms/info`
205 262
     },
206 263
     editInfo: { // 编辑首页消息
207 264
       method: 'put',
208
-      url: `${baseUrl}/common/cms/info/:id`
265
+      url: `${baseUrl}${common}/cms/info/:id`
209 266
     },
210 267
     deleteInfo: { // 删除首页消息
211 268
       method: 'delete',
212
-      url: `${baseUrl}/common/cms/info/:id`
269
+      url: `${baseUrl}${common}/cms/info/:id`
213 270
     },
214 271
     news: { // 咨讯列表
215 272
       method: 'get',
216
-      url: `${baseUrl}/common/cms/news`
273
+      url: `${baseUrl}${common}/cms/news`
217 274
     },
218 275
     newsDetail: { // 咨讯详情
219 276
       method: 'get',
220
-      url: `${baseUrl}/common/cms/news/:id`
277
+      url: `${baseUrl}${common}/cms/news/:id`
221 278
     },
222 279
     addNews: { // 新增咨讯
223 280
       method: 'post',
224
-      url: `${baseUrl}/common/cms/news`
281
+      url: `${baseUrl}${common}/cms/news`
225 282
     },
226 283
     editNews: { // 编辑咨讯
227 284
       method: 'put',
228
-      url: `${baseUrl}/common/cms/news/:id`
285
+      url: `${baseUrl}${common}/cms/news/:id`
229 286
     },
230 287
     deleteNews: { // 删除咨讯
231 288
       method: 'delete',
232
-      url: `${baseUrl}/common/cms/news/:id`
289
+      url: `${baseUrl}${common}/cms/news/:id`
233 290
     },
234 291
     caseShow: { // 前台展示
235 292
       method: 'put',
236
-      url: `${baseUrl}/common/cms/caseshow/:id`
293
+      url: `${baseUrl}${common}/cms/caseshow/:id`
237 294
     },
238 295
     caseHide: { // 取消前台展示
239 296
       method: 'put',
240
-      url: `${baseUrl}/common/cms/casehide/:id`
297
+      url: `${baseUrl}${common}/cms/casehide/:id`
241 298
     }
242 299
   },
243 300
   file: {
244 301
     image: { // 图片上传
245 302
       method: 'post',
246
-      url: `${baseUrl}/common/file`
303
+      url: `${baseUrl}${common}/file`
247 304
     }
248
-  }
305
+  },
306
+  role: {
307
+    list: {
308
+      method: 'get',
309
+      url: `${baseUrl}${common}/role`
310
+    },
311
+    info: {
312
+      method: 'get',
313
+      url: `${baseUrl}${common}/role/:id`
314
+    },
315
+    add: {
316
+      method: 'post',
317
+      url: `${baseUrl}${common}/role`
318
+    },
319
+    update: {
320
+      method: 'put',
321
+      url: `${baseUrl}${common}/role`
322
+    },
323
+    delete: {
324
+      method: 'delete',
325
+      url: `${baseUrl}${common}/role/:id`
326
+    },
327
+  },
249 328
 }
250 329
 export default $api