manage-client-xy 3.2.2 → 3.2.4

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.
File without changes
@@ -0,0 +1,2 @@
1
+ #Thu Jun 12 15:46:48 CST 2025
2
+ gradle.version=8.8
File without changes
@@ -11,8 +11,8 @@ var compiler = webpack(config)
11
11
  // Define HTTP proxies to your custom API backend
12
12
  // https://github.com/chimurai/http-proxy-middleware
13
13
  // var bendi = 'http://127.0.0.1:8089/manage', fuwu = 'http://36.103.224.217:6300/'
14
- var bendi = 'http://192.168.13.135:8300/'
15
- , fuwu = 'http://192.168.13.135:8300/'
14
+ var bendi = 'http://172.16.16.163:8300/'
15
+ , fuwu = 'http://172.16.16.163:8300/'
16
16
  // ,fuwu = 'http://172.16.16.163:8300/'
17
17
  var proxyTable = {
18
18
  '/resource': {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "manage-client-xy",
3
- "version": "3.2.2",
3
+ "version": "3.2.4",
4
4
  "description": "经营管控模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "directories": {
@@ -1,45 +1,90 @@
1
1
  <template>
2
2
  <div>
3
- <modal :show.sync="show" v-ref:modal backdrop="false">
3
+ <modal :show.sync="modelShow" v-ref:modal backdrop="false">
4
4
  <header slot="modal-header" class="modal-header">
5
- <h4 class="modal-title">附件查看</h4>
5
+ <h4 class="modal-title">附件查看与审核</h4>
6
6
  </header>
7
- <article slot="modal-body" class="modal-body">
8
- <div v-if="loading" class="loading-container">
9
- <div class="loading-spinner"></div>
10
- <p>加载中...</p>
11
- </div>
12
- <div v-if="!loading && error" class="error-container">
13
- <p>{{ error }}</p>
14
- </div>
15
- <div v-if="!loading && !error && (!attachments || attachments.length === 0)" class="no-data-container">
16
- <p>暂无附件</p>
17
- </div>
18
- <div v-if="!loading && !error && attachments && attachments.length > 0" class="attachments-list">
19
- <div class="showList col-sm-12" style="padding: 10px;margin-top: 10px">
20
- <div class="col-sm-6" style="padding:10px 10px 0px 10px;height: auto;box-sizing: border-box"
21
- v-for="attachment in attachments" track-by="id">
22
- <div class="showData">
23
- <div class="left">
24
- <img v-if="isImageFile(attachment)" :src="attachment.f_downloadpath || '#'" />
25
- <div v-else class="file-icon">
26
- <i class="glyphicon" :class="getFileIconClass(attachment)"></i>
7
+ <article slot="modal-body" class="modal-body" style="min-height: 30vh;">
8
+ <tab-button-manage v-ref:tabs>
9
+ <!-- 附件查看 Tab -->
10
+ <tabs-manage header="附件查看">
11
+ <div v-if="loading" class="loading-container">
12
+ <div class="loading-spinner"></div>
13
+ <p>加载中...</p>
14
+ </div>
15
+ <div v-if="!loading && error" class="error-container">
16
+ <p>{{ error }}</p>
17
+ </div>
18
+ <div v-if="!loading && !error && (!attachments || attachments.length === 0)" class="no-data-container">
19
+ <p>暂无附件</p>
20
+ </div>
21
+ <div v-if="!loading && !error && attachments && attachments.length > 0" class="attachments-list">
22
+ <div class="showList col-sm-12" style="padding: 10px;margin-top: 10px">
23
+ <div class="col-sm-6" style="padding:10px 10px 0px 10px;height: auto;box-sizing: border-box"
24
+ v-for="attachment in attachments" :key="attachment.id">
25
+ <div class="showData">
26
+ <div class="left">
27
+ <img v-if="isImageFile(attachment)" :src="attachment.f_downloadpath || '#'" />
28
+ <div v-else class="file-icon">
29
+ <i class="glyphicon" :class="getFileIconClass(attachment)"></i>
30
+ </div>
31
+ </div>
32
+ <div class="right">
33
+ <ul class="buttonList top">
34
+ <li v-if="['jpg','jpeg','png','gif','bmp'].includes(attachment.f_filetype.toLowerCase())">
35
+ <a target="_blank" :href="attachment.f_downloadpath">预览</a>
36
+ </li>
37
+ <li>
38
+ <a href="javascript:void(0)" @click="downloadAttachment(attachment)">下载</a>
39
+ </li>
40
+ </ul>
41
+ </div>
27
42
  </div>
28
43
  </div>
29
- <div class="right">
30
- <ul class="buttonList top">
31
- <li v-if="['jpg','jpeg','png','gif','bmp'].includes(attachment.f_filetype.toLowerCase())">
32
- <a target="_blank" :href="attachment.f_downloadpath">预览</a>
33
- </li>
34
- <li>
35
- <a href="javascript:void(0)" @click="downloadAttachment(attachment)">下载</a>
36
- </li>
37
- </ul>
44
+ </div>
45
+ </div>
46
+ </tabs-manage>
47
+
48
+ <!-- 审核留言 Tab -->
49
+ <tabs-manage header="审核留言">
50
+ <div class="review-comments-container">
51
+ <!-- 历史留言展示 -->
52
+ <div class="comments-history">
53
+ <div v-if="reviewComments.length === 0" style="text-align: center; color: #999; padding: 20px;">
54
+ 暂无留言记录
55
+ </div>
56
+ <div v-else>
57
+ <div v-for="comment in reviewComments" :key="comment.id"
58
+ class="comment-item"
59
+ style="margin-bottom: 15px; padding: 12px; background-color: white; border-left: 4px solid #5CB95C; border-radius: 3px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
60
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
61
+ <span style="font-weight: bold; color: #333;">{{comment.f_operator}}</span>
62
+ <span style="color: #666; font-size: 12px;">{{comment.f_audit_date}}</span>
63
+ </div>
64
+ <div style="color: #555; line-height: 1.5;">{{comment.f_comments}}</div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+
69
+ <!-- 新增留言输入区域 - 固定在底部 -->
70
+ <div class="new-comment-section">
71
+ <div>
72
+ <!-- <label style="margin-bottom: 5px; font-weight: bold; color: #333;">留言内容:</label> -->
73
+ <textarea v-model="newComment.content"
74
+ placeholder="请输入审核意见..."
75
+ class="comment-textarea"
76
+ maxlength="200"></textarea>
77
+ <div style="text-align: right; font-size: 12px; color: #999; margin-top: 5px;">
78
+ {{newComment.content.length}}/200
79
+ </div>
80
+ </div>
81
+ <div style="text-align: right;">
82
+ <button class="button_search button_spacing" @click="submitComment" :disabled="!newComment.content.trim()">提交留言</button>
38
83
  </div>
39
84
  </div>
40
85
  </div>
41
- </div>
42
- </div>
86
+ </tabs-manage>
87
+ </tab-button-manage>
43
88
  </article>
44
89
  <footer slot="modal-footer" class="modal-footer">
45
90
  <button class="button_clear button_spacing" @click="close">关闭</button>
@@ -50,8 +95,14 @@
50
95
 
51
96
  <script>
52
97
  import { HttpResetClass } from 'vue-client'
98
+ import TabButtonManage from "../common/TabButton"
99
+ import TabsManage from "../common/Tabs"
53
100
 
54
101
  export default {
102
+ components: {
103
+ TabButtonManage,
104
+ TabsManage
105
+ },
55
106
  props: {
56
107
  businessId: {
57
108
  type: [String, Number],
@@ -64,14 +115,26 @@ export default {
64
115
  },
65
116
  data() {
66
117
  return {
67
- show: true,
118
+ modelShow: true,
119
+ show:[0],
68
120
  loading: true,
69
121
  error: null,
70
- attachments: []
122
+ attachments: [],
123
+ reviewComments: [],
124
+ newComment: {
125
+ content: null,
126
+ status: null
127
+ },
128
+ reviewStatusOptions: [
129
+ {label: '通过', value: '通过'},
130
+ {label: '拒绝', value: '拒绝'},
131
+ {label: '待审', value: '待审'}
132
+ ]
71
133
  }
72
134
  },
73
135
  created() {
74
136
  this.fetchAttachments()
137
+ this.loadReviewComments()
75
138
  },
76
139
  methods: {
77
140
  fetchAttachments() {
@@ -125,7 +188,7 @@ export default {
125
188
  this.$downFileR(attachment.f_downloadpath,attachment.f_filename,true)
126
189
  },
127
190
  close() {
128
- this.show = false
191
+ this.modelShow = false
129
192
  this.$emit('close')
130
193
  },
131
194
  isImageFile(file) {
@@ -145,7 +208,55 @@ export default {
145
208
  } else {
146
209
  return 'glyphicon-file';
147
210
  }
148
- }
211
+ },
212
+ // 加载历史留言(模拟数据)
213
+ loadReviewComments() {
214
+ // 这里先使用模拟数据,实际项目中应该调用后端API
215
+ const HttpReset = new HttpResetClass()
216
+ HttpReset.load('POST', 'rs/sql/singleTable_OrderBy', {
217
+ data: {
218
+ items: 'id,f_audit_date,f_operator,f_comments',
219
+ condition: `f_business_table='${this.tableName}' and f_businessid = '${this.businessId}'`,
220
+ tablename: 't_audit',
221
+ orderitem: 'f_audit_date desc'
222
+ }
223
+ },{rejectMsg:null,resolveMsg:null}).then((response) => {
224
+ this.reviewComments = response.data || []
225
+ })
226
+ },
227
+ clearNewComment() {
228
+ this.newComment = {
229
+ content: null,
230
+ status: null
231
+ };
232
+ },
233
+ async submitComment() {
234
+ if (!this.newComment.content.trim()) {
235
+ this.$showAlert('请输入留言内容', 'warning', 3000)
236
+ return;
237
+ }
238
+
239
+ try {
240
+ const HttpReset = new HttpResetClass()
241
+ HttpReset.load('POST', 'rs/logic/runSQL', {
242
+ sql: `insert into t_audit (id,f_business_table,f_businessid,f_comments,f_operator,f_operatorid, f_depname, f_depid, f_orgid, f_orgname) values (SEQ_AUDIT_ID.nextval,'${this.tableName}','${this.businessId}','${this.newComment.content}','${this.$login.f.name}','${this.$login.f.id}','${this.$login.f.deps}','${this.$login.f.depids}','${this.$login.f.orgid}','${this.$login.f.orgs}')`
243
+ }, {resolveMsg: null, rejectMsg: null})
244
+
245
+ this.reviewComments.unshift({
246
+ id: Date.now(),
247
+ f_audit_date: new Date().toLocaleString('zh-CN'),
248
+ f_operator: this.$login.f.name,
249
+ f_comments: this.newComment.content
250
+ });
251
+
252
+ this.$showAlert('留言提交成功', 'success', 3000)
253
+ this.clearNewComment();
254
+
255
+ } catch (error) {
256
+ console.error('提交留言失败:', error);
257
+ this.$showAlert('提交留言失败,请重试', 'error', 3000)
258
+ }
259
+ },
149
260
  }
150
261
  }
151
262
  </script>
@@ -251,4 +362,88 @@ export default {
251
362
  font-size: 60px;
252
363
  color: #999;
253
364
  }
365
+
366
+ /* Tab 容器样式 */
367
+ .modal-body {
368
+ max-height: 70vh;
369
+ overflow: hidden;
370
+ display: flex;
371
+ flex-direction: column;
372
+ }
373
+
374
+ /* 审核留言样式 */
375
+ .review-comments-container {
376
+ font-family: Arial, sans-serif;
377
+ height: 100%;
378
+ display: flex;
379
+ flex-direction: column;
380
+ padding: 15px;
381
+ max-height: calc(70vh - 120px); /* 减去modal头部和底部的高度 */
382
+ }
383
+
384
+ .comments-history {
385
+ flex: 1;
386
+ overflow-y: auto;
387
+ padding-right: 10px;
388
+ margin-bottom: 15px;
389
+ }
390
+
391
+ .new-comment-section {
392
+ flex-shrink: 0; /* 防止压缩 */
393
+ border-top: 1px solid #e5e5e5;
394
+ padding-top: 15px;
395
+ background-color: #f9f9f9;
396
+ padding: 15px;
397
+ border-radius: 5px;
398
+ margin-top: auto; /* 推到底部 */
399
+ }
400
+
401
+ .comment-textarea {
402
+ width: 100%;
403
+ height: 80px;
404
+ padding: 8px;
405
+ border: 1px solid #ddd;
406
+ border-radius: 3px;
407
+ resize: vertical;
408
+ font-family: inherit;
409
+ }
410
+
411
+ .comment-textarea:focus {
412
+ border-color: #5CB95C;
413
+ outline: none;
414
+ box-shadow: 0 0 5px rgba(92, 185, 92, 0.3);
415
+ }
416
+
417
+ .comment-item {
418
+ transition: box-shadow 0.2s ease;
419
+ }
420
+
421
+ .comment-item:hover {
422
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
423
+ }
424
+
425
+ .button_search:disabled {
426
+ background-color: #ccc;
427
+ cursor: not-allowed;
428
+ opacity: 0.6;
429
+ }
430
+
431
+ /* 自定义滚动条样式 */
432
+ .comments-history::-webkit-scrollbar {
433
+ width: 6px;
434
+ }
435
+
436
+ .comments-history::-webkit-scrollbar-track {
437
+ background: #f1f1f1;
438
+ border-radius: 3px;
439
+ }
440
+
441
+ .comments-history::-webkit-scrollbar-thumb {
442
+ background: #c1c1c1;
443
+ border-radius: 3px;
444
+ }
445
+
446
+ .comments-history::-webkit-scrollbar-thumb:hover {
447
+ background: #a8a8a8;
448
+ }
254
449
  </style>
@@ -47,25 +47,22 @@
47
47
  <new-account-query v-if="show[13]" @deal-msg="dealMsg"></new-account-query>
48
48
  </tabs-manage>
49
49
  <tabs-manage header="销户查询">
50
- <cancel-account-query v-if="show[13]" @deal-msg="dealMsg"></cancel-account-query>
50
+ <cancel-account-query v-if="show[14]" @deal-msg="dealMsg"></cancel-account-query>
51
51
  </tabs-manage>
52
52
  <tabs-manage header="通气统计">
53
- <residential-query v-if="show[14]" @deal-msg="dealMsg"></residential-query>
53
+ <residential-query v-if="show[15]" @deal-msg="dealMsg"></residential-query>
54
54
  </tabs-manage>
55
- <!-- <tabs-manage header="减免优惠查询">-->
56
- <!-- <over-due-query v-if="show[13]" @deal-msg="dealMsg"></over-due-query>-->
57
- <!-- </tabs-manage>-->
58
55
  <tabs-manage header="档案变更记录">
59
- <changeuser-query v-if="show[15]" @deal-msg="dealMsg"></changeuser-query>
56
+ <changeuser-query v-if="show[16]" @deal-msg="dealMsg"></changeuser-query>
60
57
  </tabs-manage>
61
58
  <tabs-manage header="小区综合查询">
62
- <area-general-query v-if="show[16]" @deal-msg="dealMsg"></area-general-query>
59
+ <area-general-query v-if="show[17]" @deal-msg="dealMsg"></area-general-query>
63
60
  </tabs-manage>
64
61
  <tabs-manage header="补折发折查询">
65
- <gmhgas-query v-if="show[17]" @deal-msg="dealMsg"></gmhgas-query>
62
+ <gmhgas-query v-if="show[18]" @deal-msg="dealMsg"></gmhgas-query>
66
63
  </tabs-manage>
67
64
  <tabs-manage header="日志查询">
68
- <log-query v-if="show[18]" @deal-msg="dealMsg"></log-query>
65
+ <log-query v-if="show[19]" @deal-msg="dealMsg"></log-query>
69
66
  </tabs-manage>
70
67
  <tabs-manage header="非收费业务查询" v-if="permission('非收费业务查询')">
71
68
  <no-business-query v-if="show == '非收费业务查询'" @deal-msg="dealMsg"></no-business-query>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div id="unit" class="flex-row" class="foot_tabset" @keyup.enter="search">
2
+ <div id="unit" class="flex-row foot_tabset" @keyup.enter="search">
3
3
  <div class="basic-main">
4
4
  <div class="flex" v-if="!show">
5
5
 
@@ -154,6 +154,15 @@
154
154
  condition="f_meter_type = '{}'"
155
155
  close-on-select></v-select>
156
156
  </div>
157
+ <div class="col-sm-2 form-group">
158
+ <label class="font_normal_body">是否<br/>手持设备</label>
159
+ <v-select :value.sync="$parent.$parent.f_outlets"
160
+ :options="$parent.$parent.isPos"
161
+ :search="false"
162
+ placeholder='请选择'
163
+ condition="{}"
164
+ close-on-select></v-select>
165
+ </div>
157
166
 
158
167
  </div>
159
168
  </div>
@@ -235,6 +244,9 @@
235
244
  <th>
236
245
  <nobr>部门</nobr>
237
246
  </th>
247
+ <th>
248
+ <nobr>网点</nobr>
249
+ </th>
238
250
  <th>
239
251
  <nobr>公司</nobr>
240
252
  </th>
@@ -307,7 +319,7 @@
307
319
  <nobr>{{ row.f_change_operator }}</nobr>
308
320
  </td>
309
321
  <td style="text-align: center;">
310
- <nobr>{{ row.f_approver_operator }}</nobr>
322
+ <nobr>{{ row.f_approve_operator }}</nobr>
311
323
  </td>
312
324
  <td style="text-align: center;">
313
325
  <nobr>{{ row.f_state }}</nobr>
@@ -318,6 +330,9 @@
318
330
  <td style="text-align: center;">
319
331
  <nobr>{{ row.f_depname }}</nobr>
320
332
  </td>
333
+ <td style="text-align: center;">
334
+ <nobr>{{ row.f_outlets }}</nobr>
335
+ </td>
321
336
  <td style="text-align: center;">
322
337
  <nobr>{{ row.f_orgname }}</nobr>
323
338
  </td>
@@ -419,6 +434,8 @@ export default {
419
434
  //小区
420
435
  residentialArea: [],
421
436
  area: [],
437
+ f_outlets: [],
438
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
422
439
  show: false,
423
440
  showAttachment: false,
424
441
  currentRow: null,
@@ -496,6 +513,13 @@ export default {
496
513
  args.condition += ` and f_residential_area in ( ${str} )`
497
514
  }
498
515
 
516
+ // 手持设备查询条件
517
+ if(this.f_outlets[0] === '是'){
518
+ args.condition+= ` and f_outlets = '手持设备'`
519
+ } else if (this.f_outlets[0] === '否'){
520
+ args.condition+= ` and f_outlets != '手持设备'`
521
+ }
522
+
499
523
  args.condition = `${args.condition}` + this.orgCondtionStr
500
524
  this.model.search(args.condition, args.model)
501
525
  this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div id="unit" class="flex-row" class="foot_tabset" @keyup.enter="search">
2
+ <div id="unit" class="flex-row foot_tabset" @keyup.enter="search">
3
3
  <div class="basic-main">
4
4
  <div class="flex" v-if="!show">
5
5
 
@@ -271,6 +271,16 @@
271
271
  <input type="text" style="width:60%" class="input_search" v-model="model.f_serial_id"
272
272
  condition=" f_serial_id like '%{}%'" placeholder='表编号'>
273
273
  </div>
274
+
275
+ <div class="col-sm-2 form-group">
276
+ <label class="font_normal_body">是否<br/>手持设备</label>
277
+ <v-select :value.sync="$parent.$parent.f_outlets"
278
+ :options="$parent.$parent.isPos"
279
+ :search="false"
280
+ placeholder='请选择'
281
+ condition="{}"
282
+ close-on-select></v-select>
283
+ </div>
274
284
  </div>
275
285
  </div>
276
286
  </criteria>
@@ -371,6 +381,9 @@
371
381
  <th>
372
382
  <nobr>部门</nobr>
373
383
  </th>
384
+ <th>
385
+ <nobr>网点</nobr>
386
+ </th>
374
387
  <th>
375
388
  <nobr>公司</nobr>
376
389
  </th>
@@ -505,6 +518,9 @@
505
518
  <td style="text-align: center;">
506
519
  <nobr>{{row.f_depname}}</nobr>
507
520
  </td>
521
+ <td style="text-align: center;">
522
+ <nobr>{{row.f_outlets}}</nobr>
523
+ </td>
508
524
  <td style="text-align: center;">
509
525
  <nobr>{{row.f_orgname}}</nobr>
510
526
  </td>
@@ -715,6 +731,12 @@
715
731
  {label: '是', value: '是'},
716
732
  {label: '否', value: '否'},
717
733
  ],
734
+ f_outlets: '',
735
+ isPos: [
736
+ {label: '全部', value: ''},
737
+ {label: '是', value: '是'},
738
+ {label: '否', value: '否'},
739
+ ]
718
740
  }
719
741
  },
720
742
  ready() {
@@ -838,6 +860,11 @@
838
860
  args.condition+=' and (F_PREGAS is null or F_PREGAS = 0)'
839
861
  }
840
862
  }
863
+ if(this.f_outlets[0] === '是'){
864
+ args.condition+= ` and f_outlets = '手持设备'`
865
+ } else if (this.f_outlets[0] === '否'){
866
+ args.condition+= ` and f_outlets != '手持设备'`
867
+ }
841
868
  this.condition = args.condition
842
869
  this.model.search(args.condition, args.model)
843
870
  this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
@@ -76,13 +76,20 @@
76
76
  close-on-select>
77
77
  </v-select>
78
78
  </div>
79
- </div>
80
- <div class="row" v-show="$parent.$parent.criteriaShow">
81
79
  <div class="col-sm-2 form-group">
82
80
  <label class="font_normal_body">客户地址</label>
83
81
  <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
84
82
  condition="f_address like '%{}%'" placeholder='客户地址'>
85
83
  </div>
84
+ <div class="col-sm-2 form-group">
85
+ <label class="font_normal_body">是否<br/>手持设备</label>
86
+ <v-select :value.sync="$parent.$parent.f_outlets"
87
+ :options="$parent.$parent.isPos"
88
+ :search="false"
89
+ placeholder='请选择'
90
+ condition="{}"
91
+ close-on-select></v-select>
92
+ </div>
86
93
  </div>
87
94
  </div>
88
95
  </criteria>
@@ -120,6 +127,9 @@
120
127
  <th>
121
128
  <nobr>部门</nobr>
122
129
  </th>
130
+ <th>
131
+ <nobr>网点</nobr>
132
+ </th>
123
133
  <th>
124
134
  <nobr>公司</nobr>
125
135
  </th>
@@ -160,6 +170,9 @@
160
170
  <td style="text-align: center;">
161
171
  <nobr>{{row.f_depname}}</nobr>
162
172
  </td>
173
+ <td style="text-align: center;">
174
+ <nobr>{{row.f_outlets}}</nobr>
175
+ </td>
163
176
  <td style="text-align: center;">
164
177
  <nobr>{{row.f_orgname}}</nobr>
165
178
  </td>
@@ -228,6 +241,8 @@ import {HttpResetClass, PagedList} from 'vue-client'
228
241
  residentialArea:[],
229
242
  States:[{label:"全部",value:""},{label:"表停用",value:"表停用"},{label:"户停用",value:"户停用"}],
230
243
  area:[],
244
+ f_outlets: [],
245
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
231
246
  all: false,
232
247
  fields: {},
233
248
  thead: '',
@@ -284,6 +299,13 @@ import {HttpResetClass, PagedList} from 'vue-client'
284
299
  args.condition += ` and f_residential_area in ( ${str} )`
285
300
  }
