许成详 6 年之前
父節點
當前提交
25d047ced5

+ 110
- 0
src/pages/system/caseManager/tagManager/add.vue 查看文件

@@ -0,0 +1,110 @@
1
+<template>
2
+  <div class="subPage">
3
+    <form class="mainForm">
4
+      <ul>
5
+        <li class="flex-h">
6
+          <span>标签名称:</span>
7
+          <div class="flex-item">
8
+            <div style="width:50%">
9
+              <el-input
10
+                placeholder="请输入名称"
11
+                v-model="postData.TagName"
12
+                clearable>
13
+              </el-input>
14
+            </div>
15
+          </div>
16
+        </li>
17
+        <li class="flex-h">
18
+          <span>选择案场:</span>
19
+          <div class="flex-item">
20
+            <div>
21
+              <el-checkbox-group v-model="checkedList" @change="handleCheckedCitiesChange">
22
+                <el-checkbox v-for="(item,index) in cases" :label="item.CaseId" :key="index">{{item.CaseName}}</el-checkbox>
23
+              </el-checkbox-group>
24
+            </div>
25
+          </div>
26
+        </li>
27
+        <li style="text-align:center">
28
+          <el-button type="primary" size="mini" @click="submit">保存</el-button>
29
+          <el-button type="danger" size="mini" @click="cancel">取消</el-button>
30
+        </li>
31
+      </ul>
32
+    </form>
33
+  </div>
34
+</template>
35
+
36
+<script>
37
+import { mapState } from 'vuex'
38
+
39
+export default {
40
+  name: '',
41
+  data () {
42
+    return {
43
+      postData: {
44
+        TagId: '', // 桌位id
45
+        TagName: '', // 区域id
46
+        caseids: '', // 案场id
47
+        OrgId: '', // 机构id
48
+      },
49
+      checkedList: [],
50
+    }
51
+  },
52
+  created () {},
53
+  computed: {
54
+    ...mapState({
55
+      cases: x => x.app.cases.list,
56
+      defaultCaseId: x => x.app.cases.default,
57
+      OrgId: x => x.app.user.OrgId,
58
+    }),
59
+    CaseId: {
60
+      get () {
61
+        return this.postData.CaseId || this.defaultCaseId
62
+      },
63
+      set (val) {
64
+        this.postData.CaseId = val
65
+      }
66
+    }
67
+  },
68
+  components: {},
69
+  methods: {
70
+    handleCheckedCitiesChange (val) {
71
+      this.postData.caseids = val.join(',')
72
+    },
73
+    submit () { // 提交数据
74
+      if (this.postData.TagName === '') {
75
+        this.$message({
76
+          type: 'error',
77
+          message: '标签名称不能为空'
78
+        })
79
+        return false
80
+      }
81
+      if (this.postData.caseids === '') {
82
+        this.$message({
83
+          type: 'error',
84
+          message: '案场不能为空'
85
+        })
86
+        return false
87
+      }
88
+      this.postData.OrgId = this.OrgId
89
+      this.$ajax(this.$api.caseManager.addCaseTag.url, {
90
+        method: this.$api.caseManager.addCaseTag.method,
91
+        data: { ...this.postData }
92
+      }).then(res => {
93
+        this.$message({
94
+          type: 'success',
95
+          message: '操作成功!'
96
+        })
97
+        this.$router.push({ name: 'tagManager' })
98
+      })
99
+    },
100
+    cancel () {
101
+      this.$router.push({ name: 'tagManager' })
102
+    }
103
+  },
104
+  mounted () { }
105
+}
106
+</script>
107
+
108
+<!-- Add "scoped" attribute to limit CSS to this component only -->
109
+<style lang="scss" scoped>
110
+</style>

+ 124
- 0
src/pages/system/caseManager/tagManager/edit.vue 查看文件

