yuantianjiao 6 years ago
parent
commit
639d3146ef

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

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

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

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

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

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

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
 import addUser from './systemSet/userManager/add' // 添加用户
6
 import addUser from './systemSet/userManager/add' // 添加用户
7
 import editUser from './systemSet/userManager/edit' // 编辑用户
7
 import editUser from './systemSet/userManager/edit' // 编辑用户
8
 import roleManager from './systemSet/roleManager/index' // 角色管理
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
 import caseManager from './caseManager/index' // 案场管理
11
 import caseManager from './caseManager/index' // 案场管理
13
 import caseInfo from './caseManager/caseInfo/index' // 案场信息
12
 import caseInfo from './caseManager/caseInfo/index' // 案场信息
14
 import addCase from './caseManager/caseInfo/addCase/index' // 新增案场
13
 import addCase from './caseManager/caseInfo/addCase/index' // 新增案场
15
 import editCase from './caseManager/caseInfo/editCase/index' // 新增案场
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
 import keyManager from './caseManager/keyManager/index' // 钥匙管理
17
 import keyManager from './caseManager/keyManager/index' // 钥匙管理
17
 import addKey from './caseManager/keyManager/add' // 新增钥匙
18
 import addKey from './caseManager/keyManager/add' // 新增钥匙
18
 import caseAreaManager from './caseManager/caseAreaManager/index' // 案场区域管理
19
 import caseAreaManager from './caseManager/caseAreaManager/index' // 案场区域管理
92
           path: 'roleManager',
93
           path: 'roleManager',
93
           name: 'roleManager',
94
           name: 'roleManager',
94
           component: roleManager,
95
           component: roleManager,
