yuantianjiao 6 年前
父节点
当前提交
f052e959b4

+ 21
- 7
src/pages/system/cmsManager/bannerManager/add.vue 查看文件

66
               class="avatar-uploader"
66
               class="avatar-uploader"
67
               :action='$api.file.image.url'
67
               :action='$api.file.image.url'
68
               :show-file-list="false"
68
               :show-file-list="false"
69
-              :on-success="handleAvatarSuccess"
70
-              :before-upload="beforeAvatarUpload">
69
+              :on-success="handleAvatarSuccess">
71
               <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
70
               <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
72
               <i v-else class="el-icon-plus avatar-uploader-icon"></i>
71
               <i v-else class="el-icon-plus avatar-uploader-icon"></i>
73
             </el-upload>
72
             </el-upload>
74
           </div>
73
           </div>
75
         </li>
74
         </li>
75
+        <li class="flex-h">
76
+          <span>对应案场:</span>
77
+          <div class="flex-item">
78
+            <div style="width:50%">
79
+              <el-select v-model="postData.CaseId" placeholder="请选择">
80
+                <el-option
81
+                  v-for="item in caseList"
82
+                  :key="item.CaseId"
83
+                  :label="item.CaseName"
84
+                  :value="item.CaseId">
85
+                </el-option>
86
+              </el-select>
87
+            </div>
88
+          </div>
89
+        </li>
76
         <li style="text-align:center">
90
         <li style="text-align:center">
77
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
91
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
78
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
92
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
105
   components: {},
119
   components: {},
106
   created () {
120
   created () {
107
     this.updateLocationInfo()
121
     this.updateLocationInfo()
122
+    this.postData.CaseId = this.defaultCaseId
108
   },
123
   },
109
   computed: {
124
   computed: {
110
     ...mapState({
125
     ...mapState({
111
       positionList: x => x.cms.location,
126
       positionList: x => x.cms.location,
112
       OrgId: x => x.app.user.OrgId,
127
       OrgId: x => x.app.user.OrgId,
113
-      CaseId: x => x.app.cases.default
128
+      defaultCaseId: x => x.app.cases.default,
129
+      caseList: x => x.app.cases.list
114
     })
130
     })
115
   },
131
   },
116
   methods: {
132
   methods: {
133
+    ...mapCmsActions(['updateLocationInfo']),
117
     submit () {
134
     submit () {
118
       this.postData.OrgId = this.OrgId
135
       this.postData.OrgId = this.OrgId
119
-      this.postData.CaseId = this.CaseId
120
       console.log(this.postData)
136
       console.log(this.postData)
121
       this.$ajax(this.$api.cms.addImage.url, {
137
       this.$ajax(this.$api.cms.addImage.url, {
122
         method: this.$api.cms.addImage.method,
138
         method: this.$api.cms.addImage.method,
139
     },
155
     },
140
     handleAvatarSuccess (res, file) {
156
     handleAvatarSuccess (res, file) {
141
       this.postData.ImageUrl = res.result.url
157
       this.postData.ImageUrl = res.result.url
142
-    },
143
-    beforeAvatarUpload (file) { },
144
-    ...mapCmsActions(['updateLocationInfo']),
158
+    }
145
   }
159
   }
146
 }
160
 }
147
 </script>
161
 </script>

+ 17
- 4
src/pages/system/cmsManager/bannerManager/edit.vue 查看文件

66
               class="avatar-uploader"
66
               class="avatar-uploader"
67
               :action='$api.file.image.url'
67
               :action='$api.file.image.url'
68
               :show-file-list="false"
68
               :show-file-list="false"
69
-              :on-success="handleAvatarSuccess"
70
-              :before-upload="beforeAvatarUpload">
69
+              :on-success="handleAvatarSuccess">
71
               <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
70
               <img v-if="postData.ImageUrl" :src="postData.ImageUrl" class="avatar">
72
               <i v-else class="el-icon-plus avatar-uploader-icon"></i>
71
               <i v-else class="el-icon-plus avatar-uploader-icon"></i>
73
             </el-upload>
72
             </el-upload>
74
           </div>
73
           </div>
75
         </li>
74
         </li>
75
+        <li class="flex-h">
76
+          <span>对应案场:</span>
77
+          <div class="flex-item">
78
+            <div style="width:50%">
79
+              <el-select v-model="postData.CaseId" placeholder="请选择">
80
+                <el-option
81
+                  v-for="item in caseList"
82
+                  :key="item.CaseId"
83
+                  :label="item.CaseName"
84
+                  :value="item.CaseId">
85
+                </el-option>
86
+              </el-select>
87
+            </div>
88
+          </div>
89
+        </li>
76
         <li style="text-align:center">
90
         <li style="text-align:center">
77
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
91
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
78
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
92
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
111
     ...mapState({
125
     ...mapState({
112
       positionList: x => x.cms.location,
126
       positionList: x => x.cms.location,
113
       OrgId: x => x.app.user.OrgId,
127
       OrgId: x => x.app.user.OrgId,
114
-      CaseId: x => x.app.cases.default
128
+      caseList: x => x.app.cases.list
115
     })
129
     })
116
   },
130
   },
