system-phone 3.1.4 → 3.1.6

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
@@ -1,100 +1,100 @@
1
- {
2
- "name": "system-phone",
3
- "version": "3.1.4",
4
- "description": "手机模块 前端组件",
5
- "author": "何宁社 <524395609@qq.com>",
6
- "license": "ISC",
7
- "main": "src/index.js",
8
- "keywords": [
9
- "phone"
10
- ],
11
- "scripts": {
12
- "unit": "karma start test/unit/karma.conf.js",
13
- "example": "node build/example-server.js",
14
- "dev": "node build/dev-server.js",
15
- "lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
16
- "build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
17
- "e2e": "node test/e2e/runner.js",
18
- "release": "bash build/release.sh"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "https://github.com/DuBin1988/oa"
23
- },
24
- "dependencies": {
25
- "layui": "^2.7.6",
26
- "less-loader": "^2.2.3",
27
- "pinyin-pro": "^1.2.3",
28
- "vue": "^1.0.17"
29
- },
30
- "devDependencies": {
31
- "babel-core": "^6.26.0",
32
- "babel-loader": "^6.0.0",
33
- "babel-plugin-transform-runtime": "^6.0.0",
34
- "babel-preset-es2015": "^6.0.0",
35
- "babel-preset-stage-2": "^6.0.0",
36
- "chai": "^3.5.0",
37
- "co": "^4.6.0",
38
- "connect-history-api-fallback": "^1.1.0",
39
- "cross-env": "^1.0.7",
40
- "cross-spawn": "^2.1.5",
41
- "css-loader": "^0.23.0",
42
- "echarts": "^4.1.0",
43
- "eslint": "^2.0.0",
44
- "eslint-config-standard": "^5.1.0",
45
- "eslint-friendly-formatter": "^1.2.2",
46
- "eslint-loader": "^1.3.0",
47
- "eslint-plugin-html": "^1.3.0",
48
- "eslint-plugin-promise": "^1.0.8",
49
- "eslint-plugin-standard": "^1.3.2",
50
- "eslint-plugin-vue": "^0.1.1",
51
- "eventsource-polyfill": "^0.9.6",
52
- "express": "^4.13.3",
53
- "extract-text-webpack-plugin": "^1.0.1",
54
- "file-loader": "^0.8.4",
55
- "function-bind": "^1.0.2",
56
- "html-webpack-plugin": "^2.8.1",
57
- "http-proxy-middleware": "^0.11.0",
58
- "inject-loader": "^2.0.1",
59
- "isparta-loader": "^2.0.0",
60
- "jasmine-core": "^2.4.1",
61
- "jquery": "^3.3.1",
62
- "jsencrypt": "^3.0.0-rc.1",
63
- "json-loader": "^0.5.4",
64
- "karma": "^1.4.1",
65
- "karma-chrome-launcher": "^2.2.0",
66
- "karma-coverage": "^1.1.1",
67
- "karma-mocha": "^1.3.0",
68
- "karma-sinon-chai": "^1.3.1",
69
- "karma-sourcemap-loader": "^0.3.7",
70
- "karma-spec-reporter": "0.0.31",
71
- "karma-webpack": "^2.0.2",
72
- "less": "^2.7.3",
73
- "mkdirp": "^0.5.1",
74
- "mocha": "^3.2.0",
75
- "ncp": "^2.0.0",
76
- "readmeter-client": "^1.0.3",
77
- "rimraf": "^2.5.0",
78
- "safecheck-client": "1.1.1",
79
- "selenium-server": "2.52.0",
80
- "sinon": "^2.1.0",
81
- "sinon-chai": "^2.8.0",
82
- "style": "0.0.3",
83
- "style-loader": "^0.20.3",
84
- "telephone-clients": "3.0.27",
85
- "url-loader": "^0.5.7",
86
- "vue-client": "^1.20.87",
87
- "vue-hot-reload-api": "^1.2.0",
88
- "vue-html-loader": "^1.0.0",
89
- "vue-loader": "^8.2.1",
90
- "vue-resource": "^1.5.0",
91
- "vue-router": "^0.7.13",
92
- "vue-strap": "^1.0.9",
93
- "vue-style-loader": "^1.0.0",
94
- "vue-validator": "2.1.7",
95
- "webpack": "^1.12.2",
96
- "webpack-dev-middleware": "^1.4.0",
97
- "webpack-hot-middleware": "^2.6.0",
98
- "webpack-merge": "^0.8.3"
99
- }
100
- }
1
+ {
2
+ "name": "system-phone",
3
+ "version": "3.1.6",
4
+ "description": "手机模块 前端组件",
5
+ "author": "何宁社 <524395609@qq.com>",
6
+ "license": "ISC",
7
+ "main": "src/index.js",
8
+ "keywords": [
9
+ "phone"
10
+ ],
11
+ "scripts": {
12
+ "unit": "karma start test/unit/karma.conf.js",
13
+ "example": "node build/example-server.js",
14
+ "dev": "node build/dev-server.js",
15
+ "lint": "eslint src/**.js test/e2e/**.js test/unit/specs/** build/**.js",
16
+ "build": "rimraf dist && mkdirp dist && ncp static dist/static && cross-env NODE_ENV=production webpack --progress --hide-modules --config build/webpack.prod.conf.js",
17
+ "e2e": "node test/e2e/runner.js",
18
+ "release": "bash build/release.sh"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/DuBin1988/oa"
23
+ },
24
+ "dependencies": {
25
+ "layui": "^2.7.6",
26
+ "less-loader": "^2.2.3",
27
+ "pinyin-pro": "^1.2.3",
28
+ "vue": "^1.0.17"
29
+ },
30
+ "devDependencies": {
31
+ "babel-core": "^6.26.0",
32
+ "babel-loader": "^6.0.0",
33
+ "babel-plugin-transform-runtime": "^6.0.0",
34
+ "babel-preset-es2015": "^6.0.0",
35
+ "babel-preset-stage-2": "^6.0.0",
36
+ "chai": "^3.5.0",
37
+ "co": "^4.6.0",
38
+ "connect-history-api-fallback": "^1.1.0",
39
+ "cross-env": "^1.0.7",
40
+ "cross-spawn": "^2.1.5",
41
+ "css-loader": "^0.23.0",
42
+ "echarts": "^4.1.0",
43
+ "eslint": "^2.0.0",
44
+ "eslint-config-standard": "^5.1.0",
45
+ "eslint-friendly-formatter": "^1.2.2",
46
+ "eslint-loader": "^1.3.0",
47
+ "eslint-plugin-html": "^1.3.0",
48
+ "eslint-plugin-promise": "^1.0.8",
49
+ "eslint-plugin-standard": "^1.3.2",
50
+ "eslint-plugin-vue": "^0.1.1",
51
+ "eventsource-polyfill": "^0.9.6",
52
+ "express": "^4.13.3",
53
+ "extract-text-webpack-plugin": "^1.0.1",
54
+ "file-loader": "^0.8.4",
55
+ "function-bind": "^1.0.2",
56
+ "html-webpack-plugin": "^2.8.1",
57
+ "http-proxy-middleware": "^0.11.0",
58
+ "inject-loader": "^2.0.1",
59
+ "isparta-loader": "^2.0.0",
60
+ "jasmine-core": "^2.4.1",
61
+ "jquery": "^3.3.1",
62
+ "jsencrypt": "^3.0.0-rc.1",
63
+ "json-loader": "^0.5.4",
64
+ "karma": "^1.4.1",
65
+ "karma-chrome-launcher": "^2.2.0",
66
+ "karma-coverage": "^1.1.1",
67
+ "karma-mocha": "^1.3.0",
68
+ "karma-sinon-chai": "^1.3.1",
69
+ "karma-sourcemap-loader": "^0.3.7",
70
+ "karma-spec-reporter": "0.0.31",
71
+ "karma-webpack": "^2.0.2",
72
+ "less": "^2.7.3",
73
+ "mkdirp": "^0.5.1",
74
+ "mocha": "^3.2.0",
75
+ "ncp": "^2.0.0",
76
+ "readmeter-client": "^1.0.3",
77
+ "rimraf": "^2.5.0",
78
+ "safecheck-client": "1.1.1",
79
+ "selenium-server": "2.52.0",
80
+ "sinon": "^2.1.0",
81
+ "sinon-chai": "^2.8.0",
82
+ "style": "0.0.3",
83
+ "style-loader": "^0.20.3",
84
+ "telephone-clients": "3.0.27",
85
+ "url-loader": "^0.5.7",
86
+ "vue-client": "^1.20.87",
87
+ "vue-hot-reload-api": "^1.2.0",
88
+ "vue-html-loader": "^1.0.0",
89
+ "vue-loader": "^8.2.1",
90
+ "vue-resource": "^1.5.0",
91
+ "vue-router": "^0.7.13",
92
+ "vue-strap": "^1.0.9",
93
+ "vue-style-loader": "^1.0.0",
94
+ "vue-validator": "2.1.7",
95
+ "webpack": "^1.12.2",
96
+ "webpack-dev-middleware": "^1.4.0",
97
+ "webpack-hot-middleware": "^2.6.0",
98
+ "webpack-merge": "^0.8.3"
99
+ }
100
+ }
@@ -202,6 +202,23 @@
202
202
  </div>
