system-phone 3.1.40 → 3.1.42

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 (201) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/.eslintrc.js +16 -16
  4. package/CHANGELOG.md +1 -1
  5. package/Dockerfile +3 -3
  6. package/README.md +36 -36
  7. package/build/css-loaders.js +34 -34
  8. package/build/dev-client.js +8 -8
  9. package/build/example-server.js +80 -80
  10. package/build/release.sh +28 -28
  11. package/build/utils.js +71 -71
  12. package/build/webpack.dev.conf.js +31 -31
  13. package/build/webpack.example.conf.js +49 -49
  14. package/build/webpack.prod.conf.js +60 -60
  15. package/build/webpack.test.conf.js +31 -31
  16. package/config/dev.env.js +6 -6
  17. package/config/index.js +38 -38
  18. package/config/prod.env.js +3 -3
  19. package/config/test.env.js +6 -6
  20. package/nginx.conf +304 -304
  21. package/package.json +1 -1
  22. package/release.bat +5 -5
  23. package/src/App.vue +25 -25
  24. package/src/Util.js +415 -415
  25. package/src/android-bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  26. package/src/android-bootstrap/less/.csscomb.json +304 -304
  27. package/src/android-bootstrap/less/.csslintrc +19 -19
  28. package/src/android-bootstrap/less/alerts.less +73 -73
  29. package/src/android-bootstrap/less/badges.less +66 -66
  30. package/src/android-bootstrap/less/bootstrap.less +56 -56
  31. package/src/android-bootstrap/less/breadcrumbs.less +26 -26
  32. package/src/android-bootstrap/less/button-groups.less +247 -247
  33. package/src/android-bootstrap/less/buttons.less +173 -173
  34. package/src/android-bootstrap/less/carousel.less +269 -269
  35. package/src/android-bootstrap/less/close.less +34 -34
  36. package/src/android-bootstrap/less/code.less +69 -69
  37. package/src/android-bootstrap/less/component-animations.less +33 -33
  38. package/src/android-bootstrap/less/dropdowns.less +216 -216
  39. package/src/android-bootstrap/less/forms.less +626 -626
  40. package/src/android-bootstrap/less/glyphicons.less +305 -305
  41. package/src/android-bootstrap/less/grid.less +84 -84
  42. package/src/android-bootstrap/less/input-groups.less +167 -167
  43. package/src/android-bootstrap/less/jumbotron.less +52 -52
  44. package/src/android-bootstrap/less/labels.less +64 -64
  45. package/src/android-bootstrap/less/list-group.less +141 -141
  46. package/src/android-bootstrap/less/media.less +66 -66
  47. package/src/android-bootstrap/less/mixins/alerts.less +14 -14
  48. package/src/android-bootstrap/less/mixins/background-variant.less +9 -9
  49. package/src/android-bootstrap/less/mixins/border-radius.less +18 -18
  50. package/src/android-bootstrap/less/mixins/buttons.less +69 -69
  51. package/src/android-bootstrap/less/mixins/center-block.less +7 -7
  52. package/src/android-bootstrap/less/mixins/clearfix.less +22 -22
  53. package/src/android-bootstrap/less/mixins/forms.less +90 -90
  54. package/src/android-bootstrap/less/mixins/gradients.less +59 -59
  55. package/src/android-bootstrap/less/mixins/grid-framework.less +92 -92
  56. package/src/android-bootstrap/less/mixins/grid.less +122 -122
  57. package/src/android-bootstrap/less/mixins/hide-text.less +21 -21
  58. package/src/android-bootstrap/less/mixins/image.less +33 -33
  59. package/src/android-bootstrap/less/mixins/labels.less +12 -12
  60. package/src/android-bootstrap/less/mixins/list-group.less +30 -30
  61. package/src/android-bootstrap/less/mixins/nav-divider.less +10 -10
  62. package/src/android-bootstrap/less/mixins/nav-vertical-align.less +9 -9
  63. package/src/android-bootstrap/less/mixins/opacity.less +8 -8
  64. package/src/android-bootstrap/less/mixins/pagination.less +24 -24
  65. package/src/android-bootstrap/less/mixins/panels.less +24 -24
  66. package/src/android-bootstrap/less/mixins/progress-bar.less +10 -10
  67. package/src/android-bootstrap/less/mixins/reset-filter.less +8 -8
  68. package/src/android-bootstrap/less/mixins/reset-text.less +18 -18
  69. package/src/android-bootstrap/less/mixins/resize.less +6 -6
  70. package/src/android-bootstrap/less/mixins/responsive-visibility.less +15 -15
  71. package/src/android-bootstrap/less/mixins/size.less +10 -10
  72. package/src/android-bootstrap/less/mixins/tab-focus.less +9 -9
  73. package/src/android-bootstrap/less/mixins/table-row.less +44 -44
  74. package/src/android-bootstrap/less/mixins/text-emphasis.less +9 -9
  75. package/src/android-bootstrap/less/mixins/text-overflow.less +8 -8
  76. package/src/android-bootstrap/less/mixins/vendor-prefixes.less +227 -227
  77. package/src/android-bootstrap/less/mixins.less +40 -40
  78. package/src/android-bootstrap/less/modals.less +151 -151
  79. package/src/android-bootstrap/less/navbar.less +660 -660
  80. package/src/android-bootstrap/less/navs.less +290 -290
  81. package/src/android-bootstrap/less/normalize.less +424 -424
  82. package/src/android-bootstrap/less/pager.less +76 -76
  83. package/src/android-bootstrap/less/pagination.less +89 -89
  84. package/src/android-bootstrap/less/panels.less +274 -274
  85. package/src/android-bootstrap/less/popovers.less +131 -131
  86. package/src/android-bootstrap/less/print.less +101 -101
  87. package/src/android-bootstrap/less/progress-bars.less +87 -87
  88. package/src/android-bootstrap/less/responsive-embed.less +35 -35
  89. package/src/android-bootstrap/less/responsive-utilities.less +194 -194
  90. package/src/android-bootstrap/less/scaffolding.less +161 -161
  91. package/src/android-bootstrap/less/tables.less +262 -262
  92. package/src/android-bootstrap/less/theme.less +291 -291
  93. package/src/android-bootstrap/less/thumbnails.less +36 -36
  94. package/src/android-bootstrap/less/tooltip.less +102 -102
  95. package/src/android-bootstrap/less/type.less +303 -303
  96. package/src/android-bootstrap/less/utilities.less +55 -55
  97. package/src/android-bootstrap/less/variables.less +896 -896
  98. package/src/android-bootstrap/less/wells.less +29 -29
  99. package/src/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  100. package/src/bootstrap/less/.csscomb.json +304 -304
  101. package/src/bootstrap/less/.csslintrc +19 -19
  102. package/src/bootstrap/less/alerts.less +73 -73
  103. package/src/bootstrap/less/badges.less +66 -66
  104. package/src/bootstrap/less/bootstrap.less +56 -56
  105. package/src/bootstrap/less/breadcrumbs.less +26 -26
  106. package/src/bootstrap/less/button-groups.less +247 -247
  107. package/src/bootstrap/less/buttons.less +172 -172
  108. package/src/bootstrap/less/carousel.less +269 -269
  109. package/src/bootstrap/less/close.less +34 -34
  110. package/src/bootstrap/less/code.less +69 -69
  111. package/src/bootstrap/less/component-animations.less +33 -33
  112. package/src/bootstrap/less/dropdowns.less +216 -216
  113. package/src/bootstrap/less/forms.less +626 -626
  114. package/src/bootstrap/less/glyphicons.less +305 -305
  115. package/src/bootstrap/less/grid.less +84 -84
  116. package/src/bootstrap/less/input-groups.less +167 -167
  117. package/src/bootstrap/less/jumbotron.less +52 -52
  118. package/src/bootstrap/less/labels.less +64 -64
  119. package/src/bootstrap/less/list-group.less +141 -141
  120. package/src/bootstrap/less/media.less +66 -66
  121. package/src/bootstrap/less/mixins/alerts.less +14 -14
  122. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  123. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  124. package/src/bootstrap/less/mixins/buttons.less +69 -69
  125. package/src/bootstrap/less/mixins/center-block.less +7 -7
  126. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  127. package/src/bootstrap/less/mixins/forms.less +90 -90
  128. package/src/bootstrap/less/mixins/gradients.less +59 -59
  129. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  130. package/src/bootstrap/less/mixins/grid.less +122 -122
  131. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  132. package/src/bootstrap/less/mixins/image.less +33 -33
  133. package/src/bootstrap/less/mixins/labels.less +12 -12
  134. package/src/bootstrap/less/mixins/list-group.less +30 -30
  135. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  136. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  137. package/src/bootstrap/less/mixins/opacity.less +8 -8
  138. package/src/bootstrap/less/mixins/pagination.less +24 -24
  139. package/src/bootstrap/less/mixins/panels.less +24 -24
  140. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  141. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  142. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  143. package/src/bootstrap/less/mixins/resize.less +6 -6
  144. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  145. package/src/bootstrap/less/mixins/size.less +10 -10
  146. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  147. package/src/bootstrap/less/mixins/table-row.less +44 -44
  148. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  149. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  150. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  151. package/src/bootstrap/less/mixins.less +40 -40
  152. package/src/bootstrap/less/modals.less +151 -151
  153. package/src/bootstrap/less/navbar.less +660 -660
  154. package/src/bootstrap/less/navs.less +286 -286
  155. package/src/bootstrap/less/normalize.less +424 -424
  156. package/src/bootstrap/less/pager.less +76 -76
  157. package/src/bootstrap/less/pagination.less +89 -89
  158. package/src/bootstrap/less/panels.less +275 -275
  159. package/src/bootstrap/less/popovers.less +131 -131
  160. package/src/bootstrap/less/print.less +101 -101
  161. package/src/bootstrap/less/progress-bars.less +87 -87
  162. package/src/bootstrap/less/responsive-embed.less +35 -35
  163. package/src/bootstrap/less/responsive-utilities.less +194 -194
  164. package/src/bootstrap/less/scaffolding.less +161 -161
  165. package/src/bootstrap/less/tables.less +262 -262
  166. package/src/bootstrap/less/theme.less +291 -291
  167. package/src/bootstrap/less/thumbnails.less +36 -36
  168. package/src/bootstrap/less/tooltip.less +102 -102
  169. package/src/bootstrap/less/type.less +303 -303
  170. package/src/bootstrap/less/utilities.less +55 -55
  171. package/src/bootstrap/less/variables.less +895 -895
  172. package/src/bootstrap/less/wells.less +29 -29
  173. package/src/components/AloneLoadParams.vue +26 -26
  174. package/src/components/AlreadyService.vue +210 -210
  175. package/src/components/AttendManage.vue +591 -591
  176. package/src/components/LoadAppdata.vue +38 -38
  177. package/src/components/LoginAppV4.vue +787 -790
  178. package/src/components/ModifyPassWord.vue +216 -216
  179. package/src/components/OnlineManage.vue +278 -278
  180. package/src/components/PhoneSellInfo.vue +148 -148
  181. package/src/components/Test.vue +14 -14
  182. package/src/filiale/liaoyuan/LoginApp.vue +734 -725
  183. package/src/filiale/liaoyuan/SystemSetUp.vue +352 -0
  184. package/src/filiale/liaoyuan/systemphonegrid.js +1 -0
  185. package/src/plugins/GetStringData.js +18 -18
  186. package/src/plugins/LoadParams.js +24 -24
  187. package/src/services/ConfigService.js +24 -24
  188. package/static/app.json +4 -4
  189. package/static/globals.txt +74 -74
  190. package/test/unit/.eslintrc +5 -5
  191. package/test/unit/TestUtil.js +35 -35
  192. package/test/unit/context.html +20 -20
  193. package/test/unit/index.js +13 -13
  194. package/test/unit/init.js +13 -13
  195. package/test/unit/karma.conf.js +50 -50
  196. package/test/unit/specs/App.spec.js +17 -17
  197. package/test/unit/specs/Test.spec.js +28 -28
  198. package/test/unit/specs/components/LoginApp.spec.js +21 -21
  199. package/test/unit/specs/sevices/ConfigService.spec.js +23 -23
  200. package/test/unit/specs/sevices/GetDBTest.spec.js +28 -28
  201. package/src/plugins/validateStrongPasswordPhone.js +0 -162