117
   methods: {
131
   methods: {
145
     handleAvatarSuccess (res, file) {
159
     handleAvatarSuccess (res, file) {
146
       this.postData.ImageUrl = res.result.url
160
       this.postData.ImageUrl = res.result.url
147
     },
161
     },
148
-    beforeAvatarUpload (file) { },
149
     getDetail () {
162
     getDetail () {
150
       this.$ajax(this.$api.cms.imageDetail.url, {
163
       this.$ajax(this.$api.cms.imageDetail.url, {
151
         method: this.$api.cms.imageDetail.method,
164
         method: this.$api.cms.imageDetail.method,

+ 2
- 2
src/pages/system/cmsManager/bannerManager/index.vue 查看文件

47
     </div>
47
     </div>
48
     <el-pagination
48
     <el-pagination
49
       @current-change="handleCurrentChange"
49
       @current-change="handleCurrentChange"
50
-      :current-page.sync="postData.currentPage+1"
50
+      :current-page.sync="postData.currentPage"
51
       :page-size="postData.pageSize"
51
       :page-size="postData.pageSize"
52
       layout="prev, pager, next, jumper"
52
       layout="prev, pager, next, jumper"
53
       :total="postData.total">
53
       :total="postData.total">
86
   methods: {
86
   methods: {
87
     ...mapCmsActions(['updateLocationInfo']),
87
     ...mapCmsActions(['updateLocationInfo']),
88
     handleCurrentChange (val) {
88
     handleCurrentChange (val) {
89
-      this.postData.currentPage = val - 1
89
+      this.postData.currentPage = val
90
       this.getList()
90
       this.getList()
91
     },
91
     },
92
     handleEdit (index, row) { // 编辑
92
     handleEdit (index, row) { // 编辑

+ 68
- 4
src/pages/system/cmsManager/indexMsg/add.vue 查看文件

8
             <div style="width:50%">
8
             <div style="width:50%">
9
               <el-input
9
               <el-input
10
                 placeholder="请输入标题"
10
                 placeholder="请输入标题"
11
-                v-model="postData.title"
11
+                v-model="postData.InfoName"
12
                 clearable>
12
                 clearable>
13
               </el-input>
13
               </el-input>
14
             </div>
14
             </div>
20
             <div style="width:50%">
20
             <div style="width:50%">
21
               <el-input
21
               <el-input
22
                 placeholder="请输入链接"
22
                 placeholder="请输入链接"
23
-                v-model="postData.link"
23
+                v-model="postData.InfoUrl"
24
                 clearable>
24
                 clearable>
25
               </el-input>
25
               </el-input>
26
             </div>
26
             </div>
27
           </div>
27
           </div>
28
         </li>
28
         </li>
29
+        <li class="flex-h">
30
+          <span>对应案场:</span>
31
+          <div class="flex-item">
32
+            <div style="width:50%">
33
+              <el-select v-model="postData.CaseId" placeholder="请选择">
34
+                <el-option
35
+                  v-for="item in caseList"
36
+                  :key="item.CaseId"
37
+                  :label="item.CaseName"
38
+                  :value="item.CaseId">
39
+                </el-option>
40
+              </el-select>
41
+            </div>
42
+          </div>
43
+        </li>
44
+        <li class="flex-h">
45
+          <span>位置:</span>
46
+          <div class="flex-item">
47
+            <div style="width:50%">
48
+              <el-select v-model="postData.LocationId" placeholder="请选择">
49
+                <el-option
50
+                  v-for="item in positionList"
51
+                  :key="item.LocationId"
52
+                  :label="item.LocationName"
53
+                  :value="item.LocationId">
54
+                </el-option>
55
+              </el-select>
56
+            </div>
57
+          </div>
58
+        </li>
29
         <li style="text-align:center">
59
         <li style="text-align:center">
30
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
60
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
31
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
61
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
36
 </template>
66
 </template>
37
 
67
 
38
 <script>
68
 <script>
69
+import { mapState, createNamespacedHelpers } from 'vuex'
70
+const { mapActions: mapCmsActions } = createNamespacedHelpers('cms')
39
 export default {
71
 export default {
40
   name: '',
72
   name: '',
41
   data () {
73
   data () {
42
     return {
74
     return {
43
       postData: {
75
       postData: {
44
-        title: '',
45
-        link: ''
76
+        InfoName: '',
77
+        InfoUrl: '',
78
+        OrgId: '',
79
+        CaseId: '',
80
+        LocationId: '1'
46
       }
81
       }
47
     }
82
     }
48
   },
83
   },
49
   components: {},
84
   components: {},
85
+  created () {
86
+    this.updateLocationInfo()
87
+    this.postData.CaseId = this.defaultCaseId
88
+  },
89
+  computed: {
90
+    ...mapState({
91
+      positionList: x => x.cms.location,
92
+      OrgId: x => x.app.user.OrgId,
93
+      defaultCaseId: x => x.app.cases.default,
94
+      caseList: x => x.app.cases.list
95
+    })
96
+  },
50
   methods: {
97
   methods: {
98
+    ...mapCmsActions(['updateLocationInfo']),
51
     submit () {
99
     submit () {
52
       console.log(this.postData)
100
       console.log(this.postData)
101
+      this.postData.OrgId = this.OrgId
102
+      this.$ajax(this.$api.cms.addInfo.url, {
103
+        method: this.$api.cms.addInfo.method,
104
+        data: this.postData
105
+      }).then(res => {
106
+        this.$message({
107
+          message: '添加成功',
108
+          type: 'success',
109
+          duration: 1000
110
+        })
111
+        setTimeout(() => {
112
+          this.$router.push({ name: 'indexMsg' })
113
+        }, 1000)
114
+      }).catch(msg => {
115
+
116
+      })
53
     },
117
     },
54
     cancel () {
118
     cancel () {
55
       this.$router.go(-1)
119
       this.$router.go(-1)

+ 87
- 6
src/pages/system/cmsManager/indexMsg/edit.vue 查看文件

8
             <div style="width:50%">
8
             <div style="width:50%">
9
               <el-input
9
               <el-input
10
                 placeholder="请输入标题"
10
                 placeholder="请输入标题"
11
-                v-model="postData.title"
11
+                v-model="postData.InfoName"
12
                 clearable>
12
                 clearable>
13
               </el-input>
13
               </el-input>
14
             </div>
14
             </div>
20
             <div style="width:50%">
20
             <div style="width:50%">
21
               <el-input
21
               <el-input
22
                 placeholder="请输入链接"
22
                 placeholder="请输入链接"
23
-                v-model="postData.link"
23
+                v-model="postData.InfoUrl"
24
                 clearable>
24
                 clearable>
25
               </el-input>
25
               </el-input>
26
             </div>
26
             </div>
27
           </div>
27
           </div>
28
         </li>
28
         </li>
29
+        <li class="flex-h">
30
+          <span>对应案场:</span>
31
+          <div class="flex-item">
32
+            <div style="width:50%">
33
+              <el-select v-model="postData.CaseId" placeholder="请选择">
34
+                <el-option
35
+                  v-for="item in caseList"
36
+                  :key="item.CaseId"
37
+                  :label="item.CaseName"
38
+                  :value="item.CaseId">
39
+                </el-option>
40
+              </el-select>
41
+            </div>
42
+          </div>
43
+        </li>
44
+        <li class="flex-h">
45
+          <span>位置:</span>
46
+          <div class="flex-item">
47
+            <div style="width:50%">
48
+              <el-select v-model="postData.LocationId" placeholder="请选择">
49
+                <el-option
50
+                  v-for="item in positionList"
51
+                  :key="item.LocationId"
52
+                  :label="item.LocationName"
53
+                  :value="item.LocationId">
54
+                </el-option>
55
+              </el-select>
56
+            </div>
57
+          </div>
58
+        </li>
29
         <li style="text-align:center">
59
         <li style="text-align:center">
30
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
60
           <el-button type="primary" size="mini" @click="submit">保存</el-button>
31
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
61
           <el-button type="danger" size="mini" @click="cancel">取消</el-button>
36
 </template>
66
 </template>
37
 
67
 
38
 <script>
68
 <script>
69
+import { mapState, createNamespacedHelpers } from 'vuex'
70
+const { mapActions: mapCmsActions } = createNamespacedHelpers('cms')
39
 export default {
71
 export default {
40
   name: '',
72
   name: '',
41
   data () {
73
   data () {
42
     return {
74
     return {
43
       postData: {
75
       postData: {
44
-        title: '',
45
-        link: ''
76
+        InfoName: '',
77
+        InfoUrl: '',
78
+        OrgId: '',
79
+        CaseId: '',
80
+        LocationId: '1'
46
       }
81
       }
47
     }
82
     }
48
   },
83
   },
49
   components: {},
84
   components: {},
85
+  created () {
86
+    this.updateLocationInfo()
87
+    this.getDetail()
88
+  },
89
+  computed: {
90
+    ...mapState({
91
+      positionList: x => x.cms.location,
92
+      OrgId: x => x.app.user.OrgId,
93
+      caseList: x => x.app.cases.list
94
+    })
95
+  },
50
   methods: {
96
   methods: {
97
+    ...mapCmsActions(['updateLocationInfo']),
51
     submit () {
98
     submit () {
52
       console.log(this.postData)
99
       console.log(this.postData)
100
+      this.postData.OrgId = this.OrgId
101
+      this.$ajax(this.$api.cms.editInfo.url, {
102
+        method: this.$api.cms.editInfo.method,
103
+        urlData: {
104
+          id: this.$route.query.id
105
+        },
106
+        data: this.postData
107
+      }).then(res => {
108
+        this.$message({
109
+          message: '添加成功',
110
+          type: 'success',
111
+          duration: 1000
112
+        })
113
+        setTimeout(() => {
114
+          this.$router.push({ name: 'indexMsg' })
115
+        }, 1000)
116
+      }).catch(msg => {
117
+
118
+      })
53
     },
119
     },
54
     cancel () {
120
     cancel () {
55
       this.$router.go(-1)
121
       this.$router.go(-1)
122
+    },
123
+    getDetail () {
124
+      this.$ajax(this.$api.cms.infoDetail.url, {
125
+        method: this.$api.cms.infoDetail.method,
126
+        urlData: {
127
+          id: this.$route.query.id
128
+        }
129
+      }).then(res => {
130
+        console.log(res)
131
+        // this.postData.InfoName = res.InfoName
132
+        // this.postData.InfoUrl = res.InfoUrl
133
+        // this.postData.CaseId = res.CaseId
134
+        this.postData = res
135
+      }).catch(msg => {
136
+
137
+      })
56
     }
138
     }
57
-  },
58
-  mounted () { }
139
+  }
59
 }
140
 }
60
 </script>
141
 </script>
61
 
142
 

+ 50
- 37
src/pages/system/cmsManager/indexMsg/index.vue 查看文件

15
         stripe
15
         stripe
16
         style="width: 100%">
16
         style="width: 100%">
17
         <el-table-column
17
         <el-table-column
18
-          prop="title"
18
+          prop="InfoName"
19
           label="消息标题">
19
           label="消息标题">
20
         </el-table-column>
20
         </el-table-column>
21
         <el-table-column
21
         <el-table-column
22
-          prop="url"
22
+          prop="InfoUrl"
23
           label="跳转链接">
23
           label="跳转链接">
24
         </el-table-column>
24
         </el-table-column>
25
-        <el-table-column
26
-          prop="creatTime"
27
-          label="创建时间">
28
-        </el-table-column>
29
         <el-table-column label="操作">
25
         <el-table-column label="操作">
30
           <template slot-scope="scope">
26
           <template slot-scope="scope">
31
             <el-button
27
             <el-button
41
       </el-table>
37
       </el-table>
42
     </div>
38
     </div>
43
     <el-pagination
39
     <el-pagination
44
-      @size-change="handleSizeChange"
45
       @current-change="handleCurrentChange"
40
       @current-change="handleCurrentChange"
46
-      :current-page.sync="currentPage"
47
-      :page-size="10"
41
+      :current-page.sync="postData.currentPage"
42
+      :page-size="postData.pageSize"
48
       layout="prev, pager, next, jumper"
43
       layout="prev, pager, next, jumper"
49
-      :total="100">
44
+      :total="postData.total">
50
     </el-pagination>
45
     </el-pagination>
51
   </div>
46
   </div>
52
 </template>
47
 </template>
61
   name: '',
56
   name: '',
62
   data () {
57
   data () {
63
     return {
58
     return {
64
-      currentPage: 0, // 当前页码
59
+      postData: {
60
+        currentPage: 1, // 当前页码
61
+        pageSize: 10,
62
+        total: 0,
63
+      },
65
       tableSearch: { // 表格搜索条件
64
       tableSearch: { // 表格搜索条件
66
         key: '', // 搜索关键字
65
         key: '', // 搜索关键字
67
         caseId: '', // 案场id
66
         caseId: '', // 案场id
68
       },
67
       },
69
-      tableData: [{
70
-        title: 'xxx',
71
-        url: 'xxx',
72
-        creatTime: 'xxx'
73
-      }, {
74
-        title: 'xxx',
75
-        url: 'xxx',
76
-        creatTime: 'xxx'
77
-      }, {
78
-        title: 'xxx',
79
-        url: 'xxx',
80
-        creatTime: 'xxx'
81
-      }, {
82
-        title: 'xxx',
83
-        url: 'xxx',
84
-        creatTime: 'xxx'
85
-      }]
68
+      tableData: []
86
     }
69
     }
87
   },
70
   },
88
   computed: {
71
   computed: {
90
       caseList: x => x.caseList,
73
       caseList: x => x.caseList,
91
     })
74
     })
92
   },
75
   },
76
+  created () {
77
+    this.getList()
78
+  },
93
   components: {
79
   components: {
94
     tableSearch,
80
     tableSearch,
95
   },
81
   },
96
   methods: {
82
   methods: {
97
-    handleSizeChange (val) {
98
-      console.log(`每页 ${val} 条`)
99
-    },
100
     handleCurrentChange (val) {
83
     handleCurrentChange (val) {
101
-      console.log(`当前页: ${val}`)
84
+      this.postData.currentPage = val
85
+      this.getList()
102
     },
86
     },
103
     handleEdit (index, row) { // 编辑
87
     handleEdit (index, row) { // 编辑
104
       console.log(index, row)
88
       console.log(index, row)
105
-      this.$router.push({ name: 'editIndexMsg' })
89
+      this.$router.push({ name: 'editIndexMsg', query: { id: row.InfoId } })
106
     },
90
     },
107
     handleDelete (index, row) { // 删除
91
     handleDelete (index, row) { // 删除
108
       console.log(index, row)
92
       console.log(index, row)
111
         cancelButtonText: '取消',
95
         cancelButtonText: '取消',
112
         type: 'warning'
96
         type: 'warning'
113
       }).then(() => {
97
       }).then(() => {
114
-        this.$message({
115
-          type: 'success',
116
-          message: '删除成功!'
117
-        })
98
+        this.deleteInfo(row.InfoId)
118
       }).catch(() => {
99
       }).catch(() => {
119
         this.$message({
100
         this.$message({
120
           type: 'info',
101
           type: 'info',
127
     },
108
     },
128
     addIndexMsg () {
109
     addIndexMsg () {
129
       this.$router.push({ name: 'addIndexMsg' })
110
       this.$router.push({ name: 'addIndexMsg' })
111
+    },
112
+    getList () {
113
+      this.$ajax(this.$api.cms.info.url, {
114
+        method: this.$api.cms.info.method,
115
+        queryData: {
116
+          page: this.postData.currentPage,
117
+          pagesize: this.postData.pageSize
118
+        }
119
+      }).then(res => {
120
+        this.tableData = res.list
121
+        this.postData.total = res.pagenum
122
+        this.postData.currentPage = res.page
123
+      }).catch(msg => {
124
+
125
+      })
126
+    },
127
+    deleteInfo (id) {
128
+      this.$ajax(this.$api.cms.deleteInfo.url, {
129
+        method: this.$api.cms.deleteInfo.method,
130
+        urlData: {
131
+          id: id
132
+        }
133
+      }).then(res => {
134
+        console.log(res)
135
+        this.$message({
136
+          type: 'success',
137
+          message: '删除成功!'
138
+        })
139
+        this.getList()
140
+      }).catch(msg => {
141
+
142
+      })
130
     }
143
     }
131
   }
144
   }
132
 }
145
 }

+ 105
- 40
src/pages/system/cmsManager/majorProjects/add.vue 查看文件

6
           <span>对应案场:</span>
6
           <span>对应案场:</span>
7
           <div class="flex-item">
7
           <div class="flex-item">
8
             <div style="width:50%">
8
             <div style="width:50%">
9
-              <el-select v-model="postData.case" placeholder="请选择">
9
+              <el-select v-model="postData.CaseId" placeholder="请选择">
10
                 <el-option
10
                 <el-option
11
                   v-for="item in caseList"
11
                   v-for="item in caseList"
12
-                  :key="item.value"
13
-                  :label="item.label"
14
-                  :value="item.value">
12
+                  :key="item.CaseId"
13
+                  :label="item.CaseName"
14
+                  :value="item.CaseId">
15
                 </el-option>
15
                 </el-option>
16
               </el-select>
16
               </el-select>
17
             </div>
17
             </div>
23
             <div style="width:50%">
23
             <div style="width:50%">
24
               <el-input
24
               <el-input
25
                 placeholder="请输入名称"
25
                 placeholder="请输入名称"
26
-                v-model="postData.name"
26
+                v-model="postData.Name"
27
                 clearable>
27
                 clearable>
28
               </el-input>
28
               </el-input>
29
             </div>
29
             </div>
35
             <div style="width:50%">
35
             <div style="width:50%">
36
               <el-input
36
               <el-input
37
                 placeholder="请输入标题"
37
                 placeholder="请输入标题"
38
-                v-model="postData.title"
38
+                v-model="postData.Title"
39
                 clearable>
39
                 clearable>
40
               </el-input>
40
               </el-input>
41
             </div>
41
             </div>
44
         <li class="flex-h">
44
         <li class="flex-h">
45
           <span>图片:</span>
45
           <span>图片:</span>
46
           <div class="flex-item">
46
           <div class="flex-item">
47
-            <div>
48
-              <a class="formImg">
49
-                <img src="" class="centerLabel contain" alt="">
50
-                <i class="iconfont icon-quxiao"></i>
51
-              </a>
52
-              <el-button type="success" size="mini">上传图片</el-button>
53
-            </div>
47
+            <el-upload
48
+              :action="$api.file.image.url"
49
+              list-type="picture-card"
50
+              :on-success="handlePictureCardPreview"
51
+              :on-remove="handleRemove">
52
+              <i class="el-icon-plus"></i>
53
+            </el-upload>
54
+            <el-dialog :visible.sync="dialogVisible">
55
+              <img width="100%" :src="imgs" alt="">
56
+            </el-dialog>
54
           </div>
57
           </div>
55
         </li>
58
         </li>
56
         <li class="flex-h">
59
         <li class="flex-h">
57
           <span>详细图片:</span>
60
           <span>详细图片:</span>
58
           <div class="flex-item">
61
           <div class="flex-item">
59
-            <div>
60
-              <a class="formImg">
61
-                <img src="" class="centerLabel contain" alt="">
62
-                <i class="iconfont icon-quxiao"></i>
63
-              </a>
64
-              <el-button type="success" size="mini">上传图片</el-button>
65
-            </div>
62
+            <el-upload
63
+              :action='$api.file.image.url'
64
+              list-type="picture-card"
65
+              :on-success="handlePictureCardPreviewDetail"
66
+              :on-remove="handleRemoveDetail">
67
+              <i class="el-icon-plus"></i>
68
+            </el-upload>
69
+            <el-dialog :visible.sync="dialogVisibleDetail">
70
+              <img width="100%" :src="detailimgs" alt="">
71
+            </el-dialog>
66
           </div>
72
           </div>
67
         </li>
73
         </li>
68
         <li class="flex-h">
74
         <li class="flex-h">
71
             <div style="width:50%">
77
             <div style="width:50%">
72
               <el-input
78
               <el-input
73
                 placeholder="请输入专题简介"
79
                 placeholder="请输入专题简介"
74
-                v-model="postData.about"
80
+                v-model="postData.DetailContent"
75
                 type='textarea'
81
                 type='textarea'
76
                 :autosize="{ minRows: 3, maxRows: 5}"
82
                 :autosize="{ minRows: 3, maxRows: 5}"
77
                 clearable>
83
                 clearable>
83
           <span>是否前台展示:</span>
89
           <span>是否前台展示:</span>
84
           <div class="flex-item">
90
           <div class="flex-item">
85
             <div style="width:50%" class="radio">
91
             <div style="width:50%" class="radio">
86
-              <el-radio v-model="postData.show" label='0' >是</el-radio>
87
-                <el-radio v-model="postData.show" label='1' >否</el-radio>
92
+              <el-radio v-model="postData.IsAllCourse" label='1' >是</el-radio>
93
+              <el-radio v-model="postData.IsAllCourse" label='0' >否</el-radio>
88
             </div>
94
             </div>
89
           </div>
95
           </div>
90
         </li>
96
         </li>
98
 </template>
104
 </template>
99
 
105
 
100
 <script>
106
 <script>
107
+import { mapState } from 'vuex'
101
 export default {
108
 export default {
102
   name: '',
109
   name: '',
103
   data () {
110
   data () {
104
     return {
111
     return {
105
       postData: {
112
       postData: {
106
-        case: '',
107
-        name: '',
108
-        title: '',
109
-        about: '',
110
-        show: '0'
113
+        CaseId: '',
114
+        Name: '',
115
+        Title: '',
116
+        DetailContent: '',
117
+        IsAllCourse: '1',
118
+        imgs: '',
119
+        detailimgs: '',
120
+        courseids: ''
111
       },
121
       },
112
-      caseList: [{
113
-        value: '0',
114
-        label: '案场1'
115
-      }, {
116
-        value: '1',
117
-        label: '案场3'
118
-      }, {
119
-        value: '2',
120
-        label: '案场2'
121
-      }],
122
+      dialogVisible: false,
123
+      dialogVisibleDetail: false,
124
+      imgs: '',
125
+      detailimgs: '',
126
+      imgsArr: [],
127
+      detailimgsArr: []
122
     }
128
     }
123
   },
129
   },
124
   components: {},
130
   components: {},
131
+  computed: {
132
+    ...mapState({
133
+      caseList: x => x.app.cases.list,
134
+      defaultCaseId: x => x.app.cases.default,
135
+      OrgId: x => x.app.user.OrgId
136
+    })
137
+  },
125
   methods: {
138
   methods: {
126
     submit () {
139
     submit () {
127
-      console.log(this.postData)
140
+      this.postData.OrgId = this.OrgId
141
+      for (let i = 0; i < this.imgsArr.length; i++) {
142
+        this.postData.imgs += this.imgsArr[i].response.result.url + ','
143
+      }
144
+      this.postData.imgs = this.postData.imgs.substr(0, this.postData.imgs.length - 1)
145
+      for (let i = 0; i < this.detailimgsArr.length; i++) {
146
+        this.postData.detailimgs += this.detailimgsArr[i].response.result.url + ','
147
+      }
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,
151
+        data: this.postData
152
+      }).then(res => {
153
+        this.$message({
154
+          message: '添加成功',
155
+          type: 'success',
156
+          duration: 1000
157
+        })
158
+        setTimeout(() => {
159
+          this.$router.push({ name: 'indexCase' })
160
+        }, 1000)
161
+      }).catch(msg => {
162
+
163
+      })
128
     },
164
     },
129
     cancel () {
165
     cancel () {
130
       this.$router.go(-1)
166
       this.$router.go(-1)
167
+    },
168
+    handlePictureCardPreview (res, file) {
169
+      this.imgs = res.result.url
170
+      this.dialogVisible = true
171
+      this.imgsArr.push(file)
172
+    },
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
+      }
179
+    },
180
+    handlePictureCardPreviewDetail (res, file) {
181
+      this.detailimgs = res.result.url
182
+      this.dialogVisibleDetail = true
183
+      this.detailimgsArr.push(file)
184
+    },
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
+      }
191
+    },
192
+    spli (arr) {
193
+      console.log(arr)
131
     }
194
     }
132
   },
195
   },
133
-  mounted () { }
196
+  created () {
197
+    this.postData.CaseId = this.defaultCaseId
198
+  }
134
 }
199
 }
135
 </script>
200
 </script>
136
 
201
 

+ 102
- 39
src/pages/system/cmsManager/majorProjects/edit.vue 查看文件

6
           <span>对应案场:</span>
6
           <span>对应案场:</span>
7
           <div class="flex-item">
7
           <div class="flex-item">
8
             <div style="width:50%">
8
             <div style="width:50%">
9
-              <el-select v-model="postData.case" placeholder="请选择">
9
+              <el-select v-model="postData.CaseId" placeholder="请选择">
10
                 <el-option
10
                 <el-option
11
                   v-for="item in caseList"
11
                   v-for="item in caseList"
12
-                  :key="item.value"
13
-                  :label="item.label"
14
-                  :value="item.value">
12
+                  :key="item.CaseId"
13
+                  :label="item.CaseName"
14
+                  :value="item.CaseId">
15
                 </el-option>
15
                 </el-option>
16
               </el-select>
16
               </el-select>
17
             </div>
17
             </div>
23
             <div style="width:50%">
23
             <div style="width:50%">
24
               <el-input
24
               <el-input
25
                 placeholder="请输入名称"
25
                 placeholder="请输入名称"
26
-                v-model="postData.name"
26
+                v-model="postData.Name"
27
                 clearable>
27
                 clearable>
28
               </el-input>
28
               </el-input>
29
             </div>
29
             </div>
35
             <div style="width:50%">
35
             <div style="width:50%">
36
               <el-input
36
               <el-input
37
                 placeholder="请输入标题"
37
                 placeholder="请输入标题"
38
-                v-model="postData.title"
38
+                v-model="postData.Title"
39
                 clearable>
39
                 clearable>
40
               </el-input>
40
               </el-input>
41
             </div>
41
             </div>
44
         <li class="flex-h">
44
         <li class="flex-h">
45
           <span>图片:</span>
45
           <span>图片:</span>
46
           <div class="flex-item">
46
           <div class="flex-item">
47
-            <div>
48
-              <a class="formImg">
49
-                <img src="" class="centerLabel contain" alt="">
50
-                <i class="iconfont icon-quxiao"></i>
51
-              </a>
52
-              <el-button type="success" size="mini">上传图片</el-button>
53
-            </div>
47
+            <el-upload
48
+              :action="$api.file.image.url"
49
+              list-type="picture-card"
50
+              :on-success="handlePictureCardPreview"
51
+              :on-remove="handleRemove">
52
+              <i class="el-icon-plus"></i>
53
+            </el-upload>
54
+            <el-dialog :visible.sync="dialogVisible">
55
+              <img width="100%" :src="imgs" alt="">
56
+            </el-dialog>
54
           </div>
57
           </div>
55
         </li>
58
         </li>
56
         <li class="flex-h">
59
         <li class="flex-h">
57
           <span>详细图片:</span>
60
           <span>详细图片:</span>
58
           <div class="flex-item">
61
           <div class="flex-item">
59
-            <div>
60
-              <a class="formImg">
61
-                <img src="" class="centerLabel contain" alt="">
62
-                <i class="iconfont icon-quxiao"></i>
63
-              </a>
64
-              <el-button type="success" size="mini">上传图片</el-button>
65
-            </div>
62
+            <el-upload
63
+              :action='$api.file.image.url'
64
+              list-type="picture-card"
65
+              :on-success="handlePictureCardPreviewDetail"
66
+              :on-remove="handleRemoveDetail">
67
+              <i class="el-icon-plus"></i>
68
+            </el-upload>
69
+            <el-dialog :visible.sync="dialogVisibleDetail">
70
+              <img width="100%" :src="detailimgs" alt="">
71
+            </el-dialog>
66
           </div>
72
           </div>
67
         </li>
73
         </li>
68
         <li class="flex-h">
74
         <li class="flex-h">
71
             <div style="width:50%">
77
             <div style="width:50%">
72
               <el-input
78
               <el-input
73
                 placeholder="请输入专题简介"
79
                 placeholder="请输入专题简介"
74
-                v-model="postData.about"
80
+                v-model="postData.DetailContent"
75
                 type='textarea'
81
                 type='textarea'
76
                 :autosize="{ minRows: 3, maxRows: 5}"
82
                 :autosize="{ minRows: 3, maxRows: 5}"
77
                 clearable>
83
                 clearable>
83
           <span>是否前台展示:</span>
89
           <span>是否前台展示:</span>
84
           <div class="flex-item">
90
           <div class="flex-item">
85
             <div style="width:50%" class="radio">
91
             <div style="width:50%" class="radio">
86
-              <el-radio v-model="postData.show" label='0' >是</el-radio>
87
-                <el-radio v-model="postData.show" label='1' >否</el-radio>
92
+              <el-radio v-model="postData.IsAllCourse" label='1' >是</el-radio>
93
+              <el-radio v-model="postData.IsAllCourse" label='0' >否</el-radio>
88
             </div>
94
             </div>
89
           </div>
95
           </div>
90
         </li>
96
         </li>
98
 </template>
104
 </template>
99
 
105
 
100
 <script>
106
 <script>
107
+import { mapState } from 'vuex'
101
 export default {
108
 export default {
102
   name: '',
109
   name: '',
103
   data () {
110
   data () {
104
     return {
111
     return {
105
       postData: {
112
       postData: {
106
-        case: '',
107
-        name: '',
108
-        title: '',
109
-        about: '',
110
-        show: '0'
113
+        CaseId: '',
114
+        Name: '',
115
+        Title: '',
116
+        DetailContent: '',
117
+        IsAllCourse: '1',
118
+        imgs: '',
119
+        detailimgs: '',
120
+        courseids: ''
111
       },
121
       },
112
-      caseList: [{
113
-        value: '0',
114
-        label: '案场1'
115
-      }, {
116
-        value: '1',
117
-        label: '案场3'
118
-      }, {
119
-        value: '2',
120
-        label: '案场2'
121
-      }],
122
+      dialogVisible: false,
123
+      dialogVisibleDetail: false,
124
+      imgs: '',
125
+      detailimgs: '',
126
+      imgsArr: [],
127
+      detailimgsArr: []
122
     }
128
     }
123
   },
129
   },
124
   components: {},
130
   components: {},
131
+  computed: {
132
+    ...mapState({
133
+      caseList: x => x.app.cases.list,
134
+      defaultCaseId: x => x.app.cases.default,
135
+      OrgId: x => x.app.user.OrgId
136
+    })
137
+  },
125
   methods: {
138
   methods: {
126
     submit () {
139
     submit () {
127
-      console.log(this.postData)
140
+      this.postData.OrgId = this.OrgId
141
+      for (let i = 0; i < this.imgsArr.length; i++) {
142
+        this.postData.imgs += this.imgsArr[i].response.result.url + ','
143
+      }
144
+      this.postData.imgs = this.postData.imgs.substr(0, this.postData.imgs.length - 1)
145
+      for (let i = 0; i < this.detailimgsArr.length; i++) {
146
+        this.postData.detailimgs += this.detailimgsArr[i].response.result.url + ','
147
+      }
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,
151
+        data: this.postData
152
+      }).then(res => {
153
+        this.$message({
154
+          message: '添加成功',
155
+          type: 'success',
156
+          duration: 1000
157
+        })
158
+        setTimeout(() => {
159
+          this.$router.push({ name: 'indexCase' })
160
+        }, 1000)
161
+      }).catch(msg => {
162
+
163
+      })
128
     },
164
     },
129
     cancel () {
165
     cancel () {
130
       this.$router.go(-1)
166
       this.$router.go(-1)
167
+    },
168
+    handlePictureCardPreview (res, file) {
169
+      this.imgs = res.result.url
170
+      this.dialogVisible = true
171
+      this.imgsArr.push(file)
172
+    },
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
+      }
179
+    },
180
+    handlePictureCardPreviewDetail (res, file) {
181
+      this.detailimgs = res.result.url
182
+      this.dialogVisibleDetail = true
183
+      this.detailimgsArr.push(file)
184
+    },
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
+      }
191
+    },
192
+    spli (arr) {
193
+      console.log(arr)
131
     }
194
     }
132
   },
195
   },
133
   mounted () { }
196
   mounted () { }

+ 5
- 20
src/pages/system/cmsManager/majorProjects/index.vue 查看文件

3
     <div class="system-table-search">
3
     <div class="system-table-search">
4
       <div class="flex-h">
4
       <div class="flex-h">
5
         <div class="flex-item flex-h">
5
         <div class="flex-item flex-h">
6
-          <el-button size="mini" type="success" @click='addMajorProjects'>新增项目专题</el-button>
6
+          <el-button size="mini" type="success" @click='addMajorProjects'>新增首页案场</el-button>
7
         </div>
7
         </div>
8
         <ul>
8
         <ul>
9
           <li>
9
           <li>
70
     </div>
70
     </div>
71
     <el-pagination
71
     <el-pagination
72
       @current-change="handleCurrentChange"
72
       @current-change="handleCurrentChange"
73
-      :current-page.sync="postData.currentPage+1"
73
+      :current-page.sync="postData.currentPage"
74
       :page-size="postData.pageSize"
74
       :page-size="postData.pageSize"
75
       layout="prev, pager, next, jumper"
75
       layout="prev, pager, next, jumper"
76
       :total="postData.total">
76
       :total="postData.total">
87
   data () {
87
   data () {
88
     return {
88
     return {
89
       postData: {
89
       postData: {
90
-        currentPage: 0, // 当前页码
90
+        currentPage: 1, // 当前页码
91
         pageSize: 10,
91
         pageSize: 10,
92
         total: 0,
92
         total: 0,
93
       },
93
       },
124
   },
124
   },
125
   computed: {
125
   computed: {
126
     ...mapState({
126
     ...mapState({
127
+      OrgId: x => x.app.user.OrgId,
127
       caseList: x => x.app.cases.list,
128
       caseList: x => x.app.cases.list,
128
-      defaultCaseId: x => x.app.cases.default,
129
+      defaultCaseId: x => x.app.cases.default
129
     })
130
     })
130
   },
131
   },
131
   components: {
132
   components: {
186
         }
187
         }
187
       }).then(res => {
188
       }).then(res => {
188
         console.log(res)
189
         console.log(res)
189
-        // let length = res.list.length
190
-        // for (let i = 0; i < length; i++) {
191
-        //   if (res.list[i].Status === 1) {
192
-        //     res.list[i].StatusShow = '是'
193
-        //   } else {
194
-        //     res.list[i].StatusShow = '否'
195
-        //   }
196
-        //   for (let j = 0; j < this.positionList.length; j++) {
197
-        //     if (res.list[i].LocationId === this.positionList[j].LocationId) {
198
-        //       res.list[i].LocationShow = this.positionList[j].LocationName
199
-        //     }
200
-        //   }
201
-        // }
202
-        // this.tableData = res.list
203
-        // this.postData.total = res.pagenum
204
-        // this.postData.currentPage = res.page
205
       }).catch(msg => {
190
       }).catch(msg => {
206
 
191
 
207
       })
192
       })

+ 37
- 1
src/util/api.js 查看文件

91
       method: 'delete',
91
       method: 'delete',
92
       url: `${baseUrl}/common/cms/image/:id`
92
       url: `${baseUrl}/common/cms/image/:id`
93
     },
93
     },
94
-    case: {
94
+    case: { // 首页案场列表
95
       method: 'get',
95
       method: 'get',
96
       url: `${baseUrl}/common/cms/case`
96
       url: `${baseUrl}/common/cms/case`
97
+    },
98
+    caseDetail: { // 首页案场详情
99
+      method: 'get',
100
+      url: `${baseUrl}/common/cms/case/:id`
101
+    },
102
+    addCase: { // 添加首页案场
103
+      method: 'post',
104
+      url: `${baseUrl}/common/cms/case`
105
+    },
106
+    editCase: { // 添加首页案场
107
+      method: 'put',
108
+      url: `${baseUrl}/common/cms/case/:id`
109
+    },
110
+    deleteCase: { // 添加首页案场
111
+      method: 'delete',
112
+      url: `${baseUrl}/common/cms/case/:id`
113
+    },
114
+    info: { // 首页消息列表
115
+      method: 'get',
116
+      url: `${baseUrl}/common/cms/info`
117
+    },
118
+    infoDetail: { // 首页消息详情
119
+      method: 'get',
120
+      url: `${baseUrl}/common/cms/info/:id`
121
+    },
122
+    addInfo: { // 新增首页消息
123
+      method: 'post',
124
+      url: `${baseUrl}/common/cms/info`
125
+    },
126
+    editInfo: { // 编辑首页消息
127
+      method: 'put',
128
+      url: `${baseUrl}/common/cms/info/:id`
129
+    },
130
+    deleteInfo: { // 编辑首页消息
131
+      method: 'delete',
132
+      url: `${baseUrl}/common/cms/info/:id`
97
     }
133
     }
98
   },
134
   },
99
   file: {
135
   file: {