203
203
  </list>
204
204
  </div>
205
+ <modal :show.sync="showModal">
206
+ <div slot="modal-header" class="modal-header">
207
+ <h4 class="modal-title">
208
+ {{modalTitle}}
209
+ </h4>
210
+ </div>
211
+ <div slot="modal-body" class="modal-body">
212
+ <div class="row" style="margin-top: 6px">
213
+ <textarea id="el_ca_txt" v-model.trim="f_comments" style="border-radius:4px;width: 100%;" placeholder="请输入开关阀原因" >
214
+ </textarea>
215
+ </div>
216
+ </div>
217
+ <div slot="modal-footer" class="modal-footer">
218
+ <button type="button" class="btn btn-default" @click="showModal = false">取消</button>
219
+ <button type="button" class="btn btn-success" @click="openOrCloneValveMethod(istype)">{{istype}}</button>
220
+ </div>
221
+ </modal>
205
222
 
206
223
  </div>
207
224
 
@@ -219,6 +236,10 @@
219
236
  f_meternumber: '',
220
237
  f_userinfo_code:'',
221
238
  querytitle: '基础',
239
+ showModal: '',
240
+ modalTitle: '', //开关阀标题
241
+ f_comments: '', //开关阀原因
242
+ istype: '', //
222
243
  row:{},
223
244
  model: {
224
245
  rows: [{}]
@@ -230,6 +251,41 @@
230
251
  console.log('物联网监控')
231
252
  },
