Browse Source

Merge branch 'dev' of http://git.ycjcjy.com/SpaceOfCheng/admin into dev

wangfei 6 years ago
parent
commit
d1c5217e87
27 changed files with 1115 additions and 327 deletions
  1. 1
    1
      src/pages/login/index.vue
  2. 5
    2
      src/pages/system/caseManager/caseInfo/index.vue
  3. 158
    0
      src/pages/system/caseManager/caseInfo/pplConcerned/editPPLConcerned/index.vue
  4. 56
    0
      src/pages/system/caseManager/caseInfo/pplConcerned/editPPLConcerned/page.scss
  5. 115
    0
      src/pages/system/caseManager/caseInfo/pplConcerned/index.vue
  6. 36
    0
      src/pages/system/caseManager/caseInfo/pplConcerned/page.scss
  7. 54
    15
      src/pages/system/channelManager/channelList/add.vue
  8. 65
    15
      src/pages/system/channelManager/channelList/edit.vue
  9. 12
    15
      src/pages/system/channelManager/channelList/index.vue
  10. 37
    9
      src/pages/system/cmsManager/bannerManager/add.vue
  11. 49
    11
      src/pages/system/cmsManager/bannerManager/edit.vue
  12. 1
    0
      src/pages/system/cmsManager/bannerManager/index.vue
  13. 1
    1
      src/pages/system/cmsManager/indexMsg/edit.vue
  14. 5
    15
      src/pages/system/cmsManager/indexMsg/index.vue
  15. 15
    19
      src/pages/system/cmsManager/majorProjects/add.vue
  16. 57
    25
      src/pages/system/cmsManager/majorProjects/edit.vue
  17. 34
    18
      src/pages/system/cmsManager/majorProjects/index.vue
  18. 51
    14
      src/pages/system/cmsManager/newsManager/add.vue
  19. 124
    47
      src/pages/system/cmsManager/newsManager/edit.vue
  20. 26
    19
      src/pages/system/cmsManager/newsManager/index.vue
  21. 33
    89
      src/pages/system/dataStatistics/frontEndUserList/index.vue
  22. 65
    3
      src/pages/system/index.vue
  23. 12
    0
      src/pages/system/page.js
  24. 43
    0
      src/pages/system/page.scss
  25. 2
    1
      src/pages/system/systemSet/userManager/index.vue
  26. 1
    1
      src/store/app.js
  27. 57
    7
      src/util/api.js

+ 1
- 1
src/pages/login/index.vue View File

@@ -71,7 +71,7 @@ export default {
71 71
           duration: 1000
72 72
         })
73 73
         setTimeout(() => {
74
-          this.$router.push({ name: 'system' })
74
+          this.$router.push({ name: 'userManager' })
75 75
         }, 1000)
