system-clients 3.0.45 → 3.0.46-fanxian

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.
@@ -1,2 +1,2 @@
1
- #Wed May 20 18:08:03 CST 2020
2
- gradle.version=3.5.1
1
+ #Fri Mar 13 10:30:51 GMT+08:00 2020
2
+ gradle.version=3.5
@@ -1,75 +1,75 @@
1
- var path = require('path')
2
- var cssLoaders = require('./css-loaders')
3
- var projectRoot = path.resolve(__dirname, '../')
4
-
5
- module.exports = {
6
- entry: {
7
- app: './src/main.js'
8
- },
9
- output: {
10
- path: path.resolve(__dirname, '../dist/static'),
11
- publicPath: 'static/',
12
- filename: '[name].js'
13
- },
14
- resolve: {
15
- extensions: ['', '.js', '.vue'],
16
- fallback: [path.join(__dirname, '../node_modules')],
17
- alias: {
18
- 'test': path.resolve(__dirname, '../test'),
19
- 'src': path.resolve(__dirname, '../src')
20
- }
21
- },
22
- resolveLoader: {
23
- fallback: [path.join(__dirname, '../node_modules')]
24
- },
25
- module: {
26
- loaders: [
27
- {
28
- test: /\.vue$/,
29
- loader: 'vue'
30
- },
31
- {
32
- test: /\.js$/,
33
- loader: 'babel',
34
- include: [
35
- `${projectRoot}\\src`,
36
- `${projectRoot}\\build`,
37
- `${projectRoot}\\examples`,
38
- `${projectRoot}\\test`,
39
- `${projectRoot}\\node_modules\\vue-client\\src`,
40
- `${projectRoot}\\node_modules\\vue-strap\\src`
41
- ]
42
- },
43
- {
44
- test: /\.json$/,
45
- loader: 'json'
46
- },
47
- {
48
- test: /\.html$/,
49
- loader: 'vue-html'
50
- },
51
- {
52
- test: /\.less$/,
53
- loader: 'style!css!less'
54
- },
55
- {
56
- test: /\.(png|jpg|gif|svg|woff2?|eot|ttf)(\?.*)?$/,
57
- loader: 'url',
58
- query: {
59
- limit: 10000,
60
- name: '[name].[ext]?[hash:7]'
61
- }
62
- }
63
- ]
64
- },
65
- vue: {
66
- loaders: cssLoaders({
67
- sourceMap: false,
68
- extract: false
69
- })
70
- },
71
- plugins: [],
72
- eslint: {
73
- formatter: require('eslint-friendly-formatter')
74
- }
75
- }
1
+ var path = require('path')
2
+ var cssLoaders = require('./css-loaders')
3
+ var projectRoot = path.resolve(__dirname, '../')
4
+
5
+ module.exports = {
6
+ entry: {
7
+ app: './src/main.js'
8
+ },
9
+ output: {
10
+ path: path.resolve(__dirname, '../dist/static'),
11
+ publicPath: 'static/',
12
+ filename: '[name].js'
13
+ },
14
+ resolve: {
15
+ extensions: ['', '.js', '.vue'],
16
+ fallback: [path.join(__dirname, '../node_modules')],
17
+ alias: {
18
+ 'test': path.resolve(__dirname, '../test'),
19
+ 'src': path.resolve(__dirname, '../src')
20
+ }
21
+ },
22
+ resolveLoader: {
23
+ fallback: [path.join(__dirname, '../node_modules')]
24
+ },
25
+ module: {
26
+ loaders: [
27
+ {
28
+ test: /\.vue$/,
29
+ loader: 'vue'
30
+ },
31
+ {
32
+ test: /\.js$/,
33
+ loader: 'babel',
34
+ include: [
35
+ `${projectRoot}\\src`,
36
+ `${projectRoot}\\build`,
37
+ `${projectRoot}\\examples`,
38
+ `${projectRoot}\\test`,
39
+ `${projectRoot}\\node_modules\\vue-client\\src`,
40
+ `${projectRoot}\\node_modules\\vue-strap\\src`
41
+ ]
42
+ },
43
+ {
44
+ test: /\.json$/,
45
+ loader: 'json'
46
+ },
47
+ {
48
+ test: /\.html$/,
49
+ loader: 'vue-html'
50
+ },
51
+ {
52
+ test: /\.less$/,
53
+ loader: 'style!css!less'
54
+ },
55
+ {
56
+ test: /\.(png|jpg|gif|svg|woff2?|eot|ttf|mp3)(\?.*)?$/,
57
+ loader: 'url',
58
+ query: {
59
+ limit: 10000,
60
+ name: '[name].[ext]?[hash:7]'
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ vue: {
66
+ loaders: cssLoaders({
67
+ sourceMap: false,
68
+ extract: false
69
+ })
70
+ },
71
+ plugins: [],
72
+ eslint: {
73
+ formatter: require('eslint-friendly-formatter')
74
+ }
75
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-clients",
3
- "version": "3.0.45",
3
+ "version": "3.0.46-fanxian",
4
4
  "description": "系统基础框架",
5
5
  "main": "src/index.js",
6
6
  "directories": {
@@ -56,8 +56,19 @@
56
56
  <!-- </div>-->
57
57
  <!-- </div>-->
58
58
  <!-- </div>-->
59
- <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
60
- <div class="auto " :class="{'login-operator1':$refs.mic.tabs.length === 0,'login-operator':$refs.mic.tabs.length != 0}">
59
+
60
+ <div class='flex-row aaa system-main' id="box" v-el:box v-if="!isManger">
61
+ <div class="auto" style="position: fixed;right: 370px;top: 15px;color: #333">
62
+ <button class="btn" @click="showAbnormity = true" style="background: none;">
63
+ <img
64
+ src="../assets/shezhi-hover.png" height="15" width="15">
65
+ 异常警报<label style="display: inline-block;width: 8px;height: 8px;border-radius: 50%;background-color: red;text-align: center;line-height: 30px;" v-show="showaData"></label>
66
+ </button>
67
+ <button class="btn" @click="stopSound" style="background: none;">
68
+ 关闭警报
69
+ </button>
70
+ </div>
71
+ <div class="auto" style="position: fixed;right: 30px;top: 20px;color: #333">
61
72
  <span>
62
73
  <img
63
74
  src="../assets/people.png" height="15" width="15">
@@ -114,12 +125,26 @@
114
125
  <!-- 修改密码组件 -->
115
126
  <modify-pw :show.sync="show" v-if="show"></modify-pw>
116
127
  <!-- 修改密码模态框 -->
128
+ <!-- 异常查看 -->
129
+ <modal v-if="showAbnormity" :show.sync="showAbnormity" :width="1000" v-ref:modal backdrop="false">
130
+ <header slot="modal-header" class="modal-header">
131
+ <button type="button" class="close" @click="stopSoundNew"><span>&times;</span></button>
132
+ <h4 class="modal-title">异常报警</h4>
133
+ </header>
134
+ <article slot="modal-body" class="modal-body modifystyle auto form-horizontal">
135
+ <alarm-information :mergeinfo=abnormityWarningData></alarm-information>
136
+ </article>
137
+ <footer slot="modal-footer" class="modal-footer">
138
+ <button type="button" class="btn btn-success" @click='stopSoundNew'>确认</button>
139
+ </footer>
140
+ </modal>
117
141
  </div>
118
142
  </template>
119
143
 
120
144
  <script>
121
145
  import vue from 'vue'
122
146
  import co from 'co'
147
+ import source from '../../static/newStyle/alarm.mp3'
123
148
 
124
149
  window.onunload = () => {
125
150
  vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
@@ -150,7 +175,16 @@
150
175
  tabs:[], //已初始化页签数组
151
176
  selecttab:'',
152
177
  setting:true,
153
- srcsetting:'../../static/newStyle/setting.png'
178
+ srcsetting:'../../static/newStyle/setting.png',
179
+ abnormityWarningData: {
180
+ data: []
181
+ },
182
+ showAbnormity: false,
183
+ showaData: false,
184
+ audio: null,
185
+ isTimeAb: parseInt(this.$appdata.getSingleValue('异常报警查询时间')),
186
+ isBell: this.$appdata.getSingleValue('是否响铃')
187
+
154
188
 
155
189
  // headerHint: true, // 右侧顶部提示信息
156
190
  // value: 25645.26,
@@ -202,8 +236,52 @@
202
236
  // return false
203
237
  // }
204
238
  this.changeShow()
239
+ // 在组件挂载后立即开始定时任务
240
+ this.abnormityWarning()
241
+ this.abnormityWarData()
205
242
  },
206
243
  methods: {
244
+ handleMouseMoveOnce () {
245
+ const handleMouseMove = (event) => {
246
+ this.playSound()
247
+ // 移除事件监听器
248
+ document.removeEventListener('mousemove', handleMouseMove)
249
+ }
250
+ // 添加事件监听器
251
+ document.addEventListener('mousemove', handleMouseMove)
252
+ },
253
+ abnormityWarning () {
254
+ setInterval(() => {
255
+ this.abnormityWarningData = []
256
+ this.$resetpost('rs/sql/getAbnormityWarning', {data: {}}, {resolveMsg: '', rejectMsg: ''}).then(item => {
257
+ this.abnormityWarningData = item
258
+ if (this.isBell === '是') {
259
+ if (this.abnormityWarningData.data.length > 0) {
260
+ this.playSound()
261
+ this.showaData = true
262
+ this.showAbnormity = true
263
+ } else {
264
+ this.showaData = false
265
+ }
266
+ }
267
+ })
268
+ }, this.isTimeAb)
269
+ },
270
+ abnormityWarData () {
271
+ this.$resetpost('rs/sql/getAbnormityWarning', {data: {}}, {resolveMsg: '', rejectMsg: ''}).then(item => {
272
+ this.abnormityWarningData = item
273
+ if (this.isBell === '是') {
274
+ if (this.abnormityWarningData.data.length > 0) {
275
+ // this.handleMouseMoveOnce()
276
+ this.playSound()
277
+ this.showaData = true
278
+ this.showAbnormity = true
279
+ } else {
280
+ this.showaData = false
281
+ }
282
+ }
283
+ })
284
+ },
207
285
  hindsetting(){
208
286
 
209
287
  this.setting=!this.setting
@@ -271,6 +349,27 @@
271
349
  tabcg(val){
272
350
  console.log(val)
273
351
  this.tabs = val
352
+ },
353
+ playSound () {
354
+ if (this.audio) {
355
+ this.audio.pause()
356
+ this.audio = null
357
+ }
358
+ this.audio = new Audio(source)
359
+ // this.audio.src = 'static/newStyle/alarm.mp3' // 替换为实际的音频文件路径
360
+ this.audio.loop = true // 设置循环播放
361
+ this.audio.autoplay = true
362
+ this.audio.play()
363
+ },
364
+ stopSound () {
365
+ if (this.audio) {
366
+ this.audio.pause()
367
+ this.audio = null
368
+ }
369
+ },
370
+ stopSoundNew () {
371
+ this.showAbnormity = false
372
+ this.stopSound()
274
373
  }
275
374
  },
276
375
  computed: {
@@ -1,65 +1,65 @@
1
- <template>
2
- <div class="flex">
3
- <div class="auto">
4
- <div class="form-horizontal select-overspread" style="background: white; padding: 0 1%;">
5
- <div class="row">
6
- <div class="col-sm-2 form-group">
7
- <label class="font_normal_body">终端类型</label>
8
- <v-select id="f_charge_type"
9
- v-model="model.f_equipment_type"
10
- placeholder='终端类型'
11
- :value.sync="model.f_equipment_type"
12
- :options='equipmentType'
13
- close-on-select clear-button>
14
- </v-select>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- <div v-if="model.f_equipment_type[0] === 'PC'">
20
- <pc-manage></pc-manage>
21
- </div>
22
- <div v-if="model.f_equipment_type[0] === 'POS'">
23
- <pos-manage></pos-manage>
24
- </div>
25
- <div v-if="model.f_equipment_type[0] === 'PHONE'">
26
- <phone-manage></phone-manage>
27
- </div>
28
- </div>
29
- </template>
30
-
31
- <script>
32
-
33
- export default {
34
- title: '终端控制',
35
- data () {
36
- return {
37
- filialeNameStr: this.$login.f.f_fengongsi,
38
- filialeCodeStr: this.$login.f.orgid,
39
- userid:this.$login.f.id,
40
- source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() != $role$))`,
41
- equipmentType: this.$appdata.getParam('终端类型'),
42
- model: {
43
- f_equipment_type: []
44
- }
45
- }
46
- },
47
- ready () {
48
- console.log('看看终端类型', this.equipmentType)
49
- this.model.f_equipment_type = [this.equipmentType[0].value]
50
- },
51
- methods: {
52
- del (row) {
53
- console.log('要删除了', row)
54
- },
55
-
56
- getRes (obj) {
57
- this.filialeNameStr = obj.res
58
- this.filialeCodeStr = obj.resids
59
- },
60
- },
61
- computed: {
62
-
63
- }
64
- }
65
- </script>
1
+ <template>
2
+ <div class="flex">
3
+ <div class="auto">
4
+ <div class="form-horizontal select-overspread" style="height: auto">
5
+ <div class="row">
6
+ <div class="col-sm-2">
7
+ <label class="font_normal_body">终端类型</label>
8
+ <v-select id="f_charge_type"
9
+ v-model="model.f_equipment_type"
10
+ placeholder='终端类型'
11
+ :value.sync="model.f_equipment_type"
12
+ :options='equipmentType'
13
+ close-on-select clear-button>
14
+ </v-select>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ <div v-if="model.f_equipment_type[0] === 'PC'">
20
+ <pc-manage></pc-manage>
21
+ </div>
22
+ <div v-if="model.f_equipment_type[0] === 'POS'">
23
+ <pos-manage></pos-manage>
24
+ </div>
25
+ <div v-if="model.f_equipment_type[0] === 'PHONE'">
26
+ <phone-manage></phone-manage>
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script>
32
+
33
+ export default {
34
+ title: '终端控制',
35
+ data () {
36
+ return {
37
+ filialeNameStr: this.$login.f.f_fengongsi,
38
+ filialeCodeStr: this.$login.f.orgid,
39
+ userid:this.$login.f.id,
40
+ source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() != $role$))`,
41
+ equipmentType: this.$appdata.getParam('终端类型'),
42
+ model: {
43
+ f_equipment_type: []
44
+ }
45
+ }
46
+ },
47
+ ready () {
48
+ console.log('看看终端类型', this.equipmentType)
49
+ this.model.f_equipment_type = [this.equipmentType[0].value]
50
+ },
51
+ methods: {
52
+ del (row) {
53
+ console.log('要删除了', row)
54
+ },
55
+
56
+ getRes (obj) {
57
+ this.filialeNameStr = obj.res
58
+ this.filialeCodeStr = obj.resids
59
+ },
60
+ },
61
+ computed: {
62
+
63
+ }
64
+ }
65
+ </script>
@@ -0,0 +1,122 @@
1
+ <template>
2
+ <div id="unit" class="flex-row">
3
+ <div class="basic-main">
4
+ <criteria-paged :model="model" v-ref:paged >
5
+ <criteria partial='criteria' v-ref:criteria @condition-changed='$parent.search' >
6
+ <div v-show="false" novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ </div>
8
+
9
+ </criteria>
10
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
11
+ <template partial='head'>
12
+ <tr>
13
+ <th><nobr>客户编号</nobr></th>
14
+ <th><nobr>客户姓名</nobr></th>
15
+ <th><nobr>上报时间</nobr></th>
16
+ <th><nobr>上报级别</nobr></th>
17
+ <th><nobr>报警类型</nobr></th>
18
+ <th><nobr>报警详情</nobr></th>
19
+ <th>操作</th>
20
+ </tr>
21
+ </template>
22
+ <template partial='body'>
23
+ <tr>
24
+ <td style="text-align:center"><nobr>{{row.f_userinfo_code}}</nobr></td>
25
+ <td style="text-align:center"><nobr>{{row.f_user_name}}</nobr></td>
26
+ <td style="text-align:center"><nobr>{{row.f_insert_date}}</nobr></td>
27
+ <td style="text-align:center"><nobr>{{row.f_error_level}}</nobr></td>
28
+ <td style="text-align:center"><nobr>{{row.f_error_type}}</nobr></td>
29
+ <td style="text-align:center"><nobr>{{row.f_error_msg}}</nobr></td>
30
+ <td style="text-align:center;" v-if="row.f_is_read == false" >
31
+ <span ><a href="#" @click.stop="$parent.$parent.$parent.backSend1(row.id)">添加备注</a></span>
32
+ </td>
33
+ <td style="text-align:center;" v-if="row.f_is_read === true"><span title="备注信息:{{row.f_error_reason}}">备注信息</span></td>
34
+ </tr>
35
+ </template>
36
+ <template partial='foot'></template>
37
+ </data-grid>
38
+ </criteria-paged>
39
+
40
+ <modal :show.sync="watchshow" v-ref:modal backdrop="false">
41
+ <header slot="modal-header" class="modal-header">
42
+ <button type="button" class="close" @click="tableFault()"><span>&times;</span></button>
43
+ <h4 class="modal-title">信息备注</h4>
44
+ </header>
45
+ <article slot="modal-body" class="modal-body">
46
+ <div class="col-sm-12">
47
+ <label class="font_normal_body">添加信息备注</label>
48
+ <textarea name="name" rows="2" style="width: 100%"
49
+ class="ver-textarea" class="form-control"
50
+ placeholder='请填写信息备注'
51
+ v-model='f_error_reason'></textarea>
52
+ </div>
53
+ </article>
54
+ <footer slot="modal-footer" class="modal-footer">
55
+ <button v-show="watchshow" type="button" class="btn btn-default" @click='tableFault()'>取消</button>
56
+ <button v-show="watchshow" type="button" class="btn btn-danger btn-ln fr" @click='saveException()'>确认</button>
57
+ </footer>
58
+ </modal>
59
+ </div>
60
+ </div>
61
+ </template>
62
+ <script>
63
+ import {PagedList} from 'vue-client'
64
+
65
+ export default {
66
+ title: '异常警报信息',
67
+ props: ['mergeinfo'],
68
+ data () {
69
+ return {
70
+ watchshow: false,
71
+ cancelid: '',
72
+ condition: '1=1',
73
+ error_condition: '',
74
+ f_error_reason: '',
75
+ model: new PagedList('rs/sql/getAbnormityWarning', 8)
76
+ }
77
+ },
78
+ ready () {
79
+ this.model
80
+ this.$refs.paged.$refs.criteria.search()
81
+ },
82
+ methods: {
83
+ backSend1(megrow){
84
+ this.watchshow = true
85
+ this.cancelid = megrow
86
+ },
87
+ tableFault (val) {
88
+ if (val) {
89
+ console.log('开启弹窗')
90
+ } else {
91
+ console.log('返回置空')
92
+ this.f_error_reason = ''
93
+ }
94
+ this.watchshow = !this.watchshow
95
+ },
96
+ search (args) {
97
+ console.log(args)
98
+ this.condition = '1=1'
99
+ this.model.search(args.condition, args.model)
100
+ },
101
+ saveException () {
102
+ let send = {
103
+ id: this.cancelid, // 当前记录ID
104
+ f_is_read: 1,
105
+ f_error_reason: this.f_error_reason // 备注原因
106
+ }
107
+ let param = {
108
+ tablename: 't_exception',
109
+ id:1,
110
+ basedata: send
111
+ }
112
+ this.$resetpost('rs/logic/iat_saveTable', param).then(() => {
113
+ // this.params.rows.splice(index, 1)
114
+ this.watchshow = false
115
+ this.$refs.paged
116
+ this.f_error_reason = ''
117
+ })
118
+ }
119
+ }
120
+
121
+ }
122
+ </script>
@@ -1,43 +1,43 @@
1
- <template>
2
- <div id="unit" class="flex-row">
3
- <div style="flex: 1;margin-right: 15px;">
4
- <param-pages></param-pages>
5
- </div>
6
- <div style="flex: 1">
7
- <single-pages></single-pages>
8
- </div>
9
-
10
- </div>
11
- </template>
12
- <script>
13
-
14
- export default {
15
- title: '参数设置',
16
-
17
- }
18
- </script>
19
- <style>
20
- .edit-tree {
21
- border: none;
22
- border-bottom: 1px solid #337ab7;
23
- outline: none;
24
- }
25
- .no-edit {
26
- border: none;
27
- background: none;
28
- outline: none;
29
- }
30
- #params-tree .active {
31
- background: none;
32
- border: 1px solid #ddd;
33
- color: #000;
34
- }
35
- .flex-around {
36
- display: flex;
37
- justify-content: space-around;
38
- }
39
- .add-postition {
40
- position: relative;
41
- left: 40%;
42
- }
43
- </style>
1
+ <template>
2
+ <div id="unit" class="flex-row">
3
+ <div style="flex: 1;margin-right: 15px;">
4
+ <param-pages></param-pages>
5
+ </div>
6
+ <div style="flex: 1">
7
+ <single-pages></single-pages>
8
+ </div>
9
+
10
+ </div>
11
+ </template>
12
+ <script>
13
+
14
+ export default {
15
+ title: '参数设置',
16
+
17
+ }
18
+ </script>
19
+ <style>
20
+ .edit-tree {
21
+ border: none;
22
+ border-bottom: 1px solid #337ab7;
23
+ outline: none;
24
+ }
25
+ .no-edit {
26
+ border: none;
27
+ background: none;
28
+ outline: none;
29
+ }
30
+ #params-tree .active {
31
+ background: none;
32
+ border: 1px solid #ddd;
33
+ color: #000;
34
+ }
35
+ .flex-around {
36
+ display: flex;
37
+ justify-content: space-around;
38
+ }
39
+ .add-postition {
40
+ position: relative;
41
+ left: 40%;
42
+ }
43
+ </style>