@@ -0,0 +1,124 @@
1
+<template>
2
+  <div class="subPage">
3
+    <form class="mainForm">
4
+      <ul>
5
+        <li class="flex-h">
6
+          <span>标签名称:</span>
7
+          <div class="flex-item">
8
+            <div style="width:50%">
9
+              <el-input
10
+                placeholder="请输入名称"
11
+                v-model="postData.TagName"
12
+                clearable>
13
+              </el-input>
14
+            </div>
15
+          </div>
16
+        </li>
17
+        <li class="flex-h">
18
+          <span>选择案场:</span>
19
+          <div class="flex-item">
20
+            <div>
21
+              <el-checkbox-group v-model="checkedList" @change="handleCheckedCitiesChange">
22
+                <el-checkbox v-for="(item,index) in cases" :label="item.CaseId" :key="index">{{item.CaseName}}</el-checkbox>
23
+              </el-checkbox-group>
24
+            </div>
25
+          </div>
26
+        </li>
27
+        <li style="text-align:center">
28
+          <el-button type="primary" size="mini" @click="submit">保存</el-button>
29
+          <el-button type="danger" size="mini" @click="cancel">取消</el-button>
30
+        </li>
31
+      </ul>
32
+    </form>
33
+  </div>
34
+</template>
35
+
36
+<script>
37
+import { mapState } from 'vuex'
38
+
39
+export default {
40
+  name: '',
41
+  data () {
42
+    return {
43
+      postData: {
44
+        TagId: '', // 桌位id
45
+        TagName: '', // 区域id
46
+        caseids: '', // 案场id
47
+        OrgId: '', // 机构id
48
+      },
49
+      checkedList: [],
50
+    }
51
+  },
52
+  created () {
53
+    this.getTagInfo()
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
64
+      },
65
+      set (val) {
66
+        this.postData.CaseId = val
67
+      }
68
+    }
69
+  },
70
+  components: {},
71
+  methods: {
72
+    getTagInfo () {
73
+      this.$ajax(this.$api.caseManager.getTagInfo.url, {
74
+        method: this.$api.caseManager.getTagInfo.method,
75
+        urlData: { id: this.$route.query.id }
76
+      }).then(res => {
77
+        for (var n = 0; n < res.TagCases.length; n++) {
78
+          this.checkedList.push(res.TagCases[n].CaseId)
79
+        }
80
+        this.postData = res
81
+      })
82
+    },
83
+    handleCheckedCitiesChange (val) {
84
+      this.postData.caseids = val.join(',')
85
+    },
86
+    submit () { // 提交数据
87
+      if (this.postData.TagName === '') {
88
+        this.$message({
89
+          type: 'error',
90
+          message: '标签名称不能为空'
91
+        })
92
+        return false
93
+      }
94
+      this.postData.caseids = this.checkedList.join(',')
95
+      if (this.postData.caseids === '') {
96
+        this.$message({
97
+          type: 'error',
98
+          message: '案场不能为空'
99
+        })
100
+        return false
101
+      }
102
+      this.postData.OrgId = this.OrgId
103
+      this.$ajax(this.$api.caseManager.addCaseTag.url, {
104
+        method: this.$api.caseManager.addCaseTag.method,
105
+        data: { ...this.postData }
106
+      }).then(res => {
107
+        this.$message({
108
+          type: 'success',
109
+          message: '操作成功!'
110
+        })
111
+        this.$router.push({ name: 'tagManager' })
112
+      })
113
+    },
114
+    cancel () {
115
+      this.$router.push({ name: 'tagManager' })
116
+    }
117
+  },
118
+  mounted () { }
119
+}
120
+</script>
121
+
122
+<!-- Add "scoped" attribute to limit CSS to this component only -->
123
+<style lang="scss" scoped>
124
+</style>

+ 158
- 0
src/pages/system/caseManager/tagManager/index.vue 查看文件

