system-phone 3.1.1 → 3.1.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.
Files changed (106) hide show
  1. package/.gradle/buildOutputCleanup/cache.properties +2 -2
  2. package/SystemPhone.iml +8 -8
  3. package/build/dev-server.js +141 -141
  4. package/build/webpack.base.conf.js +82 -82
  5. package/build.gradle +27 -27
  6. package/gradle/wrapper/gradle-wrapper.properties +5 -5
  7. package/gradlew +183 -183
  8. package/gradlew.bat +100 -100
  9. package/index.html +21 -21
  10. package/package.json +1 -1
  11. package/src/App.vue +25 -25
  12. package/src/Util.js +415 -415
  13. package/src/assets//346/215/242/350/241/250/347/273/264/344/277/256.png +0 -0
  14. package/src/assets//351/200/232/347/224/250/350/203/214/346/231/257/345/233/276.png +0 -0
  15. package/src/components/AloneLoadParams.vue +26 -26
  16. package/src/components/AlreadyService.vue +193 -193
  17. package/src/components/AttendManage.vue +534 -534
  18. package/src/components/LoadAppdata.vue +38 -38
  19. package/src/components/LoginApp.vue +732 -732
  20. package/src/components/LoginAppNew.vue +587 -587
  21. package/src/components/LoginAppV4.vue +716 -716
  22. package/src/components/ModifyPassWord.vue +216 -216
  23. package/src/components/NavBottom.vue +117 -117
  24. package/src/components/NavBottomV.vue +141 -141
  25. package/src/components/NavBottomVVV.vue +185 -185
  26. package/src/components/OnlineManage.vue +256 -256
  27. package/src/components/PhoneAllInfo.vue +68 -68
  28. package/src/components/PhoneChangemeterInfo.vue +116 -116
  29. package/src/components/PhoneImageInfo.vue +102 -102
  30. package/src/components/PhoneInfoTable.vue +39 -39
  31. package/src/components/PhoneMeterInfo.vue +132 -132
  32. package/src/components/PhoneRepairInfo.vue +146 -146
  33. package/src/components/PhoneSafeInfo.vue +101 -101
  34. package/src/components/PhoneSellInfo.vue +148 -148
  35. package/src/components/PhoneSellInfoLite.vue +112 -112
  36. package/src/components/PhoneUser.vue +202 -202
  37. package/src/components/PhoneUserDetil.vue +70 -70
  38. package/src/components/PhoneUserFind.vue +138 -138
  39. package/src/components/RightTree.vue +217 -217
  40. package/src/components/SystemSetUp.vue +332 -332
  41. package/src/components/TabBarPhone.vue +81 -81
  42. package/src/components/Test.vue +14 -14
  43. package/src/components/ToolsPage.vue +199 -199
  44. package/src/components/UploadManage.vue +194 -194
  45. package/src/components/gaomi/NavBottomV.vue +223 -223
  46. package/src/components/gaomi/NavBottomVVVV.vue +210 -210
  47. package/src/components/gaomi/Scroller.vue +63 -63
  48. package/src/components/gaomi/SystemSetUp.vue +186 -186
  49. package/src/components/gaomi/ToolsPage.vue +168 -168
  50. package/src/components/idea/feedBack.vue +150 -150
  51. package/src/components/idea/feedbackAdd.vue +366 -366
  52. package/src/components/info/ConfigInfo.vue +122 -122
  53. package/src/components/info/FindUserInfo.vue +157 -157
  54. package/src/components/info/InfoTable.vue +37 -37
  55. package/src/components/iot/InstructMessage.vue +313 -313
  56. package/src/components/iot/IotBaseInfo.vue +97 -97
  57. package/src/components/iot/IotMeterInfo.vue +77 -77
  58. package/src/components/iot/iotMonitoringMain.vue +501 -501
  59. package/src/components/online/ApplyOnline.vue +581 -581
  60. package/src/components/online/BJZhongRan/ApplyOnline.vue +600 -600
  61. package/src/components/screen/ChargeContentPage.vue +656 -656
  62. package/src/components/screen/ContentPage.vue +611 -611
  63. package/src/components/screen/GongdanContentPage.vue +149 -149
  64. package/src/components/screen/ListCountItem.vue +93 -93
  65. package/src/components/screen/ModuleTitle.vue +48 -48
  66. package/src/components/screen/SafeOrderContentPage.vue +440 -440
  67. package/src/components/screen/SecurityCheckItem.vue +50 -50
  68. package/src/components/screen/TotalItem.vue +76 -76
  69. package/src/components/screen/TotalUserNumber.vue +77 -77
  70. package/src/components/screen/WorkOrderItem.vue +51 -51
  71. package/src/components/screen/WorkOrderRightDownItem.vue +103 -103
  72. package/src/components/screen/WorkOrderRightItem.vue +115 -115
  73. package/src/components/userinfo/paymentQuery.vue +189 -189
  74. package/src/components/userinfo/queryFile.vue +190 -190
  75. package/src/components/wasm.vue +18 -18
  76. package/src/expandcssAndroid.less +521 -521
  77. package/src/filiale/liaoyuan/NavBottomVVV.vue +186 -0
  78. package/src/filiale/liaoyuan/ToolsPage.vue +199 -0
  79. package/src/filiale/liaoyuan/systemphonegrid.js +5 -0
  80. package/src/filiale/yulinyuchuan/AlreadyService.vue +194 -194
  81. package/src/filiale/yulinyuchuan/AttendManage.vue +537 -537
  82. package/src/filiale/yulinyuchuan/LoginApp.vue +741 -741
  83. package/src/filiale/yulinyuchuan/OnlineManage.vue +256 -256
  84. package/src/filiale/yulinyuchuan/SystemSetUp.vue +332 -332
  85. package/src/filiale/yulinyuchuan/UploadManage.vue +195 -195
  86. package/src/filiale/yulinyuchuan/systemphonegrid.js +9 -9
  87. package/src/filiale/yulinyuchuanTY/AlreadyService.vue +194 -0
  88. package/src/filiale/yulinyuchuanTY/AttendManage.vue +537 -0
  89. package/src/filiale/yulinyuchuanTY/LoginApp.vue +741 -0
  90. package/src/filiale/yulinyuchuanTY/OnlineManage.vue +256 -0
  91. package/src/filiale/yulinyuchuanTY/SystemSetUp.vue +332 -0
  92. package/src/filiale/yulinyuchuanTY/UploadManage.vue +195 -0
  93. package/src/filiale/yulinyuchuanTY/systemphonegrid.js +9 -0
  94. package/src/index.js +9 -9
  95. package/src/main.js +38 -38
  96. package/src/plugins/const.js +404 -404
  97. package/src/plugins/vue-py.js +37 -37
  98. package/src/stores/AppData.js +79 -79
  99. package/src/systemphone-gaomi.js +105 -105
  100. package/src/systemphone.js +60 -60
  101. package/src/systemphonegrid.js +185 -185
  102. package/src/util/LdapHelper.js +75 -75
  103. package/static/const.js +404 -404
  104. package/static/layui/font/iconfont.svg +554 -554
  105. package/static/vue-py.js +37 -37
  106. package/static/wasm_exec.js +465 -465