@@ -1,591 +1,591 @@
1
- <template>
2
- <div class="nav-bgcolor">
3
- <div class="auto">
4
- <div class="row nav-bgcolor" >
5
- <div class="col-xs-6 manbiankuang" v-for="tab in tabs" @click="gotopage(tab.link,tab.name)">
6
- <img class="imgs" :src="imgback(tab.name)">
7
- <div class="badge"
8
- v-show="isshowTag&&tab.num&&tab.num>0"
9
- ><div class="badge-content">{{tab.num>99?'99+':tab.num}}</div></div>
10
- <div class="badge" v-show="tab.name == '抄表待办' && isShowRedNum && isShowRedNum == 'true'">
11
- <div class="badge-content">{{ meterNum?meterNum:0 }}</div>
12
- </div>
13
- <div class="badge" v-show="tab.name == '安检待办' && isShowRedNum && isShowRedNum == 'true'">
14
- <div class="badge-content">{{ safeckNum?safeckNum:0 }}</div>
15
- </div>
16
- <div class="badge" v-show="tab.name == '维修待办' && isShowRedNum && isShowRedNum == 'true'">
17
- <div class="badge-content">{{ repairNum?repairNum:0 }}</div>
18
- </div>
19
- <div class="badge" v-show="tab.name == '报建待办' && isShowRedNum && isShowRedNum == 'true'">
20
- <div class="badge-content">{{ applyNum?applyNum:0 }}</div>
21
- </div>
22
- <div class="badge" v-show="tab.name == '站点工单' && siteWorkNumShow && siteWorkNumShow == 'true'">
23
- <div class="badge-content">{{ siteWorkNum?siteWorkNum:0 }}</div>
24
- </div>
25
- <p></p>
26
- <p class="pagesfoot">{{tab.name}}</p>
27
-
28
- <!--<p class="pagesfoot">{{tab.name}}&nbsp;{{tab.icon}}</p>-->
29
- <p></p>
30
- </div>
31
- </div>
32
- <!--<div class="row" style="overflow:auto;">-->
33
- <!--<repair-first v-show="componentName == 'repair-first'" worktype="报修单" :sourcet="sourcet" tabname="维修待办" v-on:changesum="changesum"></repair-first>-->
34
- <!--<zhihuan-first v-show="componentName == 'zhihuan-first'" worktype="置换通气单" :sourcet="sourcet" tabname="置换待办" v-on:changesum="changesum"></zhihuan-first>-->
35
- <!--</div>-->
36
- </div>
37
- <validator name="v">
38
- <modal
39
- v-if="showModal"
40
- :show.sync="showModal"
41
- backdrop="false"
42
- title="工程类型"
43
- cancel-text="取消"
44
- ok-text="确认"
45
- :callback="apply"
46
- >
47
- <div class="form-horizontal" slot="modal-body">
48
- <div class="row form-group app-input" style="margin: 10px auto">
49
- <label class="">报建类型:</label>
50
- <div class="col-sm-8">
51
- <v-select
52
- v-model="applyType"
53
- placeholder='请选择需要发起的工程类型'
54
- :value.sync="applyType"
55
- :options='applyTypes'
56
- :value-single="true"
57
- class="select select_list"
58
- :search="false"
59
- close-on-select ></v-select>
60
- </div>
61
- </div>
62
- </div>
63
- </modal>
64
- </validator>
65
- <modal :show.sync="shownotices" backdrop="false">
66
- <header slot="modal-header" class="modal-header">
67
- <h3 style="text-align: center;">新公告提醒</h3>
68
- </header>
69
- <article slot="modal-body" class="modal-body">
70
- <div class="auto app-text" style="margin-top: 5px;">
71
- <div class="panel" style="padding: 10px 10px 5px 10px;">
72
- <div class="panel-body panel-self">
73
- <div class="col-xs-12">
74
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>标题:</b></p>
75
- <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{notices.f_title}}</p>
76
- </div>
77
- <div class="col-xs-12">
78
- <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>内容:</b></p>
79
- <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ notices.f_explain }}</p>
80
- </div>
81
- <div class="col-xs-12">
82
- <p class="panel-title text-left font" style="width: 23%;float: left"><b>状态:</b></p>
83
- <p class="panel-title text-left input-font" style="width: 77%">{{notices.f_state}}</p>
84
- </div>
85
-
86
- <div class="col-xs-12">
87
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>发布时间:</b></p>
88
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_date}}</p>
89
- </div>
90
- <div class="col-xs-12">
91
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>结束时间:</b></p>
92
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_enddate}}</p>
93
- </div>
94
- <div class="col-xs-12">
95
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>操作人:</b></p>
96
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_operator}}</p>
97
- </div>
98
- <div class="col-xs-12">
99
- <p class="panel-title text-left font" style="width: 30%;float: left"><b>紧急公告:</b></p>
100
- <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_urgency ? '是' : '否'}}</p>
101
- </div>
102
- <div class="col-xs-12">
103
- <img-self :width="300" :height="400" alt="无照片!!!" :src="notices.f_downloadfile.split(':')[1]"></img-self>
104
- </div>
105
- <div class="col-xs-12">
106
- <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;float: right" @click="closeshowModal()">确认</button>
107
- </div>
108
- </div>
109
- </div>
110
- </div>
111
- </article>
112
- <footer slot="modal-footer" class="modal-footer">
113
- </footer>
114
- </modal>
115
- </div>
116
- </template>
117
-
118
- <script scoped>
119
- import Vue from 'vue'
120
- import * as Util from '../Util'
121
- import {HttpResetClass} from "vue-client";
122
- export default {
123
- title: '待办工作导航',
124
- data() {
125
- return {
126
- siteWorkNum:0,
127
- titleName: '待办工作',
128
- showModal: false,
129
- isMenu: true,
130
- isshowTag:false,
131
- shownotices:false,
132
- tabs: [],
133
- safeckNum:0,
134
- repairNum:0,
135
- applyNum:0,
136
- model:{},
137
- notices:{},
138
- weakPassword: false,
139
- modifyPassword: false,
140
- isShowStopGas:this.$appdata.getSingleValue('公告展示'),
141
- text: '导航组件this',
142
- beforeName: '待办工作',
143
- componentName: 'repair-first',
144
- sourcet: '竖屏',
145
- meterNum:null,
146
- isShowRedNum:this.$appdata.getSingleValue('手机端获取任务条数'),
147
- siteWorkNumShow:this.$appdata.getSingleValue('站点工单红点提醒'),
148
- applyType: '', // 报建类型
149
- // applyTypes:this.$appdata.getParam("手机报建类型"),
150
- applyTypes: [{label: '散户报建', value: '散户报建'}, {label: '工商户报建', value: '工商户报建'}, {
151
- label: '团购报建',
152
- value: '团购报建'
153
- }, {label: '改管报建', value: '改管报建'}, {label: '增容报建', value: '增容报建'}, {
154
- label: '退款报建',
155
- value: '退款报建'
156
- }, {label: '团购转散户', value: '团购转散户'}, {label: '报警器报建', value: '报警器报建'}, {label: '工商业报警器报建', value: '工商业报警器报建'}],
157
-
158
- }
159
- },
160
- ready () {
161
- this.getNoTagTabs()
162
- this.getmeterNum()
163
- this.getModelSum()
164
- this.getapplyNum()
165
- this.getSiteWorkNum()
166
- this.searchStopGas()
167
- },
168
- methods: {
169
- getSiteWorkNum(){
170
- if(!this.siteWorkNumShow || !this.siteWorkNumShow == 'true'){
171
- return
172
- }
173
- const val = {
174
- condition: {
175
- condition: `1 = 1 and tswo.f_workorder_type = '报修单'`,
176
- sign: '1 = 1'
177
- },
178
- userid: Vue.user.name
179
- };
180
- let http = new HttpResetClass()
181
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/operatorService`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
182
- this.siteWorkNum = res.data.length
183
- })
184
- },
185
- closeshowModal(){
186
- this.shownotices = false
187
- this.saveIsShowStopGas()
188
- },
189
- searchStopGas(){
190
- if(!this.isShowStopGas || !this.isShowStopGas == 'true'){
191
- return
192
- }
193
- let http = new HttpResetClass()
194
- var condition = `1=1 and f_state = '公告中' and f_typeofreceipt = '手机端'`
195
- let data = {
196
- items: '*',
197
- tablename: 'T_STOPGAS',
198
- condition: condition,
199
- orderitem: 'id desc'
200
- }
201
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
202
- resolveMsg: null,
203
- rejectMsg: null
204
- }).then((res) => {
205
- this.notices = res.data[0]
206
- this.showStopGas(res.data[0].id,Vue.user.id)
207
- }).catch((e)=>{
208
- })
209
- },
210
- showStopGas(stopId,userid){
211
- let http = new HttpResetClass()
212
- var condition = `f_stopgas_id = '${stopId}' and f_user_id = '${userid}'`
213
- let data = {
214
- items: '*',
215
- tablename: 't_notice_notarize',
216
- condition: condition,
217
- orderitem: 'f_id desc'
218
- }
219
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
220
- resolveMsg: null,
221
- rejectMsg: null
222
- }).then((res) => {
223
- if (res.data.length === 0) {
224
- this.shownotices = true
225
- }else if (res.data[0].f_phstate !== '已确认' ){
226
- this.model.f_id = res.data[0].f_id
227
- this.shownotices = true
228
- } else {
229
- this.shownotices = false
230
- }
231
- }).catch((e)=>{
232
- console.log('报错了!!')
233
- console.error(e)
234
- })
235
- },
236
- saveIsShowStopGas(){
237
- this.model.f_stopgas_id = this.notices.id
238
- this.model.f_phstate = '已确认'
239
- this.model.f_user_id = Vue.user.id
240
- console.log('保存', this.model)
241
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/savenoticenotarize`, {data:this.model}).then((res) => {
242
- this.model.f_stopgas_id = ''
243
- this.model.f_user_id = ''
244
- }).catch((res) => {
245
- console.log('打印报错信息'+ res)
246
- })
247
- },
248
- click (row) {
249
- let _this = this
250
- this.$dispatch('gotoson', {
251
- _this: _this,
252
- title: row.defname,
253
- safe: true
254
- })
255
- this.$goto('app-service-control', {selectdata: row})
256
- },
257
- async getProcessId(processname) {
258
- let data = {
259
- workname: processname
260
- }
261
- let http = new HttpResetClass()
262
- let res = await http.load(
263
- 'POST',
264
- `${this.$androidUtil.getProxyUrl()}/rs/logic/getProcessId`,
265
- {data: data},
266
- {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
267
- )
268
-
269
- return res.data
270
- },
271
- async apply () {
272
- if (this.applyType === '' || this.applyType === null) {
273
- this.$showAlert('请选择需要发起的类型', 'warning', 3000)
274
- return
275
- }
276
- let data = {
277
- f_apply_type: this.applyType
278
- }
279
- if (this.applyType === '散户报建') {
280
- data.processname = '散户报建流程'
281
- data.defname = '报装申请'
282
- } else if (this.applyType === '工商户报建') {
283
- data.processname = '工商户报建流程'
284
- data.defname = '报装申请'
285
- } else if (this.applyType === '改管报建') {
286
- data.processname = '改管报建流程'
287
- data.defname = '报装申请'
288
- } else if (this.applyType === '增容报建') {
289
- data.processname = '增容报建流程'
290
- data.defname = '报装申请'
291
- } else if (this.applyType === '团购报建') {
292
- data.processname = '团购报建流程'
293
- data.defname = '报装申请'
294
- } else if (this.applyType === '退款报建') {
295
- data.processname = '退款报建流程'
296
- data.defname = '终止报建'
297
- } else if (this.applyType === '团购转散户') {
298
- data.processname = '团购转散户报建流程'
299
- data.defname = '信息确认'
300
- }else if (this.applyType === '报警器报建') {
301
- data.processname = '报警器报建流程'
302
- data.defname = '报装申请'
303
- }else if (this.applyType === '工商业报警器报建') {
304
- data.processname = '工商业报警器报建流程'
305
- data.defname = '报装申请'
306
- } else {
307
- this.$showMessage('暂无此类报装')
308
- return
309
- }
310
-
311
- data.f_sub_state = "新增"
312
- data.f_apply_source = "线下发起"
313
- data.f_process_id = await this.getProcessId(data.processname)
314
-
315
- // 调用ExplorationUser事件
316
-
317
- this.click(data)
318
- this.applyType = null
319
- this.showModal = false
320
- },
321
- // 查询本地所有待办
322
- getModelSum(){
323
- for(var i = 0;i<this.tabs.length;i++){
324
- if(this.tabs[i].link == 'zhihuan-first' ){
325
- this.getZhihuan()
326
- }
327
- if(this.tabs[i].link == 'repair-first' ){
328
- this.getRepair()
329
- }
330
- if(this.tabs[i].link == 'current-create' ){
331
- this.getSafeCheck()
332
- }
333
- }
334
- },
335
- getRepair(){
336
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
337
- return
338
- }
339
- var _this = this;
340
- let bbb = _this.$androidUtil.path({'alias':`getServiceMobile`,'data':{condition:'1 = 1'}})
341
- if (bbb.code === 200) {
342
- _this.repairNum = bbb.data.length
343
- }
344
- },
345
- getSafeCheck(){
346
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
347
- return
348
- }
349
- var _this = this;
350
- let aaa = _this.$androidUtil.path({'alias':`safecheckGetServiceMobile`,'data':{condition:'1 = 1'}})
351
- if (aaa.code === 200) {
352
- _this.safeckNum = aaa.data.length
353
- }
354
- },
355
- getZhihuan(){
356
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
357
- return
358
- }
359
- },
360
- changesum(titdata){
361
- for(var i = 0;i<this.tabs.length;i++){
362
- if(this.tabs[i].name == titdata.title){
363
- this.tabs[i].icon = titdata.sum + '单'
364
- return
365
- }
366
- }
367
- },
368
- getNoTagTabs(){
369
- for(let funs in Vue.functions){
370
- if(Vue.functions[funs].link == 'attend-manage'){
371
- this.$set('tabs',Vue.functions[funs].children)
372
- }
373
- }
374
- this.getTabs()
375
- },
376
- getTabs(){
377
- if (Vue.android) {
378
- if(Vue.config.telephone&&Vue.config.telephone.TipConfig&&Vue.config.telephone.TipConfig.data) {
379
- this.isshowTag = true
380
- const config = Vue.config.telephone.TipConfig.data
381
- const user = Vue.user
382
- console.log("Vue.android" + Vue.android)
383
- const result = this.$androidUtil.syncBzLogic("TipConfig", {data: {config, user}})
384
- if (result.code === 200) {
385
- for (var i = 0; i < this.tabs.length; i++) {
386
- result.result.forEach(ress => {
387
- if (this.tabs[i].link === ress.link) {
388
- this.$set('tabs[' + i + '].num', ress.num)
389
- }
390
- })
391
- }
392
- }
393
- }
394
- } else {
395
- const result = {
396
- "code": 200,
397
- "result": [{"link": "repair-first", "num": 50}, {"link": "current-create", "num": 30}]
398
- }
399
- if (result.code === 200) {
400
- for (var i = 0; i < this.tabs.length; i++) {
401
- result.result.forEach(ress => {
402
- if (this.tabs[i].link === ress.link) {
403
- this.$set('tabs[' + i + '].num', ress.num)
404
- }
405
- })
406
- }
407
- }
408
- }
409
- this.getmeterNum()
410
- this.getModelSum()
411
- },
412
- getmeterNum() {
413
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
414
- return
415
- }
416
- this.timeOutGetmeterNum()
417
- },
418
- timeOutGetmeterNum(){
419
- let val = {
420
- items:"count(*) as count_num",
421
- tablename:"t_handplan",
422
- orderitem:"1",
423
- condition:`1=1 and f_inputtor = '${Vue.user.name}' and f_hand_state = '有效' and f_meter_state = '未抄表'`,
424
- f_orgid:`'${Vue.user.orgid}'`
425
- }
426
- let http = new HttpResetClass()
427
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: val}, {
428
- resolveMsg: null,
429
- rejectMsg: null
430
- }).then((res) => {
431
- this.meterNum = res.data[0].count_num
432
- })
433
- },
434
- getapplyNum() {
435
- if (!this.isShowRedNum || this.isShowRedNum != 'true') {
436
- return
437
- }
438
- this.timeOutgetapplyNum()
439
- },
440
- timeOutgetapplyNum(){
441
- var data={
442
- condition: ` 1=1 and act.defname in ${this.appDefnames} `,
443
- condValue: [],
444
- data: {
445
- id: Vue.user.id,
446
- orgid: Vue.user.orgid
447
- }
448
- }
449
- let http = new HttpResetClass()
450
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/checkuser/n`, {data}, {
451
- resolveMsg: null,
452
- rejectMsg: null
453
- }).then((res) => {
454
- this.applyNum=res.data.n
455
- })
456
- },
457
- imgback(val){
458
- return require('../assets/'+val+'.png')
459
- },
460
- // 返回主界面
461
- back(){
462
- this.titleName = '主界面'
463
- this.isMenu = true
464
- },
465
- gotopage(param,title) {
466
- if(title === '工程发起'){
467
- this.showModal = !this.showModal
468
- }else{
469
- var prpdata = {
470
- _this:this,
471
- title:title,
472
- safe:false
473
- }
474
- this.$dispatch('gotoson',prpdata)
475
- this.$goto(param,{sourcet:'竖屏',tabname:title},'self',this.getTabs)
476
- }
477
- },
478
- mute () {
479
- HostApp.mute()
480
- }
481
- },
482
- computed: {
483
- appDefnames () {
484
- let list = this.$appdata.getParam('手机节点')
485
- return `(${list.map(item => `'${item.value}'`).toString()})`
486
- }
487
- }
488
- }
489
- </script>
490
- <style lang="less">
491
- .badge-content{
492
- color: #fff;
493
- box-sizing: border-box;
494
- min-width: 8px;
495
- font-size: 9px;
496
- line-height: 12px;
497
- white-space: nowrap;
498
- font-weight: 400;
499
- text-align: center;
500
- }
501
- .badge{
502
- top: 6px;
503
- position: absolute;
504
- max-height: 13px;
505
- min-height: 8px;
506
- //transform: translate(50%,-50%);
507
- right:0;
508
- display: inline-flex;
509
- vertical-align: middle;
510
- box-sizing: content-box;
511
- border-radius: 100px;
512
- background-color: red;
513
- }
514
- .app-input {
515
- label {
516
- float: left;
517
- }
518
- .select {
519
- button {
520
- border: none;
521
- outline: none;
522
- text-align: left;
523
- .btn-placeholder {
524
- color: #ACA899
525
- }
526
- }
527
- }
528
- .datepicker {
529
- .form-control:focus {
530
- border: none!important;
531
- outline: none!important;
532
- -webkit-box-shadow: none;
533
- box-shadow: none;
534
- }
535
- }
536
- }
537
- .tab-befor-img {
538
- content: '';
539
- background-size: 30px;
540
- display: inline-block;
541
- margin-right: 8px;
542
- height: 30px;
543
- width: 30px;
544
- vertical-align: -35%;
545
- }
546
- .pageskuang{
547
- vertical-align:middle;
548
- display:table-cell;
549
- width: 32%;
550
- top:-50%;
551
- margin-top: 1%;
552
- margin-left: 1%;
553
- border:1px solid #e3e3e3;
554
- text-align: center;
555
- background-color: #ffffff;
556
- }
557
- .pgesfoot{
558
- font-size: 14px;
559
- color: #666666;
560
- /* font-family: "Pingfhs";*/
561
- }
562
- .imgs{
563
- width: 35px;
564
- height: 35px;
565
- margin-top: 15px;
566
- }
567
- .pages-bgcolor{
568
- text-align: center;
569
- background-color: #f0f0ef;
570
- }
571
- img[src=""],img:not([src]){
572
- opacity: 0;
573
- border:none;
574
- visibility: hidden;
575
- max-width: none;
576
- }
577
-
578
- .manbiankuang{
579
- width: 44%;
580
- margin-top: 15px;
581
- margin-left: 4%;
582
- border:1px solid #e3e3e3;
583
- border-radius:10px 10px 10px 10px;
584
- text-align: center;
585
- background-color: #ffffff;
586
- }
587
-
588
- .nav-bgcolor{
589
- background-color: #ffffff;
590
- }
591
- </style>
1
+ <template>
2
+ <div class="nav-bgcolor">
3
+ <div class="auto">
4
+ <div class="row nav-bgcolor" >
5
+ <div class="col-xs-6 manbiankuang" v-for="tab in tabs" @click="gotopage(tab.link,tab.name)">
6
+ <img class="imgs" :src="imgback(tab.name)">
7
+ <div class="badge"
8
+ v-show="isshowTag&&tab.num&&tab.num>0"
9
+ ><div class="badge-content">{{tab.num>99?'99+':tab.num}}</div></div>
10
+ <div class="badge" v-show="tab.name == '抄表待办' && isShowRedNum && isShowRedNum == 'true'">
11
+ <div class="badge-content">{{ meterNum?meterNum:0 }}</div>
12
+ </div>
13
+ <div class="badge" v-show="tab.name == '安检待办' && isShowRedNum && isShowRedNum == 'true'">
14
+ <div class="badge-content">{{ safeckNum?safeckNum:0 }}</div>
15
+ </div>
16
+ <div class="badge" v-show="tab.name == '维修待办' && isShowRedNum && isShowRedNum == 'true'">
17
+ <div class="badge-content">{{ repairNum?repairNum:0 }}</div>
18
+ </div>
19
+ <div class="badge" v-show="tab.name == '报建待办' && isShowRedNum && isShowRedNum == 'true'">
20
+ <div class="badge-content">{{ applyNum?applyNum:0 }}</div>
21
+ </div>
22
+ <div class="badge" v-show="tab.name == '站点工单' && siteWorkNumShow && siteWorkNumShow == 'true'">
23
+ <div class="badge-content">{{ siteWorkNum?siteWorkNum:0 }}</div>
24
+ </div>
25
+ <p></p>
26
+ <p class="pagesfoot">{{tab.name}}</p>
27
+
28
+ <!--<p class="pagesfoot">{{tab.name}}&nbsp;{{tab.icon}}</p>-->
29
+ <p></p>
30
+ </div>
31
+ </div>
32
+ <!--<div class="row" style="overflow:auto;">-->
33
+ <!--<repair-first v-show="componentName == 'repair-first'" worktype="报修单" :sourcet="sourcet" tabname="维修待办" v-on:changesum="changesum"></repair-first>-->
34
+ <!--<zhihuan-first v-show="componentName == 'zhihuan-first'" worktype="置换通气单" :sourcet="sourcet" tabname="置换待办" v-on:changesum="changesum"></zhihuan-first>-->
35
+ <!--</div>-->
36
+ </div>
37
+ <validator name="v">
38
+ <modal
39
+ v-if="showModal"
40
+ :show.sync="showModal"
41
+ backdrop="false"
42
+ title="工程类型"
43
+ cancel-text="取消"
44
+ ok-text="确认"
45
+ :callback="apply"
46
+ >
47
+ <div class="form-horizontal" slot="modal-body">
48
+ <div class="row form-group app-input" style="margin: 10px auto">
49
+ <label class="">报建类型:</label>
50
+ <div class="col-sm-8">
51
+ <v-select
52
+ v-model="applyType"
53
+ placeholder='请选择需要发起的工程类型'
54
+ :value.sync="applyType"
55
+ :options='applyTypes'
56
+ :value-single="true"
57
+ class="select select_list"
58
+ :search="false"
59
+ close-on-select ></v-select>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </modal>
64
+ </validator>
65
+ <modal :show.sync="shownotices" backdrop="false">
66
+ <header slot="modal-header" class="modal-header">
67
+ <h3 style="text-align: center;">新公告提醒</h3>
68
+ </header>
69
+ <article slot="modal-body" class="modal-body">
70
+ <div class="auto app-text" style="margin-top: 5px;">
71
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
72
+ <div class="panel-body panel-self">
73
+ <div class="col-xs-12">
74
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>标题:</b></p>
75
+ <p class="panel-title col-xs-5 text-left input-font" style="width: 74%">{{notices.f_title}}</p>
76
+ </div>
77
+ <div class="col-xs-12">
78
+ <p class="panel-title col-xs-5 text-left font" style="width: 21%;float: left"><b>内容:</b></p>
79
+ <p class="panel-title col-xs-7 text-left input-font" style="width: 79%">{{ notices.f_explain }}</p>
80
+ </div>
81
+ <div class="col-xs-12">
82
+ <p class="panel-title text-left font" style="width: 23%;float: left"><b>状态:</b></p>
83
+ <p class="panel-title text-left input-font" style="width: 77%">{{notices.f_state}}</p>
84
+ </div>
85
+
86
+ <div class="col-xs-12">
87
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>发布时间:</b></p>
88
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_date}}</p>
89
+ </div>
90
+ <div class="col-xs-12">
91
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>结束时间:</b></p>
92
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_enddate}}</p>
93
+ </div>
94
+ <div class="col-xs-12">
95
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>操作人:</b></p>
96
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_operator}}</p>
97
+ </div>
98
+ <div class="col-xs-12">
99
+ <p class="panel-title text-left font" style="width: 30%;float: left"><b>紧急公告:</b></p>
100
+ <p class="panel-title text-left input-font" style="width: 100%">{{notices.f_urgency ? '是' : '否'}}</p>
101
+ </div>
102
+ <div class="col-xs-12">
103
+ <img-self :width="300" :height="400" alt="无照片!!!" :src="notices.f_downloadfile.split(':')[1]"></img-self>
104
+ </div>
105
+ <div class="col-xs-12">
106
+ <button type="button" name="button" class="btn btn-primary" style="background-color:#499edf;float: right" @click="closeshowModal()">确认</button>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </article>
112
+ <footer slot="modal-footer" class="modal-footer">
113
+ </footer>
114
+ </modal>
115
+ </div>
116
+ </template>
117
+
118
+ <script scoped>
119
+ import Vue from 'vue'
120
+ import * as Util from '../Util'
121
+ import {HttpResetClass} from "vue-client";
122
+ export default {
123
+ title: '待办工作导航',
124
+ data() {
125
+ return {
126
+ siteWorkNum:0,
127
+ titleName: '待办工作',
128
+ showModal: false,
129
+ isMenu: true,
130
+ isshowTag:false,
131
+ shownotices:false,
132
+ tabs: [],
133
+ safeckNum:0,
134
+ repairNum:0,
135
+ applyNum:0,
136
+ model:{},
137
+ notices:{},
138
+ weakPassword: false,
139
+ modifyPassword: false,
140
+ isShowStopGas:this.$appdata.getSingleValue('公告展示'),
141
+ text: '导航组件this',
142
+ beforeName: '待办工作',
143
+ componentName: 'repair-first',
144
+ sourcet: '竖屏',
145
+ meterNum:null,
146
+ isShowRedNum:this.$appdata.getSingleValue('手机端获取任务条数'),
147
+ siteWorkNumShow:this.$appdata.getSingleValue('站点工单红点提醒'),
148
+ applyType: '', // 报建类型
149
+ // applyTypes:this.$appdata.getParam("手机报建类型"),
150
+ applyTypes: [{label: '散户报建', value: '散户报建'}, {label: '工商户报建', value: '工商户报建'}, {
151
+ label: '团购报建',
152
+ value: '团购报建'
153
+ }, {label: '改管报建', value: '改管报建'}, {label: '增容报建', value: '增容报建'}, {
154
+ label: '退款报建',
155
+ value: '退款报建'
156
+ }, {label: '团购转散户', value: '团购转散户'}, {label: '报警器报建', value: '报警器报建'}, {label: '工商业报警器报建', value: '工商业报警器报建'}],
157
+
158
+ }
159
+ },
160
+ ready () {
161
+ this.getNoTagTabs()
162
+ this.getmeterNum()
163
+ this.getModelSum()
164
+ this.getapplyNum()
165
+ this.getSiteWorkNum()
166
+ this.searchStopGas()
167
+ },
168
+ methods: {
169
+ getSiteWorkNum(){
170
+ if(!this.siteWorkNumShow || !this.siteWorkNumShow == 'true'){
171
+ return
172
+ }
173
+ const val = {
174
+ condition: {
175
+ condition: `1 = 1 and tswo.f_workorder_type = '报修单'`,
176
+ sign: '1 = 1'
177
+ },
178
+ userid: Vue.user.name
179
+ };
180
+ let http = new HttpResetClass()
181
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/operatorService`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
182
+ this.siteWorkNum = res.data.length
183
+ })
184
+ },
185
+ closeshowModal(){
186
+ this.shownotices = false
187
+ this.saveIsShowStopGas()
188
+ },
189
+ searchStopGas(){
190
+ if(!this.isShowStopGas || !this.isShowStopGas == 'true'){
191
+ return
192
+ }
193
+ let http = new HttpResetClass()
194
+ var condition = `1=1 and f_state = '公告中' and f_typeofreceipt = '手机端'`
195
+ let data = {
196
+ items: '*',
197
+ tablename: 'T_STOPGAS',
198
+ condition: condition,
199
+ orderitem: 'id desc'
200
+ }
201
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
202
+ resolveMsg: null,
203
+ rejectMsg: null
204
+ }).then((res) => {
205
+ this.notices = res.data[0]
206
+ this.showStopGas(res.data[0].id,Vue.user.id)
207
+ }).catch((e)=>{
208
+ })
209
+ },
210
+ showStopGas(stopId,userid){
211
+ let http = new HttpResetClass()
212
+ var condition = `f_stopgas_id = '${stopId}' and f_user_id = '${userid}'`
213
+ let data = {
214
+ items: '*',
215
+ tablename: 't_notice_notarize',
216
+ condition: condition,
217
+ orderitem: 'f_id desc'
218
+ }
219
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/singleTable_OrderBy`, {data: data}, {
220
+ resolveMsg: null,
221
+ rejectMsg: null
222
+ }).then((res) => {
223
+ if (res.data.length === 0) {
224
+ this.shownotices = true
225
+ }else if (res.data[0].f_phstate !== '已确认' ){
226
+ this.model.f_id = res.data[0].f_id
227
+ this.shownotices = true
228
+ } else {
229
+ this.shownotices = false
230
+ }
231
+ }).catch((e)=>{
232
+ console.log('报错了!!')
233
+ console.error(e)
234
+ })
235
+ },
236
+ saveIsShowStopGas(){
237
+ this.model.f_stopgas_id = this.notices.id
238
+ this.model.f_phstate = '已确认'
239
+ this.model.f_user_id = Vue.user.id
240
+ console.log('保存', this.model)
241
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/logic/savenoticenotarize`, {data:this.model}).then((res) => {
242
+ this.model.f_stopgas_id = ''
243
+ this.model.f_user_id = ''
244
+ }).catch((res) => {
245
+ console.log('打印报错信息'+ res)
246
+ })
247
+ },
248
+ click (row) {
249
+ let _this = this
250
+ this.$dispatch('gotoson', {
251
+ _this: _this,
252
+ title: row.defname,
253
+ safe: true
254
+ })
255
+ this.$goto('app-service-control', {selectdata: row})
256
+ },
257
+ async getProcessId(processname) {
258
+ let data = {
259
+ workname: processname
260
+ }
261
+ let http = new HttpResetClass()
262
+ let res = await http.load(
263
+ 'POST',
264
+ `${this.$androidUtil.getProxyUrl()}/rs/logic/getProcessId`,
265
+ {data: data},
266
+ {resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
267
+ )
268
+
269
+ return res.data
270
+ },
271
+ async apply () {
272
+ if (this.applyType === '' || this.applyType === null) {
273
+ this.$showAlert('请选择需要发起的类型', 'warning', 3000)
274
+ return
275
+ }
276
+ let data = {
277
+ f_apply_type: this.applyType
278
+ }
279
+ if (this.applyType === '散户报建') {
280
+ data.processname = '散户报建流程'
281
+ data.defname = '报装申请'
282
+ } else if (this.applyType === '工商户报建') {
283
+ data.processname = '工商户报建流程'
284
+ data.defname = '报装申请'
285
+ } else if (this.applyType === '改管报建') {
286
+ data.processname = '改管报建流程'
287
+ data.defname = '报装申请'
288
+ } else if (this.applyType === '增容报建') {
289
+ data.processname = '增容报建流程'
290
+ data.defname = '报装申请'
291
+ } else if (this.applyType === '团购报建') {
292
+ data.processname = '团购报建流程'
293
+ data.defname = '报装申请'
294
+ } else if (this.applyType === '退款报建') {
295
+ data.processname = '退款报建流程'
296
+ data.defname = '终止报建'
297
+ } else if (this.applyType === '团购转散户') {
298
+ data.processname = '团购转散户报建流程'
299
+ data.defname = '信息确认'
300
+ }else if (this.applyType === '报警器报建') {
301
+ data.processname = '报警器报建流程'
302
+ data.defname = '报装申请'
303
+ }else if (this.applyType === '工商业报警器报建') {
304
+ data.processname = '工商业报警器报建流程'
305
+ data.defname = '报装申请'
306
+ } else {
307
+ this.$showMessage('暂无此类报装')
308
+ return
309
+ }
310
+
311
+ data.f_sub_state = "新增"
312
+ data.f_apply_source = "线下发起"
313
+ data.f_process_id = await this.getProcessId(data.processname)
314
+
315
+ // 调用ExplorationUser事件
316
+
317
+ this.click(data)
318
+ this.applyType = null
319
+ this.showModal = false
320
+ },
321
+ // 查询本地所有待办
322
+ getModelSum(){
323
+ for(var i = 0;i<this.tabs.length;i++){
324
+ if(this.tabs[i].link == 'zhihuan-first' ){
325
+ this.getZhihuan()
326
+ }
327
+ if(this.tabs[i].link == 'repair-first' ){
328
+ this.getRepair()
329
+ }
330
+ if(this.tabs[i].link == 'current-create' ){
331
+ this.getSafeCheck()
332
+ }
333
+ }
334
+ },
335
+ getRepair(){
336
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
337
+ return
338
+ }
339
+ var _this = this;
340
+ let bbb = _this.$androidUtil.path({'alias':`getServiceMobile`,'data':{condition:'1 = 1'}})
341
+ if (bbb.code === 200) {
342
+ _this.repairNum = bbb.data.length
343
+ }
344
+ },
345
+ getSafeCheck(){
346
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
347
+ return
348
+ }
349
+ var _this = this;
350
+ let aaa = _this.$androidUtil.path({'alias':`safecheckGetServiceMobile`,'data':{condition:'1 = 1'}})
351
+ if (aaa.code === 200) {
352
+ _this.safeckNum = aaa.data.length
353
+ }
354
+ },
355
+ getZhihuan(){
356
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
357
+ return
358
+ }
359
+ },
360
+ changesum(titdata){
361
+ for(var i = 0;i<this.tabs.length;i++){
362
+ if(this.tabs[i].name == titdata.title){
363
+ this.tabs[i].icon = titdata.sum + '单'
364
+ return
365
+ }
366
+ }
367
+ },
368
+ getNoTagTabs(){
369
+ for(let funs in Vue.functions){
370
+ if(Vue.functions[funs].link == 'attend-manage'){
371
+ this.$set('tabs',Vue.functions[funs].children)
372
+ }
373
+ }
374
+ this.getTabs()
375
+ },
376
+ getTabs(){
377
+ if (Vue.android) {
378
+ if(Vue.config.telephone&&Vue.config.telephone.TipConfig&&Vue.config.telephone.TipConfig.data) {
379
+ this.isshowTag = true
380
+ const config = Vue.config.telephone.TipConfig.data
381
+ const user = Vue.user
382
+ console.log("Vue.android" + Vue.android)
383
+ const result = this.$androidUtil.syncBzLogic("TipConfig", {data: {config, user}})
384
+ if (result.code === 200) {
385
+ for (var i = 0; i < this.tabs.length; i++) {
386
+ result.result.forEach(ress => {
387
+ if (this.tabs[i].link === ress.link) {
388
+ this.$set('tabs[' + i + '].num', ress.num)
389
+ }
390
+ })
391
+ }
392
+ }
393
+ }
394
+ } else {
395
+ const result = {
396
+ "code": 200,
397
+ "result": [{"link": "repair-first", "num": 50}, {"link": "current-create", "num": 30}]
398
+ }
399
+ if (result.code === 200) {
400
+ for (var i = 0; i < this.tabs.length; i++) {
401
+ result.result.forEach(ress => {
402
+ if (this.tabs[i].link === ress.link) {
403
+ this.$set('tabs[' + i + '].num', ress.num)
404
+ }
405
+ })
406
+ }
407
+ }
408
+ }
409
+ this.getmeterNum()
410
+ this.getModelSum()
411
+ },
412
+ getmeterNum() {
413
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
414
+ return
415
+ }
416
+ this.timeOutGetmeterNum()
417
+ },
418
+ timeOutGetmeterNum(){
419
+ let val = {
420
+ items:"count(*) as count_num",
421
+ tablename:"t_handplan",
422
+ orderitem:"1",
423
+ condition:`1=1 and f_inputtor = '${Vue.user.name}' and f_hand_state = '有效' and f_meter_state = '未抄表'`,
424
+ f_orgid:`'${Vue.user.orgid}'`
425
+ }
426
+ let http = new HttpResetClass()
427
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/tel_singleTable_OrderBy`, {data: val}, {
428
+ resolveMsg: null,
429
+ rejectMsg: null
430
+ }).then((res) => {
431
+ this.meterNum = res.data[0].count_num
432
+ })
433
+ },
434
+ getapplyNum() {
435
+ if (!this.isShowRedNum || this.isShowRedNum != 'true') {
436
+ return
437
+ }
438
+ this.timeOutgetapplyNum()
439
+ },
440
+ timeOutgetapplyNum(){
441
+ var data={
442
+ condition: ` 1=1 and act.defname in ${this.appDefnames} `,
443
+ condValue: [],
444
+ data: {
445
+ id: Vue.user.id,
446
+ orgid: Vue.user.orgid
447
+ }
448
+ }
449
+ let http = new HttpResetClass()
450
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/checkuser/n`, {data}, {
451
+ resolveMsg: null,
452
+ rejectMsg: null
453
+ }).then((res) => {
454
+ this.applyNum=res.data.n
455
+ })
456
+ },
457
+ imgback(val){
458
+ return require('../assets/'+val+'.png')
459
+ },
460
+ // 返回主界面
461
+ back(){
462
+ this.titleName = '主界面'
463
+ this.isMenu = true
464
+ },
465
+ gotopage(param,title) {
466
+ if(title === '工程发起'){
467
+ this.showModal = !this.showModal
468
+ }else{
469
+ var prpdata = {
470
+ _this:this,
471
+ title:title,
472
+ safe:false
473
+ }
474
+ this.$dispatch('gotoson',prpdata)
475
+ this.$goto(param,{sourcet:'竖屏',tabname:title},'self',this.getTabs)
476
+ }
477
+ },
478
+ mute () {
479
+ HostApp.mute()
480
+ }
481
+ },
482
+ computed: {
483
+ appDefnames () {
484
+ let list = this.$appdata.getParam('手机节点')
485
+ return `(${list.map(item => `'${item.value}'`).toString()})`
486
+ }
487
+ }
488
+ }
489
+ </script>
490
+ <style lang="less">
491
+ .badge-content{
492
+ color: #fff;
493
+ box-sizing: border-box;
494
+ min-width: 8px;
495
+ font-size: 9px;
496
+ line-height: 12px;
497
+ white-space: nowrap;
498
+ font-weight: 400;
499
+ text-align: center;
500
+ }
501
+ .badge{
502
+ top: 6px;
503
+ position: absolute;
504
+ max-height: 13px;
505
+ min-height: 8px;
506
+ //transform: translate(50%,-50%);
507
+ right:0;
508
+ display: inline-flex;
509
+ vertical-align: middle;
510
+ box-sizing: content-box;
511
+ border-radius: 100px;
512
+ background-color: red;
513
+ }
514
+ .app-input {
515
+ label {
516
+ float: left;
517
+ }
518
+ .select {
519
+ button {
520
+ border: none;
521
+ outline: none;
522
+ text-align: left;
523
+ .btn-placeholder {
524
+ color: #ACA899
525
+ }
526
+ }
527
+ }
528
+ .datepicker {
529
+ .form-control:focus {
530
+ border: none!important;
531
+ outline: none!important;
532
+ -webkit-box-shadow: none;
533
+ box-shadow: none;
534
+ }
535
+ }
536
+ }
537
+ .tab-befor-img {
538
+ content: '';
539
+ background-size: 30px;
540
+ display: inline-block;
541
+ margin-right: 8px;
542
+ height: 30px;
543
+ width: 30px;
544
+ vertical-align: -35%;
545
+ }
546
+ .pageskuang{
547
+ vertical-align:middle;
548
+ display:table-cell;
549
+ width: 32%;
550
+ top:-50%;
551
+ margin-top: 1%;
552
+ margin-left: 1%;
553
+ border:1px solid #e3e3e3;
554
+ text-align: center;
555
+ background-color: #ffffff;
556
+ }
557
+ .pgesfoot{
558
+ font-size: 14px;
559
+ color: #666666;
560
+ /* font-family: "Pingfhs";*/
561
+ }
562
+ .imgs{
563
+ width: 35px;
564
+ height: 35px;
565
+ margin-top: 15px;
566
+ }
567
+ .pages-bgcolor{
568
+ text-align: center;
569
+ background-color: #f0f0ef;
570
+ }
571
+ img[src=""],img:not([src]){
572
+ opacity: 0;
573
+ border:none;
574
+ visibility: hidden;
575
+ max-width: none;
576
+ }
577
+
578
+ .manbiankuang{
579
+ width: 44%;
580
+ margin-top: 15px;
581
+ margin-left: 4%;
582
+ border:1px solid #e3e3e3;
583
+ border-radius:10px 10px 10px 10px;
584
+ text-align: center;
585
+ background-color: #ffffff;
586
+ }
587
+
588
+ .nav-bgcolor{
589
+ background-color: #ffffff;
590
+ }
591
+ </style>