ソースを参照

会员管理、商品管理

liuyifan 5 年 前
コミット
e2c0843b3d

+ 0 - 3
CallCenterWeb.UI/src/views/commodityManagement/commodityList/components/bulkRemoval.vue

@@ -130,7 +130,4 @@ export default {
130 130
 </script>
131 131
 
132 132
 <style rel="stylesheet/scss" lang="scss">
133
-.order_form .form_select{
134
-	width: 100%;
135
-}
136 133
 </style>

+ 1 - 3
CallCenterWeb.UI/src/views/commodityManagement/commodityList/components/changeShippingTemplate.vue

@@ -130,7 +130,5 @@ export default {
130 130
 </script>
131 131
 
132 132
 <style rel="stylesheet/scss" lang="scss">
133
-.order_form .form_select{
134
-	width: 100%;
135
-}
133
+
136 134
 </style>

+ 13 - 11
CallCenterWeb.UI/src/views/memberManagement/memberList/components/addOrEdit.vue

@@ -1,11 +1,11 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
4
+      <el-form-item label="商户名称" prop="businessName">
5
+        <el-input v-model="ruleForm.businessName" placeholder="请输入商户名称"/>
6 6
       </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
7
+      <el-form-item label="会员卡标题" prop="memberCardTitle">
8
+        <el-input v-model="ruleForm.memberCardTitle" placeholder="请输入会员卡标题"/>
9 9
       </el-form-item>
10 10
       <el-form-item>
11 11
         <el-button type="primary" @click="submitForm">保存</el-button>
@@ -48,14 +48,19 @@ export default {
48 48
       ruleForm: {
49 49
         unique_id: '', //		否	string	callid
50 50
         ordercode: '',
51
-        labelName: '',
52
-        labelDescription: '',
51
+        businessName: '',
52
+        memberCardTitle: '',
53 53
       },
54 54
       rules: {
55
-        labelName: [{
55
+        businessName: [{
56 56
           required: true,
57 57
           trigger: 'blur',
58
-          message: '请输入标签姓名',
58
+          message: '请输入商户名称',
59
+        }],
60
+        memberCardTitle: [{
61
+          required: true,
62
+          trigger: 'blur',
63
+          message: '请输入会员卡标题',
59 64
         }]
60 65
       },
61 66
       loading: false
@@ -130,7 +135,4 @@ export default {
130 135
 </script>
131 136
 
132 137
 <style rel="stylesheet/scss" lang="scss">
133
-.order_form .form_select{
134
-	width: 100%;
135
-}
136 138
 </style>

+ 323 - 0
CallCenterWeb.UI/src/views/memberManagement/memberList/components/detail.vue

@@ -0,0 +1,323 @@
1
+<template>
2
+  <div class="order_detail">
3
+    <el-row :gutter="20">
4
+      <el-col :md="24" class="order_detail_body">
5
+        <el-card shadow="hover">
6
+          <el-col :md="3">
7
+            <div class="round_img">
8
+              <img :src="avatar" alt="头像">
9
+            </div>
10
+          </el-col>
11
+          <el-col :md="21">
12
+            <h1 class="title"><svg-icon class="title_icon" icon-class="hongqi" />工单编号:{{ ordercode }}</h1>
13
+            <!-- <p class="title_sub"><span class="green">{{ name }}</span> {{ createtime }}</p> -->
14
+            <p class="title_sub"><span class="green">{{ name }}</span> 	河南阜外华中心血管病医院 {{ createtime }}</p>
15
+            <p class="title_sub">催单次数:<span class="red">10</span>次 | 工单状态: <span class="done">已完成</span></p>
16
+          </el-col>
17
+          <el-col :md="24" class="order_detail_content">
18
+            <el-col :md="6" class="order_detail_item">
19
+              客户电话:{{ phone }}
20
+            </el-col>
21
+            <el-col :md="6" class="order_detail_item">
22
+              客户性别:{{ sex }}
23
+            </el-col>
24
+            <el-col :md="6" class="order_detail_item">
25
+              工单来源:{{ sourcename }}
26
+            </el-col>
27
+            <el-col :md="6" class="order_detail_item">
28
+              工单类型:{{ sourcetype }}
29
+            </el-col>
30
+            <el-col :md="6" class="order_detail_item">
31
+              地址:{{ address }}
32
+            </el-col>
33
+            <el-col :md="6" class="order_detail_item">
34
+              创建人:{{ createuser }}
35
+            </el-col>
36
+            <el-col :md="24" class="order_detail_item">
37
+              工单内容:
38
+              <div class="order_content" v-html="content"/>
39
+            </el-col>
40
+            <el-col v-if="fileList.length > 0" :md="24" class="order_detail_item">
41
+              <p>附件:<span class="yellow">(可以下载查看)</span></p>
42
+
43
+              <el-col v-for="(item, index) in fileList" :md="3" :key="index">
44
+                <el-card class="order_file">
45
+                  <span class="img_mask">
46
+                    <a :href="item.fileurl" download="filename" title="点击下载">
47
+                      <i class="el-icon-download"/>
48
+                    </a>
49
+                  </span>
50
+                  <img v-if="item.filesmallurl" :src="item.filesmallurl" :large="item.fileurl" :preview-text="item.filename" preview="0" height="68" width="80%">
51
+                  <i v-else class="el-icon-document file_icon"/>
52
+                  <p :title="item.filename"> {{ item.filename }} </p>
53
+                </el-card>
54
+              </el-col>
55
+
56
+            </el-col>
57
+            <el-col :md="6">
58
+              <i class="el-icon-time"/>
59
+              已持续 <span class="red">20</span> 小时 <span class="red">20</span> 分 <span class="red">20</span> 秒
60
+            </el-col>
61
+            <el-col :md="6" :offset="12">
62
+              <el-button type="primary" size="mini" plain>催单</el-button>
63
+              <el-button type="primary" size="mini" plain>转派</el-button>
64
+              <el-button type="primary" size="mini" plain>完成</el-button>
65
+            </el-col>
66
+          </el-col>
67
+        </el-card>
68
+      </el-col>
69
+
70
+      <el-col :md="12">
71
+        <el-card shadow="hover">
72
+          <div slot="header" class="clearfix">
73
+            <span>工单动态</span>
74
+          </div>
75
+          <div class="order_steps">
76
+            <el-steps :active="0" :space="100" direction="vertical" process-status="success">
77
+              <el-step title="已完成" description="2018-10-23 10:30:20 这是一段很长很长很长的描述性文字"/>
78
+              <el-step title="已转派" description="2018-10-23 10:30:20 这是一段很长很长很长的描述性文字"/>
79
+              <el-step title="已创建" description="2018-10-23 10:30:20 这是一段很长很长很长的描述性文字"/>
80
+            </el-steps>
81
+          </div>
82
+        </el-card>
83
+      </el-col>
84
+      <el-col :md="12">
85
+        <el-card shadow="hover" class="order_record">
86
+          <el-tabs v-model="activeName" @tab-click="handleClick">
87
+            <el-tab-pane label="催单记录(2)" name="first">
88
+              <div class="tab_body">
89
+                催单记录
90
+              </div>
91
+            </el-tab-pane>
92
+            <el-tab-pane label="录音记录(3)" name="second">
93
+              <div class="tab_body">
94
+                录音记录
95
+              </div>
96
+            </el-tab-pane>
97
+          </el-tabs>
98
+        </el-card>
99
+      </el-col>
100
+    </el-row>
101
+  </div>
102
+</template>
103
+
104
+<script>
105
+import { getOrder } from '@/api/order/orderSearch'
106
+import { mapGetters } from 'vuex'
107
+import { filterContent } from '@/utils'
108
+
109
+export default {
110
+  name: 'Detail',
111
+  props: {
112
+    rowid: {
113
+      type: String,
114
+      default: ''
115
+    },
116
+    layerid: {
117
+      type: String,
118
+      default: ''
119
+    }
120
+  },
121
+  data() {
122
+    return {
123
+      activeName: 'first',
124
+      ordercode: '', // 工单编号
125
+      name: '', // 姓名
126
+      phone: '', // 电话
127
+      sex: '', // 性别
128
+      address: '', // 地址
129
+      sourcename: '', // 工单来源
130
+      sourcetype: '', // 工单类型
131
+      content: '', // 工单内容
132
+      createtime: '', // 创建时间
133
+      createuser: '', // 创建人
134
+      fileList: [] // 附件
135
+    }
136
+  },
137
+  computed: {
138
+    ...mapGetters([
139
+      'avatar'
140
+    ])
141
+  },
142
+  created() {
143
+    if (this.rowid) {
144
+      this.getDetail(this.rowid)
145
+    }
146
+  },
147
+  methods: {
148
+    handleClick(tab, event) {
149
+      console.log(tab, event)
150
+    },
151
+    // 详情
152
+    getDetail(rid) {
153
+      getOrder(rid).then(response => {
154
+        if (response.state.toLowerCase() === 'success') {
155
+          const res = response.data.model
156
+          this.ordercode = res.ordercode // 工单编号
157
+          this.name = res.name // 姓名
158
+          this.phone = res.phone // 电话
159
+          this.sex = res.sex // 性别
160
+          res.provincename = res.provincename === null ? '' : res.provincename
161
+          res.cityname = res.cityname === null ? '' : res.cityname
162
+          res.address = res.address === null ? '' : res.address
163
+          this.address = res.provincename + res.cityname + res.address // 地址
164
+          this.sourcename = res.sourcename // 工单来源
165
+          this.sourcetype = res.typename // 工单类型
166
+          this.content = filterContent.content(res.content) // 工单内容
167
+          this.createtime = res.createtime // 创建时间
168
+          this.createuser = res.createuser + '-' + res.createusername // 创建人
169
+          // 附件
170
+          if (res.files) {
171
+            this.fileList = res.files
172
+          }
173
+        }
174
+      })
175
+    }
176
+  }
177
+}
178
+</script>
179
+
180
+<style rel="stylesheet/scss" lang="scss">
181
+	.order_detail{
182
+		.el-col{
183
+			margin-bottom: 20px;
184
+		}
185
+		.el-icon-time{
186
+			color: #d81e06;
187
+		}
188
+		.el-card__header{
189
+			padding-top: 14px;
190
+			padding-bottom: 14px;
191
+			background-color: #F5F5F6;
192
+		}
193
+		.order_file{
194
+			.el-card__body{
195
+				padding: 22px 0 0 0;
196
+				text-align: center;
197
+			}
198
+		}
199
+		.order_steps{
200
+			.el-step__icon-inner{
201
+				display: none;
202
+			}
203
+		}
204
+		.order_record {
205
+			.el-card__body{
206
+				padding: 0;
207
+			}
208
+			.el-tabs__header{
209
+				padding: 0px 20px;
210
+				background-color: #F5F5F6;
211
+					.el-tabs__item{
212
+						font-size: 16px;
213
+						height: 47px;
214
+						line-height: 47px;
215
+					}
216
+			}
217
+		}
218
+	}
219
+</style>
220
+
221
+<style rel="stylesheet/scss" lang="scss" scoped>
222
+	.order_detail{
223
+		.order_detail_body{
224
+			margin-bottom: 20px;
225
+			.round_img{
226
+				width: 90px;
227
+				height: 90px;
228
+				border-radius: 50%;
229
+				overflow: hidden;
230
+				margin: 14px;
231
+				img{
232
+					width: 100%;
233
+					height: 100%;
234
+				}
235
+			}
236
+			.title{
237
+				font-size: 20px;
238
+				.title_icon{
239
+					color: #d81e06;
240
+					font-size: 16px;
241
+					margin-right: 20px;
242
+				}
243
+			}
244
+			.title_sub{
245
+				font-size: 14px;
246
+				color: #666666;
247
+			}
248
+			.order_detail_content{
249
+				background-color: #F5F5F6;
250
+				padding-top: 20px;
251
+				color: #4c4c4c;
252
+				font-size: 14px;
253
+				.order_detail_item{
254
+					margin-bottom: 10px;
255
+					.order_content{
256
+						margin-top: 10px;
257
+					}
258
+					.order_file {
259
+						position: relative;
260
+						cursor: pointer;
261
+						.img_mask {
262
+							display: none;
263
+							position: absolute;
264
+							left: 0px;
265
+							top: 0px;
266
+							background-color: rgba(0, 0, 0, 0.3);
267
+							width: 100%;
268
+							height: 22px;
269
+							text-align: right;
270
+							z-index: 1;
271
+							i {
272
+								font-size: 20px;
273
+								line-height: 22px;
274
+								display: inline-block;
275
+								margin-right: 15px;
276
+								color: #fff;
277
+							}
278
+						}
279
+						p {
280
+							margin-top: 5px;
281
+							padding-left: 14px;
282
+							padding-right: 14px;
283
+							white-space: nowrap;
284
+							overflow: hidden;
285
+							text-overflow: ellipsis;
286
+						}
287
+						.file_icon{
288
+							height: 68px;
289
+							line-height: 68px;
290
+							font-size: 68px;
291
+							color: #409EFF;
292
+						}
293
+					}
294
+					.order_file:hover .img_mask {
295
+						display: block;
296
+					}
297
+				}
298
+			}
299
+		}
300
+		.green {
301
+			color: #00c1de;
302
+		}
303
+		.done {
304
+			color: #198120;
305
+		}
306
+		.red {
307
+			color: #d81e06;
308
+		}
309
+		.yellow{
310
+			color: #e6a23c;
311
+		}
312
+		.order_steps{
313
+			// height: 240px;
314
+			.el-step__icon-inner{
315
+				display: none;
316
+			}
317
+		}
318
+
319
+		.tab_body{
320
+			padding: 0 20px 20px 20px;
321
+		}
322
+	}
323
+</style>

+ 5 - 8
CallCenterWeb.UI/src/views/memberManagement/memberList/components/editLabel.vue

@@ -1,11 +1,8 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
6
-      </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
4
+      <el-form-item label="已选中标签" prop="SelectedLabel">
5
+        <el-input v-model="ruleForm.SelectedLabel" placeholder="已选中标签"/>
9 6
       </el-form-item>
10 7
       <el-form-item>
11 8
         <el-button type="primary" @click="submitForm">保存</el-button>
@@ -47,14 +44,14 @@ export default {
47 44
       ruleForm: {
48 45
         unique_id: '', //		否	string	callid
49 46
         ordercode: '',
50
-        labelName: '',
47
+        SelectedLabel: '',
51 48
         labelDescription: '',
52 49
       },
53 50
       rules: {
54
-        labelName: [{
51
+        SelectedLabel: [{
55 52
           required: true,
56 53
           trigger: 'blur',
57
-          message: '请输入标签姓名',
54
+          message: '已选中标签',
58 55
         }]
59 56
       },
60 57
       loading: false

+ 14 - 4
CallCenterWeb.UI/src/views/memberManagement/memberList/components/freeCoupons.vue

@@ -1,11 +1,21 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
4
+      <el-form-item label="优惠券">
5
+        <el-select v-model="ruleForm.labelName" class="form_select" placeholder="优惠券">
6
+          <el-option label="全部" value="0"></el-option>
7
+          <el-option label="代金券" value="1"></el-option>
8
+          <el-option label="折扣券" value="2"></el-option>
9
+          <el-option label="兑换券" value="3"></el-option>
10
+        </el-select>
6 11
       </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
12
+      <el-form-item label="优惠券">
13
+        <el-select v-model="ruleForm.labelName" class="form_select" placeholder="优惠券">
14
+          <el-option label="全部" value="0"></el-option>
15
+          <el-option label="代金券" value="1"></el-option>
16
+          <el-option label="折扣券" value="2"></el-option>
17
+          <el-option label="兑换券" value="3"></el-option>
18
+        </el-select>
9 19
       </el-form-item>
10 20
       <el-form-item>
11 21
         <el-button type="primary" @click="submitForm">保存</el-button>

+ 17 - 12
CallCenterWeb.UI/src/views/memberManagement/memberList/components/memberExtension.vue

@@ -1,11 +1,20 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
4
+      <el-form-item label="付费会员类型">
5
+        <el-select v-model="ruleForm.paidMemberType" class="form_select" placeholder="付费会员类型">
6
+          <el-option label="一般付费" value="0"></el-option>
7
+          <el-option label="超级付费" value="1"></el-option>
8
+        </el-select>
6 9
       </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
10
+      <el-form-item label="延期条件">
11
+        <el-select v-model="ruleForm.extensionCondition" class="form_select" placeholder="延期条件">
12
+          <el-option label="指定会员或指定条件" value="0"></el-option>
13
+          <el-option label="付费会员已失效" value="1"></el-option>
14
+        </el-select>
15
+      </el-form-item>
16
+      <el-form-item label="延期天数" prop="deferredDays">
17
+        <el-input v-model="ruleForm.deferredDays" placeholder="请输入延期天数"/>
9 18
       </el-form-item>
10 19
       <el-form-item>
11 20
         <el-button type="primary" @click="submitForm">保存</el-button>
@@ -47,16 +56,12 @@ export default {
47 56
       sourceOptions: [], // 工单来源下拉数据
48 57
       ruleForm: {
49 58
         unique_id: '', //		否	string	callid
50
-        ordercode: '',
51
-        labelName: '',
52
-        labelDescription: '',
59
+        ordercode: '', 
60
+        paidMemberType: '', // 付费会员类型 
61
+        extensionCondition: '', // 延期条件
62
+        deferredDays: '', // 延期天数
53 63
       },
54 64
       rules: {
55
-        labelName: [{
56
-          required: true,
57
-          trigger: 'blur',
58
-          message: '请输入标签姓名',
59
-        }]
60 65
       },
61 66
       loading: false
62 67
     }

+ 15 - 11
CallCenterWeb.UI/src/views/memberManagement/memberList/components/memberLevel.vue

@@ -1,11 +1,21 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
4
+      <el-form-item label="会员等级">
5
+        <el-select v-model="ruleForm.memberLevelInput" class="form_select" placeholder="优惠券">
6
+          <el-option label="普通会员" value="0"></el-option>
7
+          <el-option label="高级会员" value="1"></el-option>
8
+          <el-option label="尊贵会员" value="2"></el-option>
9
+          <el-option label="黄金会员" value="3"></el-option>
10
+        </el-select>
6 11
       </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
12
+      <el-form-item label="备注">
13
+        <el-input
14
+          type="textarea"
15
+          :rows="4"
16
+          placeholder="备注"
17
+          v-model="ruleForm.textarea">
18
+        </el-input>
9 19
       </el-form-item>
10 20
       <el-form-item>
11 21
         <el-button type="primary" @click="submitForm">保存</el-button>
@@ -48,15 +58,9 @@ export default {
48 58
       ruleForm: {
49 59
         unique_id: '', //		否	string	callid
50 60
         ordercode: '',
51
-        labelName: '',
52
-        labelDescription: '',
61
+        memberLevelInput: '', // 会员等级
53 62
       },
54 63
       rules: {
55
-        labelName: [{
56
-          required: true,
57
-          trigger: 'blur',
58
-          message: '请输入标签姓名',
59
-        }]
60 64
       },
61 65
       loading: false
62 66
     }

+ 216 - 0
CallCenterWeb.UI/src/views/memberManagement/memberList/components/searchFilter.vue

@@ -0,0 +1,216 @@
1
+<template>
2
+    <div class="filter-container">
3
+      <el-input v-model="searchDatas.customerName" placeholder="客户姓名" class="filter-item"/>
4
+      <el-input v-model="searchDatas.phoneNumber" placeholder="手机号码" class="filter-item"/>
5
+      <el-input v-model="searchDatas.memberType" placeholder="会员类型" class="filter-item"/>
6
+      <el-input v-model="searchDatas.province" placeholder="省份" class="filter-item"/>
7
+      <el-input v-model="searchDatas.city" placeholder="市" class="filter-item"/>
8
+      <el-input v-model="searchDatas.county" placeholder="县区" class="filter-item"/>
9
+      <el-input v-model="searchDatas.township" placeholder="乡镇" class="filter-item"/>
10
+      <el-input v-model="searchDatas.address" placeholder="详细地址" class="filter-item"/>
11
+      <el-input v-model="searchDatas.memberBirthday" placeholder="会员生日" class="filter-item"/>
12
+      <el-input v-model="searchDatas.referrer" placeholder="推荐人" class="filter-item"/>
13
+      <el-input v-model="searchDatas.contactFrequency" placeholder="联系频次" class="filter-item"/>
14
+      <el-button type="primary" class="filter-item" icon="el-icon-search" @click="btn_search">搜索</el-button>
15
+      <el-button v-permission="'HY_add'" type="primary" class="filter-item" icon="el-icon-plus" @click="btn_add">添加</el-button>
16
+      <el-button v-permission="'HY_label'" type="primary" class="filter-item" @click="btn_label">打标签</el-button>
17
+      <el-button v-permission="'HY_coupon'" type="primary" class="filter-item" @click="btn_coupon">赠送优惠券</el-button>
18
+      <el-button v-permission="'HY_send_message'" type="primary" class="filter-item" @click="btn_send_message">群发短信</el-button>
19
+      <el-button v-permission="'HY_member_extension'" type="primary" class="filter-item" @click="btn_member_extension">付费会员延期</el-button>
20
+      <el-button v-permission="'HY_member_level'" type="primary" class="filter-item" @click="btn_member_level">会员等级</el-button>
21
+      <el-button type="primary" class="filter-item" @click="btn_import"><svg-icon icon-class="daoru" />导入</el-button>
22
+      <el-button type="primary" class="filter-item" @click="btn_export">导出</el-button>
23
+    </div>
24
+</template>
25
+
26
+<script>
27
+import { getProviceCity, getDictionary } from '@/api/commonAPI'
28
+import { pickerOptions } from '@/utils'
29
+import addOrEdit from './addOrEdit'
30
+import editLabel from './editLabel'
31
+import freeCoupons from './freeCoupons'
32
+import sendGroupMessage from './sendGroupMessage'
33
+import memberExtension from './memberExtension'
34
+import memberLevel from './memberLevel'
35
+
36
+
37
+export default {
38
+  name: 'SearchFilter',
39
+  props: {
40
+    searchDatas: {
41
+      required: true,
42
+      type: Object,
43
+      default() {
44
+        return {
45
+            customerName: '', //客户姓名
46
+            phoneNumber: '', //手机号码
47
+            memberType: '', //会员类型
48
+            province: '', //省份
49
+            city: '', //市
50
+            county: '', //县区
51
+            township: '', //乡镇
52
+            address: '', //详细地址
53
+            memberBirthday: '', //会员生日
54
+            referrer: '', //推荐人
55
+            contactFrequency: '', //联系频次
56
+        }
57
+      }
58
+    },
59
+    // 是否显示 添加
60
+    showadd: { 
61
+      type: Boolean,
62
+      default: false
63
+    },
64
+    // 是否显示 批量删除
65
+    showdeletes: {
66
+      type: Boolean,
67
+      default: true
68
+    }
69
+  },
70
+  data() {
71
+    return {
72
+      provinceCityDatas: [], // 省市下拉数据
73
+      props: {
74
+        // 自定义省市下拉数据的key值
75
+        value: 'code',
76
+        label: 'name',
77
+        children: 'entityJson'
78
+      },
79
+      deptOptions: [], // 咨询/投诉下拉数据
80
+      typeOptions: [], // 工单类型下拉数据
81
+      pickerOptions // 日期数据
82
+    }
83
+  },
84
+  created() {
85
+    this.getProCity()
86
+    this.getOrderType()
87
+    this.getDeptData()// 获取咨询/投诉部门
88
+  },
89
+  methods: {
90
+    btn_search() {
91
+      this.$emit('search', this.searchDatas)
92
+    },
93
+    btn_export() {
94
+      this.$emit('export', this.searchDatas)
95
+    },
96
+    btn_deletes() {
97
+      this.$emit('delorders')
98
+    },
99
+    btn_add() {
100
+      this.$layer.iframe({
101
+        content: {
102
+          content: addOrEdit, // 传递的组件对象
103
+          parent: this, // 当前的vue对象
104
+          data: { rowid: '' } // props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
105
+        },
106
+        area: ['80%', '90%'],
107
+        title: '添加工单'
108
+      })
109
+    },
110
+    btn_label() {
111
+      this.$layer.iframe({
112
+        content: {
113
+          content: editLabel,
114
+          parent: this,
115
+          data: { 'rowid': '' }
116
+        },
117
+        area: ['80%', '90%'],
118
+        title: '打标签'
119
+      })
120
+    },
121
+        btn_coupon() {
122
+      this.$layer.iframe({
123
+        content: {
124
+          content: freeCoupons, // 传递的组件对象
125
+          parent: this, // 当前的vue对象
126
+          data: { 'rowid': '' }// props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
127
+        },
128
+        area: ['80%', '90%'],
129
+        title: '赠送优惠券'
130
+      })
131
+    },
132
+    btn_send_message(editId) {
133
+      this.$layer.iframe({
134
+        content: {
135
+          content: sendGroupMessage, // 传递的组件对象
136
+          parent: this, // 当前的vue对象
137
+          data: { 'rowid': editId }// props
138
+        },
139
+        area: ['80%', '90%'],
140
+        title: '群发短信'
141
+      })
142
+    },
143
+    btn_member_extension(editId) {
144
+      this.$layer.iframe({
145
+        content: {
146
+          content: memberExtension, // 传递的组件对象
147
+          parent: this, // 当前的vue对象
148
+          data: { 'rowid': editId }// props
149
+        },
150
+        area: ['80%', '90%'],
151
+        title: '付费会员延期'
152
+      })
153
+    },
154
+    btn_member_level(editId) {
155
+      this.$layer.iframe({
156
+        content: {
157
+          content: memberLevel, // 传递的组件对象
158
+          parent: this, // 当前的vue对象
159
+          data: { 'rowid': editId }// props
160
+        },
161
+        area: ['80%', '90%'],
162
+        title: '会员等级'
163
+      })
164
+    },
165
+    btn_import() {
166
+      if (!this.planId) {
167
+        this.$message.warning('请先选择一行!')
168
+        return
169
+      }
170
+      this.$layer.iframe({
171
+        content: {
172
+          content: importTels, // 传递的组件对象
173
+          parent: this, // 当前的vue对象
174
+          data: { 'rowid': this.planId }// props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
175
+        },
176
+        area: ['40%', '380px'],
177
+        shadeClose: false,
178
+        title: '导入号码'
179
+      })
180
+    },
181
+    // 获取省市下拉数据
182
+    getProCity() {
183
+      return new Promise(resolve => {
184
+        getProviceCity().then(response => {
185
+          if (response.state.toLowerCase() === 'success') {
186
+            this.provinceCityDatas = response.data
187
+          }
188
+        })
189
+        resolve()
190
+      })
191
+    },
192
+    // 获取工单类型
193
+    getOrderType() {
194
+      return new Promise(resolve => {
195
+        getDictionary('HYGDLX').then(response => {
196
+          if (response.state.toLowerCase() === 'success') {
197
+            this.typeOptions = response.data
198
+          }
199
+        })
200
+        resolve()
201
+      })
202
+    },
203
+    // 获取咨询/投诉部门
204
+    getDeptData() {
205
+      return new Promise(resolve => {
206
+        getDictionary('HYZXBM').then(response => {
207
+          if (response.state.toLowerCase() === 'success') {
208
+            this.deptOptions = response.data
209
+          }
210
+        })
211
+        resolve()
212
+      })
213
+    }
214
+  }
215
+}
216
+</script>

+ 9 - 13
CallCenterWeb.UI/src/views/memberManagement/memberList/components/sendGroupMessage.vue

@@ -1,14 +1,16 @@
1 1
 <template>
2 2
   <div v-loading="loading">
3 3
     <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="150px" class="order_form">
4
-      <el-form-item label="标签名称" prop="labelName">
5
-        <el-input v-model="ruleForm.labelName" placeholder="请输入标签名称"/>
6
-      </el-form-item>
7
-      <el-form-item label="标签说明" prop="labelDescription">
8
-        <el-input v-model="ruleForm.labelDescription" placeholder="请输入客户电话"/>
4
+      <el-form-item label="短信内容">
5
+        <el-input
6
+          type="textarea"
7
+          :rows="4"
8
+          placeholder="请输入内容"
9
+          v-model="ruleForm.textarea">
10
+        </el-input>
9 11
       </el-form-item>
10 12
       <el-form-item>
11
-        <el-button type="primary" @click="submitForm">保存</el-button>
13
+        <el-button type="primary" @click="submitForm">发送短信</el-button>
12 14
       </el-form-item>
13 15
     </el-form>
14 16
   </div>
@@ -47,15 +49,9 @@ export default {
47 49
       ruleForm: {
48 50
         unique_id: '', //		否	string	callid
49 51
         ordercode: '',
50
-        labelName: '',
51 52
         labelDescription: '',
52 53
       },
53 54
       rules: {
54
-        labelName: [{
55
-          required: true,
56
-          trigger: 'blur',
57
-          message: '请输入标签姓名',
58
-        }]
59 55
       },
60 56
       loading: false
61 57
     }
@@ -66,7 +62,7 @@ export default {
66 62
     }
67 63
     Promise.all([])
68 64
       .then(() => {
69
-        if (this.rowid) {
65
+        if (this.rowid) {8
70 66
           this.ruleForm.ordercode = this.rowid
71 67
           this.getDetail(this.rowid)
72 68
         }

+ 166 - 102
CallCenterWeb.UI/src/views/memberManagement/memberList/index.vue

@@ -1,51 +1,154 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <div class="filter-container">
4
-      <el-input v-model="label_name" placeholder="手机号" class="filter-item"/>
5
-      <el-input v-model="label_name" placeholder="有无购买记录" class="filter-item"/>
6
-      <el-input v-model="label_name" placeholder="付费会员" class="filter-item"/>
7
-      <el-input v-model="label_name" placeholder="会员等级" class="filter-item"/>
8
-      <el-input v-model="label_name" placeholder="请选择标签" class="filter-item"/>
9
-      <el-input v-model="label_name" placeholder="推荐人手机号" class="filter-item"/>
10
-      <el-input v-model="label_name" placeholder="日期" class="filter-item"/>
11
-      <el-input v-model="label_name" placeholder="备注" class="filter-item"/>
12
-      <el-input v-model="label_name" placeholder="姓名" class="filter-item"/>
13
-      <el-input v-model="label_name" placeholder="导购员手机号" class="filter-item"/>
14
-      <el-input v-model="label_name" placeholder="请选择门店" class="filter-item"/>
15
-      <el-input v-model="label_name" placeholder="请选择地区" class="filter-item"/>
16
-      <el-input v-model="label_name" placeholder="请选择店铺" class="filter-item"/>
17
-      <el-button type="primary" class="filter-item" icon="el-icon-search" @click="btn_search">搜索</el-button>
18
-      <el-button v-permission="'HY_add'" type="primary" class="filter-item" icon="el-icon-plus" @click="btn_add">添加</el-button>
19
-      <el-button v-permission="'HY_label'" type="primary" class="filter-item" @click="btn_label">打标签</el-button>
20
-      <el-button v-permission="'HY_coupon'" type="primary" class="filter-item" @click="btn_coupon">赠送优惠券</el-button>
21
-      <el-button v-permission="'HY_send_message'" type="primary" class="filter-item" @click="btn_send_message">群发短信</el-button>
22
-      <el-button v-permission="'HY_member_extension'" type="primary" class="filter-item" @click="btn_member_extension">付费会员延期</el-button>
23
-      <el-button v-permission="'HY_member_level'" type="primary" class="filter-item" @click="btn_member_level">会员等级</el-button>
24
-      <el-button v-permission="'HY_add'" type="primary" class="filter-item" @click="btn_add">导出</el-button>
25
-    </div>
26
-
3
+    <search-filter
4
+      :search-datas.sync="searchDatas"
5
+      showadd
6
+      @search="btn_search"
7
+      @delorders="btn_search"
8
+      @export="btn_search">
9
+    </search-filter>
27 10
     <el-table v-loading="loading" :data="dataLists" border stripe>
28
-      <el-table-column
11
+      <el-table-column 
29 12
         type="selection"
30 13
         width="40">
31 14
       </el-table-column>
32
-      <el-table-column type="index" label="手机号" align="center" fixed width=""/>
33
-      <el-table-column type="index" label="姓名" align="center" fixed width=""/>
34
-      <el-table-column type="index" label="性别" align="center" fixed width=""/>
35
-      <el-table-column type="index" label="推荐人" align="center" fixed width=""/>
36
-      <el-table-column type="index" label="是否禁用" align="center" fixed width=""/>
37
-      <el-table-column type="index" label="标签" align="center" fixed width=""/>
38
-      <el-table-column label="标签描述" align="center">
39
-        <template slot-scope="scope">
40
-          {{ scope.row.content | formatterContent }}
41
-        </template>
15
+      <el-table-column
16
+        type="index"
17
+        label="客户姓名"
18
+        align="center"
19
+        fixed
20
+        width="">
21
+      </el-table-column>
22
+      <el-table-column
23
+        type="index"
24
+        label="客户性别"
25
+        align="center"
26
+        fixed
27
+        width="">
28
+      </el-table-column>
29
+      <el-table-column
30
+        type="index"
31
+        label="客户年龄"
32
+        align="center"
33
+        fixed
34
+        width="">
35
+      </el-table-column>
36
+      <el-table-column
37
+        type="index"
38
+        label="手机号码1"
39
+        align="center"
40
+        fixed
41
+        width="">
42
+      </el-table-column>
43
+      <el-table-column
44
+        type="index"
45
+        label="手机号码2"
46
+        align="center"
47
+        fixed
48
+        width="">
49
+      </el-table-column>
50
+      <el-table-column
51
+        type="index"
52
+        label="固定电话"
53
+        align="center"
54
+        fixed
55
+        width="">
56
+      </el-table-column>
57
+      <el-table-column
58
+        type="index"
59
+        label="会员类型"
60
+        align="center"
61
+        fixed
62
+        width="">
63
+      </el-table-column>
64
+      <el-table-column
65
+        type="index"
66
+        label="地址"
67
+        align="center"
68
+        fixed
69
+        width="">
42 70
       </el-table-column>
43
-      <el-table-column label="操作" width="" align="center" class-name="oparate_btn" fixed="right">
44
-        <template slot-scope="scope">
45
-          <el-button v-permission="'HY_edit'" size="mini" plain type="primary" @click="btn_edit(scope.row.ordercode)">详情</el-button>
46
-          <el-button v-permission="'HY_edit'" size="mini" plain type="primary" @click="btn_edit(scope.row.ordercode)">编辑</el-button>
47
-          <!-- <el-button v-permission="'HY_edit'" size="mini" plain type="primary" @click="btn_edit(scope.row.ordercode)">会员等级</el-button> -->
48
-          <el-button v-permission="'HY_delete'" size="mini" plain type="danger" @click="btn_delete(scope.row.id)">删除</el-button>
71
+      <el-table-column
72
+        type="index"
73
+        label="邮编"
74
+        align="center"
75
+        fixed
76
+        width="">
77
+      </el-table-column>
78
+      <el-table-column
79
+        type="index"
80
+        label="鞋码"
81
+        align="center"
82
+        fixed
83
+        width="">
84
+      </el-table-column>
85
+      <el-table-column
86
+        type="index"
87
+        label="会员日期"
88
+        align="center"
89
+        fixed
90
+        width="">
91
+      </el-table-column>
92
+      <el-table-column
93
+        type="index"
94
+        label="会员积分"
95
+        align="center"
96
+        fixed
97
+        width="">
98
+      </el-table-column>
99
+      <el-table-column
100
+        type="index"
101
+        label="推荐人"
102
+        align="center"
103
+        fixed
104
+        width="">
105
+      </el-table-column>
106
+      <el-table-column
107
+        type="index"
108
+        label="累计消费金额"
109
+        align="center"
110
+        fixed
111
+        width="">
112
+      </el-table-column>
113
+      <el-table-column
114
+        type="index"
115
+        label="累计积分"
116
+        align="center"
117
+        fixed
118
+        width="">
119
+      </el-table-column>
120
+      <el-table-column
121
+        label="操作"
122
+        width=""
123
+        align="center"
124
+        class-name="oparate_btn"
125
+        fixed="right">
126
+        <template
127
+          slot-scope="scope">
128
+          <el-button
129
+            v-permission="'HY_detail'"
130
+            size="mini"
131
+            plain
132
+            type="primary"
133
+            @click="btn_detail(scope.row.ordercode)">
134
+            详情
135
+          </el-button>
136
+          <el-button
137
+            v-permission="'HY_edit'"
138
+            size="mini"
139
+            plain
140
+            type="primary"
141
+            @click="btn_edit(scope.row.ordercode)">
142
+            编辑
143
+          </el-button>
144
+          <el-button
145
+            v-permission="'HY_delete'"
146
+            size="mini"
147
+            plain
148
+            type="danger"
149
+            @click="btn_delete(scope.row.id)">
150
+            删除
151
+          </el-button>
49 152
         </template>
50 153
       </el-table-column>
51 154
     </el-table>
@@ -55,14 +158,17 @@
55 158
       :pageindex.sync="pageParams.pageindex"
56 159
       :pagesize.sync="pageParams.pagesize"
57 160
       class="pagination"
58
-      @pagination="getList" />
161
+      @pagination="getList">
162
+    </pagination>
59 163
   </div>
60 164
 </template>
61 165
 
62 166
 <script>
63 167
 
64 168
 import { getOrderLists, deleteOrder } from '@/api/order/orderSearch'
169
+import searchFilter from './components/searchFilter'
65 170
 import addOrEdit from './components/addOrEdit'
171
+import detail from './components/detail'
66 172
 import editLabel from './components/editLabel'
67 173
 import freeCoupons from './components/freeCoupons'
68 174
 import sendGroupMessage from './components/sendGroupMessage'
@@ -74,12 +180,25 @@ import Pagination from '@/components/Pagination' // 对el-pagination 二次封
74 180
 export default {
75 181
   name: 'memberLabel',
76 182
   components: {
77
-    Pagination
183
+    Pagination,
184
+    searchFilter
78 185
   },
79 186
   data() {
80 187
     return {
188
+      searchDatas: {
189
+        customerName: '', //客户姓名
190
+        phoneNumber: '', //手机号码
191
+        memberType: '', //会员类型
192
+        province: '', //省份
193
+        city: '', //市
194
+        county: '', //县区
195
+        township: '', //乡镇
196
+        address: '', //详细地址
197
+        memberBirthday: '', //会员生日
198
+        referrer: '', //推荐人
199
+        contactFrequency: '', //联系频次
200
+      },
81 201
       loading: false,
82
-      label_name: '',//标签名
83 202
       pageParams: {
84 203
         pageindex: 1, // 当前第几页
85 204
         pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
@@ -118,70 +237,15 @@ export default {
118 237
       this.pageParams.pageindex = 1
119 238
       this.getList()
120 239
     },
121
-    btn_add() {
122
-      this.$layer.iframe({
123
-        content: {
124
-          content: addOrEdit, // 传递的组件对象
125
-          parent: this, // 当前的vue对象
126
-          data: { 'rowid': '' }// props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
127
-        },
128
-        area: ['80%', '90%'],
129
-        title: '添加工单'
130
-      })
131
-    },
132
-    btn_label() {
133
-      this.$layer.iframe({
134
-        content: {
135
-          content: editLabel,
136
-          parent: this,
137
-          data: { 'rowid': '' }
138
-        },
139
-        area: ['80%', '90%'],
140
-        title: '打标签'
141
-      })
142
-    },
143
-    btn_coupon() {
144
-      this.$layer.iframe({
145
-        content: {
146
-          content: freeCoupons, // 传递的组件对象
147
-          parent: this, // 当前的vue对象
148
-          data: { 'rowid': '' }// props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
149
-        },
150
-        area: ['80%', '90%'],
151
-        title: '赠送优惠券'
152
-      })
153
-    },
154
-    btn_send_message(editId) {
155
-      this.$layer.iframe({
156
-        content: {
157
-          content: sendGroupMessage, // 传递的组件对象
158
-          parent: this, // 当前的vue对象
159
-          data: { 'rowid': editId }// props
160
-        },
161
-        area: ['80%', '90%'],
162
-        title: '群发短信'
163
-      })
164
-    },
165
-    btn_member_extension(editId) {
166
-      this.$layer.iframe({
167
-        content: {
168
-          content: memberExtension, // 传递的组件对象
169
-          parent: this, // 当前的vue对象
170
-          data: { 'rowid': editId }// props
171
-        },
172
-        area: ['80%', '90%'],
173
-        title: '付费会员延期'
174
-      })
175
-    },
176
-    btn_member_level(editId) {
240
+    btn_detail(editId) {
177 241
       this.$layer.iframe({
178 242
         content: {
179
-          content: memberLevel, // 传递的组件对象
243
+          content: detail, // 传递的组件对象
180 244
           parent: this, // 当前的vue对象
181 245
           data: { 'rowid': editId }// props
182 246
         },
183 247
         area: ['80%', '90%'],
184
-        title: '会员等级'
248
+        title: '工单详情'
185 249
       })
186 250
     },
187 251
     btn_edit(editId) {