76 76
       }).catch(msg => {
77 77
 

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

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

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

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

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

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

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

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

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

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

+ 54
- 15
src/pages/system/channelManager/channelList/add.vue View File

@@ -3,24 +3,27 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>渠道名:</span>
6
+          <span>选择案场:</span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9
-              <el-input
10
-                placeholder="请输入渠道名"
11
-                v-model="postData.channelName"
12
-                clearable>
13
-              </el-input>
9
+              <el-select v-model="CaseId" placeholder="请选择">
10
+                <el-option
11
+                  v-for="item in cases"
12
+                  :key="item.CaseId"
13
+                  :label="item.CaseName"
14
+                  :value="item.CaseId">
15
+                </el-option>
16
+              </el-select>
14 17
             </div>
15 18
           </div>
16 19
         </li>
17 20
         <li class="flex-h">
18
-          <span>渠道code:</span>
21
+          <span>渠道:</span>
19 22
           <div class="flex-item">
20 23
             <div style="width:50%">
21 24
               <el-input
22
-                placeholder="请输入渠道code"
23
-                v-model="postData.channelCode"
25
+                placeholder="请输入渠道"
26
+                v-model="postData.ChannelName"
24 27
                 clearable>
25 28
               </el-input>
26 29
             </div>
@@ -36,26 +39,62 @@
36 39
 </template>
37 40
 
38 41
 <script>
42
+import { mapState } from 'vuex'
39 43
 export default {
40 44
   name: '',
41 45
   data () {
42 46
     return {
43 47
       postData: {
44
-        channelName: '',
45
-        channelCode: ''
48
+        ChannelId: '', // 渠道id
49
+        ChannelName: '', // 渠道名称
50
+        CaseId: '', // 案场id
51
+        OrgId: '', // 机构id
52
+      }
53
+    }
54
+  },
55
+  computed: {
56
+    ...mapState({
57
+      cases: x => x.app.cases.list,
58
+      defaultCaseId: x => x.app.cases.default,
59
+      OrgId: x => x.app.user.OrgId,
60
+    }),
61
+    CaseId: {
62
+      get () {
63
+        return this.postData.CaseId === '' ? this.defaultCaseId || '' : this.postData.CaseId
64
+      },
65
+      set (val) {
66
+        this.postData.CaseId = val
46 67
       }
47 68
     }
48 69
   },
49 70
   components: {},
50 71
   methods: {
51
-    submit () {
52
-      console.log(this.postData)
72
+    submit () { // 提交数据
73
+      if (this.postData.ChannelName === '') {
74
+        this.$message({
75
+          type: 'error',
76
+          message: '渠道名称不能为空'
77
+        })
78
+        return false
79
+      }
80
+      this.postData.OrgId = this.OrgId
81
+      if (this.postData.CaseId === '') this.postData.CaseId = this.CaseId
82
+      this.$ajax(this.$api.channelManager.addChannel.url, {
83
+        method: this.$api.channelManager.addChannel.method,
84
+        data: this.postData
85
+      }).then(res => {
86
+        this.$message({
87
+          type: 'success',
88
+          message: '操作成功'
89
+        })
90
+        this.$router.push({ name: 'channelList' })
91
+      })
53 92
     },
54 93
     cancel () {
55
-      this.$router.go(-1)
94
+      this.$router.push({ name: 'channelList' })
56 95
     }
57 96
   },
58
-  mounted () {}
97
+  mounted () { }
59 98
 }
60 99
 </script>
61 100
 

+ 65
- 15
src/pages/system/channelManager/channelList/edit.vue View File

@@ -3,24 +3,27 @@
3 3
     <form class="mainForm">
4 4
       <ul>
5 5
         <li class="flex-h">
6
-          <span>渠道名:</span>
6
+          <span>选择案场:</span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%">
9
-              <el-input
10
-                placeholder="请输入渠道名"
11
-                v-model="postData.channelName"
12
-                clearable>
13
-              </el-input>
9
+              <el-select v-model="CaseId" placeholder="请选择">
10
+                <el-option
11
+                  v-for="item in cases"
12
+                  :key="item.CaseId"
13
+                  :label="item.CaseName"
14
+                  :value="item.CaseId">
15
+                </el-option>
16
+              </el-select>
14 17
             </div>
15 18
           </div>
16 19
         </li>
17 20
         <li class="flex-h">
18
-          <span>渠道code:</span>
21
+          <span>渠道:</span>
19 22
           <div class="flex-item">
20 23
             <div style="width:50%">
21 24
               <el-input
22
-                placeholder="请输入渠道code"
23
-                v-model="postData.channelCode"
25
+                placeholder="请输入渠道"
26
+                v-model="postData.ChannelName"
24 27
                 clearable>
25 28
               </el-input>
26 29
             </div>
@@ -36,26 +39,73 @@
36 39
 </template>
37 40
 
38 41
 <script>
42
+import { mapState } from 'vuex'
39 43
 export default {
40 44
   name: '',
41 45
   data () {
42 46
     return {
43 47
       postData: {
44
-        channelName: '',
45
-        channelCode: ''
48
+        ChannelId: '', // 渠道id
49
+        ChannelName: '', // 渠道名称
50
+        CaseId: '', // 案场id
51
+        OrgId: '', // 机构id
46 52
       }
47 53
     }
48 54
   },
55
+  computed: {
56
+    ...mapState({
57
+      cases: x => x.app.cases.list,
58
+      defaultCaseId: x => x.app.cases.default,
59
+      OrgId: x => x.app.user.OrgId,
60
+    }),
61
+    CaseId: {
62
+      get () {
63
+        return this.postData.CaseId === '' ? this.defaultCaseId || '' : this.postData.CaseId
64
+      },
65
+      set (val) {
66
+        this.postData.CaseId = val
67
+      }
68
+    }
69
+  },
70
+  created () {
71
+    this.getChannelInfo()
72
+  },
49 73
   components: {},
50 74
   methods: {
51
-    submit () {
52
-      console.log(this.postData)
75
+    getChannelInfo () {
76
+      this.$ajax(this.$api.channelManager.getChannelInfo.url, {
77
+        method: this.$api.channelManager.getChannelInfo.method,
78
+        urlData: { channelId: this.$route.query.id }
79
+      }).then(res => {
80
+        this.postData = res
81
+      })
82
+    },
83
+    submit () { // 提交数据
84
+      if (this.postData.ChannelName === '') {
85
+        this.$message({
86
+          type: 'error',
87
+          message: '渠道名称不能为空'
88
+        })
89
+        return false
90
+      }
91
+      this.postData.OrgId = this.OrgId
92
+      if (this.postData.CaseId === '') this.postData.CaseId = this.CaseId
93
+      this.$ajax(this.$api.channelManager.editChannel.url, {
94
+        method: this.$api.channelManager.editChannel.method,
95
+        data: this.postData
96
+      }).then(res => {
97
+        this.$message({
98
+          type: 'success',
99
+          message: '操作成功'
100
+        })
101
+        this.$router.push({ name: 'channelList' })
102
+      })
53 103
     },
54 104
     cancel () {
55
-      this.$router.go(-1)
105
+      this.$router.push({ name: 'channelList' })
56 106
     }
57 107
   },
58
-  mounted () {}
108
+  mounted () { }
59 109
 }
60 110
 </script>
61 111
 

+ 12
- 15
src/pages/system/channelManager/channelList/index.vue View File

@@ -26,16 +26,16 @@
26 26
     </div>
27 27
     <div class="system-table-box">
28 28
       <el-table
29
-        :data="tableData"
29
+        :data="currentList"
30 30
         stripe
31 31
         style="width: 100%">
32 32
         <el-table-column
33
-          prop="channelName"
34
-          label="渠道名">
33
+          prop="CaseName"
34
+          label="案场">
35 35
         </el-table-column>
36 36
         <el-table-column
37
-          prop="channelCode"
38
-          label="渠道code">
37
+          prop="ChannelName"
38
+          label="渠道名称">
39 39
         </el-table-column>
40 40
         <el-table-column label="操作">
41 41
           <template slot-scope="scope">
@@ -70,7 +70,7 @@ export default {
70 70
     return {
71 71
       total: 0,
72 72
       postData: { // 表格搜索条件
73
-        CaseId: '', // 案场id
73
+        caseid: '', // 案场id
74 74
         page: 1, // 当前页码
75 75
         pagesize: 10, // 请求数据量
76 76
       },
@@ -87,10 +87,10 @@ export default {
87 87
     }),
88 88
     CaseId: {
89 89
       get () {
90
-        return this.postData.CaseId || this.defaultCaseId
90
+        return this.postData.caseid || this.defaultCaseId
91 91
       },
92 92
       set (val) {
93
-        this.postData.CaseId = val
93
+        this.postData.caseid = val
94 94
       }
95 95
     }
96 96
   },
@@ -101,13 +101,10 @@ export default {
101 101
       this.getList()
102 102
     },
103 103
     getList () { // 获取列表
104
-      this.$ajax(this.$api.goodsManager.getGoodsTypeList.url, {
105
-        method: this.$api.goodsManager.getGoodsTypeList.method,
106
-        data: { ...this.postData, CaseId: this.CaseId }
104
+      this.$ajax(this.$api.channelManager.getChannelList.url, {
105
+        method: this.$api.channelManager.getChannelList.method,
106
+        queryData: { ...this.postData, caseid: this.CaseId }
107 107
       }).then(res => {
108
-        for (var n = 0; n < res.list.length; n++) {
109
-          res.list[n].CaseName = this.cases.filter(x => x.CaseId === res.list[n].CaseId)[0].CaseName
110
-        }
111 108
         this.currentList = res.list
112 109
         this.postData.page = res.page
113 110
         this.total = res.pagenum
@@ -117,7 +114,7 @@ export default {
117 114
       this.getList()
118 115
     },
119 116
     handleEdit (index, row) { // 编辑
120
-      this.$router.push({ name: 'editGoodsType', query: { id: row.TypeId } })
117
+      this.$router.push({ name: 'editChannel', query: { id: row.ChannelId } })
121 118
     },
122 119
     handleDelete (index, row) { // 删除
123 120
       let name = '确认删除规格“' + row.TypeName + '”?'

+ 37
- 9
src/pages/system/cmsManager/bannerManager/add.vue View File

@@ -63,13 +63,18 @@
63 63
           <span>图片:</span>
64 64
           <div class="flex-item">
65 65
             <el-upload
66
-              class="avatar-uploader"
67
-              :action='$api.file.image.url'
68
-              :show-file-list="false"
69
-              :on-success="handleAvatarSuccess">
70
-              <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
71
-              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
66
+              :action="$api.file.image.url"
67
+              :limit='limit'
68
+              list-type="picture-card"
69
+              :file-list='imgsArr'
70
+              :on-success="handlePictureCardPreview"
71
+              :on-remove="handleRemove"
72
+              :on-exceed="exceed">
73
+              <i class="el-icon-plus"></i>
72 74
             </el-upload>
75
+            <el-dialog :visible.sync="dialogVisible">
76
+              <img width="100%" :src="imgs" alt="">
77
+            </el-dialog>
73 78
           </div>
74 79
         </li>
75 80
         <!-- <li class="flex-h">
@@ -113,7 +118,11 @@ export default {
113 118
         Title: '',
114 119
         OrgId: '',
115 120
         CaseId: ''
116
-      }
121
+      },
122
+      dialogVisible: false,
123
+      imgs: '',
124
+      imgsArr: [],
125
+      limit: 1
117 126
     }
118 127
   },
119 128
   components: {},
@@ -137,6 +146,13 @@ export default {
137 146
     submit () {
138 147
       this.postData.OrgId = this.OrgId
139 148
       this.postData.ForwardType === '1' ? this.postData.ForwardType = 'url' : this.postData.ForwardType = 'course'
149
+      this.postData.ImageUrl = ''
150
+      for (let i = 0; i < this.imgsArr.length; i++) {
151
+        this.postData.ImageUrl += this.imgsArr[i].response.result.url + ','
152
+      }
153
+      if (this.postData.ImageUrl) {
154
+        this.postData.ImageUrl = this.postData.ImageUrl.substr(0, this.postData.ImageUrl.length - 1)
155
+      }
140 156
       this.$ajax(this.$api.cms.addImage.url, {
141 157
         method: this.$api.cms.addImage.method,
142 158
         data: this.postData
@@ -156,8 +172,20 @@ export default {
156 172
     cancel () {
157 173
       this.$router.go(-1)
158 174
     },
159
-    handleAvatarSuccess (res, file) {
160
-      this.postData.ImageUrl = res.result.url
175
+    handlePictureCardPreview (res, file, fileList) {
176
+      this.imgs = res.result.url
177
+      this.dialogVisible = true
178
+      this.imgsArr = fileList
179
+    },
180
+    handleRemove (file, fileList) {
181
+      this.imgsArr = fileList
182
+    },
183
+    exceed () {
184
+      this.$message({
185
+        message: '超过可传的图片上限',
186
+        type: 'info',
187
+        duration: 1000
188
+      })
161 189
     }
162 190
   }
163 191
 }

+ 49
- 11
src/pages/system/cmsManager/bannerManager/edit.vue View File

@@ -63,13 +63,18 @@
63 63
           <span>图片:</span>
64 64
           <div class="flex-item">
65 65
             <el-upload
66
-              class="avatar-uploader"
67
-              :action='$api.file.image.url'
68
-              :show-file-list="false"
69
-              :on-success="handleAvatarSuccess">
70
-              <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
71
-              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
66
+              :action="$api.file.image.url"
67
+              :limit='limit'
68
+              list-type="picture-card"
69
+              :file-list='imgsArr'
70
+              :on-success="handlePictureCardPreview"
71
+              :on-remove="handleRemove"
72
+              :on-exceed="exceed">
73
+              <i class="el-icon-plus"></i>
72 74
             </el-upload>
75
+            <el-dialog :visible.sync="dialogVisible">
76
+              <img width="100%" :src="imgs" alt="">
77
+            </el-dialog>
73 78
           </div>
74 79
         </li>
75 80
         <!-- <li class="flex-h">
@@ -113,7 +118,11 @@ export default {
113 118
         Title: '',
114 119
         OrgId: '',
115 120
         CaseId: ''
116
-      }
121
+      },
122
+      dialogVisible: false,
123
+      imgs: '',
124
+      imgsArr: [],
125
+      limit: 1
117 126
     }
118 127
   },
119 128
   components: {},
@@ -134,7 +143,13 @@ export default {
134 143
       this.postData.OrgId = this.OrgId
135 144
       this.postData.CaseId = this.CaseId
136 145
       this.postData.ForwardType === '1' ? this.postData.ForwardType = 'url' : this.postData.ForwardType = 'course'
137
-      console.log(this.postData)
146
+      this.postData.ImageUrl = ''
147
+      for (let i = 0; i < this.imgsArr.length; i++) {
148
+        this.postData.ImageUrl += this.imgsArr[i].response.result.url + ','
149
+      }
150
+      if (this.postData.ImageUrl) {
151
+        this.postData.ImageUrl = this.postData.ImageUrl.substr(0, this.postData.ImageUrl.length - 1)
152
+      }
138 153
       this.$ajax(this.$api.cms.editImage.url, {
139 154
         method: this.$api.cms.editImage.method,
140 155
         data: this.postData,
@@ -157,9 +172,6 @@ export default {
157 172
     cancel () {
158 173
       this.$router.go(-1)
159 174
     },
160
-    handleAvatarSuccess (res, file) {
161
-      this.postData.ImageUrl = res.result.url
162
-    },
163 175
     getDetail () {
164 176
       this.$ajax(this.$api.cms.imageDetail.url, {
165 177
         method: this.$api.cms.imageDetail.method,
@@ -170,10 +182,36 @@ export default {
170 182
         console.log(res)
171 183
         res.Status = res.Status + ''
172 184
         res.ForwardType === 'url' ? res.ForwardType = '1' : res.ForwardType = '0'
185
+        let imgsArr = []
186
+        let item = {
187
+          url: res.ImageUrl,
188
+          response: {
189
+            result: {
190
+              url: res.ImageUrl
191
+            }
192
+          }
193
+        }
194
+        imgsArr.push(item)
195
+        this.imgsArr = imgsArr
173 196
         this.postData = res
174 197
       }).catch(msg => {
175 198
 
176 199
       })
200
+    },
201
+    handlePictureCardPreview (res, file, fileList) {
202
+      this.imgs = res.result.url
203
+      this.dialogVisible = true
204
+      this.imgsArr = fileList
205
+    },
206
+    handleRemove (file, fileList) {
207
+      this.imgsArr = fileList
208
+    },
209
+    exceed () {
210
+      this.$message({
211
+        message: '超过可传的图片上限',
212
+        type: 'info',
213
+        duration: 1000
214
+      })
177 215
     }
178 216
   }
179 217
 }

+ 1
- 0
src/pages/system/cmsManager/bannerManager/index.vue View File

@@ -116,6 +116,7 @@ export default {
116 116
       this.$router.push({ name: 'addBanner' })
117 117
     },
118 118
     getList () {
119
+      this.tableData = []
119 120
       this.$ajax(this.$api.cms.imageList.url, {
120 121
         method: this.$api.cms.imageList.method,
121 122
         queryData: {

+ 1
- 1
src/pages/system/cmsManager/indexMsg/edit.vue View File

@@ -106,7 +106,7 @@ export default {
106 106
         data: this.postData
107 107
       }).then(res => {
108 108
         this.$message({
109
-          message: '添加成功',
109
+          message: '编辑成功',
110 110
           type: 'success',
111 111
           duration: 1000
112 112
         })

+ 5
- 15
src/pages/system/cmsManager/indexMsg/index.vue View File

@@ -104,30 +104,20 @@ export default {
104 104
       })
105 105
     },
106 106
     searchList (key) { // 搜索列表
107
-      this.$ajax(this.$api.cms.info.url, {
108
-        method: this.$api.cms.info.method,
109
-        queryData: {
110
-          page: this.postData.currentPage,
111
-          pagesize: 100,
112
-          title: key
113
-        }
114
-      }).then(res => {
115
-        this.tableData = res.list
116
-        this.postData.total = res.pagenum
117
-        this.postData.currentPage = res.page
118
-      }).catch(msg => {
119
-
120
-      })
107
+      this.tableSearch.key = key
108
+      this.getList()
121 109
     },
122 110
     addIndexMsg () {
123 111
       this.$router.push({ name: 'addIndexMsg' })
124 112
     },
125 113
     getList () {
114
+      this.tableData = []
126 115
       this.$ajax(this.$api.cms.info.url, {
127 116
         method: this.$api.cms.info.method,
128 117
         queryData: {
129 118
           page: this.postData.currentPage,
130
-          pagesize: this.postData.pageSize
119
+          pagesize: this.postData.pageSize,
120
+          title: this.tableSearch.key
131 121
         }
132 122
       }).then(res => {
133 123
         this.tableData = res.list

+ 15
- 19
src/pages/system/cmsManager/majorProjects/add.vue View File

@@ -48,6 +48,7 @@
48 48
               :action="$api.file.image.url"
49 49
               list-type="picture-card"
50 50
               :on-success="handlePictureCardPreview"
51
+              :file-list='imgsArr'
51 52
               :on-remove="handleRemove">
52 53
               <i class="el-icon-plus"></i>
53 54
             </el-upload>
@@ -62,6 +63,7 @@
62 63
             <el-upload
63 64
               :action='$api.file.image.url'
64 65
               list-type="picture-card"
66
+              :file-list='detailimgsArr'
65 67
               :on-success="handlePictureCardPreviewDetail"
66 68
               :on-remove="handleRemoveDetail">
67 69
               <i class="el-icon-plus"></i>
@@ -89,8 +91,8 @@
89 91
           <span>是否前台展示:</span>
90 92
           <div class="flex-item">
91 93
             <div style="width:50%" class="radio">
92
-              <el-radio v-model="postData.IsAllCourse" label='1' >是</el-radio>
93
-              <el-radio v-model="postData.IsAllCourse" label='0' >否</el-radio>
94
+              <el-radio v-model="postData.Status" label='1' >是</el-radio>
95
+              <el-radio v-model="postData.Status" label='0' >否</el-radio>
94 96
             </div>
95 97
           </div>
96 98
         </li>
@@ -114,7 +116,7 @@ export default {
114 116
         Name: '',
115 117
         Title: '',
116 118
         DetailContent: '',
117
-        IsAllCourse: '1',
119
+        Status: '1',
118 120
         imgs: '',
119 121
         detailimgs: '',
120 122
         courseids: ''
@@ -139,6 +141,8 @@ export default {
139 141
     ...mapActions(['updateSystemInfo']),
140 142
     submit () {
141 143
       this.postData.OrgId = this.OrgId
144
+      this.postData.imgs = ''
145
+      this.postData.detailimgs = ''
142 146
       for (let i = 0; i < this.imgsArr.length; i++) {
143 147
         this.postData.imgs += this.imgsArr[i].response.result.url + ','
144 148
       }
@@ -166,29 +170,21 @@ export default {
166 170
     cancel () {
167 171
       this.$router.go(-1)
168 172
     },
169
-    handlePictureCardPreview (res, file) {
173
+    handlePictureCardPreview (res, file, fileList) {
170 174
       this.imgs = res.result.url
171 175
       this.dialogVisible = true
172
-      this.imgsArr.push(file)
176
+      this.imgsArr = fileList
173 177
     },
174
-    handleRemove (file) {
175
-      for (let i = 0; i < this.imgsArr.length; i++) {
176
-        if (this.imgsArr[i].uid === file.uid) {
177
-          this.imgsArr.splice(i, 1)
178
-        }
179
-      }
178
+    handleRemove (file, fileList) {
179
+      this.imgsArr = fileList
180 180
     },
181
-    handlePictureCardPreviewDetail (res, file) {
181
+    handlePictureCardPreviewDetail (res, file, fileList) {
182 182
       this.detailimgs = res.result.url
183 183
       this.dialogVisibleDetail = true
184
-      this.detailimgsArr.push(file)
184
+      this.detailimgsArr = fileList
185 185
     },
186
-    handleRemoveDetail (file) {
187
-      for (let i = 0; i < this.detailimgsArr.length; i++) {
188
-        if (this.detailimgsArr[i].uid === file.uid) {
189
-          this.detailimgsArr.splice(i, 1)
190
-        }
191
-      }
186
+    handleRemoveDetail (file, fileList) {
187
+      this.detailimgsArr = fileList
192 188
     }
193 189
   },
194 190
   created () {

+ 57
- 25
src/pages/system/cmsManager/majorProjects/edit.vue View File

@@ -47,6 +47,7 @@
47 47
             <el-upload
48 48
               :action="$api.file.image.url"
49 49
               list-type="picture-card"
50
+              :file-list='imgsArr'
50 51
               :on-success="handlePictureCardPreview"
51 52
               :on-remove="handleRemove">
52 53
               <i class="el-icon-plus"></i>
@@ -62,6 +63,7 @@
62 63
             <el-upload
63 64
               :action='$api.file.image.url'
64 65
               list-type="picture-card"
66
+              :file-list='detailimgsArr'
65 67
               :on-success="handlePictureCardPreviewDetail"
66 68
               :on-remove="handleRemoveDetail">
67 69
               <i class="el-icon-plus"></i>
@@ -89,8 +91,8 @@
89 91
           <span>是否前台展示:</span>
90 92
           <div class="flex-item">
91 93
             <div style="width:50%" class="radio">
92
-              <el-radio v-model="postData.IsAllCourse" label='1' >是</el-radio>
93
-              <el-radio v-model="postData.IsAllCourse" label='0' >否</el-radio>
94
+              <el-radio v-model="postData.Status" label='1' >是</el-radio>
95
+              <el-radio v-model="postData.Status" label='0' >否</el-radio>
94 96
             </div>
95 97
           </div>
96 98
         </li>
@@ -114,7 +116,7 @@ export default {
114 116
         Name: '',
115 117
         Title: '',
116 118
         DetailContent: '',
117
-        IsAllCourse: '1',
119
+        Status: '1',
118 120
         imgs: '',
119 121
         detailimgs: '',
120 122
         courseids: ''
@@ -138,20 +140,30 @@ export default {
138 140
   methods: {
139 141
     submit () {
140 142
       this.postData.OrgId = this.OrgId
143
+      this.postData.imgs = ''
144
+      this.postData.detailimgs = ''
141 145
       for (let i = 0; i < this.imgsArr.length; i++) {
142 146
         this.postData.imgs += this.imgsArr[i].response.result.url + ','
143 147
       }
144
-      this.postData.imgs = this.postData.imgs.substr(0, this.postData.imgs.length - 1)
148
+      if (this.postData.imgs) {
149
+        this.postData.imgs = this.postData.imgs.substr(0, this.postData.imgs.length - 1)
150
+      }
145 151
       for (let i = 0; i < this.detailimgsArr.length; i++) {
146 152
         this.postData.detailimgs += this.detailimgsArr[i].response.result.url + ','
147 153
       }
148
-      this.postData.detailimgs = this.postData.detailimgs.substr(0, this.postData.detailimgs.length - 1)
149
-      this.$ajax(this.$api.cms.addCase.url, {
150
-        method: this.$api.cms.addCase.method,
154
+      if (this.postData.detailimgs) {
155
+        this.postData.detailimgs = this.postData.detailimgs.substr(0, this.postData.detailimgs.length - 1)
156
+      }
157
+      console.log(this.postData)
158
+      this.$ajax(this.$api.cms.editCase.url, {
159
+        method: this.$api.cms.editCase.method,
160
+        urlData: {
161
+          id: this.$route.query.id
162
+        },
151 163
         data: this.postData
152 164
       }).then(res => {
153 165
         this.$message({
154
-          message: '添加成功',
166
+          message: '编辑成功',
155 167
           type: 'success',
156 168
           duration: 1000
157 169
         })
@@ -165,29 +177,22 @@ export default {
165 177
     cancel () {
166 178
       this.$router.go(-1)
167 179
     },
168
-    handlePictureCardPreview (res, file) {
180
+    handlePictureCardPreview (res, file, fileList) {
169 181
       this.imgs = res.result.url
170 182
       this.dialogVisible = true
171
-      this.imgsArr.push(file)
183
+      this.imgsArr = fileList
184
+      console.log(this.imgsArr)
172 185
     },
173
-    handleRemove (file) {
174
-      for (let i = 0; i < this.imgsArr.length; i++) {
175
-        if (this.imgsArr[i].uid === file.uid) {
176
-          this.imgsArr.splice(i, 1)
177
-        }
178
-      }
186
+    handleRemove (file, fileList) {
187
+      this.imgsArr = fileList
179 188
     },
180
-    handlePictureCardPreviewDetail (res, file) {
189
+    handlePictureCardPreviewDetail (res, file, fileList) {
181 190
       this.detailimgs = res.result.url
182 191
       this.dialogVisibleDetail = true
183
-      this.detailimgsArr.push(file)
192
+      this.detailimgsArr = fileList
184 193
     },
185
-    handleRemoveDetail (file) {
186
-      for (let i = 0; i < this.detailimgsArr.length; i++) {
187
-        if (this.detailimgsArr[i].uid === file.uid) {
188
-          this.detailimgsArr.splice(i, 1)
189
-        }
190
-      }
194
+    handleRemoveDetail (file, fileList) {
195
+      this.detailimgsArr = fileList
191 196
     },
192 197
     getDetail () {
193 198
       this.$ajax(this.$api.cms.caseDetail.url, {
@@ -197,7 +202,34 @@ export default {
197 202
         }
198 203
       }).then(res => {
199 204
         console.log(res)
200
-        res.IsAllCourse += ''
205
+        res.Status += ''
206
+        let imgsArr = []
207
+        let detailimgsArr = []
208
+        for (let i = 0; i < res.CmsCaseImgs.length; i++) {
209
+          if (res.CmsCaseImgs[i].ImageType === 'cover') {
210
+            let item = {
211
+              url: res.CmsCaseImgs[i].CaseImageUrl,
212
+              response: {
213
+                result: {
214
+                  url: res.CmsCaseImgs[i].CaseImageUrl
215
+                }
216
+              }
217
+            }
218
+            imgsArr.push(item)
219
+          } else if (res.CmsCaseImgs[i].ImageType === 'detail') {
220
+            let item = {
221
+              url: res.CmsCaseImgs[i].CaseImageUrl,
222
+              response: {
223
+                result: {
224
+                  url: res.CmsCaseImgs[i].CaseImageUrl
225
+                }
226
+              }
227
+            }
228
+            detailimgsArr.push(item)
229
+          }
230
+        }
231
+        this.imgsArr = imgsArr
232
+        this.detailimgsArr = detailimgsArr
201 233
         this.postData = res
202 234
       }).catch(msg => {
203 235
 

+ 34
- 18
src/pages/system/cmsManager/majorProjects/index.vue View File

@@ -45,21 +45,17 @@
45 45
         </el-table-column>
46 46
         <el-table-column label="操作" width="450">
47 47
           <template slot-scope="scope">
48
-            <el-button v-if="!scope.row.isShow"
48
+            <el-button
49 49
               size="mini"
50 50
               type="primary"
51
-              @click="showItem(scope.$index, scope.row)">前台展示</el-button>
52
-            <el-button v-if="scope.row.isShow"
53
-              size="mini"
54
-              type="danger"
55
-              @click="cancelShowItem(scope.$index, scope.row)">取消前台展示</el-button>
51
+              @click="showItem(scope.$index, scope.row)"><span v-if="scope.row.Status === 1">取消前台展示</span><span v-if="scope.row.Status === 0">前台展示</span></el-button>
56 52
             <el-button
57 53
               size="mini"
58 54
               type="warning"
59 55
               @click="editItem(scope.$index, scope.row)">编辑</el-button>
60
-            <el-button
56
+            <!-- <el-button
61 57
               size="mini"
62
-              @click="copyItemUrl(scope.$index, scope.row)">复制专题链接</el-button>
58
+              @click="copyItemUrl(scope.$index, scope.row)">复制专题链接</el-button> -->
63 59
             <el-button
64 60
               size="mini"
65 61
               type="danger"
@@ -121,18 +117,16 @@ export default {
121 117
       this.getList()
122 118
     },
123 119
     showItem (index, row) { // 前台显示
124
-      console.log(index, row)
125
-    },
126
-    cancelShowItem (index, row) { // 取消前台显示
127
-      console.log(index, row)
120
+      this.editIsAllCourse(row)
128 121
     },
129 122
     editItem (index, row) { // 编辑
130 123
       console.log(index, row)
131 124
       this.$router.push({ name: 'editIndexCase', query: { id: row.CmsCaseId } })
132 125
     },
133
-    copyItemUrl (index, row) { // 复制专题链接
134
-      console.log(index, row)
135
-    },
126
+    // copyItemUrl (index, row) { // 复制专题链接
127
+    //   console.log(index, row)
128
+    //   window.clipboardData.setData('Text', row.Title)
129
+    // },
136 130
     deleteItem (index, row) { // 删除
137 131
       console.log(index, row)
138 132
       this.$confirm('确认删除此项目专题?', '提示', {
@@ -149,18 +143,21 @@ export default {
149 143
       })
150 144
     },
151 145
     searchList (key) { // 搜索列表
152
-      console.log(key)
146
+      this.tableSearch.key = key
147
+      this.getList()
153 148
     },
154 149
     addMajorProjects () {
155 150
       this.$router.push({ name: 'addIndexCase' })
156 151
     },
157 152
     getList () {
153
+      this.tableData = []
158 154
       this.$ajax(this.$api.cms.case.url, {
159 155
         method: this.$api.cms.case.method,
160 156
         queryData: {
161 157
           page: this.postData.currentPage,
162 158
           pagesize: this.postData.pageSize,
163
-          caseid: this.tableSearch.caseId
159
+          caseid: this.tableSearch.caseId,
160
+          name: this.tableSearch.key
164 161
         }
165 162
       }).then(res => {
166 163
         for (let i = 0; i < res.list.length; i++) {
@@ -188,7 +185,26 @@ export default {
188 185
       }).catch(msg => {
189 186
 
190 187
       })
191
-    }
188
+    },
189
+    editIsAllCourse (data) {
190
+      console.log(data)
191
+      let api = data.Status === 1 ? this.$api.cms.caseHide : this.$api.cms.caseShow
192
+      this.$ajax(api.url, {
193
+        method: api.method,
194
+        urlData: {
195
+          id: data.CmsCaseId
196
+        }
197
+      }).then(res => {
198
+        this.$message({
199
+          message: '编辑成功',
200
+          type: 'success',
201
+          duration: 1000
202
+        })
203
+        this.getList()
204
+      }).catch(msg => {
205
+
206
+      })
207
+    },
192 208
   }
193 209
 }
194 210
 </script>

+ 51
- 14
src/pages/system/cmsManager/newsManager/add.vue View File

@@ -36,7 +36,7 @@
36 36
           <span>图片位置:</span>
37 37
           <div class="flex-item">
38 38
             <div style="width:50%">
39
-              <el-select v-model="postData.LocationId" placeholder="请选择">
39
+              <el-select v-model="postData.LocationIds" multiple placeholder="请选择">
40 40
                 <el-option
41 41
                   v-for="item in positionList"
42 42
                   :key="item.LocationId"
@@ -63,13 +63,18 @@
63 63
           <span>图片:</span>
64 64
           <div class="flex-item">
65 65
             <el-upload
66
-              class="avatar-uploader"
67
-              :action='$api.file.image.url'
68
-              :show-file-list="false"
69
-              :on-success="handleAvatarSuccess">
70
-              <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
71
-              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
66
+              :action="$api.file.image.url"
67
+              :limit='limit'
68
+              list-type="picture-card"
69
+              :file-list='imgsArr'
70
+              :on-success="handlePictureCardPreview"
71
+              :on-remove="handleRemove"
72
+              :on-exceed="exceed">
73
+              <i class="el-icon-plus"></i>
72 74
             </el-upload>
75
+            <el-dialog :visible.sync="dialogVisible">
76
+              <img width="100%" :src="imgs" alt="">
77
+            </el-dialog>
73 78
           </div>
74 79
         </li>
75 80
         <li style="text-align:center">
@@ -82,7 +87,8 @@
82 87
 </template>
83 88
 
84 89
 <script>
85
-import { mapState } from 'vuex'
90
+import { mapState, mapActions, createNamespacedHelpers } from 'vuex'
91
+const { mapActions: mapCmsActions } = createNamespacedHelpers('cms')
86 92
 export default {
87 93
   name: '',
88 94
   data () {
@@ -92,26 +98,46 @@ export default {
92 98
         ForwardUrl: '',
93 99
         ForwardResourceId: '',
94 100
         Status: '1',
95
-        LocationIds: '1',
101
+        LocationIds: [],
96 102
         ImageUrl: '',
97 103
         Title: '',
98 104
         OrgId: '',
99 105
         CaseId: ''
100
-      }
106
+      },
107
+      dialogVisible: false,
108
+      imgs: '',
109
+      imgsArr: [],
110
+      limit: 1
101 111
     }
102 112
   },
103 113
   components: {},
114
+  created () {
115
+    this.updateSystemInfo().then(() => {
116
+      this.postData.OrgId = this.OrgId
117
+      this.postData.CaseId = this.CaseId
118
+    })
119
+  },
104 120
   computed: {
105 121
     ...mapState({
106 122
       positionList: x => x.cms.location,
107 123
       OrgId: x => x.app.user.OrgId,
124
+      CaseId: x => x.app.cases.default,
108 125
     })
109 126
   },
110 127
   methods: {
128
+    ...mapActions(['updateSystemInfo']),
129
+    ...mapCmsActions(['updateLocationInfo']),
111 130
     submit () {
112 131
       console.log(this.postData)
113
-      this.postData.OrgId = this.OrgId
114 132
       this.postData.ForwardType === '1' ? this.postData.ForwardType = 'url' : this.postData.ForwardType = 'course'
133
+      this.postData.locationids = this.postData.LocationIds.join(',')
134
+      this.postData.ImageUrl = ''
135
+      for (let i = 0; i < this.imgsArr.length; i++) {
136
+        this.postData.ImageUrl += this.imgsArr[i].response.result.url + ','
137
+      }
138
+      if (this.postData.ImageUrl) {
139
+        this.postData.ImageUrl = this.postData.ImageUrl.substr(0, this.postData.ImageUrl.length - 1)
140
+      }
115 141
       this.$ajax(this.$api.cms.addNews.url, {
116 142
         method: this.$api.cms.addNews.method,
117 143
         data: this.postData
@@ -131,9 +157,20 @@ export default {
131 157
     cancel () {
132 158
       this.$router.go(-1)
133 159
     },
134
-    handleAvatarSuccess (res, file) {
135
-      console.log(res)
136
-      this.postData.ImageUrl = res.result.url
160
+    handlePictureCardPreview (res, file, fileList) {
161
+      this.imgs = res.result.url
162
+      this.dialogVisible = true
163
+      this.imgsArr = fileList
164
+    },
165
+    handleRemove (file, fileList) {
166
+      this.imgsArr = fileList
167
+    },
168
+    exceed () {
169
+      this.$message({
170
+        message: '超过可传的图片上限',
171
+        type: 'info',
172
+        duration: 1000
173
+      })
137 174
     }
138 175
   }
139 176
 }

+ 124
- 47
src/pages/system/cmsManager/newsManager/edit.vue View File

@@ -6,8 +6,8 @@
6 6
           <span>跳转类型:</span>
7 7
           <div class="flex-item">
8 8
             <div style="width:50%" class="radio">
9
-                <el-radio v-model="postData.jumpType" label='0' >连接</el-radio>
10
-                <el-radio v-model="postData.jumpType" label='1' >课程</el-radio>
9
+                <el-radio v-model="postData.ForwardType" label='1' >连接</el-radio>
10
+                <el-radio v-model="postData.ForwardType" label='0' >课程</el-radio>
11 11
             </div>
12 12
           </div>
13 13
         </li>
@@ -17,7 +17,7 @@
17 17
             <div style="width:50%">
18 18
               <el-input
19 19
                 placeholder="请输入连接"
20
-                v-model="postData.link"
20
+                v-model="postData.ForwardUrl"
21 21
                 clearable>
22 22
               </el-input>
23 23
             </div>
@@ -27,8 +27,8 @@
27 27
           <span>是否发布:</span>
28 28
           <div class="flex-item">
29 29
             <div style="width:50%" class="radio">
30
-              <el-radio v-model="postData.release" label='0' >是</el-radio>
31
-                <el-radio v-model="postData.release" label='1' >否</el-radio>
30
+              <el-radio v-model="postData.Status" label='1' >是</el-radio>
31
+                <el-radio v-model="postData.Status" label='0' >否</el-radio>
32 32
             </div>
33 33
           </div>
34 34
         </li>
@@ -36,33 +36,24 @@
36 36
           <span>图片位置:</span>
37 37
           <div class="flex-item">
38 38
             <div style="width:50%">
39
-              <el-select v-model="postData.position" placeholder="请选择">
39
+              <el-select v-model="postData.LocationIds" multiple placeholder="请选择">
40 40
                 <el-option
41 41
                   v-for="item in positionList"
42
-                  :key="item.value"
43
-                  :label="item.label"
44
-                  :value="item.value">
42
+                  :key="item.LocationId"
43
+                  :label="item.LocationName"
44
+                  :value="item.LocationId">
45 45
                 </el-option>
46 46
               </el-select>
47 47
             </div>
48 48
           </div>
49 49
         </li>
50
-        <li class="flex-h">
51
-          <span>是否推荐到首页:</span>
52
-          <div class="flex-item">
53
-            <div style="width:50%" class="radio">
54
-              <el-radio v-model="postData.index" label='0' >是</el-radio>
55
-                <el-radio v-model="postData.index" label='1' >否</el-radio>
56
-            </div>
57
-          </div>
58
-        </li>
59 50
         <li class="flex-h">
60 51
           <span>标题:</span>
61 52
           <div class="flex-item">
62 53
             <div style="width:50%">
63 54
               <el-input
64
-                placeholder="请输入真实姓名"
65
-                v-model="postData.realName"
55
+                placeholder="请输入标题"
56
+                v-model="postData.Title"
66 57
                 clearable>
67 58
               </el-input>
68 59
             </div>
@@ -71,13 +62,19 @@
71 62
         <li class="flex-h">
72 63
           <span>图片:</span>
73 64
           <div class="flex-item">
74
-            <div>
75
-              <a class="formImg">
76
-                <img src="" class="centerLabel contain" alt="">
77
-                <i class="iconfont icon-quxiao"></i>
78
-              </a>
79
-              <el-button type="success" size="mini">上传图片</el-button>
80
-            </div>
65
+            <el-upload
66
+              :action="$api.file.image.url"
67
+              :limit='limit'
68
+              list-type="picture-card"
69
+              :file-list='imgsArr'
70
+              :on-success="handlePictureCardPreview"
71
+              :on-remove="handleRemove"
72
+              :on-exceed="exceed">
73
+              <i class="el-icon-plus"></i>
74
+            </el-upload>
75
+            <el-dialog :visible.sync="dialogVisible">
76
+              <img width="100%" :src="imgs" alt="">
77
+            </el-dialog>
81 78
           </div>
82 79
         </li>
83 80
         <li style="text-align:center">
@@ -90,42 +87,122 @@
90 87
 </template>
91 88
 
92 89
 <script>
90
+import { mapState, createNamespacedHelpers } from 'vuex'
91
+const { mapActions: mapCmsActions } = createNamespacedHelpers('cms')
93 92
 export default {
94 93
   name: '',
95 94
   data () {
96 95
     return {
97 96
       postData: {
98
-        jumpType: '0',
99
-        link: '',
100
-        release: '0',
101
-        position: '',
102
-        index: '0'
97
+        ForwardType: '1',
98
+        ForwardUrl: '',
99
+        ForwardResourceId: '',
100
+        Status: '1',
101
+        LocationIds: [],
102
+        ImageUrl: '',
103
+        Title: '',
104
+        OrgId: '',
105
+        CaseId: ''
103 106
       },
104
-      positionList: [{
105
-        value: '0',
106
-        label: '首页'
107
-      }, {
108
-        value: '1',
109
-        label: '精选'
110
-      }, {
111
-        value: '2',
112
-        label: '社交'
113
-      }, {
114
-        value: '3',
115
-        label: '健身'
116
-      }],
107
+      dialogVisible: false,
108
+      imgs: '',
109
+      imgsArr: [],
110
+      limit: 1
117 111
     }
118 112
   },
119 113
   components: {},
114
+  created () {
115
+    this.updateLocationInfo().then(() => {
116
+      this.getDetail()
117
+    })
118
+  },
119
+  computed: {
120
+    ...mapState({
121
+      positionList: x => x.cms.location
122
+    })
123
+  },
120 124
   methods: {
125
+    ...mapCmsActions(['updateLocationInfo']),
121 126
     submit () {
122 127
       console.log(this.postData)
128
+      this.postData.ForwardType === '1' ? this.postData.ForwardType = 'url' : this.postData.ForwardType = 'course'
129
+      this.postData.locationids = this.postData.LocationIds.join(',')
130
+      this.postData.ImageUrl = ''
131
+      for (let i = 0; i < this.imgsArr.length; i++) {
132
+        this.postData.ImageUrl += this.imgsArr[i].response.result.url + ','
133
+      }
134
+      if (this.postData.ImageUrl) {
135
+        this.postData.ImageUrl = this.postData.ImageUrl.substr(0, this.postData.ImageUrl.length - 1)
136
+      }
137
+      this.$ajax(this.$api.cms.editNews.url, {
138
+        method: this.$api.cms.editNews.method,
139
+        urlData: {
140
+          id: this.$route.query.id
141
+        },
142
+        data: this.postData
143
+      }).then(res => {
144
+        this.$message({
145
+          message: '编辑成功',
146
+          type: 'success',
147
+          duration: 1000
148
+        })
149
+        setTimeout(() => {
150
+          this.$router.push({ name: 'newsManager' })
151
+        }, 1000)
152
+      }).catch(msg => {
153
+
154
+      })
123 155
     },
124 156
     cancel () {
125 157
       this.$router.go(-1)
158
+    },
159
+    handlePictureCardPreview (res, file, fileList) {
160
+      this.imgs = res.result.url
161
+      this.dialogVisible = true
162
+      this.imgsArr = fileList
163
+    },
164
+    handleRemove (file, fileList) {
165
+      this.imgsArr = fileList
166
+    },
167
+    exceed () {
168
+      this.$message({
169
+        message: '超过可传的图片上限',
170
+        type: 'info',
171
+        duration: 1000
172
+      })
173
+    },
174
+    getDetail () {
175
+      this.$ajax(this.$api.cms.newsDetail.url, {
176
+        method: this.$api.cms.newsDetail.method,
177
+        urlData: {
178
+          id: this.$route.query.id
179
+        }
180
+      }).then(res => {
181
+        res.ForwardType === 'url' ? res.ForwardType = '1' : res.ForwardType = '0'
182
+        res.Status += ''
183
+        res.LocationIds = res.NewsLocations.reduce((previousValue, currentValue, index, array) => {
184
+          console.log(previousValue)
185
+          previousValue.push(currentValue.LocationId)
186
+          return previousValue
187
+        }, [])
188
+        console.log(res.LocationIds)
189
+        let imgsArr = []
190
+        let item = {
191
+          url: res.ImageUrl,
192
+          response: {
193
+            result: {
194
+              url: res.ImageUrl
195
+            }
196
+          }
197
+        }
198
+        imgsArr.push(item)
199
+        this.imgsArr = imgsArr
200
+        this.postData = res
201
+      }).catch(msg => {
202
+
203
+      })
126 204
     }
127
-  },
128
-  mounted () { }
205
+  }
129 206
 }
130 207
 </script>
131 208
 

+ 26
- 19
src/pages/system/cmsManager/newsManager/index.vue View File

@@ -41,7 +41,7 @@
41 41
           label="标题">
42 42
         </el-table-column>
43 43
         <el-table-column
44
-          prop="LocationShow"
44
+          prop="LocationNames"
45 45
           label="位置">
46 46
         </el-table-column>
47 47
         <el-table-column
@@ -65,9 +65,9 @@
65 65
     <el-pagination
66 66
       @current-change="handleCurrentChange"
67 67
       :current-page.sync="postData.currentPage"
68
-      :page-size="10"
68
+      :page-size="postData.pageSize"
69 69
       layout="prev, pager, next, jumper"
70
-      :total="100">
70
+      :total="postData.total">
71 71
     </el-pagination>
72 72
   </div>
73 73
 </template>
@@ -112,7 +112,7 @@ export default {
112 112
     },
113 113
     handleEdit (index, row) { // 编辑
114 114
       console.log(index, row)
115
-      this.$router.push({ name: 'editNews' })
115
+      this.$router.push({ name: 'editNews', query: { id: row.NewsId } })
116 116
     },
117 117
     handleDelete (index, row) { // 删除
118 118
       console.log(index, row)
@@ -121,10 +121,7 @@ export default {
121 121
         cancelButtonText: '取消',
122 122
         type: 'warning'
123 123
       }).then(() => {
124
-        this.$message({
125
-          type: 'success',
126
-          message: '删除成功!'
127
-        })
124
+        this.deleteNews(row.NewsId)
128 125
       }).catch(() => {
129 126
         this.$message({
130 127
           type: 'info',
@@ -133,37 +130,47 @@ export default {
133 130
       })
134 131
     },
135 132
     searchList (key) { // 搜索列表
136
-      console.log(key)
133
+      this.tableSearch.key = key
134
+      this.getList()
137 135
     },
138 136
     addNews () {
139 137
       this.$router.push({ name: 'addNews' })
140 138
     },
141 139
     getList () {
140
+      this.tableData = []
142 141
       this.$ajax(this.$api.cms.news.url, {
143 142
         method: this.$api.cms.news.method,
144 143
         queryData: {
145 144
           page: this.postData.currentPage,
146 145
           pagesize: this.postData.pageSize,
147
-          locationid: this.tableSearch.LocationId
146
+          locationid: this.tableSearch.LocationId,
147
+          title: this.tableSearch.key
148 148
         }
149 149
       }).then(res => {
150
-        let that = this
151
-        console.log(that.positionList)
152
-        console.log(res.list)
153 150
         for (let i = 0; i < res.list.length; i++) {
154 151
           res.list[i].Status === 1 ? res.list[i].StatusShow = '是' : res.list[i].StatusShow = '否'
155
-          for (let j = 0; j < that.positionList.length; i++) {
156
-            if (res.list[i].LocationIds === that.positionList[j].LocationId) {
157
-              res.list[i].LocationShow = that.positionList[j].LocationName
158
-            }
159
-          }
160 152
         }
161
-        console.log(res.list)
162 153
         this.tableData = res.list
163 154
         this.postData.total = res.pagenum
164 155
         this.postData.currentPage = res.page
165 156
       }).catch(msg => {
166 157
 
158
+      })
159
+    },
160
+    deleteNews (id) {
161
+      this.$ajax(this.$api.cms.deleteNews.url, {
162
+        method: this.$api.cms.deleteNews.method,
163
+        urlData: {
164
+          id: id
165
+        }
166
+      }).then(res => {
167
+        this.$message({
168
+          type: 'success',
169
+          message: '删除成功!'
170
+        })
171
+        this.getList()
172
+      }).catch(msg => {
173
+
167 174
       })
168 175
     }
169 176
   }

+ 33
- 89
src/pages/system/dataStatistics/frontEndUserList/index.vue View File

@@ -3,147 +3,91 @@
3 3
     <div class="system-table-search">
4 4
       <div class="flex-h">
5 5
         <div class="flex-item flex-h"></div>
6
-        <tableSearch value="请输入用户名称" @exportSearchKey="searchList"></tableSearch>
6
+        <tableSearch value="请输入用户手机号" @exportSearchKey="searchList"></tableSearch>
7 7
       </div>
8 8
       <div class="moreFilter"></div>
9 9
     </div>
10 10
     <div class="system-table-box">
11 11
       <el-table
12
-        :data="tableData"
12
+        :data="currentList"
13 13
         stripe
14 14
         style="width: 100%">
15 15
         <el-table-column
16
-          prop="name"
16
+          prop="Name"
17 17
           label="姓名">
18 18
         </el-table-column>
19 19
         <el-table-column
20
-          prop="phone"
20
+          prop="Phone"
21 21
           label="手机号">
22 22
         </el-table-column>
23 23
         <el-table-column
24
-          prop="nickName"
24
+          prop="CustomerName"
25 25
           label="微信昵称">
26 26
         </el-table-column>
27 27
         <el-table-column
28
-          prop="recommendName"
28
+          prop="RecommendName"
29 29
           label="推荐人">
30 30
         </el-table-column>
31 31
         <el-table-column
32
-          prop="integral"
32
+          prop="Points"
33 33
           label="积分">
34
-          <template slot-scope="scope">
35
-            -
36
-          </template>
37 34
         </el-table-column>
38 35
         <el-table-column
39
-          prop="openId"
36
+          prop="OpenId"
40 37
           label="openId">
41 38
         </el-table-column>
42
-        <el-table-column
43
-          prop="creatTime"
44
-          label="创建时间">
45
-        </el-table-column>
46 39
       </el-table>
47 40
     </div>
48 41
     <el-pagination
49
-      @size-change="handleSizeChange"
50 42
       @current-change="handleCurrentChange"
51
-      :current-page.sync="currentPage"
52
-      :page-size="10"
43
+      :current-page.sync="postData.page"
44
+      :page-size="postData.pagesize"
53 45
       layout="prev, pager, next, jumper"
54
-      :total="100">
46
+      :total="total">
55 47
     </el-pagination>
56 48
   </div>
57 49
 </template>
58 50
 
59 51
 <script>
60 52
 import tableSearch from '@/components/tableSearch/index'
61
-import { createNamespacedHelpers } from 'vuex'
62
-
63
-const { mapState: mapCaseState } = createNamespacedHelpers('case')
64 53
 
65 54
 export default {
66 55
   name: '',
67 56
   data () {
68 57
     return {
69
-      currentPage: 0, // 当前页码
70
-      tableSearch: { // 表格搜索条件
71
-        key: '', // 搜索关键字
72
-        caseId: '', // 案场id
58
+      total: 0,
59
+      postData: { // 表格搜索条件
60
+        phone: '', // 手机号
61
+        page: 1, // 当前页码
62
+        pagesize: 10, // 请求数据量
73 63
       },
74
-      tableData: [{
75
-        name: 'xxx',
76
-        phone: 'xxx',
77
-        nickName: 'xxx',
78
-        recommendName: 'xxx',
79
-        integral: 'xxx',
80
-        openId: 'xxx',
81
-        creatTime: 'xxx'
82
-      }, {
83
-        name: 'xxx',
84
-        phone: 'xxx',
85
-        nickName: 'xxx',
86
-        recommendName: 'xxx',
87
-        integral: 'xxx',
88
-        openId: 'xxx',
89
-        creatTime: 'xxx'
90
-      }, {
91
-        name: 'xxx',
92
-        phone: 'xxx',
93
-        nickName: 'xxx',
94
-        recommendName: 'xxx',
95
-        integral: 'xxx',
96
-        openId: 'xxx',
97
-        creatTime: 'xxx'
98
-      }, {
99
-        name: 'xxx',
100
-        phone: 'xxx',
101
-        nickName: 'xxx',
102
-        recommendName: 'xxx',
103
-        integral: 'xxx',
104
-        openId: 'xxx',
105
-        creatTime: 'xxx'
106
-      }]
64
+      currentList: [],
107 65
     }
108 66
   },
109
-  computed: {
110
-    ...mapCaseState({
111
-      caseList: x => x.caseList,
112
-    })
113
-  },
114 67
   components: {
115 68
     tableSearch,
116 69
   },
70
+  created () {
71
+    this.getList()
72
+  },
117 73
   methods: {
118
-    handleSizeChange (val) {
119
-      console.log(`每页 ${val} 条`)
120
-    },
121 74
     handleCurrentChange (val) {
122
-      console.log(`当前页: ${val}`)
75
+      this.getList()
123 76
     },
124
-    handleEdit (index, row) { // 编辑
125
-      console.log(index, row)
77
+    searchList (key) { // 搜索列表
78
+      this.postData.phone = key
79
+      this.postData.page = 1
80
+      this.getList()
126 81
     },
127
-    handleDelete (index, row) { // 删除
128
-      console.log(index, row)
129
-      this.$confirm('确认删除此渠道?', '提示', {
130
-        confirmButtonText: '确定',
131
-        cancelButtonText: '取消',
132
-        type: 'warning'
133
-      }).then(() => {
134
-        this.$message({
135
-          type: 'success',
136
-          message: '删除成功!'
137
-        })
138
-      }).catch(() => {
139
-        this.$message({
140
-          type: 'info',
141
-          message: '已取消删除'
142
-        })
82
+    getList () {
83
+      this.$ajax(this.$api.dataStatistics.getCustomerList.url, {
84
+        method: this.$api.dataStatistics.getCustomerList.method,
85
+        queryData: this.postData
86
+      }).then(res => {
87
+        this.currentList = res.list
88
+        this.postData.page = res.page
89
+        this.total = res.pagenum
143 90
       })
144
-    },
145
-    searchList (key) { // 搜索列表
146
-      console.log(key)
147 91
     }
148 92
   }
149 93
 }

+ 65
- 3
src/pages/system/index.vue View File

@@ -3,10 +3,18 @@
3 3
     <div class="system-header flex-h">
4 4
       <i class="iconfont icon-yinchenglogo"></i>
5 5
       <span>银城-城的空间</span>
6
-      <div class="flex-item flex-h">
6
+      <div class="flex-item flex-h" style="overflow: visible;">
7 7
         <div class="flex-item"></div>
8
-        <span class="characterMark">用户角色</span>
9
-        <a class="userIcon"></a>
8
+        <span class="characterMark">{{user.UserName}}</span>
9
+        <div class="userIconBox">
10
+          <a class="userIcon">
11
+            <img :src="user.Headimgurl" class="centerLabel cover" alt="">
12
+          </a>
13
+          <ul class="userSet">
14
+            <li @click="signout">登出</li>
15
+            <li @click="editPassword">修改密码</li>
16
+          </ul>
17
+        </div>
10 18
       </div>
11 19
     </div>
12 20
     <div class="flex-item flex-h">
@@ -24,6 +32,22 @@
24 32
         </div>
25 33
       </div>
26 34
     </div>
35
+    <el-dialog title="修改密码" :visible.sync="dialogFormVisible">
36
+      <el-input
37
+        placeholder="请输入旧密码"
38
+        v-model="postData.oriPasswd"
39
+        clearable>
40
+      </el-input>
41
+      <el-input style="margin-top:20px;"
42
+        placeholder="请输入新密码"
43
+        v-model="postData.newPasswd"
44
+        clearable>
45
+      </el-input>
46
+      <div slot="footer" class="dialog-footer">
47
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
48
+        <el-button type="primary" @click="submitPasswd">确 定</el-button>
49
+      </div>
50
+    </el-dialog>
27 51
   </div>
28 52
 </template>
29 53
 
@@ -36,12 +60,18 @@ export default {
36 60
   name: '',
37 61
   data () {
38 62
     return {
63
+      dialogFormVisible: false,
64
+      postData: {
65
+        oriPasswd: '', // 旧密码
66
+        newPasswd: '', // 新密码
67
+      },
39 68
     }
40 69
   },
41 70
   computed: {
42 71
     ...mapState({
43 72
       breadCrumb: x => x.app.breadcrumb,
44 73
       pageMenu: x => x.app.menus,
74
+      user: x => x.app.user,
45 75
     })
46 76
   },
47 77
   components: {
@@ -53,6 +83,38 @@ export default {
53 83
     this.updateBread({ routerData, Url: this.$route.name })
54 84
   },
55 85
   methods: {
86
+    submitPasswd () { // 修改密码
87
+      var aData = {
88
+        oriPasswd: this.md5(this.postData.oriPasswd),
89
+        newPasswd: this.md5(this.postData.newPasswd)
90
+      }
91
+      this.$ajax(this.$api.system.editPassword.url, {
92
+        method: this.$api.system.editPassword.method,
93
+        urlData: { id: this.user.UserId },
94
+        data: aData
95
+      }).then(res => {
96
+        this.$message({
97
+          type: 'success',
98
+          message: '操作成功!'
99
+        })
100
+        this.$cookie.set('accountInfo', null)
101
+        this.$router.push({ name: 'login' })
102
+      })
103
+    },
104
+    editPassword () { // 修改密码
105
+      this.dialogFormVisible = true
106
+    },
107
+    signout () { // 登出
108
+      this.$ajax(this.$api.system.signout.url, {
109
+        method: this.$api.system.signout.method,
110
+      }).then(res => {
111
+        this.$message({
112
+          type: 'success',
113
+          message: '操作成功!'
114
+        })
115
+        this.$router.push({ name: 'login' })
116
+      })
117
+    },
56 118
     ...mapMutations([
57 119
       'updateBread'
58 120
     ]),

+ 12
- 0
src/pages/system/page.js View File

@@ -12,6 +12,8 @@ import caseManager from './caseManager/index' // 案场管理
12 12
 import caseInfo from './caseManager/caseInfo/index' // 案场信息
13 13
 import addCase from './caseManager/caseInfo/addCase/index' // 新增案场
14 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' // 编辑相关人员
15 17
 import keyManager from './caseManager/keyManager/index' // 钥匙管理
16 18
 import addKey from './caseManager/keyManager/add' // 新增钥匙
17 19
 import caseAreaManager from './caseManager/caseAreaManager/index' // 案场区域管理
@@ -116,6 +118,16 @@ export default {
116 118
             name: 'editCase',
117 119
             component: editCase,
118 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
+            }]
119 131
           }]
120 132
         }, { // 钥匙管理
121 133
           path: 'keyManager',

+ 43
- 0
src/pages/system/page.scss View File

@@ -58,6 +58,49 @@
58 58
     border-radius: 100%;
59 59
     background: #eee;
60 60
     margin: 0 20px 0 10px;
61
+    display: block;
62
+  }
63
+
64
+  .userIconBox{
65
+    position: relative;
66
+    overflow: visible;
67
+    .userSet{
68
+      display: none;
69
+      position: absolute;
70
+      right: 30px;
71
+      top: 40px;
72
+      background: #fff;
73
+      padding: 5px 0;
74
+      box-shadow: 0 0 20px 2px rgba(0, 0, 0, .1);
75
+      li{
76
+        display: block;
77
+        line-height: 30px;
78
+        white-space: nowrap;
79
+        color: #666;
80
+        font-size: 13px;
81
+        padding: 0 15px;
82
+        &:hover{
83
+          cursor: pointer;
84
+          background: #eee;
85
+        }
86
+      }
87
+      &::after{
88
+        content: '';
89
+        position: absolute;
90
+        width: 0;
91
+        height: 0;
92
+        border-style: dashed dashed solid dashed;
93
+        border-width: 8px;
94
+        border-color: transparent transparent #fff transparent;
95
+        right: 0;
96
+        top: -14px;
97
+      }
98
+    }
99
+    &:hover{
100
+      &>.userSet{
101
+        display: inline-block;
102
+      }
103
+    }
61 104
   }
62 105
 
63 106
 }

+ 2
- 1
src/pages/system/systemSet/userManager/index.vue View File

@@ -271,6 +271,7 @@ export default {
271 271
       }).then(res => {
272 272
         if (res !== null) this.tags = res
273 273
         this.currentEditItem = row
274
+        this.getRole()
274 275
         this.dialogTableVisible = true
275 276
       })
276 277
     },
@@ -291,7 +292,7 @@ export default {
291 292
     getRole () { // 绑定角色搜索事件,发送请求搜索角色列表
292 293
       this.$ajax(this.$api.caseManager.getRolesList.url, {
293 294
         method: this.$api.caseManager.getRolesList.method,
294
-        data: this.postData
295
+        queryData: this.postData
295 296
       }).then(res => {
296 297
         this.searchTagList = res.list
297 298
       })

+ 1
- 1
src/store/app.js View File

@@ -38,7 +38,7 @@ function packChildren (data) {
38 38
       }
39 39
     }
40 40
 
41
-    if (!found) {
41
+    if (!found && cp[inx].IsShow === 1) {
42 42
       res.push(cp[inx])
43 43
     }
44 44
   })

+ 57
- 7
src/util/api.js View File

@@ -13,7 +13,15 @@ const $api = {
13 13
     init: { // 初始化菜单
14 14
       method: 'get',
15 15
       url: `${baseUrl}${common}/system/init`
16
-    }
16
+    },
17
+    signout: { // 登出
18
+      method: 'post',
19
+      url: `${baseUrl}${common}/signout`
20
+    },
21
+    editPassword: { // 修改密码
22
+      method: 'put',
23
+      url: `${baseUrl}${common}/user/:id/password`
24
+    },
17 25
   },
18 26
   systemSet: {
19 27
     getUserList: { // 获取用户列表
@@ -48,7 +56,19 @@ const $api = {
48 56
   channelManager: {
49 57
     getChannelList: { // 渠道列表
50 58
       method: 'get',
51
-      url: `${baseUrl}${common}/`
59
+      url: `${baseUrl}${common}/channel`
60
+    },
61
+    getChannelInfo: { // 获取渠道信息
62
+      method: 'get',
63
+      url: `${baseUrl}${common}/channel/:channelId`
64
+    },
65
+    addChannel: { // 新增渠道
66
+      method: 'post',
67
+      url: `${baseUrl}${common}/channel`
68
+    },
69
+    editChannel: { // 更新渠道
70
+      method: 'put',
71
+      url: `${baseUrl}${common}/channel`
52 72
     },
53 73
   },
54 74
   caseManager: {
@@ -72,6 +92,22 @@ const $api = {
72 92
       method: 'put',
73 93
       url: `${baseUrl}${common}/case/info/:id`
74 94
     },
95
+    getCaseUserList: { // 获取案场相关人员列表
96
+      method: 'get',
97
+      url: `${baseUrl}${common}/case/user`
98
+    },
99
+    getCaseUserInfo: { // 获取案场相关人员信息
100
+      method: 'get',
101
+      url: `${baseUrl}${common}/case/user/:id`
102
+    },
103
+    addCaseUser: { // 新增案场相关人员
104
+      method: 'post',
105
+      url: `${baseUrl}${common}/case/user`
106
+    },
107
+    editCaseUser: { // 更新案场相关人员
108
+      method: 'put',
109
+      url: `${baseUrl}${common}/case/user`
110
+    },
75 111
     getKeyList: { // 获取钥匙列表
76 112
       method: 'get',
77 113
       url: `${baseUrl}${common}/case/key`
@@ -252,25 +288,33 @@ const $api = {
252 288
       method: 'delete',
253 289
       url: `${baseUrl}${common}/cms/info/:id`
254 290
     },
255
-    news: { // 咨列表
291
+    news: { // 咨列表
256 292
       method: 'get',
257 293
       url: `${baseUrl}${common}/cms/news`
258 294
     },
259
-    newsDetail: { // 咨详情
295
+    newsDetail: { // 咨详情
260 296
       method: 'get',
261 297
       url: `${baseUrl}${common}/cms/news/:id`
262 298
     },
263
-    addNews: { // 新增咨
299
+    addNews: { // 新增咨
264 300
       method: 'post',
265 301
       url: `${baseUrl}${common}/cms/news`
266 302
     },
267
-    editNews: { // 编辑咨
303
+    editNews: { // 编辑咨
268 304
       method: 'put',
269 305
       url: `${baseUrl}${common}/cms/news/:id`
270 306
     },
271
-    deleteNews: { // 删除咨
307
+    deleteNews: { // 删除咨
272 308
       method: 'delete',
273 309
       url: `${baseUrl}${common}/cms/news/:id`
310
+    },
311
+    caseShow: { // 前台展示
312
+      method: 'put',
313
+      url: `${baseUrl}${common}/cms/caseshow/:id`
314
+    },
315
+    caseHide: { // 取消前台展示
316
+      method: 'put',
317
+      url: `${baseUrl}${common}/cms/casehide/:id`
274 318
     }
275 319
   },
276 320
   file: {
@@ -309,5 +353,11 @@ const $api = {
309 353
       url: `${baseUrl}${common}/rolemenu/:id`
310 354
     },
311 355
   },
356
+  dataStatistics: {
357
+    getCustomerList: { // 获取会员列表
358
+      method: 'get',
359
+      url: `${baseUrl}${common}/customer`
360
+    }
361
+  },
312 362
 }
313 363
 export default $api