yuantianjiao 6 年之前
父節點
當前提交
ef7bf6bde9

+ 1
- 0
package.json 查看文件

@@ -22,6 +22,7 @@
22 22
     "babel-eslint": "^10.0.1",
23 23
     "eslint": "^5.8.0",
24 24
     "eslint-plugin-vue": "^5.0.0-0",
25
+    "js-md5": "^0.7.3",
25 26
     "node-sass": "^4.10.0",
26 27
     "sass-loader": "^7.1.0",
27 28
     "vee-validate": "^2.1.2",

+ 4
- 2
src/assets/main.css 查看文件

@@ -115,5 +115,7 @@ button:focus {
115 115
 }
116 116
 .page{
117 117
   text-align: right;
118
-  margin-top: 20px;
119
-}
118
+  margin: 20px 0;
119
+}
120
+
121
+::-webkit-scrollbar {display: none;}

+ 2
- 0
src/main.js 查看文件

@@ -7,6 +7,7 @@ import VeeValidate from 'vee-validate'
7 7
 import toolClass from './util/util'
8 8
 import Ajax from './util/ajax'
9 9
 import api from './util/api'
10
+import md5 from 'js-md5'
10 11
 import 'iview/dist/styles/iview.css'
11 12
 
12 13
 Vue.use(iView);
@@ -14,6 +15,7 @@ Vue.use(VeeValidate);
14 15
 Vue.prototype.toolClass = toolClass
15 16
 Vue.prototype.api = api
16 17
 Vue.prototype.ajax = Ajax