286
301
 
302
+ // 手持设备查询条件
303
+ if(this.f_outlets[0] === '是'){
304
+ args.condition+= ` and f_outlets = '手持设备'`
305
+ } else if (this.f_outlets[0] === '否'){
306
+ args.condition+= ` and f_outlets != '手持设备'`
307
+ }
308
+
287
309
  args.condition = `${args.condition}` + this.orgCondtionStr
288
310
  this.model.search(args.condition, args.model)
289
311
  this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
@@ -78,6 +78,15 @@
78
78
  <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
79
79
  condition="f_address like '%{}%'" placeholder='客户地址'>
80
80
  </div>
81
+ <div class="col-sm-2 form-group">
82
+ <label class="font_normal_body">是否<br/>手持设备</label>
83
+ <v-select :value.sync="$parent.$parent.f_outlets"
84
+ :options="$parent.$parent.isPos"
85
+ :search="false"
86
+ placeholder='请选择'
87
+ condition="{}"
88
+ close-on-select></v-select>
89
+ </div>
81
90
  </div>
82
91
 
83
92
 
@@ -114,6 +123,9 @@
114
123
  <th>
115
124
  <nobr>部门</nobr>
116
125
  </th>
126
+ <th>
127
+ <nobr>网点</nobr>
128
+ </th>
117
129
  <th>