@@ -1,537 +1,537 @@
1
- <template>
2
- <div class="nav-bgcolor">
3
- <img src="../../assets/首页大图.png" style="height: 20vh; width: 96vw; margin: 8px 0 0 8px; border-radius: 10px">
4
- <div class="auto">
5
- <div class="row nav-bgcolor" >
6
- <div class="col-xs-6 manbiankuang" v-for="tab in tabs" @click="gotopage(tab.link,tab.name)">
7
- <img class="imgs" :src="imgback(tab.name)">
8
- <div class="badge"
9
- v-show="isshowTag&&tab.num&&tab.num>0"
10
- ><div class="badge-content">{{tab.num>99?'99+':tab.num}}</div></div>
11
- <div class="badge" v-show="tab.name == '抄表待办' && isShowRedNum && isShowRedNum == 'true'">
12
- <div class="badge-content">{{ meterNum?meterNum:0 }}</div>
13
- </div>
14
- <div class="badge" v-show="tab.name == '安检待办' && isShowRedNum && isShowRedNum == 'true'">
15
- <div class="badge-content">{{ safeckNum?safeckNum:0 }}</div>
16
- </div>
17
- <div class="badge" v-show="tab.name == '维修待办' && isShowRedNum && isShowRedNum == 'true'">
18
- <div class="badge-content">{{ repairNum?repairNum:0 }}</div>
19
- </div>
20
- <p></p>
21
- <p class="pagesfoot">{{tab.name}}</p>
22
-
23
- <!--<p class="pagesfoot">{{tab.name}}&nbsp;{{tab.icon}}</p>-->
24
- <p></p>
25
- </div>
26
- </div>
27
- <!--<div class="row" style="overflow:auto;">-->
28
- <!--<repair-first v-show="componentName == 'repair-first'" worktype="报修单" :sourcet="sourcet" tabname="维修待办" v-on:changesum="changesum"></repair-first>-->
29
- <!--<zhihuan-first v-show="componentName == 'zhihuan-first'" worktype="置换通气单" :sourcet="sourcet" tabname="置换待办" v-on:changesum="changesum"></zhihuan-first>-->
30
- <!--</div>-->
31
- </div>
32
- <validator name="v">
33
- <modal
34
- v-if="showModal"
35
- :show.sync="showModal"
36
- backdrop="false"
37
- title="工程类型"
38
- cancel-text="取消"
39
- ok-text="确认"
40
- :callback="apply"
41
- >
42
- <div class="form-horizontal" slot="modal-body">
43
- <div class="row form-group app-input" style="margin: 10px auto">
44
- <label class="">报建类型:</label>
45
- <div class="col-sm-8">
46
- <v-select
47
- v-model="applyType"
48
- placeholder='请选择需要发起的工程类型'
49
- :value.sync="applyType"
50
- :options='applyTypes'
51
- :value-single="true"
52
- class="select select_list"
53
- :search="false"
54
- close-on-select ></v-select>
55
- </div>
56
- </div>
57
- </div>
58
- </modal>
59
- </validator>
60
- <modal :show.sync="shownotices" backdrop="false">
61
- <header slot="modal-header" class="modal-header">
62
- <h3 style="text-align: center;">新公告提醒</h3>
63
- </header>
64
- <article slot="modal-body" class="modal-body">
65
- <div class="auto app-text" style="margin-top: 5px;">
66
- <div class="panel" style="padding: 10px 10px 5px 10px;">
67
- <div class="panel-body panel-self">
68
- <div class="col-xs-12">
69
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>标题:</b></p>
70
- <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{notices.f_title}}</p>
71
- </div>
72
- <div class="col-xs-12">
73
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>内容:</b></p>
74
- <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ notices.f_explain }}</p>
75
- </div>
76
- <div class="col-xs-12">
77
- <p class="panel-title text-left font" style="width: 23%;float: left"><b>状态:</b></p>
78
- <p class="panel-title text-left input-font" style="width: 77%">{{notices.f_state}}</p>
79
- </div>
80
-
81
- <div class="col-xs-12">
82
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>发布时间:</b></p>
83
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_date}}</p>
84
- </div>
85
- <div class="col-xs-12">
86
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>结束时间:</b></p>
87
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_enddate}}</p>
88
- </div>
89
- <div class="col-xs-12">
90
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>操作人:</b></p>
91
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_operator}}</p>
92
- </div>
93
- <div class="col-xs-12">
94
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>紧急公告:</b></p>
95
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_urgency ? '是' : '否'}}</p>
96
- </div>
97
- <div class="col-xs-12">
98
- <img-self :width="300" :height="400" alt="无照片!!!" :src="notices.f_downloadfile.split(':')[1]"></img-self>
99
- </div>
100
- <div class="col-xs-12">
101
- <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;float: right" @click="closeshowModal()">确认</button>
102
- </div>
103
- </div>
104
- </div>
105
- </div>
106
- </article>
107
- <footer slot="modal-footer" class="modal-footer">
108
- </footer>
109
- </modal>
110
- </div>
111
- </template>
112
-
113
- <script scoped>
114
- import Vue from 'vue'
115
- import {HttpResetClass} from "vue-client";
116
- export default {
117
- title: '待办工作导航',
118
- data() {
119
- return {
120
- titleName: '待办工作',
121
- showModal: false,
122
- isMenu: true,
123
- isshowTag:false,
124
- shownotices:false,
125
- tabs: [],
126
- safeckNum:0,
127
- repairNum:0,
128
- model:{},
129
- notices:{},
130
- weakPassword: false,
131
- modifyPassword: false,
132
- isShowStopGas:this.$appdata.getSingleValue('公告展示'),
133
- text: '导航组件this',
134
- beforeName: '待办工作',
135
- componentName: 'repair-first',
136
- sourcet: '竖屏',
137
- meterNum:null,
138
- isShowRedNum:this.$appdata.getSingleValue('手机端获取任务条数'),
139
- applyType: '', // 报建类型
140
- // applyTypes:this.$appdata.getParam("手机报建类型"),
141
- applyTypes: [{label: '散户报建', value: '散户报建'}, {label: '工商户报建', value: '工商户报建'}, {
142
- label: '团购报建',
143
- value: '团购报建'
144
- }, {label: '改管报建', value: '改管报建'}, {label: '增容报建', value: '增容报建'}, {
145
- label: '退款报建',
146
- value: '退款报建'
147
- }, {label: '团购转散户', value: '团购转散户'}, {label: '报警器报建', value: '报警器报建'}, {label: '工商业报警器报建', value: '工商业报警器报建'}],
148
-
149
- }
150
- },
151
- ready () {
152
- this.getNoTagTabs()
153
- this.getmeterNum()
154
- this.getModelSum()
155
- this.searchStopGas()
156
- this.tabs.sort((a, b) => new Date(a.f_create_date) - new Date(b.f_create_date))
157
- console.log('this.tabs=', JSON.stringify(this.tabs))
158
- },
159
- methods: {
160
- closeshowModal(){
161
- this.shownotices = false
162
- this.saveIsShowStopGas()
163
- },
164
- searchStopGas(){
165
- if(!this.isShowStopGas || !this.isShowStopGas == 'true'){
166
- return
167
- }
168
- let http = new HttpResetClass()
169
- var condition = `1=1 and f_state = '公告中' and f_typeofreceipt = '手机端'`
170
- let data = {
171
- items: '*',
172
- tablename: 'T_STOPGAS',
173
- condition: condition,
174
- orderitem: 'id desc'
175
- }
176
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
177
- resolveMsg: null,
178
- rejectMsg: null
179
- }).then((res) => {
180
- this.notices = res.data[0]
181
- this.showStopGas(res.data[0].id,Vue.user.id)
182
- }).catch((e)=>{
183
- })
184
- },
185
- showStopGas(stopId,userid){
186
- let http = new HttpResetClass()
187
- var condition = `f_stopgas_id = '${stopId}' and f_user_id = '${userid}'`
188
- let data = {
189
- items: '*',
190
- tablename: 't_notice_notarize',
191
- condition: condition,
192
- orderitem: 'f_id desc'
193
- }
194
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
195
- resolveMsg: null,
196
- rejectMsg: null
197
- }).then((res) => {
198
- if (res.data.length === 0) {
199
- this.shownotices = true
200
- }else if (res.data[0].f_phstate !== '已确认' ){
201
- this.model.f_id = res.data[0].f_id
202
- this.shownotices = true
203
- } else {
204
- this.shownotices = false
205
- }
206
- }).catch((e)=>{
207
- console.log('报错了!!')
208
- console.error(e)
209
- })
210
- },
211
- saveIsShowStopGas(){
212
- this.model.f_stopgas_id = this.notices.id
213
- this.model.f_phstate = '已确认'
214
- this.model.f_user_id = Vue.user.id
215
- console.log('保存', this.model)
216
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/savenoticenotarize`, {data:this.model}).then((res) => {
217
- this.model.f_stopgas_id = ''
218
- this.model.f_user_id = ''
219
- }).catch((res) => {
220
- console.log('打印报错信息'+ res)
221
- })
222
- },
223
- click (row) {
224
- let _this = this
225
- this.$dispatch('gotoson', {
226
- _this: _this,
227
- title: row.defname,
228
- safe: true
229
- })
230
- this.$goto('app-service-control', {selectdata: row})
231
- },
232
- async getProcessId(processname) {
233
- let data = {
234
- workname: processname
235
- }
236
- let http = new HttpResetClass()
237
- let res = await http.load(
238
- 'POST',
239
- `${this.$androidUtil.getProxyUrl()}/rs/logic/getProcessId`,
240
- {data: data},
241
- {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
242
- )
243
-
244
- return res.data
245
- },
246
- async apply () {
247
- if (this.applyType === '' || this.applyType === null) {
248
- this.$showAlert('请选择需要发起的类型', 'warning', 3000)
249
- return
250
- }
251
- let data = {
252
- f_apply_type: this.applyType
253
- }
254
- if (this.applyType === '散户报建') {
255
- data.processname = '散户报建流程'
256
- data.defname = '报装申请'
257
- } else if (this.applyType === '工商户报建') {
258
- data.processname = '工商户报建流程'
259
- data.defname = '报装申请'
260
- } else if (this.applyType === '改管报建') {
261
- data.processname = '改管报建流程'
262
- data.defname = '报装申请'
263
- } else if (this.applyType === '增容报建') {
264
- data.processname = '增容报建流程'
265
- data.defname = '报装申请'
266
- } else if (this.applyType === '团购报建') {
267
- data.processname = '团购报建流程'
268
- data.defname = '报装申请'
269
- } else if (this.applyType === '退款报建') {
270
- data.processname = '退款报建流程'
271
- data.defname = '终止报建'
272
- } else if (this.applyType === '团购转散户') {
273
- data.processname = '团购转散户报建流程'
274
- data.defname = '信息确认'
275
- }else if (this.applyType === '报警器报建') {
276
- data.processname = '报警器报建流程'
277
- data.defname = '报装申请'
278
- }else if (this.applyType === '工商业报警器报建') {
279
- data.processname = '工商业报警器报建流程'
280
- data.defname = '报装申请'
281
- } else {
282
- this.$showMessage('暂无此类报装')
283
- return
284
- }
285
-
286
- data.f_sub_state = "新增"
287
- data.f_apply_source = "线下发起"
288
- data.f_process_id = await this.getProcessId(data.processname)
289
-
290
- // 调用ExplorationUser事件
291
-
292
- this.click(data)
293
- this.applyType = null
294
- this.showModal = false
295
- },
296
- // 查询本地所有待办
297
- getModelSum(){
298
- for(var i = 0;i<this.tabs.length;i++){
299
- if(this.tabs[i].link == 'zhihuan-first' ){
300
- this.getZhihuan()
301
- }
302
- if(this.tabs[i].link == 'repair-first' ){
303
- this.getRepair()
304
- }
305
- if(this.tabs[i].link == 'current-create' ){
306
- this.getSafeCheck()
307
- }
308
- }
309
- },
310
- getRepair(){
311
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
312
- return
313
- }
314
- var _this = this;
315
- let bbb = _this.$androidUtil.path({'alias':`getServiceMobile`,'data':{condition:'1 = 1'}})
316
- if (bbb.code === 200) {
317
- _this.repairNum = bbb.data.length
318
- }
319
- },
320
- getSafeCheck(){
321
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
322
- return
323
- }
324
- var _this = this;
325
- let aaa = _this.$androidUtil.path({'alias':`safecheckGetServiceMobile`,'data':{condition:'1 = 1'}})
326
- if (aaa.code === 200) {
327
- _this.safeckNum = aaa.data.length
328
- }
329
- },
330
- getZhihuan(){
331
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
332
- return
333
- }
334
- },
335
- changesum(titdata){
336
- for(var i = 0;i<this.tabs.length;i++){
337
- if(this.tabs[i].name == titdata.title){
338
- this.tabs[i].icon = titdata.sum + '单'
339
- return
340
- }
341
- }
342
- },
343
- getNoTagTabs(){
344
- for(let funs in Vue.functions){
345
- if(Vue.functions[funs].link == 'attend-manage'){
346
- this.$set('tabs',Vue.functions[funs].children)
347
- }
348
- }
349
- this.getTabs()
350
- },
351
- getTabs(){
352
- if (Vue.android) {
353
- if(Vue.config.telephone&&Vue.config.telephone.TipConfig&&Vue.config.telephone.TipConfig.data) {
354
- this.isshowTag = true
355
- const config = Vue.config.telephone.TipConfig.data
356
- const user = Vue.user
357
- console.log("Vue.android" + Vue.android)
358
- const result = this.$androidUtil.syncBzLogic("TipConfig", {data: {config, user}})
359
- if (result.code === 200) {
360
- for (var i = 0; i < this.tabs.length; i++) {
361
- result.result.forEach(ress => {
362
- if (this.tabs[i].link === ress.link) {
363
- this.$set('tabs[' + i + '].num', ress.num)
364
- }
365
- })
366
- }
367
- }
368
- }
369
- } else {
370
- const result = {
371
- "code": 200,
372
- "result": [{"link": "repair-first", "num": 50}, {"link": "current-create", "num": 30}]
373
- }
374
- if (result.code === 200) {
375
- for (var i = 0; i < this.tabs.length; i++) {
376
- result.result.forEach(ress => {
377
- if (this.tabs[i].link === ress.link) {
378
- this.$set('tabs[' + i + '].num', ress.num)
379
- }
380
- })
381
- }
382
- }
383
- }
384
- this.getmeterNum()
385
- this.getModelSum()
386
- },
387
- getmeterNum() {
388
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
389
- return
390
- }
391
- this.timeOutGetmeterNum()
392
- },
393
- timeOutGetmeterNum(){
394
- let val = {
395
- items:"count(*) as count_num",
396
- tablename:"t_handplan",
397
- orderitem:"1",
398
- condition:`1=1 and f_inputtor = '${Vue.user.name}' and f_hand_state = '有效' and f_meter_state = '未抄表'`,
399
- f_orgid:`'${Vue.user.orgid}'`
400
- }
401
- let http = new HttpResetClass()
402
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: val}, {
403
- resolveMsg: null,
404
- rejectMsg: null
405
- }).then((res) => {
406
- this.meterNum = res.data[0].count_num
407
- })
408
- },
409
- imgback(val){
410
- return require('../../assets/'+val+'.png')
411
- },
412
- // 返回主界面
413
- back(){
414
- this.titleName = '主界面'
415
- this.isMenu = true
416
- },
417
- gotopage(param,title) {
418
- if(title === '工程发起'){
419
- this.showModal = !this.showModal
420
- }else{
421
- var prpdata = {
422
- _this:this,
423
- title:title,
424
- safe:false
425
- }
426
- this.$dispatch('gotoson',prpdata)
427
- this.$goto(param,{sourcet:'竖屏',tabname:title},'self',this.getTabs)
428
- }
429
- },
430
- mute () {
431
- HostApp.mute()
432
- }
433
- },
434
- }
435
- </script>
436
- <style lang="less">
437
- .badge-content{
438
- color: #fff;
439
- box-sizing: border-box;
440
- min-width: 8px;
441
- font-size: 9px;
442
- line-height: 12px;
443
- white-space: nowrap;
444
- font-weight: 400;
445
- text-align: center;
446
- }
447
- .badge{
448
- top: 6px;
449
- position: absolute;
450
- max-height: 13px;
451
- min-height: 8px;
452
- //transform: translate(50%,-50%);
453
- right:0;
454
- display: inline-flex;
455
- vertical-align: middle;
456
- box-sizing: content-box;
457
- border-radius: 100px;
458
- background-color: red;
459
- }
460
- .app-input {
461
- label {
462
- float: left;
463
- }
464
- .select {
465
- button {
466
- border: none;
467
- outline: none;
468
- text-align: left;
469
- .btn-placeholder {
470
- color: #ACA899
471
- }
472
- }
473
- }
474
- .datepicker {
475
- .form-control:focus {
476
- border: none!important;
477
- outline: none!important;
478
- -webkit-box-shadow: none;
479
- box-shadow: none;
480
- }
481
- }
482
- }
483
- .tab-befor-img {
484
- content: '';
485
- background-size: 30px;
486
- display: inline-block;
487
- margin-right: 8px;
488
- height: 30px;
489
- width: 30px;
490
- vertical-align: -35%;
491
- }
492
- .pageskuang{
493
- vertical-align:middle;
494
- display:table-cell;
495
- width: 32%;
496
- top:-50%;
497
- margin-top: 1%;
498
- margin-left: 1%;
499
- border:1px solid #e3e3e3;
500
- text-align: center;
501
- background-color: #ffffff;
502
- }
503
- .pgesfoot{
504
- font-size: 14px;
505
- color: #666666;
506
- /* font-family: "Pingfhs";*/
507
- }
508
- .imgs{
509
- width: 35px;
510
- margin-top: 15px;
511
- height: 39px;
512
- }
513
- .pages-bgcolor{
514
- text-align: center;
515
- background-color: #f0f0ef;
516
- }
517
- img[src=""],img:not([src]){
518
- opacity: 0;
519
- border:none;
520
- visibility: hidden;
521
- max-width: none;
522
- }
523
-
524
- .manbiankuang{
525
- width: 44%;
526
- margin-top: 15px;
527
- margin-left: 4%;
528
- border:1px solid #e3e3e3;
529
- border-radius:10px 10px 10px 10px;
530
- text-align: center;
531
- background-color: #ffffff;
532
- }
533
-
534
- .nav-bgcolor{
535
- background-color: #ffffff;
536
- }
537
- </style>
1
+ <template>
2
+ <div class="nav-bgcolor">
3
+ <img src="../../assets/首页大图.png" style="height: 20vh; width: 96vw; margin: 8px 0 0 8px; border-radius: 10px">
4
+ <div class="auto">
5
+ <div class="row nav-bgcolor" >
6
+ <div class="col-xs-6 manbiankuang" v-for="tab in tabs" @click="gotopage(tab.link,tab.name)">
7
+ <img class="imgs" :src="imgback(tab.name)">
8
+ <div class="badge"
9
+ v-show="isshowTag&&tab.num&&tab.num>0"
10
+ ><div class="badge-content">{{tab.num>99?'99+':tab.num}}</div></div>
11
+ <div class="badge" v-show="tab.name == '抄表待办' && isShowRedNum && isShowRedNum == 'true'">
12
+ <div class="badge-content">{{ meterNum?meterNum:0 }}</div>
13
+ </div>
14
+ <div class="badge" v-show="tab.name == '安检待办' && isShowRedNum && isShowRedNum == 'true'">
15
+ <div class="badge-content">{{ safeckNum?safeckNum:0 }}</div>
16
+ </div>
17
+ <div class="badge" v-show="tab.name == '维修待办' && isShowRedNum && isShowRedNum == 'true'">
18
+ <div class="badge-content">{{ repairNum?repairNum:0 }}</div>
19
+ </div>
20
+ <p></p>
21
+ <p class="pagesfoot">{{tab.name}}</p>
22
+
23
+ <!--<p class="pagesfoot">{{tab.name}}&nbsp;{{tab.icon}}</p>-->
24
+ <p></p>
25
+ </div>
26
+ </div>
27
+ <!--<div class="row" style="overflow:auto;">-->
28
+ <!--<repair-first v-show="componentName == 'repair-first'" worktype="报修单" :sourcet="sourcet" tabname="维修待办" v-on:changesum="changesum"></repair-first>-->
29
+ <!--<zhihuan-first v-show="componentName == 'zhihuan-first'" worktype="置换通气单" :sourcet="sourcet" tabname="置换待办" v-on:changesum="changesum"></zhihuan-first>-->
30
+ <!--</div>-->
31
+ </div>
32
+ <validator name="v">
33
+ <modal
34
+ v-if="showModal"
35
+ :show.sync="showModal"
36
+ backdrop="false"
37
+ title="工程类型"
38
+ cancel-text="取消"
39
+ ok-text="确认"
40
+ :callback="apply"
41
+ >
42
+ <div class="form-horizontal" slot="modal-body">
43
+ <div class="row form-group app-input" style="margin: 10px auto">
44
+ <label class="">报建类型:</label>
45
+ <div class="col-sm-8">
46
+ <v-select
47
+ v-model="applyType"
48
+ placeholder='请选择需要发起的工程类型'
49
+ :value.sync="applyType"
50
+ :options='applyTypes'
51
+ :value-single="true"
52
+ class="select select_list"
53
+ :search="false"
54
+ close-on-select ></v-select>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </modal>
59
+ </validator>
60
+ <modal :show.sync="shownotices" backdrop="false">
61
+ <header slot="modal-header" class="modal-header">
62
+ <h3 style="text-align: center;">新公告提醒</h3>
63
+ </header>
64
+ <article slot="modal-body" class="modal-body">
65
+ <div class="auto app-text" style="margin-top: 5px;">
66
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
67
+ <div class="panel-body panel-self">
68
+ <div class="col-xs-12">
69
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>标题:</b></p>
70
+ <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{notices.f_title}}</p>
71
+ </div>
72
+ <div class="col-xs-12">
73
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>内容:</b></p>
74
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ notices.f_explain }}</p>
75
+ </div>
76
+ <div class="col-xs-12">
77
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>状态:</b></p>
78
+ <p class="panel-title text-left input-font" style="width: 77%">{{notices.f_state}}</p>
79
+ </div>
80
+
81
+ <div class="col-xs-12">
82
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>发布时间:</b></p>
83
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_date}}</p>
84
+ </div>
85
+ <div class="col-xs-12">
86
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>结束时间:</b></p>
87
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_enddate}}</p>
88
+ </div>
89
+ <div class="col-xs-12">
90
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>操作人:</b></p>
91
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_operator}}</p>
92
+ </div>
93
+ <div class="col-xs-12">
94
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>紧急公告:</b></p>
95
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_urgency ? '是' : '否'}}</p>
96
+ </div>
97
+ <div class="col-xs-12">
98
+ <img-self :width="300" :height="400" alt="无照片!!!" :src="notices.f_downloadfile.split(':')[1]"></img-self>
99
+ </div>
100
+ <div class="col-xs-12">
101
+ <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;float: right" @click="closeshowModal()">确认</button>
102
+ </div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </article>
107
+ <footer slot="modal-footer" class="modal-footer">
108
+ </footer>
109
+ </modal>
110
+ </div>
111
+ </template>
112
+
113
+ <script scoped>
114
+ import Vue from 'vue'
115
+ import {HttpResetClass} from "vue-client";
116
+ export default {
117
+ title: '待办工作导航',
118
+ data() {
119
+ return {
120
+ titleName: '待办工作',
121
+ showModal: false,
122
+ isMenu: true,
123
+ isshowTag:false,
124
+ shownotices:false,
125
+ tabs: [],
126
+ safeckNum:0,
127
+ repairNum:0,
128
+ model:{},
129
+ notices:{},
130
+ weakPassword: false,
131
+ modifyPassword: false,
132
+ isShowStopGas:this.$appdata.getSingleValue('公告展示'),
133
+ text: '导航组件this',
134
+ beforeName: '待办工作',
135
+ componentName: 'repair-first',
136
+ sourcet: '竖屏',
137
+ meterNum:null,
138
+ isShowRedNum:this.$appdata.getSingleValue('手机端获取任务条数'),
139
+ applyType: '', // 报建类型
140
+ // applyTypes:this.$appdata.getParam("手机报建类型"),
141
+ applyTypes: [{label: '散户报建', value: '散户报建'}, {label: '工商户报建', value: '工商户报建'}, {
142
+ label: '团购报建',
143
+ value: '团购报建'
144
+ }, {label: '改管报建', value: '改管报建'}, {label: '增容报建', value: '增容报建'}, {
145
+ label: '退款报建',
146
+ value: '退款报建'
147
+ }, {label: '团购转散户', value: '团购转散户'}, {label: '报警器报建', value: '报警器报建'}, {label: '工商业报警器报建', value: '工商业报警器报建'}],
148
+
149
+ }
150
+ },
151
+ ready () {
152
+ this.getNoTagTabs()
153
+ this.getmeterNum()
154
+ this.getModelSum()
155
+ this.searchStopGas()
156
+ this.tabs.sort((a, b) => new Date(a.f_create_date) - new Date(b.f_create_date))
157
+ console.log('this.tabs=', JSON.stringify(this.tabs))
158
+ },
159
+ methods: {
160
+ closeshowModal(){
161
+ this.shownotices = false
162
+ this.saveIsShowStopGas()
163
+ },
164
+ searchStopGas(){
165
+ if(!this.isShowStopGas || !this.isShowStopGas == 'true'){
166
+ return
167
+ }
168
+ let http = new HttpResetClass()
169
+ var condition = `1=1 and f_state = '公告中' and f_typeofreceipt = '手机端'`
170
+ let data = {
171
+ items: '*',
172
+ tablename: 'T_STOPGAS',
173
+ condition: condition,
174
+ orderitem: 'id desc'
175
+ }
176
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
177
+ resolveMsg: null,
178
+ rejectMsg: null
179
+ }).then((res) => {
180
+ this.notices = res.data[0]
181
+ this.showStopGas(res.data[0].id,Vue.user.id)
182
+ }).catch((e)=>{
183
+ })
184
+ },
185
+ showStopGas(stopId,userid){
186
+ let http = new HttpResetClass()
187
+ var condition = `f_stopgas_id = '${stopId}' and f_user_id = '${userid}'`
188
+ let data = {
189
+ items: '*',
190
+ tablename: 't_notice_notarize',
191
+ condition: condition,
192
+ orderitem: 'f_id desc'
193
+ }
194
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
195
+ resolveMsg: null,
196
+ rejectMsg: null
197
+ }).then((res) => {
198
+ if (res.data.length === 0) {
199
+ this.shownotices = true
200
+ }else if (res.data[0].f_phstate !== '已确认' ){
201
+ this.model.f_id = res.data[0].f_id
202
+ this.shownotices = true
203
+ } else {
204
+ this.shownotices = false
205
+ }
206
+ }).catch((e)=>{
207
+ console.log('报错了!!')
208
+ console.error(e)
209
+ })
210
+ },
211
+ saveIsShowStopGas(){
212
+ this.model.f_stopgas_id = this.notices.id
213
+ this.model.f_phstate = '已确认'
214
+ this.model.f_user_id = Vue.user.id
215
+ console.log('保存', this.model)
216
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/savenoticenotarize`, {data:this.model}).then((res) => {
217
+ this.model.f_stopgas_id = ''
218
+ this.model.f_user_id = ''
219
+ }).catch((res) => {
220
+ console.log('打印报错信息'+ res)
221
+ })
222
+ },
223
+ click (row) {
224
+ let _this = this
225
+ this.$dispatch('gotoson', {
226
+ _this: _this,
227
+ title: row.defname,
228
+ safe: true
229
+ })
230
+ this.$goto('app-service-control', {selectdata: row})
231
+ },
232
+ async getProcessId(processname) {
233
+ let data = {
234
+ workname: processname
235
+ }
236
+ let http = new HttpResetClass()
237
+ let res = await http.load(
238
+ 'POST',
239
+ `${this.$androidUtil.getProxyUrl()}/rs/logic/getProcessId`,
240
+ {data: data},
241
+ {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
242
+ )
243
+
244
+ return res.data
245
+ },
246
+ async apply () {
247
+ if (this.applyType === '' || this.applyType === null) {
248
+ this.$showAlert('请选择需要发起的类型', 'warning', 3000)
249
+ return
250
+ }
251
+ let data = {
252
+ f_apply_type: this.applyType
253
+ }
254
+ if (this.applyType === '散户报建') {
255
+ data.processname = '散户报建流程'
256
+ data.defname = '报装申请'
257
+ } else if (this.applyType === '工商户报建') {
258
+ data.processname = '工商户报建流程'
259
+ data.defname = '报装申请'
260
+ } else if (this.applyType === '改管报建') {
261
+ data.processname = '改管报建流程'
262
+ data.defname = '报装申请'
263
+ } else if (this.applyType === '增容报建') {
264
+ data.processname = '增容报建流程'
265
+ data.defname = '报装申请'
266
+ } else if (this.applyType === '团购报建') {
267
+ data.processname = '团购报建流程'
268
+ data.defname = '报装申请'
269
+ } else if (this.applyType === '退款报建') {
270
+ data.processname = '退款报建流程'
271
+ data.defname = '终止报建'
272
+ } else if (this.applyType === '团购转散户') {
273
+ data.processname = '团购转散户报建流程'
274
+ data.defname = '信息确认'
275
+ }else if (this.applyType === '报警器报建') {
276
+ data.processname = '报警器报建流程'
277
+ data.defname = '报装申请'
278
+ }else if (this.applyType === '工商业报警器报建') {
279
+ data.processname = '工商业报警器报建流程'
280
+ data.defname = '报装申请'
281
+ } else {
282
+ this.$showMessage('暂无此类报装')
283
+ return
284
+ }
285
+
286
+ data.f_sub_state = "新增"
287
+ data.f_apply_source = "线下发起"
288
+ data.f_process_id = await this.getProcessId(data.processname)
289
+
290
+ // 调用ExplorationUser事件
291
+
292
+ this.click(data)
293
+ this.applyType = null
294
+ this.showModal = false
295
+ },
296
+ // 查询本地所有待办
297
+ getModelSum(){
298
+ for(var i = 0;i<this.tabs.length;i++){
299
+ if(this.tabs[i].link == 'zhihuan-first' ){
300
+ this.getZhihuan()
301
+ }
302
+ if(this.tabs[i].link == 'repair-first' ){
303
+ this.getRepair()
304
+ }
305
+ if(this.tabs[i].link == 'current-create' ){
306
+ this.getSafeCheck()
307
+ }
308
+ }
309
+ },
310
+ getRepair(){
311
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
312
+ return
313
+ }
314
+ var _this = this;
315
+ let bbb = _this.$androidUtil.path({'alias':`getServiceMobile`,'data':{condition:'1 = 1'}})
316
+ if (bbb.code === 200) {
317
+ _this.repairNum = bbb.data.length
318
+ }
319
+ },
320
+ getSafeCheck(){
321
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
322
+ return
323
+ }
324
+ var _this = this;
325
+ let aaa = _this.$androidUtil.path({'alias':`safecheckGetServiceMobile`,'data':{condition:'1 = 1'}})
326
+ if (aaa.code === 200) {
327
+ _this.safeckNum = aaa.data.length
328
+ }
329
+ },
330
+ getZhihuan(){
331
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
332
+ return
333
+ }
334
+ },
335
+ changesum(titdata){
336
+ for(var i = 0;i<this.tabs.length;i++){
337
+ if(this.tabs[i].name == titdata.title){
338
+ this.tabs[i].icon = titdata.sum + '单'
339
+ return
340
+ }
341
+ }
342
+ },
343
+ getNoTagTabs(){
344
+ for(let funs in Vue.functions){
345
+ if(Vue.functions[funs].link == 'attend-manage'){
346
+ this.$set('tabs',Vue.functions[funs].children)
347
+ }
348
+ }
349
+ this.getTabs()
350
+ },
351
+ getTabs(){
352
+ if (Vue.android) {
353
+ if(Vue.config.telephone&&Vue.config.telephone.TipConfig&&Vue.config.telephone.TipConfig.data) {
354
+ this.isshowTag = true
355
+ const config = Vue.config.telephone.TipConfig.data
356
+ const user = Vue.user
357
+ console.log("Vue.android" + Vue.android)
358
+ const result = this.$androidUtil.syncBzLogic("TipConfig", {data: {config, user}})
359
+ if (result.code === 200) {
360
+ for (var i = 0; i < this.tabs.length; i++) {
361
+ result.result.forEach(ress => {
362
+ if (this.tabs[i].link === ress.link) {
363
+ this.$set('tabs[' + i + '].num', ress.num)
364
+ }
365
+ })
366
+ }
367
+ }
368
+ }
369
+ } else {
370
+ const result = {
371
+ "code": 200,
372
+ "result": [{"link": "repair-first", "num": 50}, {"link": "current-create", "num": 30}]
373
+ }
374
+ if (result.code === 200) {
375
+ for (var i = 0; i < this.tabs.length; i++) {
376
+ result.result.forEach(ress => {
377
+ if (this.tabs[i].link === ress.link) {
378
+ this.$set('tabs[' + i + '].num', ress.num)
379
+ }
380
+ })
381
+ }
382
+ }
383
+ }
384
+ this.getmeterNum()
385
+ this.getModelSum()
386
+ },
387
+ getmeterNum() {
388
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
389
+ return
390
+ }
391
+ this.timeOutGetmeterNum()
392
+ },
393
+ timeOutGetmeterNum(){
394
+ let val = {
395
+ items:"count(*) as count_num",
396
+ tablename:"t_handplan",
397
+ orderitem:"1",
398
+ condition:`1=1 and f_inputtor = '${Vue.user.name}' and f_hand_state = '有效' and f_meter_state = '未抄表'`,
399
+ f_orgid:`'${Vue.user.orgid}'`
400
+ }
401
+ let http = new HttpResetClass()
402
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: val}, {
403
+ resolveMsg: null,
404
+ rejectMsg: null
405
+ }).then((res) => {
406
+ this.meterNum = res.data[0].count_num
407
+ })
408
+ },
409
+ imgback(val){
410
+ return require('../../assets/'+val+'.png')
411
+ },
412
+ // 返回主界面
413
+ back(){
414
+ this.titleName = '主界面'
415
+ this.isMenu = true
416
+ },
417
+ gotopage(param,title) {
418
+ if(title === '工程发起'){
419
+ this.showModal = !this.showModal
420
+ }else{
421
+ var prpdata = {
422
+ _this:this,
423
+ title:title,
424
+ safe:false
425
+ }
426
+ this.$dispatch('gotoson',prpdata)
427
+ this.$goto(param,{sourcet:'竖屏',tabname:title},'self',this.getTabs)
428
+ }
429
+ },
430
+ mute () {
431
+ HostApp.mute()
432
+ }
433
+ },
434
+ }
435
+ </script>
436
+ <style lang="less">
437
+ .badge-content{
438
+ color: #fff;
439
+ box-sizing: border-box;
440
+ min-width: 8px;
441
+ font-size: 9px;
442
+ line-height: 12px;
443
+ white-space: nowrap;
444
+ font-weight: 400;
445
+ text-align: center;
446
+ }
447
+ .badge{
448
+ top: 6px;
449
+ position: absolute;
450
+ max-height: 13px;
451
+ min-height: 8px;
452
+ //transform: translate(50%,-50%);
453
+ right:0;
454
+ display: inline-flex;
455
+ vertical-align: middle;
456
+ box-sizing: content-box;
457
+ border-radius: 100px;
458
+ background-color: red;
459
+ }
460
+ .app-input {
461
+ label {
462
+ float: left;
463
+ }
464
+ .select {
465
+ button {
466
+ border: none;
467
+ outline: none;
468
+ text-align: left;
469
+ .btn-placeholder {
470
+ color: #ACA899
471
+ }
472
+ }
473
+ }
474
+ .datepicker {
475
+ .form-control:focus {
476
+ border: none!important;
477
+ outline: none!important;
478
+ -webkit-box-shadow: none;
479
+ box-shadow: none;
480
+ }
481
+ }
482
+ }
483
+ .tab-befor-img {
484
+ content: '';
485
+ background-size: 30px;
486
+ display: inline-block;
487
+ margin-right: 8px;
488
+ height: 30px;
489
+ width: 30px;
490
+ vertical-align: -35%;
491
+ }
492
+ .pageskuang{
493
+ vertical-align:middle;
494
+ display:table-cell;
495
+ width: 32%;
496
+ top:-50%;
497
+ margin-top: 1%;
498
+ margin-left: 1%;
499
+ border:1px solid #e3e3e3;
500
+ text-align: center;
501
+ background-color: #ffffff;
502
+ }
503
+ .pgesfoot{
504
+ font-size: 14px;
505
+ color: #666666;
506
+ /* font-family: "Pingfhs";*/
507
+ }
508
+ .imgs{
509
+ width: 35px;
510
+ margin-top: 15px;
511
+ height: 39px;
512
+ }
513
+ .pages-bgcolor{
514
+ text-align: center;
515
+ background-color: #f0f0ef;
516
+ }
517
+ img[src=""],img:not([src]){
518
+ opacity: 0;
519
+ border:none;
520
+ visibility: hidden;
521
+ max-width: none;
522
+ }
523
+
524
+ .manbiankuang{
525
+ width: 44%;
526
+ margin-top: 15px;
527
+ margin-left: 4%;
528
+ border:1px solid #e3e3e3;
529
+ border-radius:10px 10px 10px 10px;
530
+ text-align: center;
531
+ background-color: #ffffff;
532
+ }
533
+
534
+ .nav-bgcolor{
535
+ background-color: #ffffff;
536
+ }
537
+ </style>