95
-          children: [{ // 添加角色
96
-            path: 'addRole',
97
-            name: 'addRole',
98
-            component: addRole,
99
-            children: []
100
-          }, { // 编辑角色
96
+          children: [{ // 编辑角色
101
             path: 'editRole',
97
             path: 'editRole',
102
             name: 'editRole',
98
             name: 'editRole',
103
             component: editRole,
99
             component: editRole,
122
             name: 'editCase',
118
             name: 'editCase',
123
             component: editCase,
119
             component: editCase,
124
             children: []
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
           path: 'keyManager',
133
           path: 'keyManager',

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

2
   <div class="subPage">
2
   <div class="subPage">
3
     <form class="mainForm">
3
     <form class="mainForm">
4
       <ul>
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">
5
         <li class="flex-h">
18
           <span>角色名称:</span>
6
           <span>角色名称:</span>
19
           <div class="flex-item">
7
           <div class="flex-item">
20
             <div style="width:50%">
8
             <div style="width:50%">
21
               <el-input
9
               <el-input
22
                 placeholder="请输入角色名称"
10
                 placeholder="请输入角色名称"
23
-                v-model="postData.roleName"
11
+                v-model="detail.RoleName"
24
                 clearable>
12
                 clearable>
25
               </el-input>
13
               </el-input>
26
             </div>
14
             </div>
27
           </div>
15
           </div>
28
         </li>
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
         <li class="flex-h">
17
         <li class="flex-h">
57
           <span>备注:</span>
18
           <span>备注:</span>
58
           <div class="flex-item">
19
           <div class="flex-item">
61
                 placeholder="请输入备注"
22
                 placeholder="请输入备注"
62
                 type="textarea"
23
                 type="textarea"
63
                 :autosize="{ minRows: 3, maxRows: 5}"
24
                 :autosize="{ minRows: 3, maxRows: 5}"
64
-                v-model="postData.remark"
25
+                v-model="detail.Remark"
65
                 clearable>
26
                 clearable>
66
               </el-input>
27
               </el-input>
67
             </div>
28
             </div>
77
 </template>
38
 </template>
78
 
39
 
79
 <script>
40
 <script>
41
+import { createNamespacedHelpers, mapState } from 'vuex'
42
+
43
+const { mapState: mapRoleState, mapActions: mapRoleActions } = createNamespacedHelpers('role')
80
 export default {
44
 export default {
81
   name: '',
45
   name: '',
82
   data () {
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
   components: {},
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
   methods: {
59
   methods: {
60
+    ...mapRoleActions([
61
+      'GetRoleByID',
62
+      'AddRole',
63
+      'UpdateRole',
64
+      'SetRoleNull',
65
+    ]),
105
     submit () {
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
     cancel () {
75
     cancel () {
109
       this.$router.go(-1)
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
 </script>
88
 </script>
115
 
89
 

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

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
     <div class="system-table-search">
3
     <div class="system-table-search">
4
       <div class="flex-h">
4
       <div class="flex-h">
5
         <div class="flex-item flex-h">
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
         </div>
7
         </div>
8
-        <tableSearch value='分配权限' @exportSearchKey="searchList"></tableSearch>
8
+        <tableSearch value='角色名称' @exportSearchKey="searchList"></tableSearch>
9
       </div>
9
       </div>
10
       <div class="moreFilter"></div>
10
       <div class="moreFilter"></div>
11
     </div>
11
     </div>
12
     <div class="system-table-box">
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
         </el-table-column>
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
         </el-table-column>
20
         </el-table-column>
24
         <el-table-column fixed='right' label="操作" width="300">
21
         <el-table-column fixed='right' label="操作" width="300">
25
           <template slot-scope="scope">
22
           <template slot-scope="scope">
30
         </el-table-column>
27
         </el-table-column>
31
       </el-table>
28
       </el-table>
32
     </div>
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
     </el-pagination>
37
     </el-pagination>
35
-    <el-dialog title="请选择机构" :visible.sync="dialogTableVisible">
38
+    <!-- <el-dialog title="请选择机构" :visible.sync="dialogTableVisible">
36
       <el-tree
39
       <el-tree
37
         class="flxe-h"
40
         class="flxe-h"
38
         :data="treeData"
41
         :data="treeData"
44
         <div class="flex-h" style="justify-content: flex-end;margin-top: 1rem">
47
         <div class="flex-h" style="justify-content: flex-end;margin-top: 1rem">
45
           <el-button type='success' @click="getCheckedNodes">确定</el-button>
48
           <el-button type='success' @click="getCheckedNodes">确定</el-button>
46
         </div>
49
         </div>
47
-    </el-dialog>
50
+    </el-dialog> -->
48
   </div>
51
   </div>
49
 </template>
52
 </template>
50
 
53
 
51
 <script>
54
 <script>
55
+import { createNamespacedHelpers } from 'vuex'
52
 import tableSearch from '@/components/tableSearch/index'
56
 import tableSearch from '@/components/tableSearch/index'
53
 
57
 
58
+const { mapState: mapRoleState, mapActions: mapRoleActions } = createNamespacedHelpers('role')
59
+
54
 export default {
60
 export default {
55
   name: '',
61
   name: '',
56
   data () {
62
   data () {
61
         key: '111' // 搜索关键字
67
         key: '111' // 搜索关键字
62
       },
68
       },
63
       dialogTableVisible: false,
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
   components: {
77
   components: {
149
     tableSearch
78
     tableSearch
150
   },
79
   },
151
   methods: {
80
   methods: {
81
+    ...mapRoleActions([
82
+      'GetRolesList',
83
+    ]),
84
+    FormatDate (date) {
85
+      console.log()
86
+      return this.toolClass.dateFormat(date)
87
+    },
152
     handleSizeChange (val) {
88
     handleSizeChange (val) {
153
       console.log(`每页 ${val} 条`)
89
       console.log(`每页 ${val} 条`)
154
     },
90
     },
157
     },
93
     },
158
     handleEdit (index, row) {
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
     handleDelete (index, row) {
98
     handleDelete (index, row) {
164
       // 删除
99
       // 删除
189
       console.log(node)
124
       console.log(node)
190
     },
125
     },
191
     searchList (key) {
126
     searchList (key) {
192
-      // 搜索列表
193
-      console.log(key)
127
+      this.GetRolesList({name: key})
194
     },
128
     },
195
     addRole () {
129
     addRole () {
196
       this.$router.push({ name: 'addRole' })
130
       this.$router.push({ name: 'addRole' })
198
     getCheckedNodes () { // 获取选中的节点
132
     getCheckedNodes () { // 获取选中的节点
199
       console.log(this.$refs.tree.getCheckedNodes())
133
       console.log(this.$refs.tree.getCheckedNodes())
200
     }
134
     }
201
-  }
135
+  },
136
+  beforeMount () {
137
+    this.GetRolesList()
138
+  },
202
 }
139
 }
203
 </script>
140
 </script>
204
 
141
 

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

3
     <form class="mainForm">
3
     <form class="mainForm">
4
       <ul>
4
       <ul>
5
         <li class="flex-h">
5
         <li class="flex-h">
6
-          <span>用户名:</span>
6
+          <span>帐户名称:</span>
7
           <div class="flex-item">
7
           <div class="flex-item">
8
             <div style="width:50%">
8
             <div style="width:50%">
9
               <el-input
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
                 clearable>
12
                 clearable>
37
               </el-input>
13
               </el-input>
38
             </div>
14
             </div>
42
           <span>用户头像:</span>
18
           <span>用户头像:</span>
43
           <div class="flex-item">
19
           <div class="flex-item">
44
             <div>
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
             </div>
29
             </div>
51
           </div>
30
           </div>
52
         </li>
31
         </li>
56
             <div style="width:50%">
35
             <div style="width:50%">
57
               <el-input
36
               <el-input
58
                 placeholder="请输入真实姓名"
37
                 placeholder="请输入真实姓名"
59
-                v-model="postData.realName"
38
+                v-model="postData.RealName"
60
                 clearable>
39
                 clearable>
61
               </el-input>
40
               </el-input>
62
             </div>
41
             </div>
68
             <div style="width:50%">
47
             <div style="width:50%">
69
               <el-input
48
               <el-input
70
                 placeholder="请输入邮箱"
49
                 placeholder="请输入邮箱"
71
-                v-model="postData.email"
50
+                v-model="postData.Email"
72
                 clearable>
51
                 clearable>
73
               </el-input>
52
               </el-input>
74
             </div>
53
             </div>
80
             <div style="width:50%">
59
             <div style="width:50%">
81
               <el-input
60
               <el-input
82
                 placeholder="请输入工号"
61
                 placeholder="请输入工号"
83
-                v-model="postData.number"
62
+                v-model="postData.workNo"
84
                 clearable>
63
                 clearable>
85
               </el-input>
64
               </el-input>
86
             </div>
65
             </div>
92
             <div style="width:50%">
71
             <div style="width:50%">
93
               <el-input
72
               <el-input
94
                 placeholder="请输入手机号"
73
                 placeholder="请输入手机号"
95
-                v-model="postData.mobile"
74
+                v-model="postData.Phone"
96
                 clearable>
75
                 clearable>
97
               </el-input>
76
               </el-input>
98
             </div>
77
             </div>
102
           <span>用户标签:</span>
81
           <span>用户标签:</span>
103
           <div class="flex-item">
82
           <div class="flex-item">
104
             <div style="width:50%">
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
             </div>
87
             </div>
114
           </div>
88
           </div>
115
         </li>
89
         </li>
117
           <span>用户类型:</span>
91
           <span>用户类型:</span>
118
           <div class="flex-item">
92
           <div class="flex-item">
119
             <div style="width:50%">
93
             <div style="width:50%">
120
-              <el-select v-model="postData.userLabel" placeholder="请选择">
94
+              <el-select v-model="postData.TypeId" placeholder="请选择">
121
                 <el-option
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
                 </el-option>
100
                 </el-option>
127
               </el-select>
101
               </el-select>
128
             </div>
102
             </div>
129
           </div>
103
           </div>
130
         </li>
104
         </li>
131
         <li class="flex-h">
105
         <li class="flex-h">
132
-          <span>锁定用户:</span>
106
+          <span>选择案场:</span>
133
           <div class="flex-item">
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
           </div>
116
           </div>
154
         </li>
117
         </li>
155
         <li style="text-align:center">
118
         <li style="text-align:center">
162
 </template>
125
 </template>
163
 
126
 
164
 <script>
127
 <script>
165
-import { createNamespacedHelpers } from 'vuex'
166
-const { mapState: mapUserState } = createNamespacedHelpers('user')
128
+import { mapState } from 'vuex'
129
+
167
 export default {
130
 export default {
168
   name: '',
131
   name: '',
169
   data () {
132
   data () {
170
     return {
133
     return {
134
+      TagIds: [],
135
+      typeList: [],
136
+      TagList: [],
137
+      CheckPwd: '',
171
       postData: {
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
   components: {},
155
   components: {},
186
   computed: {
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
   methods: {
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
     cancel () {
224
     cancel () {
196
       this.$router.go(-1)
225
       this.$router.go(-1)
197
     }
226
     }
198
   },
227
   },
199
-  mounted () {}
228
+  mounted () { }
200
 }
229
 }
201
 </script>
230
 </script>
202
 
231
 

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

3
     <form class="mainForm">
3
     <form class="mainForm">
4
       <ul>
4
       <ul>
5
         <li class="flex-h">
5
         <li class="flex-h">
6
-          <span>用户名:</span>
6
+          <span>帐户名称:</span>
7
           <div class="flex-item">
7
           <div class="flex-item">
8
             <div style="width:50%">
8
             <div style="width:50%">
9
               <el-input
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
                 clearable>
12
                 clearable>
37
               </el-input>
13
               </el-input>
38
             </div>
14
             </div>
42
           <span>用户头像:</span>
18
           <span>用户头像:</span>
43
           <div class="flex-item">
19
           <div class="flex-item">
44
             <div>
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
             </div>
29
             </div>
51
           </div>
30
           </div>
52
         </li>
31
         </li>
56
             <div style="width:50%">
35
             <div style="width:50%">
57
               <el-input
36
               <el-input
58
                 placeholder="请输入真实姓名"
37
                 placeholder="请输入真实姓名"
59
-                v-model="postData.realName"
38
+                v-model="postData.RealName"
60
                 clearable>
39
                 clearable>
61
               </el-input>
40
               </el-input>
62
             </div>
41
             </div>
68
             <div style="width:50%">
47
             <div style="width:50%">
69
               <el-input
48
               <el-input
70
                 placeholder="请输入邮箱"
49
                 placeholder="请输入邮箱"
71
-                v-model="postData.email"
50
+                v-model="postData.Email"
72
                 clearable>
51
                 clearable>
73
               </el-input>
52
               </el-input>
74
             </div>
53
             </div>
80
             <div style="width:50%">
59
             <div style="width:50%">
81
               <el-input
60
               <el-input
82
                 placeholder="请输入工号"
61
                 placeholder="请输入工号"
83
-                v-model="postData.number"
62
+                v-model="postData.workNo"
84
                 clearable>
63
                 clearable>
85
               </el-input>
64
               </el-input>
86
             </div>
65
             </div>
92
             <div style="width:50%">
71
             <div style="width:50%">
93
               <el-input
72
               <el-input
94
                 placeholder="请输入手机号"
73
                 placeholder="请输入手机号"
95
-                v-model="postData.mobile"
74
+                v-model="postData.Phone"
96
                 clearable>
75
                 clearable>
97
               </el-input>
76
               </el-input>
98
             </div>
77
             </div>
102
           <span>用户标签:</span>
81
           <span>用户标签:</span>
103
           <div class="flex-item">
82
           <div class="flex-item">
104
             <div style="width:50%">
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
             </div>
87
             </div>
114
           </div>
88
           </div>
115
         </li>
89
         </li>
117
           <span>用户类型:</span>
91
           <span>用户类型:</span>
118
           <div class="flex-item">
92
           <div class="flex-item">
119
             <div style="width:50%">
93
             <div style="width:50%">
120
-              <el-select v-model="postData.userLabel" placeholder="请选择">
94
+              <el-select v-model="postData.TypeId" placeholder="请选择">
121
                 <el-option
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
                 </el-option>
100
                 </el-option>
127
               </el-select>
101
               </el-select>
128
             </div>
102
             </div>
129
           </div>
103
           </div>
130
         </li>
104
         </li>
131
         <li class="flex-h">
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
           <div class="flex-item">
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
           </div>
116
           </div>
154
         </li>
117
         </li>
155
         <li style="text-align:center">
118
         <li style="text-align:center">
162
 </template>
125
 </template>
163
 
126
 
164
 <script>
127
 <script>
165
-import { createNamespacedHelpers } from 'vuex'
166
-const { mapState: mapUserState } = createNamespacedHelpers('user')
128
+import { mapState } from 'vuex'
129
+
167
 export default {
130
 export default {
168
   name: '',
131
   name: '',
169
   data () {
132
   data () {
170
     return {
133
     return {
134
+      TagIds: [],
135
+      typeList: [],
136
+      TagList: [],
137
+      CheckPwd: '',
171
       postData: {
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
   components: {},
155
   components: {},
186
   computed: {
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
   methods: {
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
     cancel () {
242
     cancel () {
196
       this.$router.go(-1)
243
       this.$router.go(-1)
197
     }
244
     }
198
   },
245
   },
199
-  mounted () {}
246
+  mounted () { }
200
 }
247
 }
201
 </script>
248
 </script>
202
 
249
 

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

5
         <div class="flex-item flex-h">
5
         <div class="flex-item flex-h">
6
           <el-button size="mini" type="success" @click="addUser">新增用户</el-button>
6
           <el-button size="mini" type="success" @click="addUser">新增用户</el-button>
7
         </div>
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
       </div>
24
       </div>
10
       <div class="moreFilter"></div>
25
       <div class="moreFilter"></div>
11
     </div>
26
     </div>
12
     <div class="system-table-box">
27
     <div class="system-table-box">
13
       <el-table
28
       <el-table
14
-        :data="tableData"
29
+        :data="currentList"
15
         stripe
30
         stripe
16
         style="width: 100%">
31
         style="width: 100%">
17
         <el-table-column
32
         <el-table-column
18
           fixed
33
           fixed
19
-          prop="userName"
34
+          prop="UserName"
20
           label="用户名"
35
           label="用户名"
21
           width="150">
36
           width="150">
22
         </el-table-column>
37
         </el-table-column>
23
         <el-table-column
38
         <el-table-column
24
-          prop="realName"
39
+          prop="RealName"
25
           label="真实姓名"
40
           label="真实姓名"
26
           width="120">
41
           width="120">
27
         </el-table-column>
42
         </el-table-column>
28
         <el-table-column
43
         <el-table-column
29
-          prop="email"
44
+          prop="Email"
30
           label="邮箱"
45
           label="邮箱"
31
           width="150">
46
           width="150">
32
         </el-table-column>
47
         </el-table-column>
33
         <el-table-column
48
         <el-table-column
34
-          prop="workNum"
49
+          prop="WorkNo"
35
           label="工号"
50
           label="工号"
36
           width="200">
51
           width="200">
37
         </el-table-column>
52
         </el-table-column>
38
         <el-table-column
53
         <el-table-column
39
-          prop="mobile"
54
+          prop="Phone"
40
           label="手机号"
55
           label="手机号"
41
           width="100">
56
           width="100">
42
         </el-table-column>
57
         </el-table-column>
43
         <el-table-column
58
         <el-table-column
44
-          prop="userType"
59
+          prop="UserTypeNames"
45
           label="用户类型"
60
           label="用户类型"
46
           width="100">
61
           width="100">
47
         </el-table-column>
62
         </el-table-column>
48
         <el-table-column
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
           label="创建时间"
65
           label="创建时间"
56
           width="200">
66
           width="200">
57
         </el-table-column>
67
         </el-table-column>
74
       </el-table>
84
       </el-table>
75
     </div>
85
     </div>
76
     <el-pagination
86
     <el-pagination
77
-      @size-change="handleSizeChange"
78
       @current-change="handleCurrentChange"
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
       layout="prev, pager, next, jumper"
90
       layout="prev, pager, next, jumper"
82
-      :total="100">
91
+      :total="total">
83
     </el-pagination>
92
     </el-pagination>
84
-    <el-dialog title='绑定角色' :visible.sync="dialogTableVisible">
93
+    <el-dialog v-if="currentEditItem != null" :title="'绑定角色 - ' + currentEditItem.UserName" :visible.sync="dialogTableVisible">
85
       <form class="mainForm">
94
       <form class="mainForm">
86
         <ul>
95
         <ul>
87
           <li class="flex-h">
96
           <li class="flex-h">
90
               <div>
99
               <div>
91
                 <el-input
100
                 <el-input
92
                   placeholder="请输入角色名称并按回车搜索"
101
                   placeholder="请输入角色名称并按回车搜索"
93
-                  v-model="postData.searchData"
102
+                  v-model="postData.name"
94
                   @change='getRole'
103
                   @change='getRole'
95
                   clearable>
104
                   clearable>
96
                 </el-input>
105
                 </el-input>
102
             <div class="flex-item">
111
             <div class="flex-item">
103
               <div>
112
               <div>
104
                 <el-button
113
                 <el-button
105
-                  v-for="tag in searchTags"
106
-                  :key="tag.name"
114
+                  v-for="tag in searchTagList"
115
+                  :key="tag.RoleId"
107
                   style="margin-right:1rem"
116
                   style="margin-right:1rem"
108
                   @click='addTag(tag)'>
117
                   @click='addTag(tag)'>
109
-                  {{tag.name}}
118
+                  {{tag.RoleName}}
110
                   </el-button>
119
                   </el-button>
111
               </div>
120
               </div>
112
             </div>
121
             </div>
117
               <div>
126
               <div>
118
                 <el-tag
127
                 <el-tag
119
                   v-for="tag in tags"
128
                   v-for="tag in tags"
120
-                  :key="tag.name"
129
+                  :key="tag.RoleId"
121
                   style="margin-right:1rem"
130
                   style="margin-right:1rem"
122
                   @close="handleClose(tag)"
131
                   @close="handleClose(tag)"
123
                   closable>
132
                   closable>
124
-                  {{tag.name}}
133
+                  {{tag.RoleName}}
125
                 </el-tag>
134
                 </el-tag>
126
               </div>
135
               </div>
127
             </div>
136
             </div>
128
           </li>
137
           </li>
138
+          <li style="text-align:right;">
139
+            <el-button
140
+              size="mini"
141
+              type="success" @click="bindRoles">确认绑定</el-button>
142
+          </li>
129
         </ul>
143
         </ul>
130
       </form>
144
       </form>
131
     </el-dialog>
145
     </el-dialog>
133
 </template>
147
 </template>
134
 
148
 
135
 <script>
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
 export default {
152
 export default {
140
   name: '',
153
   name: '',
141
   data () {
154
   data () {
142
     return {
155
     return {
143
-      currentPage: 0, // 当前页码
156
+      currentEditItem: null,
144
       dialogTableVisible: false,
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
   computed: {
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
   methods: {
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
     handleEdit (index, row) { // 编辑
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
     handleDelete (index, row) { // 删除
244
     handleDelete (index, row) { // 删除
190
-      console.log(index, row)
191
       this.$confirm('确认删除此用户?', '提示', {
245
       this.$confirm('确认删除此用户?', '提示', {
192
         confirmButtonText: '确定',
246
         confirmButtonText: '确定',
193
         cancelButtonText: '取消',
247
         cancelButtonText: '取消',
194
         type: 'warning'
248
         type: 'warning'
195
       }).then(() => {
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
       }).catch(() => {
260
       }).catch(() => {
201
         this.$message({
261
         this.$message({
205
       })
265
       })
206
     },
266
     },
207
     handleBind (index, row) {
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
     addUser () {
277
     addUser () {
215
       this.$router.push({ name: 'addUser' })
278
       this.$router.push({ name: 'addUser' })
217
     handleClose (tag) {
280
     handleClose (tag) {
218
       this.tags.splice(this.tags.indexOf(tag), 1)
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
     getRole () { // 绑定角色搜索事件,发送请求搜索角色列表
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
 const store = new Vuex.Store({
7
 const store = new Vuex.Store({
8
   state: {
8
   state: {
9
     loadding: false,
9
     loadding: false,
10
+    pageSize: 10,
10
   }
11
   }
11
 })
12
 })
12
 Vuex.Store.prototype.$api = api
13
 Vuex.Store.prototype.$api = api
13
 Vuex.Store.prototype.$ajax = Ajax
14
 Vuex.Store.prototype.$ajax = Ajax
14
 export const modules = {
15
 export const modules = {
15
   app: () => require('./app').default,
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
 Object.keys(modules).forEach((modKey) => {
21
 Object.keys(modules).forEach((modKey) => {

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

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