118
130
  <nobr>公司</nobr>
119
131
  </th>
@@ -151,6 +163,9 @@
151
163
  <td style="text-align: center;">
152
164
  <nobr>{{row.f_depname}}</nobr>
153
165
  </td>
166
+ <td style="text-align: center;">
167
+ <nobr>{{row.f_outlets}}</nobr>
168
+ </td>
154
169
  <td style="text-align: center;">
155
170
  <nobr>{{row.f_orgname}}</nobr>
156
171
  </td>
@@ -220,6 +235,8 @@ import {HttpResetClass, PagedList} from 'vue-client'
220
235
  },
221
236
  residentialArea:[],
222
237
  area:[],
238
+ f_outlets: [],
239
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
223
240
  show:false,
224
241
  showAttachment: false,
225
242
  currentRow: null,
@@ -276,6 +293,12 @@ import {HttpResetClass, PagedList} from 'vue-client'
276
293
  args.condition += ` and f_residential_area in ( ${str} )`
277
294
  }
278
295
 
296
+ // 手持设备查询条件
297
+ if(this.f_outlets[0] === '是'){
298
+ args.condition+= ` and f_outlets = '手持设备'`
299
+ } else if (this.f_outlets[0] === '否'){
300
+ args.condition+= ` and f_outlets != '手持设备'`
301
+ }
279
302
 