18
+Vue.prototype.md5 = md5
17 19
 new Vue({
18 20
     el: '#app',
19 21
     router,

+ 2
- 2
src/pages/login/login.vue 查看文件

@@ -75,12 +75,12 @@ export default {
75 75
   methods: {
76 76
     ...mapLoginActions(['setRemember', 'setUserName', 'setPassWord', 'login']),
77 77
     submit () {
78
-      this.$router.push({ name: 'index' })
79
-      this.login({ userName: this.UserName, passWord: this.PassWord }).then(() => {
78
+      this.login({ UserName: this.UserName, UserPass: this.PassWord }).then(() => {
80 79
         if (!this.Remember) {
81 80
           this.UserName = ''
82 81
           this.PassWord = ''
83 82
         }
83
+        this.$router.push({ name: 'menuConfig' })
84 84
       })
85 85
     }
86 86
   }

+ 22
- 5
src/pages/main/main.vue 查看文件

@@ -9,8 +9,10 @@
9 9
           <menuLeft :menuData='menuData'></menuLeft>
10 10
         </Sider>
11 11
         <Layout :style="{padding: '24px'}">
12
-          <Content :style="{padding: '24px', minHeight: '85vh', background: '#fff'}">
13
-            <router-view/>
12
+          <Content :style="{padding: '24px', height: '85vh',background: '#fff', position:'relative',overflowY: 'scroll'}">
13
+            <transition name="fade">
14
+              <router-view class="child-view"></router-view>
15
+            </transition>
14 16
           </Content>
15 17
         </Layout>
16 18
       </Layout>
@@ -23,7 +25,7 @@ import { createNamespacedHelpers } from 'vuex'
23 25
 const { mapState: mapMainState, mapActions: mapMainActions } = createNamespacedHelpers('main')
24 26
 import menuLeft from '@/components/menu.vue' // 左侧导航
25 27
 export default {
26
-  created () { },
28
+  created () { this.getMainMenu() },
27 29
   components: {
28 30
     menuLeft
29 31
   },
@@ -33,7 +35,7 @@ export default {
33 35
     })
34 36
   },
35 37
   methods: {
36
-    ...mapMainActions(['setMenu'])
38
+    ...mapMainActions(['getMainMenu'])
37 39
   }
38 40
 }
39 41
 </script>
@@ -60,5 +62,20 @@ export default {
60 62
   margin: 0 auto;
61 63
   margin-right: 20px;
62 64
 }
63
-</style>
65
+.child-view {
66
+  position: absolute;
67
+  left: 0;
68
+  top: 0;
69
+  width: 100%;
70
+  height: 100%;
71
+  padding: 24px;
72
+  transition: all 0.8s ease;
73
+}
74
+.fade-enter-active,
75
+.fade-leave-active {
76
+  transition: opacity 0.5s;
77
+}
78
+.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
79
+  opacity: 0;
80
+}
64 81
 </style>

+ 20
- 0
src/pages/main/management/management.vue 查看文件

@@ -9,6 +9,11 @@
9 9
       <label for="name" style="padding-right:20px;">项目名称</label>
10 10
       <Input placeholder="请输入项目名称" size="large" v-model="name" clearable name="name" style="width: 300px"/>
11 11
     </Modal>
12
+    <div class="pop-up" v-show="pop.show">
13
+      <div>
14
+        弹窗
15
+      </div>
16
+    </div>
12 17
   </div>
13 18
 </template>
14 19
 
@@ -23,6 +28,9 @@ export default {
23 28
       current: 2,
24 29
       showAdd: false,
25 30
       name: '',
31
+      pop: {
32
+        show: false
33
+      },
26 34
       managementColumns: [
27 35
         {
28 36
           title: '项目名称',
@@ -98,5 +106,17 @@ export default {
98 106
 </script>
99 107
 
100 108
 <style lang='scss' scoped>
109
+.container {
110
+  position: relative;
111
+  .pop-up {
112
+    width: 100%;
113
+    height: 100%;
114
+    position: absolute;
115
+    top: 0;
116
+    left: 0;
117
+    background: #fff;
118
+    border-radius: 8px;
119
+  }
120
+}
101 121
 </style>
102 122
 

+ 24
- 16
src/pages/main/reply/editReply.vue 查看文件

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div style="width:100%">
3 3
     <div class="form-item">
4
-      <label for="">规则名</label>
4
+      <label for="name">规则名</label>
5 5
       <Input placeholder="请输入规则名" size="large" v-model="name" clearable name="name" style="width: 300px"/>
6 6
     </div>
7 7
     <div class="form-item">
@@ -14,7 +14,7 @@
14 14
     <div class="form-item">
15 15
       <label for="name">关键词</label>
16 16
       <div class="tag">
17
-        <Tag type="dot" style="margin-bottom: 10px;" v-for="item in count" :key="item" :name="item" closable @on-close="handleClose2">标签{{ item + 1 }}</Tag>
17
+        <Tag type="dot" style="margin-bottom: 10px;" v-for="(item, index) in tagList" :key="index" :name="index" closable @on-close="handleClose">{{ item.name }}</Tag>
18 18
         <div>
19 19
           <Input v-model="value" @click.stop="1" placeholder="输入关键词" search enter-button="添加" style="width: 200px;" @on-search='handleAdd'/>
20 20
         </div>
@@ -30,14 +30,13 @@
30 30
 <script>
31 31
 import menuForm from '@/components/menuForm'
32 32
 import { createNamespacedHelpers } from 'vuex'
33
-const { mapActions: mapUserActions } = createNamespacedHelpers('user')
33
+const { mapState: mapReplyState, mapActions: mapReplyActions } = createNamespacedHelpers('reply')
34 34
 export default {
35 35
   data () {
36 36
     return {
37 37
       name: '',
38 38
       type: '完全',
39
-      value:'',
40
-      count: [0, 1, 2]
39
+      value: ''
41 40
     }
42 41
   },
43 42
   components: {
@@ -45,21 +44,27 @@ export default {
45 44
   },
46 45
   mounted () {
47 46
   },
47
+  computed: {
48
+    ...mapReplyState({
49
+      tagList: item => item.tagList
50
+    })
51
+  },
48 52
   methods: {
49
-    ...mapUserActions(['addUser']),
53
+    ...mapReplyActions(['changeTag']),
50 54
     handleAdd () {
51
-      if (this.count.length) {
52
-        this.count.push(this.count[this.count.length - 1] + 1);
53
-      } else {
54
-        this.count.push(0);
55
+      let data = {
56
+        type: 'add',
57
+        data: { name: this.value }
55 58
       }
59
+      this.changeTag(data)
60
+      this.value = ''
56 61
     },
57
-    handleClose2 (event, name) {
58
-      const index = this.count.indexOf(name);
59
-      this.count.splice(index, 1);
60
-    },
61
-    checkForm(){
62
-
62
+    handleClose (event, name) {
63
+      let data = {
64
+        type: 'delete',
65
+        index: name
66
+      }
67
+      this.changeTag(data)
63 68
     },
64 69
     submit () {
65 70
       this.addUser().then((res) => {
@@ -69,6 +74,9 @@ export default {
69 74
     },
70 75
     cancel () {
71 76
       this.$router.push({ name: 'user' })
77
+    },
78
+    checkForm (data) {
79
+      console.log(data)
72 80
     }
73 81
   }
74 82
 }

+ 4
- 1
src/pages/main/reply/reply.vue 查看文件

@@ -6,7 +6,7 @@
6 6
           <label>用户通过发送关键词来触发回复</label>
7 7
           <i-switch v-model="keywordSwitch" @on-change="change"/>
8 8
           <div class="add">
9
-            <Button type="primary">新增</Button>
9
+            <Button type="primary" @click="edit">新增</Button>
10 10
           </div>
11 11
           <Table border :columns="keywordColumns" :data="keywordList"></Table>
12 12
         </div>
@@ -96,6 +96,9 @@ export default {
96 96
     },
97 97
     checkForm (data) {
98 98
       console.log(data)
99
+    },
100
+    edit () {
101
+      this.$router.push({ name: 'editReply' })
99 102
     }
100 103
   }
101 104
 }

+ 79
- 19
src/pages/main/user/addUser.vue 查看文件

@@ -1,12 +1,13 @@
1 1
 <template>
2 2
   <div>
3
-    <div class="title">新增</div>
3
+    <div class="title" v-if="$route.query.id">编辑</div>
4
+    <div class="title" v-else>新增</div>
4 5
     <div class="form-item">
5 6
       <label for="">头像</label>
6 7
       <div class="upload-list" v-for="(item,index) in uploadList" :key='index'>
7 8
         <img :src="item.url">
8 9
         <div class="upload-list-cover">
9
-          <Icon type="ios-eye-outline" @click.native="handleView(item.name)"></Icon>
10
+          <Icon type="ios-eye-outline" @click.native="handleView(item.url)"></Icon>
10 11
           <Icon type="ios-trash-outline" @click.native="handleRemove(item)"></Icon>
11 12
         </div>
12 13
       </div>
@@ -31,7 +32,7 @@
31 32
         </div>
32 33
       </Upload>
33 34
       <Modal title="查看大图" v-model="visible">
34
-        <img :src="'https://o5wwk8baw.qnssl.com/' + imgName + '/large'" v-if="visible" style="width: 100%">
35
+        <img :src="imgName" v-if="visible" style="width: 100%">
35 36
       </Modal>
36 37
     </div>
37 38
     <div class="form-item">
@@ -39,6 +40,7 @@
39 40
       <Input placeholder="用户名仅限英文" size="large" v-model="name" clearable @input="checkUserName" name="name" style="width: 300px"/>
40 41
       <span class="error" v-if="nameInput">{{checkUserName()}}</span>
41 42
     </div>
43
+    <div v-if="!$route.query.id" style="padding: 0px 0 0px 35%;color:#ccc;font-size:10px">默认密码:123456</div>
42 44
     <div class="form-item">
43 45
       <label for="realName"><span>*</span>真实姓名</label>
44 46
       <Input placeholder="请输入真实姓名" size="large" v-model="realName" clearable @input="checkRealName" name="realName" style="width: 300px"/>
@@ -62,7 +64,7 @@
62 64
 
63 65
 <script>
64 66
 import { createNamespacedHelpers } from 'vuex'
65
-const { mapActions: mapUserActions } = createNamespacedHelpers('user')
67
+const { mapState: mapUserState, mapActions: mapUserActions } = createNamespacedHelpers('user')
66 68
 export default {
67 69
   data () {
68 70
     return {
@@ -76,28 +78,60 @@ export default {
76 78
       realName: '',
77 79
       mobile: '',
78 80
       mobileInput: false,
79
-      email: ''
81
+      email: '',
82
+      passWord: '123456'
80 83
     }
84
+  },
85
+  created () {
86
+
81 87
   },
82 88
   mounted () {
83
-    this.$nextTick(() => {
84
-      this.uploadList = this.$refs.upload.fileList
89
+    if (this.$route.query.id) {
90
+      this.getSysuserInfo({ userid: this.$route.query.id }).then(() => {
91
+        this.name = this.oldInfo.UserName
92
+        if (this.oldInfo.Headimgurl) {
93
+          this.defaultList.push({
94
+            url: this.oldInfo.Headimgurl,
95
+            name: 'old'
96
+          })
97
+        }
98
+        this.realName = this.oldInfo.RealName
99
+        this.mobile = this.oldInfo.Phone
100
+        this.email = this.oldInfo.Email
101
+        this.passWord = this.oldInfo.Pwd
102
+        this.$nextTick(() => {
103
+          this.uploadList = this.$refs.upload.fileList
104
+        })
105
+      })
106
+    } else {
107
+      this.$nextTick(() => {
108
+        this.uploadList = this.$refs.upload.fileList
109
+      })
110
+    }
111
+  },
112
+  computed: {
113
+    ...mapUserState({
114
+      UserName: item => item.UserName,
115
+      RealName: item => item.RealName,
116
+      Phone: item => item.Phone,
117
+      Email: item => item.Email,
118
+      oldInfo: item => item.oldInfo
85 119
     })
86 120
   },
87 121
   methods: {
88
-    ...mapUserActions(['addUser']),
122
+    ...mapUserActions(['addUser', 'editUser', 'getSysuserInfo']),
89 123
     handleView (name) {
90
-      this.imgName = name;
91
-      this.visible = true;
124
+      this.imgName = name
125
+      this.visible = true
92 126
     },
93 127
     handleRemove (file) {
94
-      const fileList = this.$refs.upload.fileList;
95
-      this.$refs.upload.fileList.splice(fileList.indexOf(file), 1);
128
+      const fileList = this.$refs.upload.fileList
129
+      this.$refs.upload.fileList.splice(fileList.indexOf(file), 1)
96 130
     },
97 131
     handleSuccess (res, file) {
98
-      console.log(res)
99
-      file.url = 'https://o5wwk8baw.qnssl.com/7eb99afb9d5f317c912f08b5212fd69a/avatar';
100
-      file.name = '7eb99afb9d5f317c912f08b5212fd69a';
132
+      file.url = res.result.url
133
+      const fileList = this.$refs.upload.fileList
134
+      this.$refs.upload.fileList.splice(fileList.indexOf(file), 1, file)
101 135
     },
102 136
     handleFormatError (file) {
103 137
       console.log(file)
@@ -165,10 +199,36 @@ export default {
165 199
         this.$Message.warning(this.checkMobile())
166 200
         return
167 201
       }
168
-      this.addUser().then((res) => {
169
-        this.$Message.info(res)
170
-        this.cancel()
171
-      })
202
+      if (this.$route.query.id) {
203
+        let data = {
204
+          UserName: this.name,
205
+          RealName: this.realName,
206
+          Phone: this.mobile,
207
+          Email: this.email,
208
+          UserId: this.$route.query.id,
209
+          Headimgurl: this.uploadList[0].url,
210
+          Pwd: this.passWord,
211
+          UserType: 'operator'
212
+        }
213
+        this.editUser(data).then(() => {
214
+          this.$Message.info('编辑成功')
215
+          this.cancel()
216
+        })
217
+      } else {
218
+        let data = {
219
+          UserName: this.name,
220
+          RealName: this.realName,
221
+          Phone: this.mobile,
222
+          Email: this.email,
223
+          Headimgurl: this.uploadList[0].url,
224
+          Pwd: this.passWord,
225
+          UserType: 'operator'
226
+        }
227
+        this.addUser(data).then(() => {
228
+          this.$Message.info('新增成功')
229
+          this.cancel()
230
+        })
231
+      }
172 232
     },
173 233
     cancel () {
174 234
       this.$router.push({ name: 'user' })

+ 54
- 15
src/pages/main/user/user.vue 查看文件

@@ -3,12 +3,12 @@
3 3
     <Button type="success" style="margin-bottom:20px;" @click="addUser">新增</Button>
4 4
     <Table border :columns="userColumns" :data="userList"></Table>
5 5
     <div class="page">
6
-      <Page :total="total" :pageSize='pageSize' :current='current' show-elevator />
6
+      <Page :total="total" :pageSize='pageSize' :current='current' @on-change='changePage' show-elevator />
7 7
     </div>
8 8
     <Modal v-model="showAdd" title="绑定" @on-ok="submit" @on-cancel="close">
9 9
       <label for="name" style="padding-right:20px;">项目名称</label>
10 10
       <Select v-model="name" style="width:300px">
11
-        <Option v-for="item in projectList" :value="item.value" :key="item.value">{{ item.label }}</Option>
11
+        <Option v-for="(item, index) in projectList" :value="item.OrgId" :key="index">{{ item.OrgName }}</Option>
12 12
     </Select>
13 13
     </Modal>
14 14
   </div>
@@ -21,38 +21,60 @@ export default {
21 21
   data () {
22 22
     return {
23 23
       pageSize: 10,
24
-      total: 100,
25
-      current: 2,
26 24
       showAdd: false,
27 25
       name: '',
26
+      chooseUser: '',
28 27
       userColumns: [
29 28
         {
30 29
           title: '头像',
31
-          key: 'name'
30
+          align: 'center',
31
+          key: 'Headimgurl',
32
+          render: (h, params) => {
33
+            return h('img', {
34
+              attrs: {
35
+                src: params.row.Headimgurl
36
+              },
37
+              style: {
38
+                'width': '40px',
39
+                'height': '40px',
40
+                'border-radius': '50%',
41
+                'margin': '5px 0'
42
+              }
43
+            }, '')
44
+          }
32 45
         },
33 46
         {
34 47
           title: '用户名',
35
-          key: 'age'
48
+          align: 'center',
49
+          key: 'UserName'
36 50
         },
37 51
         {
38 52
           title: '真实姓名',
39
-          key: 'province'
53
+          align: 'center',
54
+          key: 'RealName'
40 55
         },
41 56
         {
42 57
           title: '手机号',
43
-          key: 'city'
58
+          align: 'center',
59
+          key: 'Phone'
44 60
         },
45 61
         {
46 62
           title: '用户类型',
47
-          key: 'address'
63
+          align: 'center',
64
+          key: 'UserType'
48 65
         },
49 66
         {
50 67
           title: '绑定项目',
51
-          key: 'address'
68
+          align: 'center',
69
+          key: 'OrgName'
52 70
         },
53 71
         {
54 72
           title: '创建时间',
55
-          key: 'address'
73
+          align: 'center',
74
+          key: 'CreateDate',
75
+          render: (h, params) => {
76
+            return h('div', {}, this.toolClass.dateFormat(params.row.CreateDate))
77
+          }
56 78
         },
57 79
         {
58 80
           title: '操作',
@@ -71,14 +93,14 @@ export default {
71 93
                 on: {
72 94
                   click: () => { this.bindProject(params) }
73 95
                 },
74
-              }, params.row.age === 18 ? '绑定' : '取消绑定'),
96
+              }, params.row.OrgId ? '取消绑定' : '绑定'),
75 97
               h('Button', {
76 98
                 props: {
77 99
                   type: 'error',
78 100
                   size: 'default'
79 101
                 },
80 102
                 on: {
81
-                  click: () => { console.log(params) }
103
+                  click: () => { this.$router.push({ name: 'addUser', query: { id: params.row.UserId } }) }
82 104
                 }
83 105
               }, '编辑')
84 106
             ])
@@ -88,20 +110,28 @@ export default {
88 110
     }
89 111
   },
90 112
   created () {
113
+    this.getUserList({ page: this.current, pagesize: this.pageSize })
114
+    this.getProjectList()
91 115
   },
92 116
   computed: {
93 117
     ...mapUserState({
94 118
       userList: item => item.userList,
119
+      current: item => item.current,
120
+      total: item => item.total,
95 121
       projectList: item => item.projectList
96 122
     })
97 123
   },
98 124
   methods: {
99
-    ...mapUserActions(['getManagementList']),
125
+    ...mapUserActions(['getUserList', 'changeCurrent', 'getProjectList', 'BindProject']),
126
+    changePage (page) {
127
+      this.changeCurrent(page)
128
+    },
100 129
     bindProject (params) {
101 130
       this.showAdd = true
102
-      console.log(params)
131
+      this.chooseUser = params.row.UserId
103 132
     },
104 133
     submit () {
134
+      this.BindProject({ userId: this.chooseUser, orgId: this.name })
105 135
       this.close()
106 136
     },
107 137
     close () {
@@ -111,6 +141,15 @@ export default {
111 141
     addUser () {
112 142
       this.$router.push({ name: 'addUser' })
113 143
     }
144
+  },
145
+  watch: {
146
+    current: {
147
+      handler () {
148
+        this.getUserList({ page: this.current, pagesize: this.pageSize })
149
+      },
150
+      immediate: false,
151
+      deep: false
152
+    }
114 153
   }
115 154
 }
116 155
 </script>

+ 3
- 3
src/store/login.js 查看文件

@@ -21,15 +21,15 @@ export default {
21 21
   },
22 22
   actions: {
23 23
     login (context, data) {
24
+      console.log(context)
24 25
       return new Promise((resolve, reject) => {
25 26
         ajax({
26 27
           ...api.common.login,
27 28
           data: {
28 29
             ...data,
29 30
           }
30
-        }).then(res => {
31
-          // context.commit('updateList', res)
32
-          resolve(res)
31
+        }).then(() => {
32
+          resolve()
33 33
         }).catch(reject)
34 34
       })
35 35
     },

+ 6
- 7
src/store/main.js 查看文件

@@ -1,19 +1,19 @@
1 1
 import ajax from '../util/ajax'
2 2
 import api from '../util/api'
3
-import menuData from './menu.json' // 模拟数据
4 3
 
5 4
 export default {
6 5
   namespaced: true,
7 6
   state: {
8
-    menuData: menuData.result.menus,
7
+    menuData: [],
9 8
   },
10 9
   mutations: {
11 10
     updateMenu (state, data) {
12
-      state.menu = data || []
11
+      state.menuData = data || []
13 12
     }
14 13
   },
15 14
   actions: {
16 15
     login (context, data) {
16
+      context
17 17
       return new Promise((resolve, reject) => {
18 18
         ajax({
19 19
           ...api.common.login,
@@ -21,20 +21,19 @@ export default {
21 21
             ...data,
22 22
           }
23 23
         }).then(res => {
24
-          // context.commit('updateList', res)
25 24
           resolve(res)
26 25
         }).catch(reject)
27 26
       })
28 27
     },
29
-    setMenu (context, data) {
28
+    getMainMenu (context, data) {
30 29
       return new Promise((resolve, reject) => {
31 30
         ajax({
32
-          ...api.common.login,
31
+          ...api.common.menu,
33 32
           data: {
34 33
             ...data,
35 34
           }
36 35
         }).then(res => {
37
-          // context.commit('updateList', res)
36
+          context.commit('updateMenu', res)
38 37
           resolve(res)
39 38
         }).catch(reject)
40 39
       })

+ 33
- 1
src/store/reply.js 查看文件

@@ -34,11 +34,31 @@ export default {
34 34
         city: 'Ottawa',
35 35
         zip: 100000
36 36
       }
37
+    ],
38
+    tagList: [
39
+      {
40
+        name: '关键词1'
41
+      },
42
+      {
43
+        name: '关键词2'
44
+      },
45
+      {
46
+        name: '关键词3'
47
+      },
48
+      {
49
+        name: '关键词4'
50
+      },
51
+      {
52
+        name: '关键词5'
53
+      }
37 54
     ]
38 55
   },
39 56
   mutations: {
40 57
     updateKeywordList (state, data) {
41
-      state.img = data || []
58
+      state.keywordList = data || []
59
+    },
60
+    updateTagList (state, data) {
61
+      state.tagList = data || []
42 62
     }
43 63
   },
44 64
   actions: {
@@ -54,6 +74,18 @@ export default {
54 74
           resolve()
55 75
         }).catch(reject)
56 76
       })
77
+    },
78
+    changeTag (context, data) {
79
+      let res
80
+      if (data.type === 'add') {
81
+        context.state.tagList.push(data.data)
82
+        res = context.state.tagList
83
+      } else if (data.type === 'delete') {
84
+        context.state.tagList.splice(data.index, 1)
85
+        res = context.state.tagList
86
+        console.log(res)
87
+      }
88
+      context.commit('updateTagList', res)
57 89
     }
58 90
   }
59 91
 }

+ 79
- 50
src/store/user.js 查看文件

@@ -4,77 +4,106 @@ import api from '../util/api'
4 4
 export default {
5 5
   namespaced: true,
6 6
   state: {
7
-    userList: [
8
-      {
9
-        name: 'John Brown',
10
-        age: 18,
11
-        address: 'New York No. 1 Lake Park',
12
-        province: 'America',
13
-        city: 'New York'
14
-      },
15
-      {
16
-        name: 'Jim Green',
17
-        age: 24,
18
-        address: 'Washington, D.C. No. 1 Lake Park',
19
-        province: 'America',
20
-        city: 'Washington, D.C.'
21
-      },
22
-      {
23
-        name: 'Joe Black',
24
-        age: 30,
25
-        address: 'Sydney No. 1 Lake Park',
26
-        province: 'Australian',
27
-        city: 'Sydney'
28
-      },
29
-      {
30
-        name: 'Jon Snow',
31
-        age: 26,
32
-        address: 'Ottawa No. 2 Lake Park',
33
-        province: 'Canada',
34
-        city: 'Ottawa',
35
-        zip: 100000
36
-      }
37
-    ],
38
-    projectList: [
39
-      {
40
-        label: 'Jim Green',
41
-        value: 24,
42
-      },
43
-      {
44
-        label: 'Joe Black',
45
-        value: 30,
46
-      },
47
-      {
48
-        label: 'Jon Snow',
49
-        value: 26,
50
-      }]
7
+    userList: [],
8
+    current: 1,
9
+    total: 0,
10
+    projectList: [],
11
+    oldInfo: {}
51 12
   },
52 13
   mutations: {
53 14
     updateUserList (state, data) {
54
-      state.userList = data || []
55
-    }
15
+      state.userList = data.list || []
16
+      state.total = data.pagenum
17
+    },
18
+    updateCurrent (state, data) {
19
+      state.current = data
20
+    },
21
+    updateSysuserInfo (state, data) {
22
+      state.oldInfo = data
23
+    },
24
+    updateProjectList (state, data) {
25
+      state.projectList = data.list || []
26
+    },
56 27
   },
57 28
   actions: {
58 29
     getUserList (context, data) {
59 30
       return new Promise((resolve, reject) => {
60 31
         ajax({
61
-          ...api.common.getUserList,
62
-          data: data
32
+          ...api.user.getUserList,
33
+          queryData: {
34
+            ...data
35
+          }
63 36
         }).then((res) => {
64 37
           context.commit('updateUserList', res)
65 38
           resolve()
66 39
         }).catch(reject)
67 40
       })
68 41
     },
42
+    changeCurrent(context, data){
43
+      context.commit('updateCurrent', data)
44
+    },
69 45
     addUser (context, data) {
70 46
       return new Promise((resolve, reject) => {
71 47
         ajax({
72
-          ...api.common.addUser,
73
-          data: data
48
+          ...api.user.addUser,
49
+          data:{
50
+            ...data
51
+          }
74 52
         }).then((res) => {
53
+          console.log(res)
54
+          resolve()
55
+        }).catch(reject)
56
+      })
57
+    },
58
+    editUser (context, data) {
59
+      return new Promise((resolve, reject) => {
60
+        ajax({
61
+          ...api.user.editUser,
62
+          data: {
63
+            ...data
64
+          }
65
+        }).then((res) => {
66
+          console.log(res)
67
+          resolve()
68
+        }).catch(reject)
69
+      })
70
+    },
71
+    getSysuserInfo (context, data) {
72
+      return new Promise((resolve, reject) => {
73
+        ajax({
74
+          ...api.user.getSysuserInfo,
75
+          urlData:{
76
+            ...data
77
+          }
78
+        }).then((res) => {
79
+          context.commit('updateSysuserInfo', res)
80
+          resolve(res)
81
+        }).catch(reject)
82
+      })
83
+    },
84
+    getProjectList (context) {
85
+      return new Promise((resolve, reject) => {
86
+        ajax({
87
+          ...api.common.getProjectList,
88
+          queryData: {
89
+            page: 1,
90
+            pagesize: 10000
91
+          }
92
+        }).then((res) => {
93
+          context.commit('updateProjectList', res)
75 94
           resolve(res)
76 95
         }).catch(reject)
77 96
       })
97
+    },
98
+    BindProject (context, data) {
99
+      return new Promise((resolve, reject) => {
100
+        ajax({
101
+          ...api.user.bindProject,
102
+          urlData: { ...data }
103
+        }).then(() => {
104
+          resolve()
105
+        }).catch(reject)
106
+      })
78 107
     }
79 108
   }
80 109
 }

+ 35
- 6
src/util/api.js 查看文件

@@ -1,23 +1,52 @@
1 1
 const baseUrl = '/api'
2
-const common = '/common/MQ'
3
-// const guest = '/guest/:org'
2
+const admin = '/admin'
4 3
 
5 4
 const $api = {
6 5
   common: {
7
-    login: {
8
-      url: '',
6
+    login: { // 登录
7
+      url: `${baseUrl}/user/login`,
9 8
       method: 'post'
10 9
     },
11 10
     image: { // 图片上传
12 11
       method: 'post',
13
-      url: `${baseUrl}${common}/file`
12
+      url: `${baseUrl}${admin}/file`
13
+    },
14
+    menu: { // 获取侧边导航
15
+      url: `${baseUrl}${admin}/menu`,
16
+      method: 'get'
17
+    },
18
+    getProjectList:{ // 获取项目列表
19
+      url: `${baseUrl}${admin}/sysorg`,
20
+      method: 'get'
14 21
     }
15 22
   },
16 23
   index: {
17 24
     getWechatMenu: {
18
-      url: '',
25
+      url: `${baseUrl}${admin}/menu`,
19 26
       method: 'post'
20 27
     }
28
+  },
29
+  user: {
30
+    getUserList: { // 获取用户列表
31
+      url: `${baseUrl}${admin}/sysuser`,
32
+      method: 'get'
33
+    },
34
+    getSysuserInfo: { // 获取用户详情
35
+      url: `${baseUrl}${admin}/sysuser/:userId`,
36
+      method: 'get'
37
+    },
38
+    addUser:{ // 新增用户
39
+      url: `${baseUrl}${admin}/sysuser`,
40
+      method: 'post'
41
+    },
42
+    editUser:{ // 编辑用户
43
+      url: `${baseUrl}${admin}/sysuser`,
44
+      method: 'put'
45
+    },
46
+    bindProject:{ // 绑定项目
47
+      url: `${baseUrl}${admin}/sysuser/bind/:userId/:orgId`,
48
+      method: 'put'
49
+    }
21 50
   }
22 51
 }
23 52
 export default $api

+ 2
- 2
vue.config.js 查看文件

@@ -8,9 +8,9 @@ module.exports = {
8 8
       '/api': {
9 9
         // target: 'https://dp.huiju360.com.cn/hj_operations',
10 10
         // target: 'http://192.168.0.62:8080', // wf
11
-        // target: 'http://192.168.0.125:8080', // hyq
11
+        target: 'http://192.168.0.102:8080', // hyq
12 12
         // target: 'http://192.168.0.11', // ys
13
-        target: 'http://dev.ycjcjy.com', // frp
13
+        // target: 'http://dev.ycjcjy.com', // frp
14 14
         changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
15 15
         // pathRewrite: {
16 16
         //   '^/api': '/api-v2/api'