232
253
  methods: {
254
+ openOrCloneValveMethod (msg) {
255
+ if (this.f_comments=='') {
256
+ return this.$showMessage("请输入开关阀原因")
257
+ }
258
+ var data = {
259
+ instructType: '阀门控制',
260
+ instructTitle: `手动${msg}`,
261
+ condition: `t_userfiles.f_userfiles_id='${this.row.f_user_id}'`,
262
+ meterBrandName: this.row.f_alias, // 气表别名
263
+ f_instruct_state: '待发送',
264
+ inputtor: Vue.user.name,
265
+ reasonInfo: this.f_comments, //操作原因
266
+ meternumberf: this.row.f_meternumber, //表号
267
+ contentData: {isOpen: msg=='开阀' ? 1 : 0}, // oper 为true 时为开阀 false 为关阀
268
+ }
269
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/iot_saveInstruct`, {data: data}).then((row) => {
270
+ this.$showMessage(`${msg}指令发送成功,请等候2分钟进行查询`)
271
+ this.istype = '';
272
+ this.f_comments = '';
273
+ this.showModal = false
274
+ }).catch((e) => {
275
+ this.$showMessage(`${msg}指令发送失败`)
276
+ })
277
+ },
278
+ OpenValve () {
279
+ this.modalTitle = '对表号为'+ this.row.f_meternumber+'开阀'
280
+ this.istype = '开阀'
281
+ this.showModal = true;
282
+
283
+ },
284
+ valveShutoff () {
285
+ this.modalTitle = '对表号为'+ this.row.f_meternumber+'关阀'
286
+ this.istype = '关阀'
287
+ this.showModal = true;
288
+ },
233
289
  goto(row){
234
290
  console.log(row)
235
291
  let _this=this
@@ -264,67 +320,6 @@
264
320
  this.$showMessage('表别名获取失败!')
265
321
  // console.log('错误信息+++++++'+JSON.stringify(e))
266
322
  })
267
-
268
- },
269
- async OpenValve(type) {
270
- // console.log('开阀')
271
- if (!this.f_meternumber) {
272
- this.$showMessage('请输入/扫描用户表号!')
273
- return
274
- }
275
- this.$showMessage(`您确认要生成开阀指令吗?`, ['confirm', 'cancel']).then(async (res) => {
276
- if (res === 'confirm') {
277
- // let alias = await this.queryAlias()
278
- let data = {
279
- userId: this.row.f_user_id,
280
- content: {isOpen: type},
281
- alias: this.row.f_alias,
282
- inputtor: Vue.user.name,
283
- moduleName: this.row.f_alias
284
- }
285
- // console.log('请求参数'+JSON.stringify(data))
286
- // http://ip:port/webmeter/rs/logic/syncSaveValveControlTemplate
287
- let http = new HttpResetClass()
288
- http.load('POST',`${this.$androidUtil.getProxyUrl()}/webmeter/rs/logic/syncSaveValveControlTemplate`, {data: data}).then((row) => {
289
- // http.load('POST',`${this.$androidUtil.getProxyUrl()}/SJwebmeter`, {data: data}).then((row) => {
290
- // console.log('执行结果'+JSON.stringify(row))
291
- this.$showMessage('发送成功!')
292
- }).catch((e) => {
293
- this.$showMessage('发送失败!')
294
- // console.log('错误信息+++++++'+JSON.stringify(e))
295
- })
296
- }
297
- })
298
- },
299
- valveShutoff (type) {
300
- // console.log('关阀')
301
- if (!this.f_meternumber) {
302
- this.$showMessage('请输入/扫描用户表号!')
303
- return
304
- }
305
- this.$showMessage(`您确认要生成关阀指令吗?`, ['confirm', 'cancel']).then(async (res) => {
306
- if (res === 'confirm') {
307
- // let alias = await this.queryAlias()
308
- let data = {
309
- userId: this.row.f_user_id,
310
- content: {isOpen: type},
311
- alias: this.row.f_alias,
312
- inputtor: Vue.user.name,
313
- moduleName: this.row.f_alias
314
- }
315
- // console.log('请求参数'+JSON.stringify(data))
316
- // http://ip:port/webmeter/rs/logic/syncSaveValveControlTemplate
317
- let http = new HttpResetClass()
318
- http.load('POST',`${this.$androidUtil.getProxyUrl()}/webmeter/rs/logic/syncSaveValveControlTemplate`, {data: data}).then((row) => {
319
- // http.load('POST',`${this.$androidUtil.getProxyUrl()}/SJwebmeter`, {data: data}).then((row) => {
320
- // console.log('执行结果'+JSON.stringify(row))
321
- this.$showMessage('发送成功!')
322
- }).catch((e) => {
323
- this.$showMessage('发送失败!')
324
- // console.log('错误信息+++++++'+JSON.stringify(e))
325
- })
326
- }
327
- })
328
323
  },
329
324
  againOpening () {
330
325
  console.log('重新开户')
@@ -1,186 +1,186 @@
1
- <template>
2
- <div style="height: 5%;background-color: #499edf;"></div>
3
- <div style="height: 7%">
4
- <tools-page :need-back="!isMenu" :title="titleName" @back="back('返回')" > </tools-page>
5
- </div>
6
- <div id="app" :class="{'auto':isMenu,'app-height':!isMenu}">
7
- <div class="row" :style="isMenu?'overflow-y: scroll;overflow-x: hidden;height:80vh':'overflow-y: scroll;overflow-x: hidden;'">
8
- <route v-ref:route> </route>
9
- </div>
10
- <tab-bar @select-item="onClickTabBarItem" v-show="isMenu">
11
- </tab-bar>
12
- </div>
13
- <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="业务提醒">
14
- <header slot="modal-header" class="modal-header">
15
- <h4 class="modal-title">业务提醒</h4>
16
- </header>
17
- <article slot="modal-body" class="modal-body">
18
- <div class="form-group" style="text-align: center">
19
- 安检代办:{{result.safe[0].safenum}}条,其中预约单{{result.safeorder[0].safeyuyuenum}}条 <br/>
20
- 维修代办:{{result.tel[0].telnum}}条,其中预约单{{result.telorder[0].telyuyuenum}}条<br/>
21
- 报建代办:{{result.apply[0].applynum}}条,其中预约单{{result.applyorder[0].applyyuyuenum}}条<br/>
22
- </div>
23
- </article>
24
- <footer slot="modal-footer" class="modal-footer">
25
- <button type="button" @click="closeFile" style="background-color: limegreen;color: white">确定</button>
26
- </footer>
27
- </modal>
28
- </template>
29
-
30
- <script>
31
-
32
- import {HttpResetClass} from "vue-client";
33
- import Vue from 'vue'
34
- export default {
35
- title: 'app',
36
- data: function () {
37
- return {
38
- item: 0,
39
- isMenu:true,
40
- beforeName:'主界面',
41
- titleName:'待办工作',
42
- backthis:'',
43
- safe:false,
44
- showFile:false,
45
- beforetabs:[],
46
- iftabbar:'',
47
- result:[]
48
- }
49
- },
50
- ready(){
51
- let zhi=this.$appdata.getSingleValue('是否开启代办提醒')
52
- if(zhi=='是'){
53
- console.log("99999",Vue.user)
54
- new HttpResetClass().load('post',`${this.$androidUtil.getProxyUrl()}/rs/logic/getModuleUpcoming`,{
55
- id:Vue.user.id,
56
- name:Vue.user.name,
57
- orgid:Vue.user.orgid
58
- }).then(res=>{
59
- console.log("888888===>"+JSON.stringify(res.data))
60
- this.result = res.data
61
- this.showFile=true
62
- // this.$showMessage(`你有${result.safe[0].safenum}条需要处理的安检待办业务,<br/>
63
- // ${result.safeorder[0].safeyuyuenum}条需要处理的安检预约业务,<br/>
64
- // ${result.tel[0].telnum}条需要处理的维修待办业务,<br/>
65
- // ${result.telorder[0].telyuyuenum}条需要处理的维修预约业务,<br/>
66
- // ${result.applyorder[0].applyyuyuenum}条需要处理的报建预约业务,<br/>
67
- // ${result.apply[0].applynum}条需要处理的报建待办业务`)
68
- })
69
- }
70
- },
71
- methods: {
72
- closeFile(){
73
- this.showFile=false
74
- },
75
- back (flag){
76
- if(this.safe && flag == '返回' ){
77
- this.$showMessage('此返回所录入内容将无法找回!', ['confirm', 'cancel']).then((res) => {
78
- if (res === 'confirm') {
79
- //this.safe = false 返回父页面后不能修改父级页面定义的 是否返回提示
80
- this.delback()
81
- this.backthis.$back()
82
- this.closeAndDelAudio()
83
- }
84
- })
85
- }else{
86
- this.delback()
87
- //this.safe = false 返回父页面后不能修改父级页面定义的 是否返回提示
88
- this.backthis.$back()
89
- }
90
- },
91
- delback(){
92
- // 先确认出 前一个组件的名字
93
- var title = this.beforeName
94
- var beforetitle = '主界面'
95
- var j = -1
96
- for(var i = 0;i<this.beforetabs.length;i++){
97
- if(this.beforetabs[i].titleName == title){
98
- beforetitle = this.beforetabs[i].beforeName
99
- this.backthis =this.beforetabs[i].backthis
100
- this.safe = this.beforetabs[i].safe
101
- j = i
102
- break;
103
- }
104
- }
105
- this.beforetabs.splice(j + 1, 1)
106
- this.beforeName = beforetitle
107
- this.titleName = title
108
- // 判断是否 显示底层导航
109
- if(this.iftabbar == this.titleName){
110
- this.isMenu = true
111
- }
112
- },
113
- onClickTabBarItem(titlefg) {
114
- var param = titlefg.link
115
- if(titlefg.name == '退出系统'){
116
- this.$showMessage('即将返回登陆界面!', ['confirm', 'cancel']).then((res) => {
117
- if (res === 'confirm') {
118
- this.$androidUtil.setPreference('f_repairman_id', 'x')
119
- this.$androidUtil.setPreference('f_repairman_name', 'x')
120
- this.$back()
121
- }
122
- })
123
- }else{
124
- if(this.beforeName == titlefg.name){
125
- return
126
- }
127
- this.titleName = titlefg.name
128
- this.beforeName = titlefg.name
129
- let data = {
130
- sourcet: '竖屏'
131
- }
132
- // if(titlefg.name == '待办工单'){
133
- // param = param+'V'
134
- // }
135
- this.$refs.route.init(param,data)
136
- }
137
- },
138
- closeAndDelAudio() {
139
- console.log("停止无限制录音")
140
- HostApp.startOrStopAudioClip("-----","停止录音")
141
- }
142
- },
143
- events: {
144
- 'gotoson': function (prpdata) {
145
- // 事件回调内的 `this` 自动绑定到注册它的实例上
146
- // safe 返回事件是否进行判断后再返回
147
- // 每进入一次,beforetabs 数组添加 返回 删除
148
- this.backthis = prpdata._this
149
- this.safe = prpdata.safe
150
- this.isMenu = false
151
- // 记录本次跳转
152
- var beforedata = {
153
- beforeName: this.titleName,
154
- titleName: prpdata.title,
155
- backthis:prpdata._this,
156
- safe:prpdata.safe
157
- }
158
- this.beforetabs.push(beforedata)
159
- if( this.beforetabs.length == 1){
160
- this.iftabbar = beforedata.beforeName
161
- }
162
- // 写入跳转后 前后组件名字
163
- this.beforeName = this.titleName
164
- this.titleName = prpdata.title
165
-
166
- console.log('进入子组件,通知外层组件,我已经进入')
167
- },
168
- 'confirm': function () {
169
- // 提交处理返回事件
170
- this.back('提交')
171
- },
172
- 'backarrdel': function () {
173
- this.delback()
174
- },
175
- 'gologin': function () {
176
- this.beforetabs = []
177
- this.$back()
178
- }
179
- }
180
- }
181
- </script>
182
- <style scoped>
183
- .app-height{
184
- height: 93%;
185
- }
186
- </style>
1
+ <template>
2
+ <div style="height: 5%;background-color: #499edf;"></div>
3
+ <div style="height: 7%">
4
+ <tools-page :need-back="!isMenu" :title="titleName" @back="back('返回')" > </tools-page>
5
+ </div>
6
+ <div id="app" :class="{'auto':isMenu,'app-height':!isMenu}">
7
+ <div class="row" :style="isMenu?'overflow-y: scroll;overflow-x: hidden;height:80vh':'overflow-y: scroll;overflow-x: hidden;'">
8
+ <route v-ref:route> </route>
9
+ </div>
10
+ <tab-bar @select-item="onClickTabBarItem" v-show="isMenu">
11
+ </tab-bar>
12
+ </div>
13
+ <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="业务提醒">
14
+ <header slot="modal-header" class="modal-header">
15
+ <h4 class="modal-title">业务提醒</h4>
16
+ </header>
17
+ <article slot="modal-body" class="modal-body">
18
+ <div class="form-group" style="text-align: center">
19
+ 安检代办:{{result.safe[0].safenum}}条,其中预约单{{result.safeorder[0].safeyuyuenum}}条 <br/>
20
+ 维修代办:{{result.tel[0].telnum}}条,其中预约单{{result.telorder[0].telyuyuenum}}条<br/>
21
+ 报建代办:{{result.apply[0].applynum}}条,其中预约单{{result.applyorder[0].applyyuyuenum}}条<br/>
22
+ </div>
23
+ </article>
24
+ <footer slot="modal-footer" class="modal-footer">
25
+ <button type="button" @click="closeFile" style="background-color: limegreen;color: white">确定</button>
26
+ </footer>
27
+ </modal>
28
+ </template>
29
+
30
+ <script>
31
+
32
+ import {HttpResetClass} from "vue-client";
33
+ import Vue from 'vue'
34
+ export default {
35
+ title: 'app',
36
+ data: function () {
37
+ return {
38
+ item: 0,
39
+ isMenu:true,
40
+ beforeName:'主界面',
41
+ titleName:'待办工作',
42
+ backthis:'',
43
+ safe:false,
44
+ showFile:false,
45
+ beforetabs:[],
46
+ iftabbar:'',
47
+ result:[]
48
+ }
49
+ },
50
+ ready(){
51
+ let zhi=this.$appdata.getSingleValue('是否开启代办提醒')
52
+ if(zhi=='是'){
53
+ console.log("99999",Vue.user)
54
+ new HttpResetClass().load('post',`${this.$androidUtil.getProxyUrl()}/rs/logic/getModuleUpcoming`,{
55
+ id:Vue.user.id,
56
+ name:Vue.user.name,
57
+ orgid:Vue.user.orgid
58
+ }).then(res=>{
59
+ console.log("888888===>"+JSON.stringify(res.data))
60
+ this.result = res.data
61
+ this.showFile=true
62
+ // this.$showMessage(`你有${result.safe[0].safenum}条需要处理的安检待办业务,<br/>
63
+ // ${result.safeorder[0].safeyuyuenum}条需要处理的安检预约业务,<br/>
64
+ // ${result.tel[0].telnum}条需要处理的维修待办业务,<br/>
65
+ // ${result.telorder[0].telyuyuenum}条需要处理的维修预约业务,<br/>
66
+ // ${result.applyorder[0].applyyuyuenum}条需要处理的报建预约业务,<br/>
67
+ // ${result.apply[0].applynum}条需要处理的报建待办业务`)
68
+ })
69
+ }
70
+ },
71
+ methods: {
72
+ closeFile(){
73
+ this.showFile=false
74
+ },
75
+ back (flag){
76
+ if(this.safe && flag == '返回' ){
77
+ this.$showMessage('此返回所录入内容将无法找回!', ['confirm', 'cancel']).then((res) => {
78
+ if (res === 'confirm') {
79
+ //this.safe = false 返回父页面后不能修改父级页面定义的 是否返回提示
80
+ this.delback()
81
+ this.backthis.$back()
82
+ this.closeAndDelAudio()
83
+ }
84
+ })
85
+ }else{
86
+ this.delback()
87
+ //this.safe = false 返回父页面后不能修改父级页面定义的 是否返回提示
88
+ this.backthis.$back()
89
+ }
90
+ },
91
+ delback(){
92
+ // 先确认出 前一个组件的名字
93
+ var title = this.beforeName
94
+ var beforetitle = '主界面'
95
+ var j = -1
96
+ for(var i = 0;i<this.beforetabs.length;i++){
97
+ if(this.beforetabs[i].titleName == title){
98
+ beforetitle = this.beforetabs[i].beforeName
99
+ this.backthis =this.beforetabs[i].backthis
100
+ this.safe = this.beforetabs[i].safe
101
+ j = i
102
+ break;
103
+ }
104
+ }
105
+ this.beforetabs.splice(j + 1, 1)
106
+ this.beforeName = beforetitle
107
+ this.titleName = title
108
+ // 判断是否 显示底层导航
109
+ if(this.iftabbar == this.titleName){
110
+ this.isMenu = true
111
+ }
112
+ },
113
+ onClickTabBarItem(titlefg) {
114
+ var param = titlefg.link
115
+ if(titlefg.name == '退出系统'){
116
+ this.$showMessage('即将返回登陆界面!', ['confirm', 'cancel']).then((res) => {
117
+ if (res === 'confirm') {
118
+ this.$androidUtil.setPreference('f_repairman_id', 'x')
119
+ this.$androidUtil.setPreference('f_repairman_name', 'x')
120
+ this.$back()
121
+ }
122
+ })
123
+ }else{
124
+ if(this.beforeName == titlefg.name){
125
+ return
126
+ }
127
+ this.titleName = titlefg.name
128
+ this.beforeName = titlefg.name
129
+ let data = {
130
+ sourcet: '竖屏'
131
+ }
132
+ // if(titlefg.name == '待办工单'){
133
+ // param = param+'V'
134
+ // }
135
+ this.$refs.route.init(param,data)
136
+ }
137
+ },
138
+ closeAndDelAudio() {
139
+ console.log("停止无限制录音")
140
+ HostApp.startOrStopAudioClip("-----","停止录音")
141
+ }
142
+ },
143
+ events: {
144
+ 'gotoson': function (prpdata) {
145
+ // 事件回调内的 `this` 自动绑定到注册它的实例上
146
+ // safe 返回事件是否进行判断后再返回
147
+ // 每进入一次,beforetabs 数组添加 返回 删除
148
+ this.backthis = prpdata._this
149
+ this.safe = prpdata.safe
150
+ this.isMenu = false
151
+ // 记录本次跳转
152
+ var beforedata = {
153
+ beforeName: this.titleName,
154
+ titleName: prpdata.title,
155
+ backthis:prpdata._this,
156
+ safe:prpdata.safe
157
+ }
158
+ this.beforetabs.push(beforedata)
159
+ if( this.beforetabs.length == 1){
160
+ this.iftabbar = beforedata.beforeName
161
+ }
162
+ // 写入跳转后 前后组件名字
163
+ this.beforeName = this.titleName
164
+ this.titleName = prpdata.title
165
+
166
+ console.log('进入子组件,通知外层组件,我已经进入')
167
+ },
168
+ 'confirm': function () {
169
+ // 提交处理返回事件
170
+ this.back('提交')
171
+ },
172
+ 'backarrdel': function () {
173
+ this.delback()
174
+ },
175
+ 'gologin': function () {
176
+ this.beforetabs = []
177
+ this.$back()
178
+ }
179
+ }
180
+ }
181
+ </script>
182
+ <style scoped>
183
+ .app-height{
184
+ height: 93%;
185
+ }
186
+ </style>
@@ -1,199 +1,199 @@
1
- <template>
2
- <div class="page-header app-header auto">
3
- <span style="margin-left:33px">{{title}}</span>
4
- <div class="app-header-back" @click='back()' v-show="needBack">
5
- <img src="../../assets/返回.png" style="height: 20px;margin-right:-10px"/>
6
- </div>
7
- <div class="app-header-back" style="height: auto" v-show="!needBack">
8
- <img src="../../assets/denglu.png" style="height: 20px;margin-right:-10px;margin-top:-10px"/>
9
- <span style="margin-left:5px;color: #ffffff;font-size: 1.0em;">{{loginname}}</span>
10
- </div>
11
- <div class="app-header-list" v-if="showList">
12
- <dropdown>
13
- <a href="#" data-toggle="dropdown" class="dropdown-toggle" style="color: white;font-size:19px">
14
- <div class="app-header-newaddserver" style="line-height: 1px;margin-top: -5px">
15
- <img src="../../assets/newadd3.png" style="height: 20px;margin-right:-10px"/>
16
- </div>
17
- </a>
18
- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
19
- <li >
20
- <a href="#" @click="gotopage('sell-info',{user:user})">
21
- <img src="../../assets/待办工单竖屏3.png"> 报修工单
22
- </a>
23
- <hr>
24
- <a href="#" @click="gotopage('repair-message',{user:user})">
25
- <img src="../../assets/安检导航竖屏3.png"/> 安检计划
26
- </a>
27
- <hr>
28
- <a href="#" @click="gotopage('changemeter-info',{user:user})">
29
- <img src="../../assets/手机抄表竖屏3.png"/> 抄表计划
30
- </a>
31
- <hr>
32
- <hr>
33
- </li>
34
- </ul>
35
- </dropdown>
36
- </div>
37
- <div class="app-header-guanbishengyin" style="line-height: 25px" @click='mute()'>
38
- <img v-if="!f_voiceSwitch" src="../../assets/jingyin3.png" style="height: 20px; width: 20px;"/>
39
- <img v-if="f_voiceSwitch" src="../../assets/yinliang.png" style="height: 20px; width: 20px;"/>
40
- </div>
41
- </div>
42
- </template>
43
-
44
- <script>
45
- import Vue from 'vue'
46
- export default {
47
- title: '通用头部组件',
48
- data () {
49
- return {
50
- loginname: Vue.user.name,
51
- f_voiceSwitch:true
52
- }
53
- },
54
- props: {
55
- user:{
56
- type:Object
57
- },
58
- userinfo:{
59
- type:Object
60
- },
61
- // 是否显示列表控件
62
- showList: {
63
- type: Boolean,
64
- default: false
65
- },
66
- title: {
67
- type: String,
68
- default: '燃气应用'
69
- },
70
- needBack: {
71
- type: Boolean,
72
- default: true
73
- }
74
- },
75
- ready(){
76
- let isShow = this.$appdata.getSingleValue('计划提醒弹窗') || false
77
- if (isShow){
78
- let criteria = {
79
- items: '*',
80
- tablename: 't_check_plan',
81
- condition: `1=1`,
82
- orderitem: 'id'
83
- }
84
- let result = HostApp._executeTask({'type':'sql', 'data':{'alias': 'safe_singleTable_OrderBy', 'criteria': criteria}})
85
- if(result.code == 200){
86
- result.data.rows.forEach(item=>{
87
- if (new Date(item.f_end_time) <= new Date() && new Date(item.f_end_time) >= new Date(new Date()).setDate(new Date().getDate()-(this.$appdata.getSingleValue('计划提醒日期') || '7'))){
88
- HostApp.notify2("提醒:",`计划名称:${item.f_plan_name},计划结束时间:${item.f_end_time},请及时安排安检!`,"true")
89
- }
90
- })
91
- }
92
- }
93
- //首次进入默认开启播放
94
- HostApp.setPreference('f_voiceSwitch','true')
95
- //是否开启无限制响铃(单值参数配 -1 代表开启无限制响铃)
96
- HostApp.setPreference('loop',this.$appdata.getSingleValue('loop') || '3')
97
- },
98
- methods: {
99
- // 新增工单
100
- newadd(){
101
- // 事件
102
- },
103
- // 跳转页面
104
- gotopage(param,props) {
105
- this.$goto(param,props)
106
- },
107
- back () {
108
- // console.log('发送返回事件')
109
- this.$emit('back')
110
- },
111
- // 关闭新消息响铃(静音)
112
- mute () {
113
- if(navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone')){
114
- window.prompt("mute","")
115
- }else{
116
- HostApp.mute()
117
- switch (HostApp.getPreference('f_voiceSwitch').data){
118
- case 'true' : HostApp.setPreference('f_voiceSwitch','false')
119
- this.f_voiceSwitch= false
120
- break
121
- case 'false' : HostApp.setPreference('f_voiceSwitch','true')
122
- this.f_voiceSwitch= true
123
- break
124
- default : HostApp.setPreference('f_voiceSwitch','true')
125
- }
126
- }
127
- },
128
- }
129
- }
130
- </script>
131
- <style scoped>
132
- .app-header {
133
- position: fixed;
134
- top:3%;
135
- width: 100%;
136
- margin: 0px;
137
- background: #499edf;
138
- color: #FFF;
139
- padding: 10px;
140
- text-align: center;
141
- font-size: 15px;
142
- height: 7%;
143
-
144
- /*margin-bottom: 20px;*/
145
- }
146
- .app-header-back {
147
- position: absolute;
148
- top: 12px;
149
- color: #D8DCE5;
150
- }
151
- .app-header-list {
152
- height: 40px;
153
- float: right;
154
- color: #D8DCE5;
155
- }
156
- .app-header-guanbishengyin {
157
- margin-right: 10px;
158
- float: right;
159
- color: #D8DCE5;
160
- }
161
- .app-header-newaddserver {
162
- margin-right: 10px;
163
- float: right;
164
- color: #D8DCE5;
165
- }
166
- .app-header-volume {
167
- position: absolute;
168
- top: 0;
169
- display: flex;
170
- flex-direction: column;
171
- justify-content: center;
172
- right: 20px;
173
- color: #D8DCE5;
174
- font-size: 1.5em;
175
- }
176
- .dropdown-menu {
177
- background-color: #212a35;
178
- }
179
- .dropdown-menu a{
180
- color: white;
181
- }
182
- .dropdown-menu a:hover{
183
- color: white;
184
- background-color: #6b85a3;
185
- }
186
- .dropdown-menu img{
187
- width: 22%;
188
- margin-top: -5px;
189
- }
190
- .dropdown-menu hr{
191
- margin-top: 0px;
192
- margin-bottom: 0px;
193
- margin-right:0px;
194
- width: 80%;
195
- }
196
- .glyphicon-menu-left{
197
- color:#fff;
198
- }
199
- </style>
1
+ <template>
2
+ <div class="page-header app-header auto">
3
+ <span style="margin-left:33px">{{title}}</span>
4
+ <div class="app-header-back" @click='back()' v-show="needBack">
5
+ <img src="../../assets/返回.png" style="height: 20px;margin-right:-10px"/>
6
+ </div>
7
+ <div class="app-header-back" style="height: auto" v-show="!needBack">
8
+ <img src="../../assets/denglu.png" style="height: 20px;margin-right:-10px;margin-top:-10px"/>
9
+ <span style="margin-left:5px;color: #ffffff;font-size: 1.0em;">{{loginname}}</span>
10
+ </div>
11
+ <div class="app-header-list" v-if="showList">
12
+ <dropdown>
13
+ <a href="#" data-toggle="dropdown" class="dropdown-toggle" style="color: white;font-size:19px">
14
+ <div class="app-header-newaddserver" style="line-height: 1px;margin-top: -5px">
15
+ <img src="../../assets/newadd3.png" style="height: 20px;margin-right:-10px"/>
16
+ </div>
17
+ </a>
18
+ <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
19
+ <li >
20
+ <a href="#" @click="gotopage('sell-info',{user:user})">
21
+ <img src="../../assets/待办工单竖屏3.png"> 报修工单
22
+ </a>
23
+ <hr>
24
+ <a href="#" @click="gotopage('repair-message',{user:user})">
25
+ <img src="../../assets/安检导航竖屏3.png"/> 安检计划
26
+ </a>
27
+ <hr>
28
+ <a href="#" @click="gotopage('changemeter-info',{user:user})">
29
+ <img src="../../assets/手机抄表竖屏3.png"/> 抄表计划
30
+ </a>
31
+ <hr>
32
+ <hr>
33
+ </li>
34
+ </ul>
35
+ </dropdown>
36
+ </div>
37
+ <div class="app-header-guanbishengyin" style="line-height: 25px" @click='mute()'>
38
+ <img v-if="!f_voiceSwitch" src="../../assets/jingyin3.png" style="height: 20px; width: 20px;"/>
39
+ <img v-if="f_voiceSwitch" src="../../assets/yinliang.png" style="height: 20px; width: 20px;"/>
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import Vue from 'vue'
46
+ export default {
47
+ title: '通用头部组件',
48
+ data () {
49
+ return {
50
+ loginname: Vue.user.name,
51
+ f_voiceSwitch:true
52
+ }
53
+ },
54
+ props: {
55
+ user:{
56
+ type:Object
57
+ },
58
+ userinfo:{
59
+ type:Object
60
+ },
61
+ // 是否显示列表控件
62
+ showList: {
63
+ type: Boolean,
64
+ default: false
65
+ },
66
+ title: {
67
+ type: String,
68
+ default: '燃气应用'
69
+ },
70
+ needBack: {
71
+ type: Boolean,
72
+ default: true
73
+ }
74
+ },
75
+ ready(){
76
+ let isShow = this.$appdata.getSingleValue('计划提醒弹窗') || false
77
+ if (isShow){
78
+ let criteria = {
79
+ items: '*',
80
+ tablename: 't_check_plan',
81
+ condition: `1=1`,
82
+ orderitem: 'id'
83
+ }
84
+ let result = HostApp._executeTask({'type':'sql', 'data':{'alias': 'safe_singleTable_OrderBy', 'criteria': criteria}})
85
+ if(result.code == 200){
86
+ result.data.rows.forEach(item=>{
87
+ if (new Date(item.f_end_time) <= new Date() && new Date(item.f_end_time) >= new Date(new Date()).setDate(new Date().getDate()-(this.$appdata.getSingleValue('计划提醒日期') || '7'))){
88
+ HostApp.notify2("提醒:",`计划名称:${item.f_plan_name},计划结束时间:${item.f_end_time},请及时安排安检!`,"true")
89
+ }
90
+ })
91
+ }
92
+ }
93
+ //首次进入默认开启播放
94
+ HostApp.setPreference('f_voiceSwitch','true')
95
+ //是否开启无限制响铃(单值参数配 -1 代表开启无限制响铃)
96
+ HostApp.setPreference('loop',this.$appdata.getSingleValue('loop') || '3')
97
+ },
98
+ methods: {
99
+ // 新增工单
100
+ newadd(){
101
+ // 事件
102
+ },
103
+ // 跳转页面
104
+ gotopage(param,props) {
105
+ this.$goto(param,props)
106
+ },
107
+ back () {
108
+ // console.log('发送返回事件')
109
+ this.$emit('back')
110
+ },
111
+ // 关闭新消息响铃(静音)
112
+ mute () {
113
+ if(navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone')){
114
+ window.prompt("mute","")
115
+ }else{
116
+ HostApp.mute()
117
+ switch (HostApp.getPreference('f_voiceSwitch').data){
118
+ case 'true' : HostApp.setPreference('f_voiceSwitch','false')
119
+ this.f_voiceSwitch= false
120
+ break
121
+ case 'false' : HostApp.setPreference('f_voiceSwitch','true')
122
+ this.f_voiceSwitch= true
123
+ break
124
+ default : HostApp.setPreference('f_voiceSwitch','true')
125
+ }
126
+ }
127
+ },
128
+ }
129
+ }
130
+ </script>
131
+ <style scoped>
132
+ .app-header {
133
+ position: fixed;
134
+ top:3%;
135
+ width: 100%;
136
+ margin: 0px;
137
+ background: #499edf;
138
+ color: #FFF;
139
+ padding: 10px;
140
+ text-align: center;
141
+ font-size: 15px;
142
+ height: 7%;
143
+
144
+ /*margin-bottom: 20px;*/
145
+ }
146
+ .app-header-back {
147
+ position: absolute;
148
+ top: 12px;
149
+ color: #D8DCE5;
150
+ }
151
+ .app-header-list {
152
+ height: 40px;
153
+ float: right;
154
+ color: #D8DCE5;
155
+ }
156
+ .app-header-guanbishengyin {
157
+ margin-right: 10px;
158
+ float: right;
159
+ color: #D8DCE5;
160
+ }
161
+ .app-header-newaddserver {
162
+ margin-right: 10px;
163
+ float: right;
164
+ color: #D8DCE5;
165
+ }
166
+ .app-header-volume {
167
+ position: absolute;
168
+ top: 0;
169
+ display: flex;
170
+ flex-direction: column;
171
+ justify-content: center;
172
+ right: 20px;
173
+ color: #D8DCE5;
174
+ font-size: 1.5em;
175
+ }
176
+ .dropdown-menu {
177
+ background-color: #212a35;
178
+ }
179
+ .dropdown-menu a{
180
+ color: white;
181
+ }
182
+ .dropdown-menu a:hover{
183
+ color: white;
184
+ background-color: #6b85a3;
185
+ }
186
+ .dropdown-menu img{
187
+ width: 22%;
188
+ margin-top: -5px;
189
+ }
190
+ .dropdown-menu hr{
191
+ margin-top: 0px;
192
+ margin-bottom: 0px;
193
+ margin-right:0px;
194
+ width: 80%;
195
+ }
196
+ .glyphicon-menu-left{
197
+ color:#fff;
198
+ }
199
+ </style>
@@ -1,5 +1,5 @@
1
- let specialComp = {
2
- 'nav-bottom': (resolve) => { require(['./NavBottomVVV'], resolve) },
3
- 'tools-page': (resolve) => { require(['./ToolsPage'], resolve) },
4
- }
5
- exports.specialComp = specialComp
1
+ let specialComp = {
2
+ 'nav-bottom': (resolve) => { require(['./NavBottomVVV'], resolve) },
3
+ 'tools-page': (resolve) => { require(['./ToolsPage'], resolve) },
4
+ }
5
+ exports.specialComp = specialComp