280
303
  args.condition = `${args.condition} ` + this.orgCondtionStr
281
304
  this.model.search(args.condition, args.model)
@@ -107,6 +107,15 @@
107
107
  condition="f_state = '{}'"
108
108
  close-on-select></v-select>
109
109
  </div>
110
+ <div class="col-sm-2 form-group">
111
+ <label class="font_normal_body">是否<br/>手持设备</label>
112
+ <v-select :value.sync="$parent.$parent.f_outlets"
113
+ :options="$parent.$parent.isPos"
114
+ :search="false"
115
+ placeholder='请选择'
116
+ condition="{}"
117
+ close-on-select></v-select>
118
+ </div>
110
119
  </div>
111
120
 
112
121
  </div>
@@ -151,6 +160,9 @@
151
160
  <th>
152
161
  <nobr>部门</nobr>
153
162
  </th>
163
+ <th>
164
+ <nobr>网点</nobr>
165
+ </th>
154
166
  <th>
155
167
  <nobr>公司</nobr>
156
168
  </th>
@@ -197,6 +209,9 @@
197
209
  <td style="text-align: center;">
198
210
  <nobr>{{row.f_depname}}</nobr>
199
211
  </td>
212
+ <td style="text-align: center;">
213
+ <nobr>{{row.f_outlets}}</nobr>
214
+ </td>
200
215
  <td style="text-align: center;">