@@ -0,0 +1,158 @@
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='addCaseTag'>新增标签</el-button>
7
+        </div>
8
+        <ul>
9
+          <li>
10
+            <span>选择案场:</span>
11
+            <el-select v-model="CaseId" placeholder="请选择">
12
+              <el-option
13
+                v-for="item in cases"
14
+                :key="item.CaseId"
15
+                :label="item.CaseName"
16
+                :value="item.CaseId">
17
+              </el-option>
18
+            </el-select>
19
+          </li>
20
+        </ul>
21
+        <el-button
22
+          size="mini"
23
+          type="primary" @click="search">搜索</el-button>
24
+      </div>
25
+      <div class="moreFilter"></div>
26
+    </div>
27
+    <div class="system-table-box">
28
+      <el-table
29
+        :data="currentList"
30
+        stripe
31
+        style="width: 100%">
32
+        <el-table-column
33
+          prop="TagName"
34
+          label="标签名称">
35
+        </el-table-column>
36
+        <el-table-column
37
+          prop="CaseNames"
38
+          label="案场">
39
+          <template slot-scope="scope">
40
+            <span v-for="(item,index) in scope.row.CaseNames" :key="index">{{item}}<br></span>
41
+          </template>
42
+        </el-table-column>
43
+        <el-table-column label="操作">
44
+          <template slot-scope="scope">
45
+            <el-button
46
+              size="mini"
47
+              type="warning"
48
+              @click="editItem(scope.$index, scope.row)">编辑</el-button>
49
+            <el-button
50
+              size="mini"
51
+              type="danger"
52
+              @click="deleteItem(scope.$index, scope.row)">删除</el-button>
53
+          </template>
54
+        </el-table-column>
55
+      </el-table>
56
+    </div>
57
+    <el-pagination
58
+      @current-change="handleCurrentChange"
59
+      :current-page.sync="postData.page"
60
+      :page-size="postData.pagesize"
61
+      layout="prev, pager, next, jumper"
62
+      :total="total">
63
+    </el-pagination>
64
+  </div>
65
+</template>
66
+
67
+<script>
68
+import { mapState } from 'vuex'
69
+
70
+export default {
71
+  name: '',
72
+  data () {
73
+    return {
74
+      total: 0,
75
+      postData: { // 表格搜索条件
76
+        caseid: '', // 案场id
77
+        page: 1, // 当前页码
78
+        pagesize: 10, // 请求数据量
79
+      },
80
+      currentList: [],
81
+      caseAreaList: [],
82
+    }
83
+  },
84
+  computed: {
85
+    ...mapState({
86
+      cases: x => x.app.cases.list,
87
+      defaultCaseId: x => x.app.cases.default
88
+    }),
89
+    CaseId: {
90
+      get () {
91
+        return this.postData.caseid || this.defaultCaseId
92
+      },
93
+      set (val) {
94
+        this.postData.caseid = val
95
+      }
96
+    }
97
+  },
98
+  created () {
99
+    this.getList()
100
+  },
101
+  methods: {
102
+    search () { // 搜索
103
+      this.postData.page = 1
104
+      this.currentList = []
105
+      this.getList()
106
+    },
107
+    getList () { // 获取列表
108
+      this.$ajax(this.$api.caseManager.getCaseTagList.url, {
109
+        method: this.$api.caseManager.getCaseTagList.method,
110
+        queryData: { ...this.postData, caseid: this.CaseId }
111
+      }).then(res => {
112
+        for (var n = 0; n < res.list.length; n++) {
113
+          res.list[n].CaseNames = res.list[n].CaseNames.split(',')
114
+        }
115
+        this.currentList = res.list
116
+        this.postData.page = res.page
117
+        this.total = res.pagenum
118
+      })
119
+    },
120
+    handleCurrentChange (val) { // 跳转到分页
121
+      this.getList()
122
+    },
123
+    editItem (index, row) { // 编辑
124
+      this.$router.push({ name: 'editTag', query: { id: row.TagId } })
125
+    },
126
+    deleteItem (index, row) { // 删除
127
+      this.$confirm('确认删除此标签?', '提示', {
128
+        confirmButtonText: '确定',
129
+        cancelButtonText: '取消',
130
+        type: 'warning'
131
+      }).then(() => {
132
+        this.$ajax(this.$api.caseManager.deleteCaseTag.url, {
133
+          method: this.$api.caseManager.deleteCaseTag.method,
134
+          urlData: { id: row.TagId }
135
+        }).then(res => {
136
+          this.$message({
137
+            type: 'success',
138
+            message: '删除成功!'
139
+          })
140
+          this.getList()
141
+        })
142
+      }).catch(() => {
143
+        this.$message({
144
+          type: 'info',
145
+          message: '已取消删除'
146
+        })
147
+      })
148
+    },
149
+    addCaseTag () {
150
+      this.$router.push({ name: 'addTag' })
151
+    }
152
+  }
153
+}
154
+</script>
155
+
156
+<!-- Add "scoped" attribute to limit CSS to this component only -->
157
+<style lang="scss" scoped>
158
+</style>

