sale-client 3.7.19 → 3.7.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex-row">
|
|
3
|
+
<div class="basic-main">
|
|
4
|
+
<criteria-paged :model="model" v-ref:paged @sort="sort">
|
|
5
|
+
<criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
|
|
6
|
+
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
|
7
|
+
<div class="row">
|
|
8
|
+
<div class="col-sm-3 form-group">
|
|
9
|
+
<label class="font_normal_body">用户姓名:</label>
|
|
10
|
+
<input type="text" class="input_search" v-model="model.f_user_name"
|
|
11
|
+
condition="f_user_name like '%{}%'" placeholder='请输入用户姓名'>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="col-sm-3 form-group">
|
|
14
|
+
<label class="font_normal_body">用户标识:</label>
|
|
15
|
+
<input type="text" class="input_search" v-model="model.f_user_id"
|
|
16
|
+
condition="f_user_id like '%{}%'" placeholder='请输入用户标识'>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="col-sm-3 form-group">
|
|
19
|
+
<label class="font_normal_body">用户地址:</label>
|
|
20
|
+
<input type="text" class="input_search" v-model="model.f_user_address"
|
|
21
|
+
condition="f_user_address like '%{}%'" placeholder='请输入用户地址'>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="col-sm-3 form-group">
|
|
24
|
+
<label class="font_normal_body">回复人:</label>
|
|
25
|
+
<input type="text" class="input_search" v-model="model.f_attendant"
|
|
26
|
+
condition="f_attendant like '%{}%'" placeholder='请输入回复人'>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="row">
|
|
30
|
+
<div class="col-sm-3 form-group">
|
|
31
|
+
<label class="font_normal_body">转人工时间:</label>
|
|
32
|
+
<div style="display: flex; align-items: center;">
|
|
33
|
+
<datepicker placeholder="开始日期"
|
|
34
|
+
style="width: 100px; margin-right: 5px;"
|
|
35
|
+
v-model="model.startDate"
|
|
36
|
+
:value.sync="model.startDate"
|
|
37
|
+
:format="'yyyy-MM-dd'"></datepicker>
|
|
38
|
+
<span style="margin: 0 5px;">~</span>
|
|
39
|
+
<datepicker placeholder="结束日期"
|
|
40
|
+
style="width: 100px;"
|
|
41
|
+
v-model="model.endDate"
|
|
42
|
+
:value.sync="model.endDate"
|
|
43
|
+
:format="'yyyy-MM-dd'"></datepicker>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="col-sm-3 form-group">
|
|
47
|
+
<label class="font_normal_body">人工回复时间:</label>
|
|
48
|
+
<div style="display: flex; align-items: center;">
|
|
49
|
+
<datepicker placeholder="开始日期"
|
|
50
|
+
style="width: 100px; margin-right: 5px;"
|
|
51
|
+
v-model="model.startMsgDate"
|
|
52
|
+
:value.sync="model.startMsgDate"
|
|
53
|
+
:format="'yyyy-MM-dd'"></datepicker>
|
|
54
|
+
<span style="margin: 0 5px;">~</span>
|
|
55
|
+
<datepicker placeholder="结束日期"
|
|
56
|
+
style="width: 100px;"
|
|
57
|
+
v-model="model.endMsgDate"
|
|
58
|
+
:value.sync="model.endMsgDate"
|
|
59
|
+
:format="'yyyy-MM-dd'"></datepicker>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<div class="col-sm-6 form-group" style="text-align: right;">
|
|
63
|
+
<button class="button_search button_spacing" @click="search()">查询</button>
|
|
64
|
+
<button class="button_clear button_spacing" @click="clear()">重置</button>
|
|
65
|
+
<export-excel
|
|
66
|
+
:data="getCondition"
|
|
67
|
+
:field="getfield"
|
|
68
|
+
sqlurl="rs/logic/userExport"
|
|
69
|
+
sql-name="userQuery"
|
|
70
|
+
template-name='用户导出'
|
|
71
|
+
:choose-col="true">
|
|
72
|
+
</export-excel>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</criteria>
|
|
77
|
+
|
|
78
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
|
|
79
|
+
<template partial='head'>
|
|
80
|
+
<tr>
|
|
81
|
+
<th><input type='checkbox' v-model="allSelect" @change="selectAll"></th>
|
|
82
|
+
<th>序号</th>
|
|
83
|
+
<th>
|
|
84
|
+
<nobr>
|
|
85
|
+
<data-order field="f_user_name" name="用户姓名"
|
|
86
|
+
:order.sync="orderFields.f_user_name"></data-order>
|
|
87
|
+
</nobr>
|
|
88
|
+
</th>
|
|
89
|
+
<th>
|
|
90
|
+
<nobr>
|
|
91
|
+
<data-order field="f_user_id" name="用户标识"
|
|
92
|
+
:order.sync="orderFields.f_user_id"></data-order>
|
|
93
|
+
</nobr>
|
|
94
|
+
</th>
|
|
95
|
+
<th>
|
|
96
|
+
<nobr>
|
|
97
|
+
<data-order field="f_user_address" name="用户地址"
|
|
98
|
+
:order.sync="orderFields.f_user_address"></data-order>
|
|
99
|
+
</nobr>
|
|
100
|
+
</th>
|
|
101
|
+
<th>
|
|
102
|
+
<nobr>
|
|
103
|
+
<data-order field="f_ivr_time" name="转人工时间"
|
|
104
|
+
:order.sync="orderFields.f_ivr_time"></data-order>
|
|
105
|
+
</nobr>
|
|
106
|
+
</th>
|
|
107
|
+
<th>
|
|
108
|
+
<nobr>
|
|
109
|
+
<data-order field="f_msg_time" name="人工回复时间"
|
|
110
|
+
:order.sync="orderFields.f_msg_time"></data-order>
|
|
111
|
+
</nobr>
|
|
112
|
+
</th>
|
|
113
|
+
<th>
|
|
114
|
+
<nobr>
|
|
115
|
+
<data-order field="f_attendant" name="回复人"
|
|
116
|
+
:order.sync="orderFields.f_attendant"></data-order>
|
|
117
|
+
</nobr>
|
|
118
|
+
</th>
|
|
119
|
+
<th>
|
|
120
|
+
<nobr>
|
|
121
|
+
<data-order field="f_rate" name="评价等级"
|
|
122
|
+
:order.sync="orderFields.f_rate"></data-order>
|
|
123
|
+
</nobr>
|
|
124
|
+
</th>
|
|
125
|
+
</tr>
|
|
126
|
+
</template>
|
|
127
|
+
|
|
128
|
+
<template partial='body' scope="row">
|
|
129
|
+
<tr>
|
|
130
|
+
<td><input type='checkbox' @change="selectRow($event, row)" :checked="row.selected"></td>
|
|
131
|
+
<td>{{ $index + 1 }}</td>
|
|
132
|
+
<td>{{ row.f_user_name }}</td>
|
|
133
|
+
<td>{{ row.f_user_id }}</td>
|
|
134
|
+
<td>{{ row.f_user_address }}</td>
|
|
135
|
+
<td>{{ row.f_ivr_time }}</td>
|
|
136
|
+
<td>{{ row.f_msg_time }}</td>
|
|
137
|
+
<td>{{ row.f_attendant }}</td>
|
|
138
|
+
<td>{{ row.f_rate }}</td>
|
|
139
|
+
</tr>
|
|
140
|
+
</template>
|
|
141
|
+
</data-grid>
|
|
142
|
+
</criteria-paged>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
</template>
|
|
146
|
+
|
|
147
|
+
<script>
|
|
148
|
+
import { PagedList } from 'vue-client'
|
|
149
|
+
|
|
150
|
+
export default {
|
|
151
|
+
data() {
|
|
152
|
+
return {
|
|
153
|
+
model: new PagedList('rs/sql/saleSingleTable', 20, {
|
|
154
|
+
tablename: 't_text_log'
|
|
155
|
+
}, {
|
|
156
|
+
f_user_name: '',
|
|
157
|
+
f_user_id: '',
|
|
158
|
+
f_user_address: '',
|
|
159
|
+
f_ivr_time: '',
|
|
160
|
+
f_msg_time: '',
|
|
161
|
+
f_attendant: '',
|
|
162
|
+
f_rate: ''
|
|
163
|
+
}),
|
|
164
|
+
allSelect: false,
|
|
165
|
+
orderFields: {
|
|
166
|
+
f_user_name: 'no',
|
|
167
|
+
f_user_id: 'no',
|
|
168
|
+
f_user_address: 'no',
|
|
169
|
+
f_ivr_time: 'no',
|
|
170
|
+
f_msg_time: 'no',
|
|
171
|
+
f_attendant: 'no',
|
|
172
|
+
f_rate: 'no'
|
|
173
|
+
},
|
|
174
|
+
getfield: {
|
|
175
|
+
'f_user_name': '用户姓名',
|
|
176
|
+
'f_user_id': '用户标识',
|
|
177
|
+
'f_user_address': '用户地址',
|
|
178
|
+
'f_ivr_time': '转人工时间',
|
|
179
|
+
'f_msg_time': '人工回复时间',
|
|
180
|
+
'f_attendant': '回复人',
|
|
181
|
+
'f_rate': '评价等级'
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
methods: {
|
|
186
|
+
search() {
|
|
187
|
+
this.$refs.paged.$refs.criteria.search()
|
|
188
|
+
},
|
|
189
|
+
clear() {
|
|
190
|
+
Object.keys(this.model).forEach(key => {
|
|
191
|
+
if (key !== 'items' && key !== 'tablename') {
|
|
192
|
+
this.model[key] = ''
|
|
193
|
+
}
|
|
194
|
+
})
|
|
195
|
+
this.$refs.paged.$refs.criteria.model.f_user_name = ''
|
|
196
|
+
this.$refs.paged.$refs.criteria.model.f_user_id = ''
|
|
197
|
+
this.$refs.paged.$refs.criteria.model.f_user_address = ''
|
|
198
|
+
this.$refs.paged.$refs.criteria.model.f_attendant = ''
|
|
199
|
+
this.startDate = ''
|
|
200
|
+
this.endDate = ''
|
|
201
|
+
this.startMsgDate = ''
|
|
202
|
+
this.endMsgDate = ''
|
|
203
|
+
this.$refs.paged.$refs.criteria.search()
|
|
204
|
+
},
|
|
205
|
+
selectAll(event) {
|
|
206
|
+
this.model.rows.forEach(row => {
|
|
207
|
+
row.selected = event.target.checked
|
|
208
|
+
})
|
|
209
|
+
},
|
|
210
|
+
selectRow(event, row) {
|
|
211
|
+
row.selected = event.target.checked
|
|
212
|
+
},
|
|
213
|
+
sort(field) {
|
|
214
|
+
this.orderFields[field] = this.orderFields[field] === 'asc' ? 'desc' : 'asc'
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
computed: {
|
|
218
|
+
getCondition() {
|
|
219
|
+
let condition = ''
|
|
220
|
+
if (this.model.f_user_name) {
|
|
221
|
+
condition += ` and f_user_name like '%${this.model.f_user_name}%'`
|
|
222
|
+
}
|
|
223
|
+
if (this.model.f_user_id) {
|
|
224
|
+
condition += ` and f_user_id like '%${this.model.f_user_id}%'`
|
|
225
|
+
}
|
|
226
|
+
if (this.model.f_user_address) {
|
|
227
|
+
condition += ` and f_user_address like '%${this.model.f_user_address}%'`
|
|
228
|
+
}
|
|
229
|
+
if (this.model.f_attendant) {
|
|
230
|
+
condition += ` and f_attendant like '%${this.model.f_attendant}%'`
|
|
231
|
+
}
|
|
232
|
+
if (this.startDate && this.endDate) {
|
|
233
|
+
condition += ` and f_ivr_time between '${this.startDate}' and '${this.endDate}'`
|
|
234
|
+
}
|
|
235
|
+
if (this.startMsgDate && this.endMsgDate) {
|
|
236
|
+
condition += ` and f_msg_time between '${this.startMsgDate}' and '${this.endMsgDate}'`
|
|
237
|
+
}
|
|
238
|
+
return condition
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
</script>
|
|
243
|
+
|
|
244
|
+
<style scoped>
|
|
245
|
+
.flex-row {
|
|
246
|
+
display: flex;
|
|
247
|
+
flex-direction: row;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.basic-main {
|
|
251
|
+
width: 100%;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.form-group {
|
|
255
|
+
margin-bottom: 15px;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.input_search {
|
|
259
|
+
width: 200px;
|
|
260
|
+
padding: 6px;
|
|
261
|
+
border: 1px solid #ccc;
|
|
262
|
+
border-radius: 4px;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.button_search {
|
|
266
|
+
background-color: #007bff;
|
|
267
|
+
color: white;
|
|
268
|
+
padding: 6px 12px;
|
|
269
|
+
border: none;
|
|
270
|
+
border-radius: 4px;
|
|
271
|
+
cursor: pointer;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.button_clear {
|
|
275
|
+
background-color: #6c757d;
|
|
276
|
+
color: white;
|
|
277
|
+
padding: 6px 12px;
|
|
278
|
+
border: none;
|
|
279
|
+
border-radius: 4px;
|
|
280
|
+
cursor: pointer;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.button_spacing {
|
|
284
|
+
margin-left: 10px;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.list_area {
|
|
288
|
+
width: 100%;
|
|
289
|
+
border-collapse: collapse;
|
|
290
|
+
margin-top: 10px;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.list_area th,
|
|
294
|
+
.list_area td {
|
|
295
|
+
padding: 8px;
|
|
296
|
+
text-align: left;
|
|
297
|
+
border-bottom: 1px solid #ddd;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.list_area th {
|
|
301
|
+
background-color: #f2f2f2;
|
|
302
|
+
position: sticky;
|
|
303
|
+
top: 0;
|
|
304
|
+
z-index: 1;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.list_area tr:hover {
|
|
308
|
+
background-color: #f5f5f5;
|
|
309
|
+
}
|
|
310
|
+
</style>
|