201
216
  <nobr>{{row.f_orgname}}</nobr>
202
217
  </td>
@@ -268,6 +283,8 @@ import {HttpResetClass, PagedList} from 'vue-client'
268
283
  modelval: [],
269
284
  residentialArea:[],
270
285
  area:[],
286
+ f_outlets: [],
287
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
271
288
  printshow: false,
272
289
  all: false,
273
290
  fields: {},
@@ -331,6 +348,13 @@ import {HttpResetClass, PagedList} from 'vue-client'
331
348
  args.condition += ` and f_residential_area in ( ${str} )`
332
349
  }
333
350
 
351
+ // 手持设备查询条件
352
+ if(this.f_outlets[0] === '是'){
353
+ args.condition+= ` and f_outlets = '手持设备'`
354
+ } else if (this.f_outlets[0] === '否'){
355
+ args.condition+= ` and f_outlets != '手持设备'`
356
+ }
357
+
334
358
  args.condition = `${args.condition}` + this.orgCondtionStr
335
359
  this.model.search(args.condition, args.model)
336
360
  this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
@@ -107,6 +107,15 @@
107
107
  condition="f_state = '{}'"
108
108
  close-on-select></v-select>
109
109
  </div>
110
+ <div class="col-sm-2 form-group">
111
+ <label class="font_normal_body">是否<br/>手持设备</label>
112
+ <v-select :value.sync="$parent.$parent.f_outlets"
113
+ :options="$parent.$parent.isPos"
114
+ :search="false"
115
+ placeholder='请选择'
116
+ condition="{}"
117
+ close-on-select></v-select>
118
+ </div>
110
119
  </div>