+ 18
- 0
src/pages/system/page.js 查看文件

@@ -21,6 +21,9 @@ import editCaseArea from './caseManager/caseAreaManager/edit' // 编辑案场区
21 21
 import caseTableManager from './caseManager/caseTableManager/index' // 案场桌位管理
22 22
 import addCaseTable from './caseManager/caseTableManager/add' // 新增案场桌位
23 23
 import editCaseTable from './caseManager/caseTableManager/edit' // 编辑案场桌位
24
+import tagManager from './caseManager/tagManager/index' // 标签管理
25
+import addTag from './caseManager/tagManager/add' // 添加标签
26
+import editTag from './caseManager/tagManager/edit' // 编辑标签
24 27
 
25 28
 import goodsManager from './goodsManager/index' // 商品管理
26 29
 import goodsTypeManager from './goodsManager/goodsTypeManager/index' // 商品类型管理
@@ -160,6 +163,21 @@ export default {
160 163
             component: editCaseTable,
161 164
             children: []
162 165
           }]
166
+        }, { // 标签管理
167
+          path: 'tagManager',
168
+          name: 'tagManager',
169
+          component: tagManager,
170
+          children: [{ // 添加标签
171
+            path: 'addTag',
172
+            name: 'addTag',
173
+            component: addTag,
174
+            children: []
175
+          }, { // 编辑标签
176
+            path: 'editTag',
177
+            name: 'editTag',
178
+            component: editTag,
179
+            children: []
180
+          }]
163 181
         }],
164 182
       }, { // 商品管理
165 183
         path: 'goodsManager',

+ 19
- 0
src/style/main.css 查看文件

@@ -316,7 +316,26 @@ select:focus {
316 316
   display: block;
317 317
 }
318 318
 
319
+.el-checkbox-group{
320
+  font-size: 0;
321
+}
322
+
323
+.el-checkbox{
324
+  display: inline-block;
325
+}
326
+
327
+.el-checkbox>*{
328
+  line-height: 40px;
329
+}
319 330
 
331
+.el-checkbox+.el-checkbox{
332
+  margin: 0;
333
+  margin-right: 20px;
334
+}
335
+
336
+.el-checkbox{
337
+  margin-right: 20px;
338
+}
320 339
 
321 340
 
322 341
 

+ 16
- 0
src/util/api.js 查看文件

@@ -87,6 +87,22 @@ const $api = {
87 87
       method: 'delete',
88 88
       url: `${baseUrl}/common/case/table/:id`
89 89
     },
90
+    getCaseTagList: { // 获取案场标签列表
91
+      method: 'get',
92
+      url: `${baseUrl}/common/case/tag`
93
+    },
94
+    addCaseTag: { // 新增案场标签
95
+      method: 'post',
96
+      url: `${baseUrl}/common/case/tag`
97
+    },
98
+    getTagInfo: { // 获取案场标签信息
99
+      method: 'get',
100
+      url: `${baseUrl}/common/case/tag/:id`
101
+    },
102
+    deleteCaseTag: { // 删除案场标签
103
+      method: 'delete',
104
+      url: `${baseUrl}/common/case/tag/:id`
105
+    },
90 106
   },
91 107
   goodsManager: {
92 108
     getGoodsSpecList: { // 商品规格列表