111
120
 
112
121
  </div>
@@ -151,6 +160,9 @@
151
160
  <th>
152
161
  <nobr>部门</nobr>
153
162
  </th>
163
+ <th>
164
+ <nobr>网点</nobr>
165
+ </th>
154
166
  <th>
155
167
  <nobr>公司</nobr>
156
168
  </th>
@@ -197,6 +209,9 @@
197
209
  <td style="text-align: center;">
198
210
  <nobr>{{row.f_depname}}</nobr>
199
211
  </td>
212
+ <td style="text-align: center;">
213
+ <nobr>{{row.f_outlets}}</nobr>
214
+ </td>
200
215
  <td style="text-align: center;">
201
216
  <nobr>{{row.f_orgname}}</nobr>
202
217
  </td>
@@ -279,6 +294,8 @@ import {HttpResetClass, PagedList} from 'vue-client'
279
294
  },
280
295
  residentialArea:[],
281
296
  area:[],
297
+ f_outlets: [],
298
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
282
299
  //合计数据
283
300
  sumsmodel: {}
284
301
  }
@@ -337,6 +354,13 @@ import {HttpResetClass, PagedList} from 'vue-client'
337
354
  args.condition += ` and f_residential_area in ( ${str} )`
338
355
  }
339
356
 
357
+ // 手持设备查询条件
358
+ if(this.f_outlets[0] === '是'){
359
+ args.condition+= ` and f_outlets = '手持设备'`
360
+ } else if (this.f_outlets[0] === '否'){
361
+ args.condition+= ` and f_outlets != '手持设备'`
362
+ }
363
+
340
364
  args.condition = `${args.condition}` + this.orgCondtionStr
341
365
  this.model.search(args.condition, args.model)
342
366
  this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
@@ -10,22 +10,22 @@
10
10
  <div class="col-sm-2 form-group">
11
11
  <label class="font_normal_body">转出编号</label>
12
12
  <input type="text" style="width:60%" class="input_search" v-model="model.f_fromid"
13
- condition="f_fromid = '{}' " placeholder="转出方用户编号">
13
+ condition="info.f_fromid = '{}' " placeholder="转出方用户编号">
14
14
  </div>
15
15
  <div class="col-sm-2 form-group">
16
16
  <label class="font_normal_body">转入编号</label>
17
17
  <input type="text" style="width:60%" class="input_search" v-model="model.f_toid"
18
- condition="f_toid = '{}' " placeholder="转入方用户编号">
18
+ condition="info.f_toid = '{}' " placeholder="转入方用户编号">
19
19
  </div>
20
20
  <div class="col-sm-2 form-group">
21
21
  <label class="font_normal_body">转出名称</label>
22
22
  <input type="text" style="width:60%" class="input_search" v-model="model.f_fromname"
23
- condition="f_fromname like '%{}%'" placeholder="转出方用户名称">
23
+ condition="info.f_fromname like '%{}%'" placeholder="转出方用户名称">
24
24
  </div>
25
25
  <div class="col-sm-2 form-group">
26
26
  <label class="font_normal_body">转入名称</label>
27
27
  <input type="text" style="width:60%" class="input_search" v-model="model.f_toname"
28
- condition="f_toname like '%{}%'" placeholder="转入方用户名称">
28
+ condition="info.f_toname like '%{}%'" placeholder="转入方用户名称">
29
29
  </div>
30
30
  <div class="span" style="float:right;">
31
31
  <button class="button_search button_spacing" @click="search()">查询</button>
@@ -48,7 +48,7 @@
48
48
  :value.sync="model.startDate"
49
49
  :format="'yyyy-MM-dd'"
50
50
  :show-reset-button="true"
51
- condition="f_operate_date >= to_date('{} 00:00:00','yyyy-mm-dd hh24:mi:ss')">
51
+ condition="info.f_operate_date >= to_date('{} 00:00:00','yyyy-mm-dd hh24:mi:ss')">
52
52
  </datepicker>
53
53
  </div>
54
54
  <div class="col-sm-2 form-group">
@@ -58,9 +58,18 @@
58
58
  :value.sync="model.endDate"
59
59
  :format="'yyyy-MM-dd'"
60
60
  :show-reset-button="true"
61
- condition="f_operate_date <= to_date('{} 23:59:59','yyyy-mm-dd hh24:mi:ss')">
61
+ condition="info.f_operate_date <= to_date('{} 23:59:59','yyyy-mm-dd hh24:mi:ss')">
62
62
  </datepicker>
63
63
  </div>
64
+ <div class="col-sm-2 form-group">
65
+ <label class="font_normal_body">是否<br/>手持设备</label>
66
+ <v-select :value.sync="$parent.$parent.f_outlets"
67
+ :options="$parent.$parent.isPos"
68
+ :search="false"
69
+ placeholder='请选择'
70
+ condition="{}"
71
+ close-on-select></v-select>
72
+ </div>
64
73
  <!-- <div class="col-sm-2 form-group">-->
65
74
  <!-- <label for="f_area_id" class="font_normal_body">小区编码</label>-->
66
75
  <!-- <input id="f_area_id" type="text" style="width:60%" class="input_search" v-model="model.f_area_id"-->
@@ -92,12 +101,24 @@
92
101
  <th>
93
102
  <nobr>转出方编号</nobr>
94
103
  </th>
104
+ <th>
105
+ <nobr>转出表类型</nobr>
106
+ </th>
107
+ <th>
108
+ <nobr>转出方气价</nobr>
109
+ </th>
95
110
  <th>
96
111
  <nobr>转入方</nobr>
97
112
  </th>
98
113
  <th>
99
114
  <nobr>转入方编号</nobr>
100
115
  </th>
116
+ <th>
117
+ <nobr>转入表类型</nobr>
118
+ </th>
119
+ <th>
120
+ <nobr>转入方气价</nobr>
121
+ </th>
101
122
  <th>
102
123
  <nobr>转气气量</nobr>
103
124
  </th>
@@ -125,6 +146,9 @@
125
146
  <th>
126
147
  <nobr>部门</nobr>
127
148
  </th>
149
+ <th>
150
+ <nobr>网点</nobr>
151
+ </th>
128
152
  <th>
129
153
  <nobr>公司</nobr>
130
154
  </th>
@@ -140,12 +164,24 @@
140
164
  <td style="text-align: center;">
141
165
  <nobr>{{row.f_fromid}}</nobr>
142
166
  </td>
167
+ <td style="text-align: center;">
168
+ <nobr>{{row.f_fromtype}}</nobr>
169
+ </td>
170
+ <td style="text-align: center;">
171
+ <nobr>{{row.f_fromprice}}</nobr>
172
+ </td>
143
173
  <td style="text-align: center;">
144
174
  <nobr>{{row.f_toname}}</nobr>
145
175
  </td>
146
176
  <td style="text-align: center;">
147
177
  <nobr>{{row.f_toid}}</nobr>
148
178
  </td>
179
+ <td style="text-align: center;">
180
+ <nobr>{{row.f_totype}}</nobr>
181
+ </td>
182
+ <td style="text-align: center;">
183
+ <nobr>{{row.f_toprice}}</nobr>
184
+ </td>
149
185
  <td style="text-align: center;">
150
186
  <nobr>{{row.f_move_gas}}</nobr>
151
187
  </td>
@@ -173,6 +209,9 @@
173
209
  <td style="text-align: center;">
174
210
  <nobr>{{row.f_depname}}</nobr>
175
211
  </td>
212
+ <td style="text-align: center;">
213
+ <nobr>{{row.f_outlets}}</nobr>
214
+ </td>
176
215
  <td style="text-align: center;">
177
216
  <nobr>{{row.f_orgname}}</nobr>
178
217
  </td>
@@ -233,12 +272,7 @@ export default {
233
272
  return {
234
273
  data: {},
235
274
  // model: new PagedList('rs/sql/reverseQuery', 20, {}, {f_pregas: 0, f_preamount: 0, f_collection: 0}),
236
- model: new PagedList('rs/sql/manage_singleTable', 20,
237
- {
238
- items:`'*'`,
239
- tablename : `'t_gasmoveinfo'`,
240
- orderitem : `'f_operate_date desc'`
241
- }),
275
+ model: new PagedList('rs/sql/moveGasQuery', 20,{}),
242
276
  criteriaShow: false,
243
277
  orgCondtionStr: '',
244
278
  initres: {
@@ -251,6 +285,8 @@ export default {
251
285
  currentRow: null,
252
286
  residentialArea:[],
253
287
  area:[],
288
+ f_outlets: [],
289
+ isPos: [{label: '全部', value: ''}, {label: '是', value: '是'}, {label: '否', value: '否'}],
254
290
  rowdata:{},
255
291
  modelval: [],
256
292
  printshow: false,
@@ -308,6 +344,13 @@ export default {
308
344
  // args.condition += ` and f_residential_area in ( ${str} )`
309
345
  // }
310
346
 
347
+ // 手持设备查询条件
348
+ if(this.f_outlets[0] === '是'){
349
+ args.condition+= ` and info.f_outlets = '手持设备'`
350
+ } else if (this.f_outlets[0] === '否'){
351
+ args.condition+= ` and info.f_outlets != '手持设备'`
352
+ }
353
+
311
354
  args.condition = `${args.condition}` + this.orgCondtionStr
312
355
  args.condition = `${args.condition}` + `and f_state != '无效'`
313
356
  this.model.search(args.condition, args.model)
@@ -72,7 +72,11 @@
72
72
  },
73
73
  methods: {
74
74
  handleTabListClick (index, el) {
75
- this.$parent.show[index] = true
75
+ try {
76
+ this.$parent.show[index] = true
77
+ } catch (error) {
78
+ console.log('this.$parent.show[index] = true',error)
79
+ }
76
80
  if (el.comp._scope && el.comp._scope.tab) {
77
81
  this.$dispatch('tab-changed', el.comp._scope.tab.comp.name)
78
82
  }
package/.cursorrules DELETED
@@ -1,80 +0,0 @@
1
- {
2
- "rules": {
3
- "javascript": {
4
- "formatter": "prettier",
5
- "formatOnSave": true,
6
- "defaultFormatter": "prettier",
7
- "validate": true,
8
- "lintOnSave": true,
9
- "lintCommand": "eslint --fix"
10
- },
11
- "vue": {
12
- "formatter": "prettier",
13
- "formatOnSave": true,
14
- "defaultFormatter": "prettier",
15
- "validate": true
16
- },
17
- "less": {
18
- "formatter": "prettier",
19
- "formatOnSave": true
20
- },
21
- "html": {
22
- "formatter": "prettier",
23
- "formatOnSave": true
24
- },
25
- "files": {
26
- "exclude": {
27
- "**/node_modules": true,
28
- "**/dist": true,
29
- "**/build": true,
30
- "**/.git": true,
31
- "**/coverage": true,
32
- "**/lib": true,
33
- "**/*.min.js": true,
34
- "**/*.map": true,
35
- "**/yarn-error.log": true,
36
- "**/hs_err_pid*.log": true
37
- }
38
- },
39
- "search": {
40
- "exclude": {
41
- "**/node_modules": true,
42
- "**/dist": true,
43
- "**/build": true,
44
- "**/.git": true,
45
- "**/coverage": true,
46
- "**/lib": true,
47
- "**/*.min.js": true,
48
- "**/*.map": true
49
- }
50
- },
51
- "editor": {
52
- "tabSize": 2,
53
- "insertSpaces": true,
54
- "trimTrailingWhitespace": true,
55
- "insertFinalNewline": true,
56
- "rulers": [100],
57
- "wordWrap": "off"
58
- },
59
- "terminal": {
60
- "defaultProfile": "PowerShell",
61
- "integrated": {
62
- "shell": {
63
- "windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
64
- }
65
- }
66
- },
67
- "git": {
68
- "enabled": true,
69
- "autofetch": true
70
- },
71
- "path-intellisense": {
72
- "autoTriggerNextSuggestion": true,
73
- "exclude": {
74
- "**/node_modules": true,
75
- "**/dist": true,
76
- "**/build": true
77
- }
78
- }
79
- }
80
- }
package/build.gradle DELETED
@@ -1,13 +0,0 @@
1
- buildscript {
2
- repositories {
3
- mavenCentral()
4
- jcenter()
5
- }
6
- }
7
-
8
- version = '3.1.0-17'
9
- apply plugin: 'java'
10
- task release(type:Exec) {
11
- workingDir '.'
12
- commandLine 'cmd', '/c', 'release.bat ' + version
13
- }