telephone-clients 3.0.103-91 → 3.0.103-93

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 (1038) hide show
  1. package/.babelignore +1 -1
  2. package/.babelrc +6 -6
  3. package/.eslintrc.js +16 -16
  4. package/CHANGELOG.md +37 -37
  5. package/README.md +38 -38
  6. package/TelephoneClient.iml +12 -12
  7. package/adapter.min.js +2049 -2049
  8. package/android.html +18 -18
  9. package/build.gradle +15 -15
  10. package/index.html +29 -29
  11. package/package.json +1 -1
  12. package/release.bat +5 -5
  13. package/src/AndroidApp.vue +33 -33
  14. package/src/App.vue +54 -54
  15. package/src/android-bootstrap/less/navs.less +333 -333
  16. package/src/android.js +17 -17
  17. package/src/androidBase.js +111 -111
  18. package/src/androidTest.js +18 -18
  19. package/src/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  20. package/src/bootstrap/less/.csscomb.json +304 -304
  21. package/src/bootstrap/less/.csslintrc +19 -19
  22. package/src/bootstrap/less/alerts.less +73 -73
  23. package/src/bootstrap/less/aofeng/animate.min.css +10 -10
  24. package/src/bootstrap/less/aofeng/standard.less +585 -585
  25. package/src/bootstrap/less/aofeng/themeOne/BinaryTemplate.less +478 -478
  26. package/src/bootstrap/less/aofeng/themeOne/loginStyle.less +1586 -1586
  27. package/src/bootstrap/less/aofeng/themeOne/systemStyle.less +1905 -1905
  28. package/src/bootstrap/less/aofeng/themeTwo/newStyle1.less +415 -415
  29. package/src/bootstrap/less/badges.less +66 -66
  30. package/src/bootstrap/less/bootstrap.less +65 -65
  31. package/src/bootstrap/less/breadcrumbs.less +26 -26
  32. package/src/bootstrap/less/button-groups.less +247 -247
  33. package/src/bootstrap/less/buttons.less +172 -172
  34. package/src/bootstrap/less/carousel.less +269 -269
  35. package/src/bootstrap/less/close.less +34 -34
  36. package/src/bootstrap/less/code.less +69 -69
  37. package/src/bootstrap/less/component-animations.less +33 -33
  38. package/src/bootstrap/less/dropdowns.less +216 -216
  39. package/src/bootstrap/less/forms.less +626 -626
  40. package/src/bootstrap/less/glyphicons.less +305 -305
  41. package/src/bootstrap/less/grid.less +84 -84
  42. package/src/bootstrap/less/input-groups.less +167 -167
  43. package/src/bootstrap/less/jumbotron.less +52 -52
  44. package/src/bootstrap/less/labels.less +64 -64
  45. package/src/bootstrap/less/list-group.less +141 -141
  46. package/src/bootstrap/less/manageStyle/manageChile.less +180 -180
  47. package/src/bootstrap/less/manageStyle/manageStyle.less +1102 -1102
  48. package/src/bootstrap/less/manageStyle/safeStyle.less +498 -498
  49. package/src/bootstrap/less/media.less +66 -66
  50. package/src/bootstrap/less/mixins/alerts.less +14 -14
  51. package/src/bootstrap/less/mixins/background-variant.less +9 -9
  52. package/src/bootstrap/less/mixins/border-radius.less +18 -18
  53. package/src/bootstrap/less/mixins/buttons.less +69 -69
  54. package/src/bootstrap/less/mixins/center-block.less +7 -7
  55. package/src/bootstrap/less/mixins/clearfix.less +22 -22
  56. package/src/bootstrap/less/mixins/forms.less +90 -90
  57. package/src/bootstrap/less/mixins/gradients.less +59 -59
  58. package/src/bootstrap/less/mixins/grid-framework.less +92 -92
  59. package/src/bootstrap/less/mixins/grid.less +122 -122
  60. package/src/bootstrap/less/mixins/hide-text.less +21 -21
  61. package/src/bootstrap/less/mixins/image.less +33 -33
  62. package/src/bootstrap/less/mixins/labels.less +12 -12
  63. package/src/bootstrap/less/mixins/list-group.less +30 -30
  64. package/src/bootstrap/less/mixins/nav-divider.less +10 -10
  65. package/src/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  66. package/src/bootstrap/less/mixins/opacity.less +8 -8
  67. package/src/bootstrap/less/mixins/pagination.less +24 -24
  68. package/src/bootstrap/less/mixins/panels.less +24 -24
  69. package/src/bootstrap/less/mixins/progress-bar.less +10 -10
  70. package/src/bootstrap/less/mixins/reset-filter.less +8 -8
  71. package/src/bootstrap/less/mixins/reset-text.less +18 -18
  72. package/src/bootstrap/less/mixins/resize.less +6 -6
  73. package/src/bootstrap/less/mixins/responsive-visibility.less +15 -15
  74. package/src/bootstrap/less/mixins/size.less +10 -10
  75. package/src/bootstrap/less/mixins/tab-focus.less +9 -9
  76. package/src/bootstrap/less/mixins/table-row.less +44 -44
  77. package/src/bootstrap/less/mixins/text-emphasis.less +9 -9
  78. package/src/bootstrap/less/mixins/text-overflow.less +8 -8
  79. package/src/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  80. package/src/bootstrap/less/mixins.less +40 -40
  81. package/src/bootstrap/less/modals.less +151 -151
  82. package/src/bootstrap/less/navbar.less +660 -660
  83. package/src/bootstrap/less/navs.less +285 -285
  84. package/src/bootstrap/less/normalize.less +424 -424
  85. package/src/bootstrap/less/pager.less +76 -76
  86. package/src/bootstrap/less/pagination.less +89 -89
  87. package/src/bootstrap/less/panels.less +275 -275
  88. package/src/bootstrap/less/popovers.less +131 -131
  89. package/src/bootstrap/less/print.less +101 -101
  90. package/src/bootstrap/less/progress-bars.less +87 -87
  91. package/src/bootstrap/less/responsive-embed.less +35 -35
  92. package/src/bootstrap/less/responsive-utilities.less +194 -194
  93. package/src/bootstrap/less/scaffolding.less +161 -161
  94. package/src/bootstrap/less/stand.less +211 -211
  95. package/src/bootstrap/less/standard.less +503 -503
  96. package/src/bootstrap/less/systemStyle.less +860 -860
  97. package/src/bootstrap/less/tables.less +312 -312
  98. package/src/bootstrap/less/theme.less +291 -291
  99. package/src/bootstrap/less/themeOne.less +34 -34
  100. package/src/bootstrap/less/themeTwo.less +27 -27
  101. package/src/bootstrap/less/thumbnails.less +36 -36
  102. package/src/bootstrap/less/tooltip.less +102 -102
  103. package/src/bootstrap/less/type.less +303 -303
  104. package/src/bootstrap/less/utilities.less +55 -55
  105. package/src/bootstrap/less/variables.less +896 -896
  106. package/src/bootstrap/less/wells.less +29 -29
  107. package/src/bus.js +2 -2
  108. package/src/components/CaseContainer.vue +86 -86
  109. package/src/components/ExportExcel.vue +342 -342
  110. package/src/components/ImgSelfTel.vue +126 -126
  111. package/src/components/MaterialsManage/MaterialsBase.vue +177 -177
  112. package/src/components/MaterialsManage/MaterialsList.vue +244 -244
  113. package/src/components/MaterialsManage/MaterialsManage.vue +60 -60
  114. package/src/components/PartialView.vue +44 -44
  115. package/src/components/Test.vue +26 -26
  116. package/src/components/TimelineItem.vue +119 -119
  117. package/src/components/Util/FileUpload.vue +139 -139
  118. package/src/components/Util/ImgSelfSafePlus.vue +156 -156
  119. package/src/components/Util/RightTreeSafe.vue +346 -346
  120. package/src/components/Util/RightTreeSafeDep.vue +350 -350
  121. package/src/components/Util/TelePhoneUpload.vue +279 -279
  122. package/src/components/Util.js +600 -600
  123. package/src/components/android/AddMyTask.vue +353 -353
  124. package/src/components/android/AppHeader.vue +69 -69
  125. package/src/components/android/CameraImg.vue +111 -111
  126. package/src/components/android/CompletedRepair.vue +264 -264
  127. package/src/components/android/EmployeeInfo.vue +59 -59
  128. package/src/components/android/EmployeePage.vue +71 -71
  129. package/src/components/android/Lbt.vue +103 -103
  130. package/src/components/android/LoginApp.vue +374 -374
  131. package/src/components/android/NavBottom.vue +104 -104
  132. package/src/components/changemeter/ChangeMeterAll.vue +189 -189
  133. package/src/components/changemeter/ChangeMeterDetail.vue +300 -300
  134. package/src/components/changemeter/ChangeMeterMain.vue +37 -37
  135. package/src/components/eachart/BarBrokenline.vue +206 -206
  136. package/src/components/eachart/BarChart.vue +165 -165
  137. package/src/components/eachart/PieChart.vue +182 -182
  138. package/src/components/eachart/datesumchart.vue +165 -165
  139. package/src/components/eachart/statework.vue +226 -226
  140. package/src/components/eachart/workorderchart.vue +183 -183
  141. package/src/components/guoxin/Console.vue +356 -356
  142. package/src/components/guoxin/RecordInfoRight.vue +75 -75
  143. package/src/components/guoxin/VisitInfo.vue +281 -281
  144. package/src/components/guoxin/call.state.api.js +215 -215
  145. package/src/components/guoxin/reconnecting-websocket.min.js +1 -1
  146. package/src/components/guoxin/telephone.js +15 -15
  147. package/src/components/map/AMapTrailShowWx.vue +178 -178
  148. package/src/components/map/CallMap.vue +403 -403
  149. package/src/components/map/CriteriaData.vue +81 -81
  150. package/src/components/map/OlMap.vue +831 -831
  151. package/src/components/map/OrderService.vue +249 -249
  152. package/src/components/map/PipeMap.vue +154 -154
  153. package/src/components/map/dragbox.js +234 -234
  154. package/src/components/pay/createQRcode.vue +192 -192
  155. package/src/components/pay/telReadCard.vue +59 -59
  156. package/src/components/pc/AllUser.vue +615 -615
  157. package/src/components/pc/AllUserNew.vue +638 -638
  158. package/src/components/pc/ArrearsList.vue +397 -397
  159. package/src/components/pc/AttendantCallStat.vue +213 -213
  160. package/src/components/pc/AttendantWorkHistory.vue +98 -98
  161. package/src/components/pc/Auxfunc.vue +76 -76
  162. package/src/components/pc/BottleGas/BottleGasManage.vue +304 -304
  163. package/src/components/pc/BottleGasWork.vue +214 -214
  164. package/src/components/pc/BuildReport.vue +60 -60
  165. package/src/components/pc/CallerInfoList.vue +98 -98
  166. package/src/components/pc/ChatMsg.vue +338 -338
  167. package/src/components/pc/ComplainWork.vue +326 -326
  168. package/src/components/pc/Console.vue +617 -617
  169. package/src/components/pc/DelayReply.vue +60 -60
  170. package/src/components/pc/DistributeWork.vue +177 -177
  171. package/src/components/pc/ElseWork.vue +44 -44
  172. package/src/components/pc/ElseWorkList.vue +267 -267
  173. package/src/components/pc/Emoji.vue +64 -64
  174. package/src/components/pc/Evaluate.vue +145 -145
  175. package/src/components/pc/EvaluateList.vue +195 -195
  176. package/src/components/pc/EvaluateModel.vue +53 -53
  177. package/src/components/pc/FailureEdit.vue +192 -192
  178. package/src/components/pc/FailureShow.vue +61 -61
  179. package/src/components/pc/FireQuery.vue +165 -165
  180. package/src/components/pc/FootPrintList.vue +40 -40
  181. package/src/components/pc/GasWork.vue +764 -764
  182. package/src/components/pc/GroupResend.vue +111 -111
  183. package/src/components/pc/InstallWork.vue +734 -734
  184. package/src/components/pc/ManageMaterial.vue +282 -282
  185. package/src/components/pc/MessageList.vue +635 -635
  186. package/src/components/pc/MessageManage.vue +136 -136
  187. package/src/components/pc/MessageManageList.vue +127 -127
  188. package/src/components/pc/MessageManageNew.vue +121 -121
  189. package/src/components/pc/MonitorGroup.vue +82 -82
  190. package/src/components/pc/NewRepairPaper.vue +370 -370
  191. package/src/components/pc/OrderService.vue +182 -182
  192. package/src/components/pc/ProgressBar.vue +50 -50
  193. package/src/components/pc/QueryJoinlv.vue +136 -136
  194. package/src/components/pc/QueryTeleHistory.vue +95 -95
  195. package/src/components/pc/QueryTextHistory.vue +98 -98
  196. package/src/components/pc/QueryVisitHistory.vue +217 -217
  197. package/src/components/pc/ReVisitList.vue +208 -208
  198. package/src/components/pc/RecordInfoRight.vue +84 -84
  199. package/src/components/pc/RecordList.vue +53 -53
  200. package/src/components/pc/RecordList2.vue +155 -155
  201. package/src/components/pc/RecordListLeft.vue +188 -188
  202. package/src/components/pc/RecordReport.vue +181 -181
  203. package/src/components/pc/ReminderOrder.vue +52 -52
  204. package/src/components/pc/RepairHistoryList.vue +152 -152
  205. package/src/components/pc/RepairsWork.vue +839 -839
  206. package/src/components/pc/ReturnRecord.vue +126 -126
  207. package/src/components/pc/RoleSelector.vue +139 -139
  208. package/src/components/pc/RoleSelectorDep.vue +158 -158
  209. package/src/components/pc/SeatInfo.vue +207 -207
  210. package/src/components/pc/Seekwork.vue +310 -310
  211. package/src/components/pc/ServerAppendixInfo.vue +52 -52
  212. package/src/components/pc/ServiceBack.vue +49 -49
  213. package/src/components/pc/ServiceDetails.vue +53 -53
  214. package/src/components/pc/ServiceDetailsNew.vue +53 -53
  215. package/src/components/pc/SiteBack.vue +84 -84
  216. package/src/components/pc/SiteCase.vue +87 -87
  217. package/src/components/pc/SiteSend.vue +281 -281
  218. package/src/components/pc/StandSend.vue +600 -600
  219. package/src/components/pc/StandServer.vue +25 -25
  220. package/src/components/pc/StandWork.vue +91 -91
  221. package/src/components/pc/StandWorkNew.vue +91 -91
  222. package/src/components/pc/TelFindUser.vue +304 -304
  223. package/src/components/pc/TelListener.vue +174 -174
  224. package/src/components/pc/TelLossList.vue +247 -247
  225. package/src/components/pc/TelMaterSelect.vue +225 -225
  226. package/src/components/pc/TelUserMaterSend.vue +171 -171
  227. package/src/components/pc/TeleInfo.vue +140 -140
  228. package/src/components/pc/TeleList.vue +99 -99
  229. package/src/components/pc/TeleOperKl.vue +91 -91
  230. package/src/components/pc/TemplateMessage.vue +92 -92
  231. package/src/components/pc/TextControl.vue +113 -113
  232. package/src/components/pc/TextInfoRight.vue +84 -84
  233. package/src/components/pc/TextList.vue +45 -45
  234. package/src/components/pc/TextListLeft.vue +156 -156
  235. package/src/components/pc/TextServer.vue +154 -154
  236. package/src/components/pc/TextService.vue +849 -849
  237. package/src/components/pc/UserDefinedMessage.vue +90 -90
  238. package/src/components/pc/UserDefinedMessageNew.vue +121 -121
  239. package/src/components/pc/UserOperate.vue +48 -48
  240. package/src/components/pc/VideoPlayer.vue +73 -73
  241. package/src/components/pc/VisitInfo.vue +284 -284
  242. package/src/components/pc/VoiceServer.vue +208 -208
  243. package/src/components/pc/WorkCenter.vue +105 -105
  244. package/src/components/pc/WorkCenterContent.vue +100 -100
  245. package/src/components/pc/WorkCenterList.vue +292 -292
  246. package/src/components/pc/WorkFind.vue +128 -128
  247. package/src/components/pc/WorkHistory.vue +560 -560
  248. package/src/components/pc/WorkList.vue +743 -743
  249. package/src/components/pc/WorkListAll.vue +630 -630
  250. package/src/components/pc/WorkListAllNew.vue +700 -700
  251. package/src/components/pc/WorkListNew.vue +712 -712
  252. package/src/components/pc/WorkMsg.vue +105 -105
  253. package/src/components/pc/analysis/AnalysisMain.vue +423 -423
  254. package/src/components/pc/analysis/StateStatistics.vue +292 -292
  255. package/src/components/pc/analysis/TelephoneAnaly.vue +104 -104
  256. package/src/components/pc/analysis/TelephoneType.vue +270 -270
  257. package/src/components/pc/config/DefaultPrint.js +7 -7
  258. package/src/components/pc/dataManager/KlCatalog.vue +293 -293
  259. package/src/components/pc/dataManager/KlContent.vue +193 -193
  260. package/src/components/pc/dataManager/Knowledge.vue +21 -21
  261. package/src/components/pc/dataManager/Materials.vue +553 -553
  262. package/src/components/pc/dataManager/OutletsList.vue +85 -85
  263. package/src/components/pc/dataManager/SafeEditor.vue +91 -91
  264. package/src/components/pc/dataManager/SafeList.vue +77 -77
  265. package/src/components/pc/dataManager/ShowMaterials.vue +159 -159
  266. package/src/components/pc/dataManager/StopGasManager.vue +320 -320
  267. package/src/components/pc/imgmove.vue +192 -192
  268. package/src/components/pc/olddata/OldWorkList.vue +193 -193
  269. package/src/components/pc/serviceDeleteOrder.vue +53 -53
  270. package/src/components/pc/wx/BookingService.vue +407 -407
  271. package/src/components/pc/wx/CustomMenu.vue +154 -154
  272. package/src/components/pc/wx/MenuView.vue +249 -249
  273. package/src/components/pc/wx/MobileView.vue +273 -273
  274. package/src/components/pc/wx/NewsMaterial.vue +144 -144
  275. package/src/components/pc/wx/SelectMaterial.vue +100 -100
  276. package/src/components/pc/wx/TelOutletsManager.vue +186 -186
  277. package/src/components/pos/Init.vue +213 -213
  278. package/src/components/pos/Main.vue +123 -123
  279. package/src/components/pos/Plugin/AndroidPlugin.js +148 -148
  280. package/src/components/pos/Plugin/PosUtil.js +315 -315
  281. package/src/components/pos/aotePos.js +55 -55
  282. package/src/components/pos/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  283. package/src/components/pos/bootstrap/less/.csscomb.json +304 -304
  284. package/src/components/pos/bootstrap/less/.csslintrc +19 -19
  285. package/src/components/pos/bootstrap/less/alerts.less +73 -73
  286. package/src/components/pos/bootstrap/less/badges.less +66 -66
  287. package/src/components/pos/bootstrap/less/bootstrap.less +56 -56
  288. package/src/components/pos/bootstrap/less/breadcrumbs.less +26 -26
  289. package/src/components/pos/bootstrap/less/button-groups.less +247 -247
  290. package/src/components/pos/bootstrap/less/buttons.less +172 -172
  291. package/src/components/pos/bootstrap/less/carousel.less +269 -269
  292. package/src/components/pos/bootstrap/less/close.less +34 -34
  293. package/src/components/pos/bootstrap/less/code.less +69 -69
  294. package/src/components/pos/bootstrap/less/component-animations.less +33 -33
  295. package/src/components/pos/bootstrap/less/dropdowns.less +216 -216
  296. package/src/components/pos/bootstrap/less/forms.less +626 -626
  297. package/src/components/pos/bootstrap/less/glyphicons.less +305 -305
  298. package/src/components/pos/bootstrap/less/grid.less +84 -84
  299. package/src/components/pos/bootstrap/less/input-groups.less +167 -167
  300. package/src/components/pos/bootstrap/less/jumbotron.less +52 -52
  301. package/src/components/pos/bootstrap/less/labels.less +64 -64
  302. package/src/components/pos/bootstrap/less/list-group.less +141 -141
  303. package/src/components/pos/bootstrap/less/media.less +66 -66
  304. package/src/components/pos/bootstrap/less/mixins/alerts.less +14 -14
  305. package/src/components/pos/bootstrap/less/mixins/background-variant.less +9 -9
  306. package/src/components/pos/bootstrap/less/mixins/border-radius.less +18 -18
  307. package/src/components/pos/bootstrap/less/mixins/buttons.less +69 -69
  308. package/src/components/pos/bootstrap/less/mixins/center-block.less +7 -7
  309. package/src/components/pos/bootstrap/less/mixins/clearfix.less +22 -22
  310. package/src/components/pos/bootstrap/less/mixins/forms.less +90 -90
  311. package/src/components/pos/bootstrap/less/mixins/gradients.less +59 -59
  312. package/src/components/pos/bootstrap/less/mixins/grid-framework.less +92 -92
  313. package/src/components/pos/bootstrap/less/mixins/grid.less +122 -122
  314. package/src/components/pos/bootstrap/less/mixins/hide-text.less +21 -21
  315. package/src/components/pos/bootstrap/less/mixins/image.less +33 -33
  316. package/src/components/pos/bootstrap/less/mixins/labels.less +12 -12
  317. package/src/components/pos/bootstrap/less/mixins/list-group.less +30 -30
  318. package/src/components/pos/bootstrap/less/mixins/nav-divider.less +10 -10
  319. package/src/components/pos/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  320. package/src/components/pos/bootstrap/less/mixins/opacity.less +8 -8
  321. package/src/components/pos/bootstrap/less/mixins/pagination.less +24 -24
  322. package/src/components/pos/bootstrap/less/mixins/panels.less +24 -24
  323. package/src/components/pos/bootstrap/less/mixins/progress-bar.less +10 -10
  324. package/src/components/pos/bootstrap/less/mixins/reset-filter.less +8 -8
  325. package/src/components/pos/bootstrap/less/mixins/reset-text.less +18 -18
  326. package/src/components/pos/bootstrap/less/mixins/resize.less +6 -6
  327. package/src/components/pos/bootstrap/less/mixins/responsive-visibility.less +15 -15
  328. package/src/components/pos/bootstrap/less/mixins/size.less +10 -10
  329. package/src/components/pos/bootstrap/less/mixins/tab-focus.less +9 -9
  330. package/src/components/pos/bootstrap/less/mixins/table-row.less +44 -44
  331. package/src/components/pos/bootstrap/less/mixins/text-emphasis.less +9 -9
  332. package/src/components/pos/bootstrap/less/mixins/text-overflow.less +8 -8
  333. package/src/components/pos/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  334. package/src/components/pos/bootstrap/less/mixins.less +40 -40
  335. package/src/components/pos/bootstrap/less/modals.less +151 -151
  336. package/src/components/pos/bootstrap/less/navbar.less +660 -660
  337. package/src/components/pos/bootstrap/less/navs.less +286 -286
  338. package/src/components/pos/bootstrap/less/normalize.less +424 -424
  339. package/src/components/pos/bootstrap/less/pager.less +76 -76
  340. package/src/components/pos/bootstrap/less/pagination.less +89 -89
  341. package/src/components/pos/bootstrap/less/panels.less +274 -274
  342. package/src/components/pos/bootstrap/less/popovers.less +131 -131
  343. package/src/components/pos/bootstrap/less/print.less +101 -101
  344. package/src/components/pos/bootstrap/less/progress-bars.less +87 -87
  345. package/src/components/pos/bootstrap/less/responsive-embed.less +35 -35
  346. package/src/components/pos/bootstrap/less/responsive-utilities.less +194 -194
  347. package/src/components/pos/bootstrap/less/scaffolding.less +161 -161
  348. package/src/components/pos/bootstrap/less/tables.less +262 -262
  349. package/src/components/pos/bootstrap/less/theme.less +291 -291
  350. package/src/components/pos/bootstrap/less/thumbnails.less +36 -36
  351. package/src/components/pos/bootstrap/less/tooltip.less +102 -102
  352. package/src/components/pos/bootstrap/less/type.less +303 -303
  353. package/src/components/pos/bootstrap/less/utilities.less +55 -55
  354. package/src/components/pos/bootstrap/less/variables.less +895 -895
  355. package/src/components/pos/bootstrap/less/wells.less +29 -29
  356. package/src/components/pos/charge/card/CardInfo.vue +43 -43
  357. package/src/components/pos/charge/card/CheckUser.Vue +116 -116
  358. package/src/components/pos/charge/card/ReadCardInter.vue +177 -177
  359. package/src/components/pos/charge/card/ReadCardToBuy.vue +174 -174
  360. package/src/components/pos/charge/card/SelectUser.Vue +104 -104
  361. package/src/components/pos/charge/machine/MachineSearch.Vue +124 -124
  362. package/src/components/pos/charge/sellgas/AdvertPop.vue +70 -70
  363. package/src/components/pos/charge/sellgas/CardSellGas.vue +361 -361
  364. package/src/components/pos/charge/sellgas/ChoosePayWay.vue +275 -275
  365. package/src/components/pos/charge/sellgas/GudingPrice.vue +38 -38
  366. package/src/components/pos/charge/sellgas/JietiPrice.vue +54 -54
  367. package/src/components/pos/charge/sellgas/ScanQrcode.vue +171 -171
  368. package/src/components/pos/charge/sellgas/WriteCard.vue +366 -366
  369. package/src/components/pos/charge/userinfo/ChangeMeterList.vue +43 -43
  370. package/src/components/pos/charge/userinfo/FillGasList.vue +43 -43
  371. package/src/components/pos/charge/userinfo/HistorySellList.vue +90 -90
  372. package/src/components/pos/charge/userinfo/OtherList.vue +43 -43
  373. package/src/components/pos/charge/userinfo/SellList.vue +43 -43
  374. package/src/components/pos/charge/userinfo/TransList.vue +43 -43
  375. package/src/components/pos/charge/userinfo/UserInfo.vue +176 -176
  376. package/src/components/pos/charge/userinfo/WritecardInfo.vue +44 -44
  377. package/src/components/pos/css/bootstrap.less +6757 -6757
  378. package/src/components/pos/css/style.less +158 -158
  379. package/src/components/pos/css/style.less.bak +84 -84
  380. package/src/components/pos/fonts/fontawesome-webfont.svg +2671 -2671
  381. package/src/components/pos/fonts/glyphicons-halflings-regular.svg +287 -287
  382. package/src/components/pos/js/bootstrap.js +2377 -2377
  383. package/src/components/pos/js/bootstrap.min.js +6 -6
  384. package/src/components/pos/js/jquery.chromatable.js +150 -150
  385. package/src/components/pos/js/jquery.min.js +5 -5
  386. package/src/components/pos/js/npm.js +12 -12
  387. package/src/components/pos/ztprint.js +26 -26
  388. package/src/components/qinhua/qhonlineChangeMeter.vue +440 -440
  389. package/src/components/qinhua/qhonlineoperation.vue +227 -227
  390. package/src/components/reli/ChoosePayWay.vue +179 -179
  391. package/src/components/reli/HistorySellLists.vue +128 -128
  392. package/src/components/reli/MachineMain.vue +470 -470
  393. package/src/components/reli/UserInfo.vue +211 -211
  394. package/src/components/reli/searchSells.vue +446 -446
  395. package/src/components/repaircount/RepairDetail.vue +74 -74
  396. package/src/components/repaircount/RepairPlan.vue +58 -58
  397. package/src/components/repaircount/SelectRepairPlan.vue +189 -189
  398. package/src/components/sale/CardMeterCenter.vue +625 -625
  399. package/src/components/sale/IOTMeterCenter.vue +443 -443
  400. package/src/components/sale/MachineMeterCenter.vue +591 -591
  401. package/src/components/sendsingle/CardChangeFill.vue +338 -338
  402. package/src/components/sendsingle/ChangeSendCard.vue +19 -19
  403. package/src/components/sendsingle/IotChangeFill.vue +471 -471
  404. package/src/components/sendsingle/MachineChangeFill.vue +143 -143
  405. package/src/components/sendsingle/PosMakeGas.vue +342 -342
  406. package/src/components/sendsingle/QueryTemporaryRepair.vue +226 -226
  407. package/src/components/sendsingle/TelLotChangeFill.vue +626 -626
  408. package/src/components/sendsingle/TemporarySingle.vue +480 -480
  409. package/src/components/sendsingle/ceshi.vue +51 -51
  410. package/src/components/sendsingle/onlineBuyGas.vue +632 -632
  411. package/src/components/sendsingle/onlineBuyGasOld.vue +19 -19
  412. package/src/components/sendsingle/onlineChangeMeter.vue +419 -419
  413. package/src/components/sendsingle/onlinemakecard.vue +413 -413
  414. package/src/components/sendsingle/onlineoperation.vue +401 -401
  415. package/src/components/sendsingle/onlinequeryuser.vue +468 -468
  416. package/src/components/sendsingle/posMaintainer.vue +277 -277
  417. package/src/components/shaoguan/DelayReply.vue +60 -60
  418. package/src/components/shaoguan/FailureEdit.vue +172 -172
  419. package/src/components/shaoguan/RepairDetailsChange.vue +399 -399
  420. package/src/components/shaoguan/RepairOrderChange.vue +673 -673
  421. package/src/components/shaoguan/RepairUserInfoChange.vue +532 -532
  422. package/src/components/shaoguan/WorkHistory.vue +346 -346
  423. package/src/components/shaoguan/WorkListAll.vue +521 -521
  424. package/src/components/shaoguan/config/DefaultPrint.js +7 -7
  425. package/src/components/telcount/TelByAttendant.vue +118 -118
  426. package/src/components/telcount/TelByLouQi.vue +113 -113
  427. package/src/components/telcount/TelByLouQiMingxi.vue +117 -117
  428. package/src/components/telcount/TelByOrderMan.vue +105 -105
  429. package/src/components/telcount/TelByWeiXiu.vue +199 -199
  430. package/src/components/telcount/TelByZhiHuan.vue +109 -109
  431. package/src/components/telreport/HotlineMonthly.vue +121 -121
  432. package/src/components/telreport/RepairsDetailsReport.vue +98 -98
  433. package/src/components/telreport/TableFaultReport.vue +96 -96
  434. package/src/components/telreport/TelAgentVoiceReport.vue +275 -275
  435. package/src/components/telreport/TelMan.vue +127 -127
  436. package/src/components/telreport/TelReport.vue +122 -122
  437. package/src/components/telreport/TelephoneManReport.vue +121 -121
  438. package/src/components/telreport/Traffic.vue +94 -94
  439. package/src/components/telreport/Trafficassess.vue +121 -121
  440. package/src/components/temp/BusinessMessage.vue +60 -60
  441. package/src/components/temp/BusinesscheckInfo.vue +82 -82
  442. package/src/components/temp/CallRecords.vue +86 -86
  443. package/src/components/temp/ChangemeterInfo.vue +75 -75
  444. package/src/components/temp/DeviceInfo.vue +80 -80
  445. package/src/components/temp/DisableInforMation.vue +82 -82
  446. package/src/components/temp/HandplanInfo.vue +78 -78
  447. package/src/components/temp/InfoTable.vue +134 -134
  448. package/src/components/temp/InstructInfo.vue +86 -86
  449. package/src/components/temp/Main.vue +375 -375
  450. package/src/components/temp/MetereadInfo.vue +83 -83
  451. package/src/components/temp/MetterInfo.vue +92 -92
  452. package/src/components/temp/OldRepairList.vue +100 -100
  453. package/src/components/temp/ParamManager/ParamPage.vue +285 -285
  454. package/src/components/temp/ParamManager/SinglePage.vue +161 -161
  455. package/src/components/temp/RepairList.vue +125 -125
  456. package/src/components/temp/SecurityMessage.vue +64 -64
  457. package/src/components/temp/SecuritycheckInfo.vue +73 -73
  458. package/src/components/temp/SellInfo.vue +153 -153
  459. package/src/components/temp/TelList.vue +99 -99
  460. package/src/components/temp/rightview/CardList.vue +287 -287
  461. package/src/components/temp/rightview/RecordCancel.vue +103 -103
  462. package/src/components/temp/rightview/carddetail/AddUserDetail.vue +65 -65
  463. package/src/components/temp/rightview/carddetail/BankDKDetail.vue +75 -75
  464. package/src/components/temp/rightview/carddetail/BankPay.vue +75 -75
  465. package/src/components/temp/rightview/carddetail/CancellationDetail.vue +58 -58
  466. package/src/components/temp/rightview/carddetail/CardMeterCenterDetail.vue +58 -58
  467. package/src/components/temp/rightview/carddetail/CardOverUserDetail.vue +62 -62
  468. package/src/components/temp/rightview/carddetail/ChangeMeterDetail.vue +70 -70
  469. package/src/components/temp/rightview/carddetail/OtherChargeDetail.vue +56 -56
  470. package/src/components/temp/rightview/carddetail/RefundDetail.vue +63 -63
  471. package/src/components/temp/rightview/carddetail/ReissueBill.vue +165 -165
  472. package/src/components/temp/rightview/carddetail/SortingQuery.vue +295 -295
  473. package/src/components/temp/rightview/carddetail/UserChangeDetail.vue +77 -77
  474. package/src/components/temp/rightview/carddetail/WeChatPay.vue +75 -75
  475. package/src/components/temp/server/ChangeDeclare.vue +45 -45
  476. package/src/components/temp/server/LoadData.vue +60 -60
  477. package/src/components/temp/server/Login.vue +401 -401
  478. package/src/components/temp/server/ModifyPw.vue +143 -143
  479. package/src/components/tongcheng/DistributeWork.vue +129 -129
  480. package/src/components/tongcheng/InfoTable.vue +55 -55
  481. package/src/components/tongcheng/MetterInfo.vue +90 -90
  482. package/src/components/tongcheng/RepairsWork.vue +788 -788
  483. package/src/components/tongcheng/SellInfo.vue +152 -152
  484. package/src/components/tongcheng/StandServer.vue +24 -24
  485. package/src/components/tongcheng/UserOperate.vue +43 -43
  486. package/src/components/tongcheng/VoiceServer.vue +136 -136
  487. package/src/components/tongcheng/WorkListAll.vue +535 -535
  488. package/src/components/weinan/ComplainMsg.vue +141 -141
  489. package/src/components/weinan/ComplainWork.vue +205 -205
  490. package/src/components/weinan/Console.vue +418 -418
  491. package/src/components/weinan/DistributeWork.vue +138 -138
  492. package/src/components/weinan/ExportExcel.vue +204 -204
  493. package/src/components/weinan/FailureEdit.vue +182 -182
  494. package/src/components/weinan/InfoTable.vue +67 -67
  495. package/src/components/weinan/RecordList.vue +299 -299
  496. package/src/components/weinan/RepairFirstV.vue +547 -547
  497. package/src/components/weinan/RepairInfo.vue +163 -163
  498. package/src/components/weinan/RepairListTel.vue +96 -96
  499. package/src/components/weinan/RepairOrderV.vue +1447 -1447
  500. package/src/components/weinan/RepairUserInfo.vue +533 -533
  501. package/src/components/weinan/RepairsWork.vue +806 -806
  502. package/src/components/weinan/Seekwork.vue +178 -178
  503. package/src/components/weinan/SiteChange.vue +228 -228
  504. package/src/components/weinan/SiteSend.vue +228 -228
  505. package/src/components/weinan/SiteSendWeixiu.vue +268 -268
  506. package/src/components/weinan/StandWorkWeixiu.vue +91 -91
  507. package/src/components/weinan/TelByAttendant.vue +110 -110
  508. package/src/components/weinan/TelFindUser.vue +241 -241
  509. package/src/components/weinan/WorkList.vue +726 -726
  510. package/src/components/weinan/WorkListAll.vue +974 -974
  511. package/src/components/weinan/WorkListWeixiu.vue +608 -608
  512. package/src/components/workOrderApplication/OrderWorkDetail.vue +796 -796
  513. package/src/components/workOrderApplication/orderApplicationManage.vue +98 -98
  514. package/src/components/workOrderApplication/orderApply.vue +57 -57
  515. package/src/components/workOrderApplication/orderTable.vue +214 -214
  516. package/src/components/workOrderApplication/orderWork.vue +114 -114
  517. package/src/components/workorder/AfTabset.vue +125 -125
  518. package/src/components/workorder/AndroidStopGasManager.vue +270 -270
  519. package/src/components/workorder/AppInstallationMaterial.vue +613 -613
  520. package/src/components/workorder/ChangeMeter.vue +546 -546
  521. package/src/components/workorder/ChangeMeterList.vue +236 -236
  522. package/src/components/workorder/ChangeMeterPage.vue +506 -506
  523. package/src/components/workorder/CompletedInstall.vue +214 -214
  524. package/src/components/workorder/CompletedRepair.vue +321 -321
  525. package/src/components/workorder/CookingUtensils.vue +134 -134
  526. package/src/components/workorder/DelayApply.vue +105 -105
  527. package/src/components/workorder/DeviceService.vue +133 -133
  528. package/src/components/workorder/DoorService.vue +355 -355
  529. package/src/components/workorder/FaultAll.vue +826 -826
  530. package/src/components/workorder/FirstGasCheck.vue +310 -310
  531. package/src/components/workorder/InputSelect.vue +110 -110
  532. package/src/components/workorder/InstallFirst.vue +517 -517
  533. package/src/components/workorder/InstallUpLoad.vue +111 -111
  534. package/src/components/workorder/MaterialSum.vue +238 -238
  535. package/src/components/workorder/MonitorMSend.vue +202 -202
  536. package/src/components/workorder/Othercharge.vue +477 -477
  537. package/src/components/workorder/Outlay.vue +236 -236
  538. package/src/components/workorder/PhoneGroupResend.vue +88 -88
  539. package/src/components/workorder/PhoneStandWork.vue +354 -354
  540. package/src/components/workorder/PhoneUpDetail.vue +1041 -1041
  541. package/src/components/workorder/PhoneUpUserinfo.vue +1041 -1041
  542. package/src/components/workorder/PhotoWrite.vue +116 -116
  543. package/src/components/workorder/Pipeline.vue +497 -497
  544. package/src/components/workorder/QueryTemporaryRepair.vue +220 -220
  545. package/src/components/workorder/ReadCardPage.vue +217 -217
  546. package/src/components/workorder/RepairDetails22.vue +128 -128
  547. package/src/components/workorder/RepairFirst.vue +170 -170
  548. package/src/components/workorder/RepairFirstOld.vue +410 -410
  549. package/src/components/workorder/RepairFirstV.vue +673 -673
  550. package/src/components/workorder/RepairFirstVnew.vue +542 -542
  551. package/src/components/workorder/RepairInfo.vue +166 -166
  552. package/src/components/workorder/RepairMatterInfo.vue +186 -186
  553. package/src/components/workorder/RepairOrder.vue +688 -688
  554. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  555. package/src/components/workorder/RepairOrderVnew.vue +868 -868
  556. package/src/components/workorder/RepairSend.vue +264 -264
  557. package/src/components/workorder/RepairUserInfo.vue +532 -532
  558. package/src/components/workorder/Repairpage.vue +100 -100
  559. package/src/components/workorder/RepairsVisit.vue +319 -319
  560. package/src/components/workorder/SafeCheckService.vue +355 -355
  561. package/src/components/workorder/SubstitFirstV.vue +143 -143
  562. package/src/components/workorder/SubstitutionPage.vue +100 -100
  563. package/src/components/workorder/TelChangeMatter.vue +231 -231
  564. package/src/components/workorder/TemporarySingle.vue +480 -480
  565. package/src/components/workorder/TroubleRemoval.vue +419 -419
  566. package/src/components/workorder/UpLoad.vue +111 -111
  567. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  568. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  569. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  570. package/src/expandcss.less +620 -620
  571. package/src/filiale/fugu/pc/ComplainWork.vue +206 -206
  572. package/src/filiale/fugu/pc/FailureEdit.vue +183 -183
  573. package/src/filiale/fugu/pc/RepairsWork.vue +793 -793
  574. package/src/filiale/fugu/pc/Seekwork.vue +182 -182
  575. package/src/filiale/fugu/telephone.js +16 -16
  576. package/src/filiale/furuike/android/CompletedRepair.vue +210 -210
  577. package/src/filiale/furuike/android/FaultAll.vue +861 -861
  578. package/src/filiale/furuike/android/Materials.vue +410 -410
  579. package/src/filiale/furuike/android/RepairFirstVnew.vue +580 -580
  580. package/src/filiale/furuike/android/RepairOrderVnew.vue +890 -890
  581. package/src/filiale/furuike/pc/Auxfunc.vue +109 -109
  582. package/src/filiale/furuike/pc/CallRcords.vue +109 -109
  583. package/src/filiale/furuike/pc/ChangemeterInfo.vue +87 -87
  584. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  585. package/src/filiale/furuike/pc/DeviceInfo.vue +82 -82
  586. package/src/filiale/furuike/pc/DisableInforMation.vue +82 -82
  587. package/src/filiale/furuike/pc/FailureEdit.vue +198 -198
  588. package/src/filiale/furuike/pc/HandplanInfo.vue +78 -78
  589. package/src/filiale/furuike/pc/InfoTable.vue +134 -134
  590. package/src/filiale/furuike/pc/InstructInfo.vue +86 -86
  591. package/src/filiale/furuike/pc/LineReport.vue +215 -215
  592. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +400 -400
  593. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +63 -63
  594. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +381 -381
  595. package/src/filiale/furuike/pc/MetereadInfo.vue +82 -82
  596. package/src/filiale/furuike/pc/MetterInfo.vue +92 -92
  597. package/src/filiale/furuike/pc/NewRepairPaper.vue +415 -415
  598. package/src/filiale/furuike/pc/ProblemList.vue +170 -170
  599. package/src/filiale/furuike/pc/QueryVisitHistory.vue +183 -183
  600. package/src/filiale/furuike/pc/RecordListLeft.vue +259 -259
  601. package/src/filiale/furuike/pc/ReminderOrder.vue +50 -50
  602. package/src/filiale/furuike/pc/RepairList.vue +102 -102
  603. package/src/filiale/furuike/pc/RepairsWork.vue +918 -918
  604. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +128 -128
  605. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  606. package/src/filiale/furuike/pc/SellInfo.vue +158 -158
  607. package/src/filiale/furuike/pc/TableReport.vue +160 -160
  608. package/src/filiale/furuike/pc/TelFindUser.vue +229 -229
  609. package/src/filiale/furuike/pc/TelLossList.vue +145 -145
  610. package/src/filiale/furuike/pc/TelePhoneUpload.vue +279 -279
  611. package/src/filiale/furuike/pc/TextServer.vue +168 -168
  612. package/src/filiale/furuike/pc/VoiceServer.vue +216 -216
  613. package/src/filiale/furuike/pc/WorkCenter.vue +104 -104
  614. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  615. package/src/filiale/furuike/pc/WorkListAllNew.vue +855 -855
  616. package/src/filiale/furuike/telephone.js +115 -115
  617. package/src/filiale/furuike/telephoneAndroid.js +23 -23
  618. package/src/filiale/gehua/pc/Console.vue +676 -676
  619. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +285 -285
  620. package/src/filiale/gehua/pc/TelFindUser.vue +214 -214
  621. package/src/filiale/gehua/telephone.js +16 -16
  622. package/src/filiale/gehua/telephoneAndroid.js +9 -9
  623. package/src/filiale/gongyi/android/RepairDetails.vue +542 -542
  624. package/src/filiale/gongyi/android/RepairFirstV.vue +537 -537
  625. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  626. package/src/filiale/gongyi/pc/WorkListAll.vue +632 -632
  627. package/src/filiale/gongyi/telephone.js +13 -13
  628. package/src/filiale/gongyi/telephoneAndroid.js +15 -15
  629. package/src/filiale/guangxi/android/FaultAll.vue +896 -896
  630. package/src/filiale/guangxi/telephoneAndroid.js +13 -13
  631. package/src/filiale/hanzhong/PagedList.js +248 -248
  632. package/src/filiale/hanzhong/android/Outlay.vue +265 -265
  633. package/src/filiale/hanzhong/android/RepairInfo.vue +167 -167
  634. package/src/filiale/hanzhong/hzSelectUtil.js +84 -84
  635. package/src/filiale/hanzhong/md5.js +266 -266
  636. package/src/filiale/hanzhong/pc/AnalysisMain.vue +477 -477
  637. package/src/filiale/hanzhong/pc/Console.vue +884 -884
  638. package/src/filiale/hanzhong/pc/DistributeWork.vue +420 -420
  639. package/src/filiale/hanzhong/pc/FailureEdit.vue +195 -195
  640. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +84 -84
  641. package/src/filiale/hanzhong/pc/RecordList.vue +53 -53
  642. package/src/filiale/hanzhong/pc/RecordListLeft.vue +196 -196
  643. package/src/filiale/hanzhong/pc/Seekwork.vue +318 -318
  644. package/src/filiale/hanzhong/pc/StateStatistics.vue +292 -292
  645. package/src/filiale/hanzhong/pc/TelFindUser.vue +224 -224
  646. package/src/filiale/hanzhong/pc/TelLossList.vue +137 -137
  647. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +104 -104
  648. package/src/filiale/hanzhong/pc/TelephoneType.vue +269 -269
  649. package/src/filiale/hanzhong/pc/TextServer.vue +157 -157
  650. package/src/filiale/hanzhong/pc/VoiceServer.vue +208 -208
  651. package/src/filiale/hanzhong/pc/message/AllUser.vue +615 -615
  652. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +638 -638
  653. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +397 -397
  654. package/src/filiale/hanzhong/pc/message/MessageList.vue +635 -635
  655. package/src/filiale/hanzhong/pc/message/MessageManage.vue +136 -136
  656. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +127 -127
  657. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +121 -121
  658. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +92 -92
  659. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +90 -90
  660. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +121 -121
  661. package/src/filiale/hanzhong/telephone.js +48 -48
  662. package/src/filiale/hanzhong/telephoneAndroid.js +15 -15
  663. package/src/filiale/kelai/android/AppTakePic.vue +143 -143
  664. package/src/filiale/kelai/android/Outlay.vue +274 -274
  665. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -176
  666. package/src/filiale/kelai/android/RepairFirstV.vue +552 -552
  667. package/src/filiale/kelai/android/RepairOrderV.vue +1446 -1446
  668. package/src/filiale/kelai/android/RepairTypeList.vue +170 -170
  669. package/src/filiale/kelai/android/RepairUserInfo.vue +537 -537
  670. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +612 -612
  671. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +128 -128
  672. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +69 -69
  673. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +82 -82
  674. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +60 -60
  675. package/src/filiale/kelai/pc/CallReport/Time.vue +107 -107
  676. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +76 -76
  677. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +66 -66
  678. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +297 -297
  679. package/src/filiale/kelai/pc/RecordListLeft.vue +188 -188
  680. package/src/filiale/kelai/pc/Seekwork.vue +308 -308
  681. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +276 -276
  682. package/src/filiale/kelai/pc/TelFindUser.vue +214 -214
  683. package/src/filiale/kelai/pc/TelLossList.vue +154 -154
  684. package/src/filiale/kelai/pc/TextServer.vue +157 -157
  685. package/src/filiale/kelai/pc/Trafficassess.vue +159 -159
  686. package/src/filiale/kelai/pc/VisitInfo.vue +268 -268
  687. package/src/filiale/kelai/pc/VoiceServer.vue +227 -227
  688. package/src/filiale/kelai/pc/WorkCenterList.vue +315 -315
  689. package/src/filiale/kelai/pc/WorkListAllNew.vue +717 -717
  690. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -55
  691. package/src/filiale/kelai/telephone.js +40 -40
  692. package/src/filiale/kelai/telephoneAndroid.js +19 -19
  693. package/src/filiale/liaoyuan/android/FaultAll.vue +737 -737
  694. package/src/filiale/liaoyuan/android/RepairDetails.vue +493 -493
  695. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  696. package/src/filiale/liaoyuan/telephoneAndroid.js +13 -13
  697. package/src/filiale/meihekou/android/Othercharge.vue +443 -443
  698. package/src/filiale/meihekou/android/createQRcode.vue +192 -192
  699. package/src/filiale/meihekou/android/onlineBuyGas.vue +793 -793
  700. package/src/filiale/meihekou/telephone.js +13 -13
  701. package/src/filiale/meihekou/telephoneAndroid.js +18 -18
  702. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1032 -1032
  703. package/src/filiale/qianneng/android/Examine.vue +513 -513
  704. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  705. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  706. package/src/filiale/qianneng/android/PhoneStandWork.vue +412 -412
  707. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  708. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  709. package/src/filiale/qianneng/android/RepairFirstV.vue +615 -615
  710. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  711. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  712. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  713. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -537
  714. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  715. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  716. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  717. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  718. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  719. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -260
  720. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -144
  721. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  722. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  723. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -992
  724. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  725. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  726. package/src/filiale/qianneng/pc/WorkListAllNew.vue +749 -749
  727. package/src/filiale/qianneng/pc/changetable.vue +273 -273
  728. package/src/filiale/qianneng/telephone.js +22 -22
  729. package/src/filiale/qianneng/telephoneAndroid.js +22 -22
  730. package/src/filiale/rizhao/android/FaultAll.vue +893 -893
  731. package/src/filiale/rizhao/android/Othercharge.vue +423 -423
  732. package/src/filiale/rizhao/android/RepairFirstV.vue +525 -525
  733. package/src/filiale/rizhao/android/RepairInfo.vue +172 -172
  734. package/src/filiale/rizhao/android/RepairOrderV.vue +1415 -1415
  735. package/src/filiale/rizhao/pc/AnalysisMain.vue +355 -355
  736. package/src/filiale/rizhao/pc/CallRecords.vue +89 -89
  737. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +87 -87
  738. package/src/filiale/rizhao/pc/ComplainWork.vue +357 -357
  739. package/src/filiale/rizhao/pc/Console.vue +456 -456
  740. package/src/filiale/rizhao/pc/DispatchMan.vue +100 -100
  741. package/src/filiale/rizhao/pc/DispatchWork.vue +100 -100
  742. package/src/filiale/rizhao/pc/DistributeWork.vue +188 -188
  743. package/src/filiale/rizhao/pc/FailureEdit.vue +183 -183
  744. package/src/filiale/rizhao/pc/FailureEditFire.vue +169 -169
  745. package/src/filiale/rizhao/pc/FailureEditRepair.vue +174 -174
  746. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +890 -890
  747. package/src/filiale/rizhao/pc/NewRepairPaper.vue +377 -377
  748. package/src/filiale/rizhao/pc/RecordListLeft.vue +189 -189
  749. package/src/filiale/rizhao/pc/ReminderOrder.vue +51 -51
  750. package/src/filiale/rizhao/pc/RepairsWork.vue +936 -936
  751. package/src/filiale/rizhao/pc/Seekwork.vue +339 -339
  752. package/src/filiale/rizhao/pc/SiteSend.vue +258 -258
  753. package/src/filiale/rizhao/pc/StateStatistics.vue +292 -292
  754. package/src/filiale/rizhao/pc/TelFindUser.vue +243 -243
  755. package/src/filiale/rizhao/pc/TelMan.vue +133 -133
  756. package/src/filiale/rizhao/pc/TeleInfo.vue +142 -142
  757. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +72 -72
  758. package/src/filiale/rizhao/pc/TelephoneType.vue +272 -272
  759. package/src/filiale/rizhao/pc/Traffic.vue +91 -91
  760. package/src/filiale/rizhao/pc/UserOperate.vue +49 -49
  761. package/src/filiale/rizhao/pc/VoiceServer.vue +219 -219
  762. package/src/filiale/rizhao/pc/WorkCenterList.vue +294 -294
  763. package/src/filiale/rizhao/pc/WorkHistory.vue +541 -541
  764. package/src/filiale/rizhao/pc/WorkList.vue +783 -783
  765. package/src/filiale/rizhao/pc/WorkListAllNew.vue +673 -673
  766. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +134 -134
  767. package/src/filiale/rizhao/telephone.js +57 -57
  768. package/src/filiale/rizhao/telephoneAndroid.js +16 -16
  769. package/src/filiale/rongcheng/CliWorkListAll.vue +701 -701
  770. package/src/filiale/rongcheng/FaultAll.vue +713 -713
  771. package/src/filiale/rongcheng/RepairFirstV.vue +418 -418
  772. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -1445
  773. package/src/filiale/rongcheng/RepairUserInfo.vue +539 -539
  774. package/src/filiale/rongcheng/ServiceDetails.vue +53 -53
  775. package/src/filiale/rongcheng/WorkListAll.vue +727 -727
  776. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +303 -303
  777. package/src/filiale/rongcheng/checkmsgZG.vue +243 -243
  778. package/src/filiale/rongcheng/onlineBuyGas.vue +799 -799
  779. package/src/filiale/rongcheng/onlineoperation.vue +383 -383
  780. package/src/filiale/rongcheng/onlinequeryuser.vue +460 -460
  781. package/src/filiale/rongcheng/telephone.js +19 -19
  782. package/src/filiale/rongcheng/telephoneAndroid.js +19 -19
  783. package/src/filiale/shanxian/android/RepairFirstV.vue +639 -639
  784. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -826
  785. package/src/filiale/shanxian/pc/WorkList.vue +823 -823
  786. package/src/filiale/shanxian/telephone.js +13 -13
  787. package/src/filiale/shanxian/telephoneAndroid.js +13 -13
  788. package/src/filiale/shaoguan/pc/WorkCenterList.vue +326 -326
  789. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +683 -683
  790. package/src/filiale/shaoguan/telephone.js +14 -14
  791. package/src/filiale/shexian/android/AddMyTask.vue +354 -354
  792. package/src/filiale/shexian/android/CompletedRepair.vue +280 -280
  793. package/src/filiale/shexian/android/FaultAll.vue +847 -847
  794. package/src/filiale/shexian/android/Outlay.vue +266 -266
  795. package/src/filiale/shexian/android/RepairFirstV.vue +775 -775
  796. package/src/filiale/shexian/android/RepairInfo.vue +182 -182
  797. package/src/filiale/shexian/android/RepairOrderV.vue +732 -732
  798. package/src/filiale/shexian/pc/NewRepairPaper.vue +374 -374
  799. package/src/filiale/shexian/pc/TelByOrderMan.vue +109 -109
  800. package/src/filiale/shexian/pc/TelByOrderManCount.vue +124 -124
  801. package/src/filiale/shexian/pc/TelByRepairType.vue +111 -111
  802. package/src/filiale/shexian/pc/WorkList.vue +764 -764
  803. package/src/filiale/shexian/pc/WorkListAllNew.vue +718 -718
  804. package/src/filiale/shexian/telephone.js +18 -18
  805. package/src/filiale/shexian/telephoneAndroid.js +32 -32
  806. package/src/filiale/shimen/pc/ChangemeterInfo.vue +108 -108
  807. package/src/filiale/shimen/pc/ComplainWork.vue +297 -297
  808. package/src/filiale/shimen/pc/DistributeWork.vue +173 -173
  809. package/src/filiale/shimen/pc/InfoTable.vue +122 -122
  810. package/src/filiale/shimen/pc/RepairList.vue +109 -109
  811. package/src/filiale/shimen/pc/RepairsWork.vue +803 -803
  812. package/src/filiale/shimen/pc/Seekwork.vue +307 -307
  813. package/src/filiale/shimen/pc/SellInfo.vue +87 -87
  814. package/src/filiale/shimen/pc/WorkListAllNew.vue +680 -680
  815. package/src/filiale/shimen/telephone.js +23 -23
  816. package/src/filiale/tianke/android/FaultAll.vue +854 -854
  817. package/src/filiale/tianke/android/RepairFirstV.vue +614 -614
  818. package/src/filiale/tianke/android.js +12 -12
  819. package/src/filiale/tianke/pc/DistributeWork.vue +180 -180
  820. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +801 -801
  821. package/src/filiale/tianke/pc/NewRepairPaper.vue +370 -370
  822. package/src/filiale/tianke/pc/RepairsWork.vue +794 -794
  823. package/src/filiale/tianke/pc/WorkList.vue +769 -769
  824. package/src/filiale/tianke/telephone.js +17 -17
  825. package/src/filiale/tianke/telephoneAndroid.js +13 -13
  826. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +321 -321
  827. package/src/filiale/tongchuan/android/CompletedRepair.vue +211 -211
  828. package/src/filiale/tongchuan/android/PhoneStandWork.vue +409 -409
  829. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +1005 -1005
  830. package/src/filiale/tongchuan/android/RepairFirstV.vue +646 -646
  831. package/src/filiale/tongchuan/android/RepairInfo.vue +172 -172
  832. package/src/filiale/tongchuan/android/RepairOrderV.vue +1446 -1446
  833. package/src/filiale/tongchuan/android/TicketDetails.vue +411 -411
  834. package/src/filiale/tongchuan/pc/AnalysisMain.vue +355 -355
  835. package/src/filiale/tongchuan/pc/CallRecords.vue +96 -96
  836. package/src/filiale/tongchuan/pc/CheckWork.vue +289 -289
  837. package/src/filiale/tongchuan/pc/ComplainWork.vue +324 -324
  838. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +148 -148
  839. package/src/filiale/tongchuan/pc/DistributeWork.vue +179 -179
  840. package/src/filiale/tongchuan/pc/ExportExcel.vue +204 -204
  841. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +115 -115
  842. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +236 -236
  843. package/src/filiale/tongchuan/pc/RecordListLeft.vue +216 -216
  844. package/src/filiale/tongchuan/pc/RepairList.vue +102 -102
  845. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +133 -133
  846. package/src/filiale/tongchuan/pc/RepairsWork.vue +836 -836
  847. package/src/filiale/tongchuan/pc/SeatInfo.vue +325 -325
  848. package/src/filiale/tongchuan/pc/Seekwork.vue +307 -307
  849. package/src/filiale/tongchuan/pc/ServiceDetails.vue +112 -112
  850. package/src/filiale/tongchuan/pc/StateStatistics.vue +292 -292
  851. package/src/filiale/tongchuan/pc/TelFindUser.vue +278 -278
  852. package/src/filiale/tongchuan/pc/TelMan.vue +142 -142
  853. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +102 -102
  854. package/src/filiale/tongchuan/pc/TelephoneType.vue +272 -272
  855. package/src/filiale/tongchuan/pc/Traffic.vue +103 -103
  856. package/src/filiale/tongchuan/pc/UserWork.vue +805 -805
  857. package/src/filiale/tongchuan/pc/VisitInfo.vue +305 -305
  858. package/src/filiale/tongchuan/pc/VisitListWork.vue +251 -251
  859. package/src/filiale/tongchuan/pc/VoiceServer.vue +218 -218
  860. package/src/filiale/tongchuan/pc/WorkCenterList.vue +297 -297
  861. package/src/filiale/tongchuan/pc/WorkHistory.vue +521 -521
  862. package/src/filiale/tongchuan/pc/WorkList.vue +811 -811
  863. package/src/filiale/tongchuan/pc/WorkListAll.vue +731 -731
  864. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +294 -294
  865. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +376 -376
  866. package/src/filiale/tongchuan/pc/visitPlanList.vue +342 -342
  867. package/src/filiale/tongchuan/pc/visitPlanManage.vue +599 -599
  868. package/src/filiale/tongchuan/pc/visitServiceList.vue +285 -285
  869. package/src/filiale/tongchuan/telephone.js +52 -52
  870. package/src/filiale/tongchuan/telephoneAndroid.js +22 -22
  871. package/src/filiale/v3new/android/FaultAll.vue +809 -809
  872. package/src/filiale/v3new/android/RepairFirstV.vue +633 -633
  873. package/src/filiale/v3new/pc/SiteBack.vue +83 -83
  874. package/src/filiale/v3new/pc/WorkCenter.vue +104 -104
  875. package/src/filiale/v3new/pc/WorkCenterList.vue +274 -274
  876. package/src/filiale/v3new/pc/WorkHistory.vue +537 -537
  877. package/src/filiale/v3new/pc/WorkList.vue +766 -766
  878. package/src/filiale/v3new/pc/WorkListNew.vue +706 -706
  879. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +51 -51
  880. package/src/filiale/v3new/telephone.js +19 -19
  881. package/src/filiale/v3new/telephoneAndroid.js +15 -15
  882. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +586 -586
  883. package/src/filiale/weinanct/android/FaultAll.vue +854 -854
  884. package/src/filiale/weinanct/android/RepairDetails.vue +508 -508
  885. package/src/filiale/weinanct/android/RepairFirstV.vue +635 -635
  886. package/src/filiale/weinanct/android/RepairOrderV.vue +1443 -1443
  887. package/src/filiale/weinanct/pc/TelFindUser.vue +213 -213
  888. package/src/filiale/weinanct/pc/VoiceServer.vue +208 -208
  889. package/src/filiale/weinanct/telephone.js +14 -14
  890. package/src/filiale/weinanct/telephoneAndroid.js +20 -20
  891. package/src/filiale/weinanct//350/257/264/346/230/216.txt +1 -1
  892. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +6 -0
  893. package/src/filiale/wenxi/android/RepairFirstV.vue +537 -537
  894. package/src/filiale/wenxi/android/RepairOrderV.vue +31 -637
  895. package/src/filiale/wenxi/android/ZHihuanFirst.vue +502 -502
  896. package/src/filiale/wenxi/pc/DistributeWork.vue +163 -163
  897. package/src/filiale/wenxi/pc/FailureEdit.vue +206 -206
  898. package/src/filiale/wenxi/pc/RepairsWork.vue +774 -774
  899. package/src/filiale/wenxi/pc/TelFindUser.vue +35 -35
  900. package/src/filiale/wenxi/pc/VoiceServer.vue +214 -214
  901. package/src/filiale/wenxi/pc/WorkListAll.vue +1 -1
  902. package/src/filiale/wenxi/telephone.js +16 -16
  903. package/src/filiale/wuan/Util.js +461 -461
  904. package/src/filiale/wuan/android/AddMyTask.vue +227 -227
  905. package/src/filiale/wuan/android/RepairInfo.vue +136 -136
  906. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  907. package/src/filiale/wuan/android/RepairUserInfo.vue +581 -581
  908. package/src/filiale/wuan/pc/BatchList.vue +329 -329
  909. package/src/filiale/wuan/pc/BatchListSanhu.vue +329 -329
  910. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +115 -115
  911. package/src/filiale/wuan/pc/CheckWork.vue +263 -263
  912. package/src/filiale/wuan/pc/DistributeWork.vue +136 -136
  913. package/src/filiale/wuan/pc/FailureEdit.vue +174 -174
  914. package/src/filiale/wuan/pc/GasWorkSanhu.vue +817 -817
  915. package/src/filiale/wuan/pc/RepairsWork.vue +848 -848
  916. package/src/filiale/wuan/pc/Seekwork.vue +311 -311
  917. package/src/filiale/wuan/pc/TelFindUser.vue +229 -229
  918. package/src/filiale/wuan/pc/WorkListAll.vue +642 -642
  919. package/src/filiale/wuan/telephone.js +23 -23
  920. package/src/filiale/wuan/telephoneAndroid.js +17 -17
  921. package/src/filiale/wuhai/pc/CallRcords.vue +109 -109
  922. package/src/filiale/wuhai/pc/ComplainWork.vue +324 -324
  923. package/src/filiale/wuhai/pc/Console.vue +432 -432
  924. package/src/filiale/wuhai/pc/DistributeWork.vue +173 -173
  925. package/src/filiale/wuhai/pc/FailureEdit.vue +190 -190
  926. package/src/filiale/wuhai/pc/InfoTable.vue +135 -135
  927. package/src/filiale/wuhai/pc/NewRepairPaper.vue +380 -380
  928. package/src/filiale/wuhai/pc/RecordListLeft.vue +202 -202
  929. package/src/filiale/wuhai/pc/RepairsWork.vue +811 -811
  930. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +92 -92
  931. package/src/filiale/wuhai/pc/Seekwork.vue +361 -361
  932. package/src/filiale/wuhai/pc/ServiceRcords.vue +146 -146
  933. package/src/filiale/wuhai/pc/TelFindUser.vue +256 -256
  934. package/src/filiale/wuhai/pc/VoiceServer.vue +211 -211
  935. package/src/filiale/wuhai/pc/WorkCenter.vue +104 -104
  936. package/src/filiale/wuhai/pc/WorkCenterList.vue +337 -337
  937. package/src/filiale/wuhai/pc/WorkListAllNew.vue +715 -715
  938. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +54 -54
  939. package/src/filiale/wuhai/telephone.js +35 -35
  940. package/src/filiale/xinkang/android/FaultAll.vue +840 -840
  941. package/src/filiale/xinkang/android/RepairFirstV.vue +484 -484
  942. package/src/filiale/xinkang/telephoneAndroid.js +14 -14
  943. package/src/filiale/yuansheng/android/RepairFirstV.vue +636 -636
  944. package/src/filiale/yuansheng/android/RepairInfo.vue +166 -166
  945. package/src/filiale/yuansheng/pc/DistributeWork.vue +177 -177
  946. package/src/filiale/yuansheng/pc/FailureEdit.vue +188 -188
  947. package/src/filiale/yuansheng/pc/HandplanInfo.vue +78 -78
  948. package/src/filiale/yuansheng/pc/MetereadInfo.vue +83 -83
  949. package/src/filiale/yuansheng/pc/ReservationWork.vue +156 -156
  950. package/src/filiale/yuansheng/pc/TelFindUser.vue +237 -237
  951. package/src/filiale/yuansheng/pc/VoiceServer.vue +208 -208
  952. package/src/filiale/yuansheng/telephone.js +20 -20
  953. package/src/filiale/yuansheng/telephoneAndroid.js +16 -16
  954. package/src/filiale/yuncheng/pc/TelFindUser.vue +302 -302
  955. package/src/filiale/yuncheng/telephone.js +12 -12
  956. package/src/filiale/zhongsheng/android/FailureShow.vue +61 -61
  957. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -741
  958. package/src/filiale/zhongsheng/android/RepairFirstV.vue +464 -464
  959. package/src/filiale/zhongsheng/android/RepairInfo.vue +133 -133
  960. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  961. package/src/filiale/zhongsheng/pc/ComplainWork.vue +299 -299
  962. package/src/filiale/zhongsheng/pc/Console.vue +432 -432
  963. package/src/filiale/zhongsheng/pc/DistributeWork.vue +173 -173
  964. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +836 -836
  965. package/src/filiale/zhongsheng/pc/InfoTable.vue +124 -124
  966. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  967. package/src/filiale/zhongsheng/pc/Seekwork.vue +283 -283
  968. package/src/filiale/zhongsheng/pc/TelFindUser.vue +216 -216
  969. package/src/filiale/zhongsheng/pc/WorkList.vue +805 -805
  970. package/src/filiale/zhongsheng/pc/WorkListAll.vue +628 -628
  971. package/src/filiale/zhongsheng/telephone.js +23 -23
  972. package/src/filiale/zhongsheng/telephoneAndroid.js +19 -19
  973. package/src/filiale/zhongyi/android/FaultAll.vue +854 -854
  974. package/src/filiale/zhongyi/android/RepairFirstV.vue +614 -614
  975. package/src/filiale/zhongyi/android.js +12 -12
  976. package/src/filiale/zhongyi/pc/DistributeWork.vue +180 -180
  977. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +801 -801
  978. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +370 -370
  979. package/src/filiale/zhongyi/pc/RepairsWork.vue +794 -794
  980. package/src/filiale/zhongyi/pc/WorkList.vue +769 -769
  981. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +672 -672
  982. package/src/filiale/zhongyi/telephone.js +18 -18
  983. package/src/filiale/zhongyi/telephoneAndroid.js +13 -13
  984. package/src/filiale/zhoukou/android/ChargeBill.vue +201 -201
  985. package/src/filiale/zhoukou/android/FaultAll.vue +779 -779
  986. package/src/filiale/zhoukou/android/Othercharge.vue +591 -591
  987. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +574 -574
  988. package/src/filiale/zhoukou/android/Outlay.vue +236 -236
  989. package/src/filiale/zhoukou/android/RepairDetails.vue +544 -544
  990. package/src/filiale/zhoukou/android/RepairFirstV.vue +542 -542
  991. package/src/filiale/zhoukou/android/RepairInfo.vue +136 -136
  992. package/src/filiale/zhoukou/android/RepairOrderV.vue +1383 -1383
  993. package/src/filiale/zhoukou/android/RepairUserInfo.vue +532 -532
  994. package/src/filiale/zhoukou/android/ZkBill.vue +191 -191
  995. package/src/filiale/zhoukou/android/createQRcode.vue +256 -256
  996. package/src/filiale/zhoukou/android/onlineBuyGas.vue +804 -804
  997. package/src/filiale/zhoukou/android/onlineoperation.vue +416 -416
  998. package/src/filiale/zhoukou/android/onlinequeryuser.vue +468 -468
  999. package/src/filiale/zhoukou/pc/ExportExcel.vue +204 -204
  1000. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +366 -366
  1001. package/src/filiale/zhoukou/pc/SiteSend.vue +265 -265
  1002. package/src/filiale/zhoukou/pc/WorkHistory.vue +514 -514
  1003. package/src/filiale/zhoukou/pc/WorkList.vue +653 -653
  1004. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +675 -675
  1005. package/src/filiale/zhoukou/telephone.js +18 -18
  1006. package/src/filiale/zhoukou/telephoneAndroid.js +33 -33
  1007. package/src/index.js +15 -15
  1008. package/src/main.js +1 -1
  1009. package/src/plugins/DataSql.js +569 -569
  1010. package/src/plugins/EmojiData.js +514 -514
  1011. package/src/plugins/EncryptUtil.js +53 -53
  1012. package/src/plugins/HttpLoad.js +93 -93
  1013. package/src/plugins/LoadData.js +40 -40
  1014. package/src/plugins/LoadParams.js +54 -54
  1015. package/src/plugins/LocalPagedList.js +107 -107
  1016. package/src/plugins/ObjTree.js +532 -532
  1017. package/src/plugins/TelGetSaleParams.js +63 -63
  1018. package/src/qrcode.js +618 -618
  1019. package/src/qrcode.min.js +1 -1
  1020. package/src/stores/exportConfig.js +10 -10
  1021. package/src/stores/wxconfig.js +10 -10
  1022. package/src/telephone-android.js +367 -367
  1023. package/src/telephone-shaoguan.js +256 -256
  1024. package/src/telephone-tongcheng.js +254 -254
  1025. package/src/telephone.js +746 -746
  1026. package/src/telephoneanaly.less +704 -704
  1027. package/src/utils/LdapHelper.js +99 -99
  1028. package/src/weinan-android.js +350 -350
  1029. package/src/weinan.js +537 -537
  1030. package/static/fonts/font.css +6 -6
  1031. package/static/js/adapter.min.js +2049 -2049
  1032. package/static/js/bootstrap.min.js +7 -7
  1033. package/static/js/ctilink.js +1303 -1303
  1034. package/static/js/ctimsg.js +655 -655
  1035. package/static/js/janus.js +4034 -4034
  1036. package/static/js/jquery-2.1.1.min.js +5 -5
  1037. package/yarn-error.log +7872 -7872
  1038. package//345/221/274/345/217/253/345/267/245/345/215/225/351/205/215/347/275/256/350/257/264/346/230/216.md +6 -6
@@ -1,849 +1,849 @@
1
- <template>
2
- <div class="flex" style="background: #EDF2F9;border: 1px solid #B4BCCC;">
3
- <div class="span text-server">
4
- <div class='flex-row' id="text-service">
5
- <!-- Nav tabs -->
6
- <ul class="nav nav-tabs" role="tablist" style="overflow: auto;width: 7%">
7
- <li :id="'vc-tabset-li-text-service'+'-'+$index" v-for="user in users"
8
- v-bind:class="{'active': ($index === active), 'offline': !user.lineState}"
9
- @click.prevent="handleTabListClick($index, user)" :disabled="r.disabled">
10
- <a href="javascript:void(0)">
11
- {{user.name === "" ? '未' : user.name[0]}}
12
- <span class="badge">{{user.unreadNum === 0 ? '' : user.unreadNum}}</span>
13
- <span class="glyphicon glyphicon-remove" @click.stop="deleteUser($index, user)"></span>
14
- </a>
15
-
16
- </li>
17
- </ul>
18
- <!-- Tab panes -->
19
- <div class="flex" style="width: 90%">
20
- <div class="tab-content span" v-el:tab-content style="flex: 1;overflow: scroll" style="height: 100px;" v-el:msgs
21
- @scroll="scroll">
22
- <div role="tabpanel" v-show="$index === active" :transition="transition" v-for="user in users"
23
- style="padding: 10px;">
24
- <chat-msg :msgs="user.msgs"></chat-msg>
25
- </div>
26
- </div>
27
-
28
- <!-- 消息发送区域 -->
29
- <div class="send-msg">
30
- <div contentEditable="true" name="name" class="text-editor"
31
- style="max-width: 100%;word-wrap:break-word"
32
- @input="contentChanged" @keydown="handleKeys"
33
- @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" v-el:content>
34
- </div>
35
-
36
- <!-- <textarea contentEditable="true" name="name" rows="8" cols="80" style="resize: none; padding: 8px;flex: 1;background: #FFF;" v-model="content"
37
- @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" @keyup.enter.stop="send('text')" v-el:content></textarea> -->
38
- <div style="padding: 5px;height: auto;position: relative;">
39
- <div style="display: inline-block;">
40
- <img :src="'static/wechat/ziyuan.png'" alt="选择素材" v-if="this.typeuser!=='webUser'"
41
- style="height: 20px;cursor: pointer;" @click="selectMater()">
42
- <!-- 选择小表情 -->
43
- <emoji @select-emoji="contentAddIcon"></emoji>
44
- </div>
45
- <!-- <button type="button" name="button" class="btn btn-primary" >选择资源</button> -->
46
- <button type="button" name="button" class="btn btn-primary btn-xs" @click="send('text')"
47
- style="float: right;">发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;送
48
- </button>
49
- </div>
50
- </div>
51
-
52
- </div>
53
- </div>
54
-
55
- </div>
56
- <div id="mediaPane" style="display:flex; flex-direction: column; background-color:white; position: fixed; z-index: 9999; left:0px; right:0px; top: 0px; bottom:0px; padding-bottom: 30px;" v-show="show">
57
- <div style="height:auto; background-color:grey;">
58
- <button type="button" style="position:absolute; right: 10px; top:20px;" @click="close"><span>关闭</span></button>
59
- <h4 class="modal-title">选择发送素材</h4>
60
- <div style="position:fixed; bottom:0px; width: 300px; z-index:9999; height:auto;">
61
- <button type="button" style="margin: 0 auto; display:block; width: 100px;" @click='sendMater()'>发送</button>
62
- </div>
63
- </div>
64
- <div style="flex: 1; overflow: auto;">
65
- <materials use-type="use" v-ref:material>
66
- </materials>
67
- </div>
68
- </div>
69
- </div>
70
- </template>
71
-
72
- <script>
73
- import * as Util from '../Util'
74
- import co from 'co'
75
- import {HttpResetClass} from 'vue-client'
76
- import data from '../../stores/wxconfig'
77
- import * as emoji from '../../plugins/EmojiData'
78
- import Vue from "vue";
79
- let msgGen = function* (self) {
80
- try {
81
- // 话务员才去登录,维修员不登录
82
- if (!self.isRepairman) {
83
- console.log('开始登陆')
84
- // 话务员登陆
85
- let http = new HttpResetClass()
86
- let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
87
- aId: self.dualId,
88
- aBzType: "login",
89
- aName:self.dualName,
90
- }, {resolveMsg: null, rejectMsg: null})
91
-
92
- console.log('登陆返回的信息:', loginMsg)
93
- if (loginMsg.data.code !== 200) {
94
- self.$showAlert('登陆失败', 'danger', 0)
95
- return
96
- }
97
- }
98
- // 轮询获取消息
99
- self.getUerMsg()
100
- } catch (e) {
101
- // self.$showAlert(`登陆失败:${JSON.stringify(e)}`, 'danger', 0)
102
- console.log('登陆失败,请重试')
103
- }
104
-
105
- }
106
-
107
- let outGen = function* (self) {
108
- //维修员,不存在登出
109
- if (self.isRepairman)
110
- return
111
- // 话务员登出
112
- let http = new HttpResetClass()
113
-
114
- let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
115
- aId: self.dualId,
116
- aBzType: "logout",
117
- aName:self.dualName,
118
- }, {resolveMsg: null, rejectMsg: null})
119
- console.log('登出返回的信息:', loginMsg)
120
- if (loginMsg.data.code !== 200) {
121
- self.$showAlert('登陆失败')
122
- return
123
- }
124
- }
125
-
126
- export default {
127
- title: '文字客服',
128
- data() {
129
- return {
130
- webId: '',
131
- content: '',
132
- interval: '',
133
- fengongsi:'',
134
- gh_id:'',
135
- users: [
136
- ], // 接入用户
137
- show: false, // 选择素材
138
- // msgs: [],
139
- isTop: true, // 是否滚动到顶部
140
- dualId: null,
141
- dualRole: null,
142
- dualName: null,
143
- }
144
- },
145
- props: {
146
- active: {
147
- type: Number,
148
- default: 0
149
- },
150
- isRepairman: {
151
- default: false
152
- },
153
- typeuser: {
154
- type: String,
155
- default: 'webUser'
156
- }
157
- },
158
-
159
- ready() {
160
- this.fengongsi=this.$appdata.getSingleValue("分公司")
161
- this.gh_id=this.$appdata.getSingleValue("公众号ID")
162
- console.log(this.fengongsi)
163
- console.log(this.gh_id)
164
- console.log('当前是否是维修员:' + this.isRepairman)
165
- if (this.typeuser === 'webUser') {
166
- this.webId = '________________' + Util.randnum()
167
- console.log(this.webId)
168
- }
169
- if (this.isRepairman) {
170
- this.dualId = this.$login.f.name
171
- this.dualName = this.$login.f.name
172
- this.dualRole = 'repairman'
173
- } else {
174
- console.log('当前坐席:' + this.$login.f.id)
175
- this.dualId = this.$login.f.id
176
- this.dualName = this.$login.f.name
177
- this.dualRole = null
178
- }
179
-
180
- let gen = msgGen(this)
181
- co(gen)
182
- // document.getElementById("myDIV").addEventListener("wheel", myFunction);
183
-
184
- console.log('监听元素', this.$els.msgs + ':::::' + this.$androidUtil.getProxyUrl())
185
-
186
- this.$els.msgs.addEventListener("wheel", this.wheelUp)
187
- // 为Android滑动触屏添加事件
188
- this.$els.msgs.addEventListener("touchstart", this.touchStart)
189
- this.$els.msgs.addEventListener("touchend", this.touchEnd)
190
- },
191
- methods: {
192
- sendMessage(user, index) {
193
- user = {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name}
194
- console.log(user)
195
- this.active = index
196
- this.$dispatch('user', user)
197
- },
198
- getUerMsg() {
199
- let that = this
200
- let http = new HttpResetClass()
201
- console.log('轮询取消息')
202
- this.interval = setInterval(() => {
203
- let params = this.typeuser === 'webUser' ? {openId: this.webId, aBzType: "nvl"} : {
204
- aId: this.dualId,
205
- aBzType: "nvl",
206
- role: this.dualRole,
207
- aName:this.dualName,
208
- }
209
- //load(method,url,data)
210
- console.log(JSON.stringify(params))
211
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, params, {
212
- resolveMsg: null,
213
- rejectMsg: null
214
- }).then((res) => {
215
-
216
- if (typeof res.data === 'string') {
217
- window.alert(res.data)
218
- // res.data = res.data.replace('"sessionId":', '"sessionId":"')
219
- // res.data = res.data.replace(', "msgType"', '", "msgType"')
220
- res.data = res.data.replace(/}/g,'},')
221
- res.data = res.data.replace(',]},',']}')
222
- res.data = res.data.replace('},]','}]')
223
- console.log(res.data)
224
- res.data = JSON.parse(res.data)
225
- }
226
- if (res.data.code === 200) {
227
- // 有用户离线处理
228
- if (res.data.kickedOffList && res.data.kickedOffList.length > 0) {
229
- res.data.kickedOffList.forEach((openId) => {
230
- that.turnOff(openId)
231
- })
232
- }
233
- if (res.data.msgs.length > 0) { // 有新消息
234
- // 将新消息放入到对应用户的消息中
235
- console.log('参数拿一下' + res.data.msgs[0].openId.substring(0, 2))
236
- //如果有aId说明是坐席接收消息。如果接收到的是web端发来的消息则显示web用户openid
237
- if (params.aId && res.data.msgs[0].name === '' && res.data.msgs[0].openId.substring(0, 2) === '__') {
238
- res.data.msgs[0].name = 'web客户' + res.data.msgs[0].openId.substring(15)
239
- }
240
- //如果有openid则说明是web接收消息
241
- if (params.openId) {
242
- res.data.msgs[0].name = '客服'
243
- }
244
-
245
- that.addMsg(res.data.msgs)
246
- if("text-server"!=Vue.routes.main.selecttab){
247
- this.$showAlert("您有新的客服消息,请注意查看",'success',1000)
248
- }
249
- }
250
- // 处理维修员带过来的所有用户
251
- if (res.data.bondedUsers && res.data.bondedUsers.length > 0) {
252
- that.addBondedWeUsers(res.data.bondedUsers)
253
- }
254
- }
255
- if (res.data.code === 509) {
256
- this.$showAlert('请重新登陆', 'danger', 0)
257
- }
258
- }).catch((err) => {
259
- console.log('提取数据出错', JSON.stringify(err))
260
- })
261
- }, 1000)
262
- },
263
- addBondedWeUsers(weusers) {
264
- let that = this
265
- weusers.forEach((wu) => {
266
- // 查找用户
267
- let index = that.users.findIndex((user, index, arr) => {
268
- return user.openId === wu.f_open_id
269
- })
270
- // 找到
271
- if (index && index !== -1 || index === 0) {
272
- // do nothing
273
- } else {
274
- if (that.users.length === 0) { // 如果是添加的第一户
275
-
276
- that.users.push({
277
- name: wu.f_user_name,
278
- userId: wu.f_user_name,
279
- openId: wu.f_open_id,
280
- gh_id:wu.gh_id,
281
- msgs: [],
282
- unreadNum: 0,
283
- lineState: true
284
- })
285
- this.$dispatch('user', {openId: wu.f_open_id, gh_id:wu.gh_id,userId: wu.f_user_name, name: wu.f_user_name})
286
- } else {
287
- that.users.push({
288
- name: wu.f_user_name,
289
- userId: wu.f_user_name,
290
- openId: wu.f_open_id,
291
- gh_id:wu.gh_id,
292
- msgs: [],
293
- unreadNum: 0,
294
- lineState: true
295
- })
296
- }
297
- }
298
- })
299
- },
300
- addMsg(msgs) {
301
- let that = this
302
- msgs.forEach((msg) => {
303
- let index = that.users.findIndex((user, index, arr) => {
304
- return user.openId === msg.openId
305
- })
306
- if (!msg.aBzType) { // 收到的消息
307
- if (msg.msgType === 'image' || msg.msgType === 'video' || msg.msgType === 'voice') { // 有素材
308
- msg.src = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.media}`
309
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.thumbnail}`
310
- }
311
- }
312
- if (index && index !== -1 || index === 0) { // 返回的有index,说明有这个用户
313
- // 往用户消息里面push消息时,判断当前激活是否是当前用户,不是,要有新消息提示
314
- that.users[index].msgs.push(msg)
315
- that.users[index].lineState = true // 将用户改为上线
316
- if (that.active !== index) { // 如果当前激活不是该用户,添加消息后,将未读消息加 1
317
- this.users[index].unreadNum += 1
318
- }
319
- } else { // 没有则添加到用户列表中
320
- if (that.users.length === 0) { // 如果是添加的第一户
321
- that.users.push({
322
- name: msg.name,
323
- userId: msg.userId,
324
- openId: msg.openId,
325
- gh_id:msg.gh_id,
326
- msgs: [msg],
327
- unreadNum: 0,
328
- lineState: true
329
- })
330
- this.$dispatch('user', {openId: msg.openId, gh_id:msg.gh_id,userId: msg.userId, name: msg.name})
331
- } else {
332
- that.users.push({
333
- name: msg.name,
334
- userId: msg.userId,
335
- openId: msg.openId,
336
- gh_id:msg.gh_id,
337
- msgs: [msg],
338
- unreadNum: 1,
339
- lineState: true
340
- })
341
- }
342
- }
343
- // that.msgs = that.users[0].msgs
344
- })
345
- // 有消息加入后滚动到最底部
346
- this.scrollBottom()
347
- },
348
- enter(ev) {
349
- ev.preventDefault()
350
- ev.stopPropagation()
351
- },
352
- allowDrop(ev) {
353
- // ev.preventDefault()
354
- ev.preventDefault()
355
- ev.stopPropagation()
356
- ev.dataTransfer.dropEffect = 'copy'
357
- },
358
-
359
- drop(ev) {
360
- ev.preventDefault()
361
- // 接收得信息包括图片信息,音频信息,文字信息
362
- let files = ev.dataTransfer.files
363
- // 循环遍历所有文件
364
- if (files.length > 0) { // 如果有文件,取出文件传送文件
365
- for (var i = 0; i < files.length; i++) {
366
- let type = ''
367
- // 判断是不是图片信息
368
- if (/image\/\w+/.test(files[i].type)) {
369
- type = 'image'
370
- // if(file.size / 1024 / 1024 > 2) {
371
- // that.$showAlert('上传图片不能大于2M,请处理后再选择', 'warning', 3000)
372
- // return
373
- // }
374
-
375
- } else if (/video\/|ogg$|mp4$/.test(files[i].type)) { // 判断是不是音频信息
376
- type = 'video'
377
- }
378
- this.send(type)
379
- // files[i]
380
- }
381
- } else { // 文字信息
382
- let data = ev.dataTransfer.getData("Text")
383
- this.content += data
384
- this.$els.content.innerHTML = this.$els.content.innerHTML + data
385
- }
386
-
387
- },
388
- // 选择素材
389
- selectMater() {
390
- this.show = true
391
- },
392
- close() {
393
- this.$refs.material.clearRows()
394
- this.show = false
395
- },
396
- // 发送选择资源
397
- sendMater() {
398
- this.$refs.material.rows.forEach((row) => {
399
- this.send(row.f_file_type, row)
400
- })
401
- this.close()
402
- },
403
- // 发送信息,将内容区域得内容发送出去,图片和文字,拖拽进来后直接发送,不用点击发送按钮
404
- send(type, content) {
405
- console.log('发送类型', type, this.typeuser)
406
-
407
- if (this.typeuser !== 'webUser' && !this.users[this.active]) {
408
- this.$showAlert('当前无通话用户,不能发送消息', 'warning', 2000)
409
- return
410
- }
411
- if (content) {
412
- this.content = content
413
- }
414
- // 如果用户离线,不能发送消息
415
- if (this.typeuser !== 'webUser' && !this.users[this.active].lineState) {
416
- this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
417
- return
418
- }
419
- let msg = {
420
- openId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].openId,
421
- gh_id: this.typeuser === 'webUser' ? this.webId : this.users[this.active].gh_id,
422
- userId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].userId,
423
- aBzType: 'send',
424
- aName:this.dualName,
425
- branch:this.fengongsi,
426
- //gh_id:this.gh_id,
427
- name: this.typeuser === 'webUser' ? 'web客户' + this.webId.substring(15) : this.$login.f.name,
428
- date: Util.toStandardTimeString().split(' ')[0].substring(2, Util.toStandardTimeString().split(' ')[0].length),
429
- time: Util.toStandardTimeString().split(' ')[1],
430
- }
431
- // web端没有aId
432
- if (this.typeuser !== 'webUser') {
433
- msg.aId = this.dualId
434
- msg.role = this.dualRole
435
- }
436
- if (this.typeuser === 'webUser') {
437
- msg.openId = this.webId
438
- }
439
- if (type === 'text') {
440
- if (!(this.content && this.content.length > 0)) {
441
- console.log('发送的内容不能为空');
442
- return
443
- }
444
- msg.msgType = 'text'
445
- msg.content = this.content
446
- } else if (type === 'image') { // 图片消息
447
- msg.msgType = 'image'
448
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
449
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
450
- msg.content = content.f_mediaid
451
- } else if (type === 'video') { // 视频消息
452
- msg.msgType = 'video'
453
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
454
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
455
- msg.content = content.f_mediaid
456
- }
457
- console.log('发送的消息体为', msg)
458
- // 此处将消息发送服务一份,然后添加到自己界面
459
- let that = this
460
- let http = new HttpResetClass()
461
- let url = `${this.$androidUtil.getProxyUrl()}/TDual`
462
- http.load('POST', url, msg, {resolveMsg: null, rejectMsg: null}).then((res) => {
463
- console.log('发消息返回的消息', res)
464
- if (res.data.code === 200 && !res.data.msg) {
465
-
466
- }
467
- else if(res.data.code === 500){
468
- this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
469
-
470
- }
471
- //else if (res.data.code === 200&&res.data.msg!==''){
472
- // this.$showAlert(',暂时无法服务,请拨打96677咨询人工客服', 'warning', 2000)
473
- //}
474
- })
475
- // openId: 微信用户openId
476
- // msgType: 消息类别
477
- // content:消息内容,只针对text消息
478
- // name: 燃气用户姓名
479
- // userId: 燃气用户id
480
- // time: 消息时间
481
- // date: 消息年月日
482
- // media: 除text消息外的文件名
483
- // thumbnail: media对应的缩略图或转换文件
484
- // {"aId":"001", "aBzType":"send", "msgType":"text", "content":"huawuyuangeinidexiaoxi", "openId": "oL5ch0q8MjNEuLcsQw4CsImDkEdA"}
485
- this.addMsg([msg])
486
- // 消息发送出后,清空输入框
487
- this.content = ''
488
- // 清空显示
489
- this.$els.content.innerHTML = ''
490
- this.$els.content.focus()
491
- // 消息发出后滚动到最底部
492
- // this.scrollBottom()
493
- },
494
- // 切换用户
495
- handleTabListClick(index, user) {
496
- this.active = index
497
- // 切换激活用户时,将未读消息设置为0
498
- this.users[index].unreadNum = 0
499
- // user = {openId: user.openId, userId: user.userId, name: user.name}
500
- console.log(user)
501
- this.active = index
502
- // 发送事件,切换用户时重新查询用户
503
- this.$dispatch('user', {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name})
504
- this.scrollBottom()
505
- },
506
- // 关闭用户对话框
507
- deleteUser(index, user) {
508
- // 话务员直接关闭
509
- if (this.isRepairman)
510
- return
511
- console.log('关闭用户对话框')
512
- if (!user.lineState) { // 如果用户已经离线,直接删除,发请求回报错,导致关闭不了
513
- this.users.splice(index, 1)
514
- return
515
- }
516
- let http = new HttpResetClass()
517
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, {
518
- aId: this.dualId,
519
- aBzType: "abort",
520
- aName:this.dualName,
521
- openId: user.openId,
522
- gh_id:user.gh_id,
523
- }, {resolveMsg: null, rejectMsg: null}).then((res) => {
524
- console.log('关闭用户对话框', res)
525
- this.users.splice(index, 1)
526
- })
527
- },
528
- // 滚动到文字信息底部
529
- scrollBottom() {
530
- this.$nextTick(() => {
531
- this.$els.msgs.scrollTop = this.$els.msgs.scrollHeight
532
-
533
- })
534
- },
535
- // 处理离线用户
536
- turnOff(openId) {
537
- let index = this.users.findIndex((user, index, arr) => {
538
- return user.openId === openId
539
- })
540
- this.users[index].lineState = false
541
- },
542
- // 当有滚动事件时,滚轮事件被屏蔽掉
543
- // 滚动事件
544
- scroll(e) {
545
- // console.log('滚动事件', e)
546
- if (e.target.scrollTop === 0) {
547
- this.isTop = true
548
- } else {
549
- this.isTop = false
550
- }
551
- },
552
- // 触屏滑动事件
553
- touchStart(e) { // 触屏开始位置
554
- this.start_Y = e.changedTouches[0].pageY
555
- },
556
- touchEnd(e) { // 滑动当前位置
557
- let end_Y = e.changedTouches[0].pageY
558
- if (end_Y - this.start_Y > 50) {
559
- // 下滑加载
560
- console.log('发生滑动时间:' + e)
561
- this.loadHistory(e)
562
- }
563
- },
564
- // 滚轮事件,为解决刚进来没有滚动时,加载历史记录
565
- wheelUp(e) {
566
- if (e.wheelDelta > 0) {
567
- console.log('发生滚轮时间:' + e)
568
- this.loadHistory(e)
569
- }
570
- },
571
- loadHistory(e) {
572
- if (this.isTop) { // 加载历史开始了
573
- if (this.users.length == 0 || !this.users[this.active].openId)
574
- return
575
- let dt = ''
576
- // 如果维修员想要查看历史消息,但是还没有聊天的情况下,
577
- if (this.users[this.active].msgs.length == 0)
578
- dt = Util.toStandardTimeString()
579
- else
580
- dt = `20${this.users[this.active].msgs[0].date} ${this.users[this.active].msgs[0].time}`
581
- this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/tel_getChatHistory`,
582
- {
583
- data: {
584
- f_dt: dt,
585
- f_open_id: this.users[this.active].openId
586
- }
587
- },
588
- {resolveMsg: null, rejectMsg: null}).then((res) => {
589
- console.log('加载到的数据是', res)
590
- if (res.data.length > 0) {
591
- let msgs = []
592
- res.data.forEach((item) => {
593
- if (item.f_msg_type !== 'system') {
594
- let msg = {
595
- content: item.f_content,
596
- date: item.f_dt.split(' ')[0].substring(2, item.f_dt.split(' ')[0].length),
597
- time: item.f_dt.split(' ')[1],
598
- media: "",
599
- msgType: item.f_msg_type,
600
- name: (item.f_msg_direction === '发送') ? (item.f_repairman ? item.f_repairman : null) : item.f_user_name,
601
- openId: item.f_open_id,
602
- gh_id:item.gh_id,
603
- sessionId: item.f_session_id,
604
- thumbnail: item.f_thumbnail,
605
- userId: item.f_user_id
606
- }
607
- if (item.f_msg_direction === '发送') {
608
- msg.aBzType = "send"
609
- msg.branch = this.fengongsi
610
- msg.gh_id=this.gh_id
611
- }
612
- if (item.f_msg_type === 'video' || item.f_msg_type === 'voice' || item.f_msg_type === 'image') {
613
- console.log('聊天历史消息:', JSON.stringify(item))
614
- if (item.f_msg_direction === '发送') { // 话务员发送的消息
615
- msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${item.f_file_name}`
616
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${item.thumbnail}`
617
- } else { // 用户发送的消息
618
- msg.src = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_content}`
619
- msg.src_img = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_thumbnail}`
620
- }
621
- }
622
- msgs.push(msg)
623
- }
624
- })
625
- console.log('组成消息组是', msgs)
626
- this.users[this.active].msgs.unshift(...msgs)
627
- } else { // 没有记录了
628
- this.$showAlert('没有记录了', 'warning', 1000)
629
- }
630
- })
631
- // console.log('向上滚')
632
- // console.log(e.target.scrollTop)
633
- } else {
634
- // console.log('向下滚')
635
- }
636
- },
637
- // 自文本内容中加入小图标
638
- contentAddIcon(key, emoji) {
639
- // 获取焦点,防止选择表情无法输入
640
- let el = this.$els.content
641
- el.focus() // 获取焦点
642
- // 将光标定位到文档最后
643
- let range = document.createRange();
644
- range.selectNodeContents(el);
645
- range.collapse(true);
646
- range.setEnd(el, el.childNodes.length);
647
- range.setStart(el, el.childNodes.length);
648
- let sel = window.getSelection();
649
- sel.removeAllRanges();
650
- sel.addRange(range);
651
- // 定位光标后
652
- this.content += key
653
- document.execCommand('insertImage', false, `static/wechat/${emoji}`)
654
- },
655
- // 按键事件
656
- handleKeys(event) {
657
- if (event.which === 9) event.preventDefault()
658
- if (event.which === 13 && event.ctrlKey) {
659
- event.preventDefault()
660
- this.send('text')
661
- }
662
- // if (event.which === 13 && event.ctrlKey){
663
- // this.content = this.$els.content.innerHTML
664
- // }
665
- // console.log('this.content---->', this.content)
666
- },
667
- // 内容发生变化
668
- contentChanged() {
669
- if (this.$els.content.innerHTML === '') {
670
- return
671
- }
672
- this.content = emoji.editorChange(this.$els.content.innerHTML)
673
- },
674
- // insertTextAtCursor () {
675
- // let sel
676
- // if (window.getSelection) {
677
- // sel = window.getSelection();
678
- // if (sel.getRangeAt && sel.rangeCount) {
679
- // range = sel.getRangeAt(0)
680
- // range.deleteContents()
681
- // }
682
- // }
683
- // }
684
- // insertTextAtCursor(text) {
685
- // var sel, range, html;
686
- // console.log('11111111111', window.getSelection())
687
- // if (window.getSelection) {
688
- // sel = window.getSelection();
689
- // if (sel.getRangeAt && sel.rangeCount) {
690
- // range = sel.getRangeAt(0);
691
- // range.deleteContents();
692
- // // range.insertNode( document.createTextNode(text) );
693
- // }
694
- // } else if (document.selection && document.selection.createRange) {
695
- // // document.selection.createRange().text = text;
696
- // }
697
- // },
698
- // saveSelection () {
699
- // if (window.getSelection) {
700
- // sel = window.getSelection()
701
- // if (sel.getRangeAt && sel.rangeCount) {
702
- // return sel.getRangeAt(0)
703
- // }
704
- // } else if (document.selection && document.selection.createRange) {
705
- // return document.selection.createRange()
706
- // }
707
- // return null
708
- // },
709
- // restoreSelection(range) {
710
- // if (range) {
711
- // if (window.getSelection) {
712
- // sel = window.getSelection()
713
- // sel.removeAllRanges()
714
- // sel.addRange(range)
715
- // } else if (document.selection && range.select) {
716
- // range.select()
717
- // }
718
- // }
719
- // }
720
- },
721
- beforeDestroy() {
722
- clearInterval(this.interval)
723
- let gen = outGen(this)
724
- co(gen)
725
- },
726
- computed:{
727
- reply() {
728
- return this.$appdata.getParam('快速回复')
729
- }
730
-
731
- },
732
- }
733
- </script>
734
- <style scoped>
735
- .text-editor {
736
- flex: 1;
737
- }
738
-
739
- div[contenteditable=true] {
740
- outline: none;
741
- border-top: 1px solid #DDD;
742
- overflow: auto;
743
- background: #FFF;
744
- padding: 5px 10px;
745
- }
746
-
747
- div[contenteditable=true] div {
748
- height: auto;
749
- }
750
-
751
- div[contenteditable=true] img {
752
- width: 25px;
753
- }
754
-
755
- .send-msg {
756
- /*position: relative;*/
757
- display: flex;
758
- height: 120px;
759
- flex-direction: column;
760
- }
761
-
762
- .send-msg > button {
763
- /*position: absolute;*/
764
- right: 20px;
765
- bottom: 5px;
766
- padding: 3px 20px;
767
- }
768
-
769
- /* 文字客服页签样式 */
770
- /* .text-server .flex {
771
- display: flex;
772
- flex-direction: row;
773
- } */
774
- .text-server .flex-row > ul {
775
- background: #009BDB;
776
- width: 60px;
777
-
778
- }
779
-
780
- .text-server .flex-row > ul > li {
781
- width: 100%;
782
- display: flex;
783
- justify-content: center;
784
- }
785
-
786
- .text-server .flex-row > ul > li > a {
787
- border-bottom: none;
788
- /* background: #FFF; */
789
- padding: 0px;
790
- margin-right: 0px;
791
- line-height: 40px;
792
- text-align: center;
793
- font-size: 1.2em;
794
- width: 40px;
795
- height: 40px;
796
- margin: 5px 0px;
797
- border-radius: 50%;
798
- }
799
-
800
- .text-server .flex-row > ul > li.active {
801
- background: rgba(255, 255, 255, 0.3);
802
- }
803
-
804
- .text-server ul > li > a > span {
805
- display: inherit;
806
- }
807
-
808
- /* 关闭按钮 badge glyphicon style="position: absolute;right: -5px;top: 0px;background: #F61003;" */
809
- #text-service > ul > li > a {
810
- position: relative;
811
- }
812
-
813
- #text-service > ul > li > a > .glyphicon {
814
- display: none;
815
- }
816
-
817
- #text-service > ul > li > a > .badge {
818
- /* display: initial; */
819
- position: absolute;
820
- right: -5px;
821
- top: 0px;
822
- background: #F61003;
823
- }
824
-
825
- #text-service > ul > li > a:hover > .glyphicon {
826
- display: initial;
827
- position: absolute;
828
- /* font-size: 13px; */
829
- background-color: rgb(255, 255, 255, 0.5);
830
- right: -5px;
831
- top: 0px;
832
- }
833
-
834
- /* 当鼠标悬停在游湖头像时,未读消息显示隐藏,关闭按钮显示 */
835
- #text-service > ul > li > a:hover > .badge {
836
- display: none;
837
- }
838
-
839
- #text-service > ul > li > a:hover > .glyphicon:hover {
840
- background-color: #F61003;
841
- color: #FFF;
842
- /* color: #5CBDED; */
843
- }
844
-
845
- .offline {
846
- background: #888 !important;
847
- }
848
-
849
- </style>
1
+ <template>
2
+ <div class="flex" style="background: #EDF2F9;border: 1px solid #B4BCCC;">
3
+ <div class="span text-server">
4
+ <div class='flex-row' id="text-service">
5
+ <!-- Nav tabs -->
6
+ <ul class="nav nav-tabs" role="tablist" style="overflow: auto;width: 7%">
7
+ <li :id="'vc-tabset-li-text-service'+'-'+$index" v-for="user in users"
8
+ v-bind:class="{'active': ($index === active), 'offline': !user.lineState}"
9
+ @click.prevent="handleTabListClick($index, user)" :disabled="r.disabled">
10
+ <a href="javascript:void(0)">
11
+ {{user.name === "" ? '未' : user.name[0]}}
12
+ <span class="badge">{{user.unreadNum === 0 ? '' : user.unreadNum}}</span>
13
+ <span class="glyphicon glyphicon-remove" @click.stop="deleteUser($index, user)"></span>
14
+ </a>
15
+
16
+ </li>
17
+ </ul>
18
+ <!-- Tab panes -->
19
+ <div class="flex" style="width: 90%">
20
+ <div class="tab-content span" v-el:tab-content style="flex: 1;overflow: scroll" style="height: 100px;" v-el:msgs
21
+ @scroll="scroll">
22
+ <div role="tabpanel" v-show="$index === active" :transition="transition" v-for="user in users"
23
+ style="padding: 10px;">
24
+ <chat-msg :msgs="user.msgs"></chat-msg>
25
+ </div>
26
+ </div>
27
+
28
+ <!-- 消息发送区域 -->
29
+ <div class="send-msg">
30
+ <div contentEditable="true" name="name" class="text-editor"
31
+ style="max-width: 100%;word-wrap:break-word"
32
+ @input="contentChanged" @keydown="handleKeys"
33
+ @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" v-el:content>
34
+ </div>
35
+
36
+ <!-- <textarea contentEditable="true" name="name" rows="8" cols="80" style="resize: none; padding: 8px;flex: 1;background: #FFF;" v-model="content"
37
+ @drop="drop" @dragover="allowDrop" @dragenter="enter" id="pc-text-server-text" @keyup.enter.stop="send('text')" v-el:content></textarea> -->
38
+ <div style="padding: 5px;height: auto;position: relative;">
39
+ <div style="display: inline-block;">
40
+ <img :src="'static/wechat/ziyuan.png'" alt="选择素材" v-if="this.typeuser!=='webUser'"
41
+ style="height: 20px;cursor: pointer;" @click="selectMater()">
42
+ <!-- 选择小表情 -->
43
+ <emoji @select-emoji="contentAddIcon"></emoji>
44
+ </div>
45
+ <!-- <button type="button" name="button" class="btn btn-primary" >选择资源</button> -->
46
+ <button type="button" name="button" class="btn btn-primary btn-xs" @click="send('text')"
47
+ style="float: right;">发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;送
48
+ </button>
49
+ </div>
50
+ </div>
51
+
52
+ </div>
53
+ </div>
54
+
55
+ </div>
56
+ <div id="mediaPane" style="display:flex; flex-direction: column; background-color:white; position: fixed; z-index: 9999; left:0px; right:0px; top: 0px; bottom:0px; padding-bottom: 30px;" v-show="show">
57
+ <div style="height:auto; background-color:grey;">
58
+ <button type="button" style="position:absolute; right: 10px; top:20px;" @click="close"><span>关闭</span></button>
59
+ <h4 class="modal-title">选择发送素材</h4>
60
+ <div style="position:fixed; bottom:0px; width: 300px; z-index:9999; height:auto;">
61
+ <button type="button" style="margin: 0 auto; display:block; width: 100px;" @click='sendMater()'>发送</button>
62
+ </div>
63
+ </div>
64
+ <div style="flex: 1; overflow: auto;">
65
+ <materials use-type="use" v-ref:material>
66
+ </materials>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </template>
71
+
72
+ <script>
73
+ import * as Util from '../Util'
74
+ import co from 'co'
75
+ import {HttpResetClass} from 'vue-client'
76
+ import data from '../../stores/wxconfig'
77
+ import * as emoji from '../../plugins/EmojiData'
78
+ import Vue from "vue";
79
+ let msgGen = function* (self) {
80
+ try {
81
+ // 话务员才去登录,维修员不登录
82
+ if (!self.isRepairman) {
83
+ console.log('开始登陆')
84
+ // 话务员登陆
85
+ let http = new HttpResetClass()
86
+ let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
87
+ aId: self.dualId,
88
+ aBzType: "login",
89
+ aName:self.dualName,
90
+ }, {resolveMsg: null, rejectMsg: null})
91
+
92
+ console.log('登陆返回的信息:', loginMsg)
93
+ if (loginMsg.data.code !== 200) {
94
+ self.$showAlert('登陆失败', 'danger', 0)
95
+ return
96
+ }
97
+ }
98
+ // 轮询获取消息
99
+ self.getUerMsg()
100
+ } catch (e) {
101
+ // self.$showAlert(`登陆失败:${JSON.stringify(e)}`, 'danger', 0)
102
+ console.log('登陆失败,请重试')
103
+ }
104
+
105
+ }
106
+
107
+ let outGen = function* (self) {
108
+ //维修员,不存在登出
109
+ if (self.isRepairman)
110
+ return
111
+ // 话务员登出
112
+ let http = new HttpResetClass()
113
+
114
+ let loginMsg = yield http.load('POST', `${self.$androidUtil.getProxyUrl()}/TDual`, {
115
+ aId: self.dualId,
116
+ aBzType: "logout",
117
+ aName:self.dualName,
118
+ }, {resolveMsg: null, rejectMsg: null})
119
+ console.log('登出返回的信息:', loginMsg)
120
+ if (loginMsg.data.code !== 200) {
121
+ self.$showAlert('登陆失败')
122
+ return
123
+ }
124
+ }
125
+
126
+ export default {
127
+ title: '文字客服',
128
+ data() {
129
+ return {
130
+ webId: '',
131
+ content: '',
132
+ interval: '',
133
+ fengongsi:'',
134
+ gh_id:'',
135
+ users: [
136
+ ], // 接入用户
137
+ show: false, // 选择素材
138
+ // msgs: [],
139
+ isTop: true, // 是否滚动到顶部
140
+ dualId: null,
141
+ dualRole: null,
142
+ dualName: null,
143
+ }
144
+ },
145
+ props: {
146
+ active: {
147
+ type: Number,
148
+ default: 0
149
+ },
150
+ isRepairman: {
151
+ default: false
152
+ },
153
+ typeuser: {
154
+ type: String,
155
+ default: 'webUser'
156
+ }
157
+ },
158
+
159
+ ready() {
160
+ this.fengongsi=this.$appdata.getSingleValue("分公司")
161
+ this.gh_id=this.$appdata.getSingleValue("公众号ID")
162
+ console.log(this.fengongsi)
163
+ console.log(this.gh_id)
164
+ console.log('当前是否是维修员:' + this.isRepairman)
165
+ if (this.typeuser === 'webUser') {
166
+ this.webId = '________________' + Util.randnum()
167
+ console.log(this.webId)
168
+ }
169
+ if (this.isRepairman) {
170
+ this.dualId = this.$login.f.name
171
+ this.dualName = this.$login.f.name
172
+ this.dualRole = 'repairman'
173
+ } else {
174
+ console.log('当前坐席:' + this.$login.f.id)
175
+ this.dualId = this.$login.f.id
176
+ this.dualName = this.$login.f.name
177
+ this.dualRole = null
178
+ }
179
+
180
+ let gen = msgGen(this)
181
+ co(gen)
182
+ // document.getElementById("myDIV").addEventListener("wheel", myFunction);
183
+
184
+ console.log('监听元素', this.$els.msgs + ':::::' + this.$androidUtil.getProxyUrl())
185
+
186
+ this.$els.msgs.addEventListener("wheel", this.wheelUp)
187
+ // 为Android滑动触屏添加事件
188
+ this.$els.msgs.addEventListener("touchstart", this.touchStart)
189
+ this.$els.msgs.addEventListener("touchend", this.touchEnd)
190
+ },
191
+ methods: {
192
+ sendMessage(user, index) {
193
+ user = {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name}
194
+ console.log(user)
195
+ this.active = index
196
+ this.$dispatch('user', user)
197
+ },
198
+ getUerMsg() {
199
+ let that = this
200
+ let http = new HttpResetClass()
201
+ console.log('轮询取消息')
202
+ this.interval = setInterval(() => {
203
+ let params = this.typeuser === 'webUser' ? {openId: this.webId, aBzType: "nvl"} : {
204
+ aId: this.dualId,
205
+ aBzType: "nvl",
206
+ role: this.dualRole,
207
+ aName:this.dualName,
208
+ }
209
+ //load(method,url,data)
210
+ console.log(JSON.stringify(params))
211
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, params, {
212
+ resolveMsg: null,
213
+ rejectMsg: null
214
+ }).then((res) => {
215
+
216
+ if (typeof res.data === 'string') {
217
+ window.alert(res.data)
218
+ // res.data = res.data.replace('"sessionId":', '"sessionId":"')
219
+ // res.data = res.data.replace(', "msgType"', '", "msgType"')
220
+ res.data = res.data.replace(/}/g,'},')
221
+ res.data = res.data.replace(',]},',']}')
222
+ res.data = res.data.replace('},]','}]')
223
+ console.log(res.data)
224
+ res.data = JSON.parse(res.data)
225
+ }
226
+ if (res.data.code === 200) {
227
+ // 有用户离线处理
228
+ if (res.data.kickedOffList && res.data.kickedOffList.length > 0) {
229
+ res.data.kickedOffList.forEach((openId) => {
230
+ that.turnOff(openId)
231
+ })
232
+ }
233
+ if (res.data.msgs.length > 0) { // 有新消息
234
+ // 将新消息放入到对应用户的消息中
235
+ console.log('参数拿一下' + res.data.msgs[0].openId.substring(0, 2))
236
+ //如果有aId说明是坐席接收消息。如果接收到的是web端发来的消息则显示web用户openid
237
+ if (params.aId && res.data.msgs[0].name === '' && res.data.msgs[0].openId.substring(0, 2) === '__') {
238
+ res.data.msgs[0].name = 'web客户' + res.data.msgs[0].openId.substring(15)
239
+ }
240
+ //如果有openid则说明是web接收消息
241
+ if (params.openId) {
242
+ res.data.msgs[0].name = '客服'
243
+ }
244
+
245
+ that.addMsg(res.data.msgs)
246
+ if("text-server"!=Vue.routes.main.selecttab){
247
+ this.$showAlert("您有新的客服消息,请注意查看",'success',1000)
248
+ }
249
+ }
250
+ // 处理维修员带过来的所有用户
251
+ if (res.data.bondedUsers && res.data.bondedUsers.length > 0) {
252
+ that.addBondedWeUsers(res.data.bondedUsers)
253
+ }
254
+ }
255
+ if (res.data.code === 509) {
256
+ this.$showAlert('请重新登陆', 'danger', 0)
257
+ }
258
+ }).catch((err) => {
259
+ console.log('提取数据出错', JSON.stringify(err))
260
+ })
261
+ }, 1000)
262
+ },
263
+ addBondedWeUsers(weusers) {
264
+ let that = this
265
+ weusers.forEach((wu) => {
266
+ // 查找用户
267
+ let index = that.users.findIndex((user, index, arr) => {
268
+ return user.openId === wu.f_open_id
269
+ })
270
+ // 找到
271
+ if (index && index !== -1 || index === 0) {
272
+ // do nothing
273
+ } else {
274
+ if (that.users.length === 0) { // 如果是添加的第一户
275
+
276
+ that.users.push({
277
+ name: wu.f_user_name,
278
+ userId: wu.f_user_name,
279
+ openId: wu.f_open_id,
280
+ gh_id:wu.gh_id,
281
+ msgs: [],
282
+ unreadNum: 0,
283
+ lineState: true
284
+ })
285
+ this.$dispatch('user', {openId: wu.f_open_id, gh_id:wu.gh_id,userId: wu.f_user_name, name: wu.f_user_name})
286
+ } else {
287
+ that.users.push({
288
+ name: wu.f_user_name,
289
+ userId: wu.f_user_name,
290
+ openId: wu.f_open_id,
291
+ gh_id:wu.gh_id,
292
+ msgs: [],
293
+ unreadNum: 0,
294
+ lineState: true
295
+ })
296
+ }
297
+ }
298
+ })
299
+ },
300
+ addMsg(msgs) {
301
+ let that = this
302
+ msgs.forEach((msg) => {
303
+ let index = that.users.findIndex((user, index, arr) => {
304
+ return user.openId === msg.openId
305
+ })
306
+ if (!msg.aBzType) { // 收到的消息
307
+ if (msg.msgType === 'image' || msg.msgType === 'video' || msg.msgType === 'voice') { // 有素材
308
+ msg.src = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.media}`
309
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/weixin/image/material/${msg.thumbnail}`
310
+ }
311
+ }
312
+ if (index && index !== -1 || index === 0) { // 返回的有index,说明有这个用户
313
+ // 往用户消息里面push消息时,判断当前激活是否是当前用户,不是,要有新消息提示
314
+ that.users[index].msgs.push(msg)
315
+ that.users[index].lineState = true // 将用户改为上线
316
+ if (that.active !== index) { // 如果当前激活不是该用户,添加消息后,将未读消息加 1
317
+ this.users[index].unreadNum += 1
318
+ }
319
+ } else { // 没有则添加到用户列表中
320
+ if (that.users.length === 0) { // 如果是添加的第一户
321
+ that.users.push({
322
+ name: msg.name,
323
+ userId: msg.userId,
324
+ openId: msg.openId,
325
+ gh_id:msg.gh_id,
326
+ msgs: [msg],
327
+ unreadNum: 0,
328
+ lineState: true
329
+ })
330
+ this.$dispatch('user', {openId: msg.openId, gh_id:msg.gh_id,userId: msg.userId, name: msg.name})
331
+ } else {
332
+ that.users.push({
333
+ name: msg.name,
334
+ userId: msg.userId,
335
+ openId: msg.openId,
336
+ gh_id:msg.gh_id,
337
+ msgs: [msg],
338
+ unreadNum: 1,
339
+ lineState: true
340
+ })
341
+ }
342
+ }
343
+ // that.msgs = that.users[0].msgs
344
+ })
345
+ // 有消息加入后滚动到最底部
346
+ this.scrollBottom()
347
+ },
348
+ enter(ev) {
349
+ ev.preventDefault()
350
+ ev.stopPropagation()
351
+ },
352
+ allowDrop(ev) {
353
+ // ev.preventDefault()
354
+ ev.preventDefault()
355
+ ev.stopPropagation()
356
+ ev.dataTransfer.dropEffect = 'copy'
357
+ },
358
+
359
+ drop(ev) {
360
+ ev.preventDefault()
361
+ // 接收得信息包括图片信息,音频信息,文字信息
362
+ let files = ev.dataTransfer.files
363
+ // 循环遍历所有文件
364
+ if (files.length > 0) { // 如果有文件,取出文件传送文件
365
+ for (var i = 0; i < files.length; i++) {
366
+ let type = ''
367
+ // 判断是不是图片信息
368
+ if (/image\/\w+/.test(files[i].type)) {
369
+ type = 'image'
370
+ // if(file.size / 1024 / 1024 > 2) {
371
+ // that.$showAlert('上传图片不能大于2M,请处理后再选择', 'warning', 3000)
372
+ // return
373
+ // }
374
+
375
+ } else if (/video\/|ogg$|mp4$/.test(files[i].type)) { // 判断是不是音频信息
376
+ type = 'video'
377
+ }
378
+ this.send(type)
379
+ // files[i]
380
+ }
381
+ } else { // 文字信息
382
+ let data = ev.dataTransfer.getData("Text")
383
+ this.content += data
384
+ this.$els.content.innerHTML = this.$els.content.innerHTML + data
385
+ }
386
+
387
+ },
388
+ // 选择素材
389
+ selectMater() {
390
+ this.show = true
391
+ },
392
+ close() {
393
+ this.$refs.material.clearRows()
394
+ this.show = false
395
+ },
396
+ // 发送选择资源
397
+ sendMater() {
398
+ this.$refs.material.rows.forEach((row) => {
399
+ this.send(row.f_file_type, row)
400
+ })
401
+ this.close()
402
+ },
403
+ // 发送信息,将内容区域得内容发送出去,图片和文字,拖拽进来后直接发送,不用点击发送按钮
404
+ send(type, content) {
405
+ console.log('发送类型', type, this.typeuser)
406
+
407
+ if (this.typeuser !== 'webUser' && !this.users[this.active]) {
408
+ this.$showAlert('当前无通话用户,不能发送消息', 'warning', 2000)
409
+ return
410
+ }
411
+ if (content) {
412
+ this.content = content
413
+ }
414
+ // 如果用户离线,不能发送消息
415
+ if (this.typeuser !== 'webUser' && !this.users[this.active].lineState) {
416
+ this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
417
+ return
418
+ }
419
+ let msg = {
420
+ openId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].openId,
421
+ gh_id: this.typeuser === 'webUser' ? this.webId : this.users[this.active].gh_id,
422
+ userId: this.typeuser === 'webUser' ? this.webId : this.users[this.active].userId,
423
+ aBzType: 'send',
424
+ aName:this.dualName,
425
+ branch:this.fengongsi,
426
+ //gh_id:this.gh_id,
427
+ name: this.typeuser === 'webUser' ? 'web客户' + this.webId.substring(15) : this.$login.f.name,
428
+ date: Util.toStandardTimeString().split(' ')[0].substring(2, Util.toStandardTimeString().split(' ')[0].length),
429
+ time: Util.toStandardTimeString().split(' ')[1],
430
+ }
431
+ // web端没有aId
432
+ if (this.typeuser !== 'webUser') {
433
+ msg.aId = this.dualId
434
+ msg.role = this.dualRole
435
+ }
436
+ if (this.typeuser === 'webUser') {
437
+ msg.openId = this.webId
438
+ }
439
+ if (type === 'text') {
440
+ if (!(this.content && this.content.length > 0)) {
441
+ console.log('发送的内容不能为空');
442
+ return
443
+ }
444
+ msg.msgType = 'text'
445
+ msg.content = this.content
446
+ } else if (type === 'image') { // 图片消息
447
+ msg.msgType = 'image'
448
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
449
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
450
+ msg.content = content.f_mediaid
451
+ } else if (type === 'video') { // 视频消息
452
+ msg.msgType = 'video'
453
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_file_name}`
454
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${content.f_thumbnail}`
455
+ msg.content = content.f_mediaid
456
+ }
457
+ console.log('发送的消息体为', msg)
458
+ // 此处将消息发送服务一份,然后添加到自己界面
459
+ let that = this
460
+ let http = new HttpResetClass()
461
+ let url = `${this.$androidUtil.getProxyUrl()}/TDual`
462
+ http.load('POST', url, msg, {resolveMsg: null, rejectMsg: null}).then((res) => {
463
+ console.log('发消息返回的消息', res)
464
+ if (res.data.code === 200 && !res.data.msg) {
465
+
466
+ }
467
+ else if(res.data.code === 500){
468
+ this.$showAlert('当前用户已离线,不能发送消息', 'warning', 2000)
469
+
470
+ }
471
+ //else if (res.data.code === 200&&res.data.msg!==''){
472
+ // this.$showAlert(',暂时无法服务,请拨打96677咨询人工客服', 'warning', 2000)
473
+ //}
474
+ })
475
+ // openId: 微信用户openId
476
+ // msgType: 消息类别
477
+ // content:消息内容,只针对text消息
478
+ // name: 燃气用户姓名
479
+ // userId: 燃气用户id
480
+ // time: 消息时间
481
+ // date: 消息年月日
482
+ // media: 除text消息外的文件名
483
+ // thumbnail: media对应的缩略图或转换文件
484
+ // {"aId":"001", "aBzType":"send", "msgType":"text", "content":"huawuyuangeinidexiaoxi", "openId": "oL5ch0q8MjNEuLcsQw4CsImDkEdA"}
485
+ this.addMsg([msg])
486
+ // 消息发送出后,清空输入框
487
+ this.content = ''
488
+ // 清空显示
489
+ this.$els.content.innerHTML = ''
490
+ this.$els.content.focus()
491
+ // 消息发出后滚动到最底部
492
+ // this.scrollBottom()
493
+ },
494
+ // 切换用户
495
+ handleTabListClick(index, user) {
496
+ this.active = index
497
+ // 切换激活用户时,将未读消息设置为0
498
+ this.users[index].unreadNum = 0
499
+ // user = {openId: user.openId, userId: user.userId, name: user.name}
500
+ console.log(user)
501
+ this.active = index
502
+ // 发送事件,切换用户时重新查询用户
503
+ this.$dispatch('user', {openId: user.openId, gh_id:user.gh_id, userId: user.userId, name: user.name})
504
+ this.scrollBottom()
505
+ },
506
+ // 关闭用户对话框
507
+ deleteUser(index, user) {
508
+ // 话务员直接关闭
509
+ if (this.isRepairman)
510
+ return
511
+ console.log('关闭用户对话框')
512
+ if (!user.lineState) { // 如果用户已经离线,直接删除,发请求回报错,导致关闭不了
513
+ this.users.splice(index, 1)
514
+ return
515
+ }
516
+ let http = new HttpResetClass()
517
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/TDual`, {
518
+ aId: this.dualId,
519
+ aBzType: "abort",
520
+ aName:this.dualName,
521
+ openId: user.openId,
522
+ gh_id:user.gh_id,
523
+ }, {resolveMsg: null, rejectMsg: null}).then((res) => {
524
+ console.log('关闭用户对话框', res)
525
+ this.users.splice(index, 1)
526
+ })
527
+ },
528
+ // 滚动到文字信息底部
529
+ scrollBottom() {
530
+ this.$nextTick(() => {
531
+ this.$els.msgs.scrollTop = this.$els.msgs.scrollHeight
532
+
533
+ })
534
+ },
535
+ // 处理离线用户
536
+ turnOff(openId) {
537
+ let index = this.users.findIndex((user, index, arr) => {
538
+ return user.openId === openId
539
+ })
540
+ this.users[index].lineState = false
541
+ },
542
+ // 当有滚动事件时,滚轮事件被屏蔽掉
543
+ // 滚动事件
544
+ scroll(e) {
545
+ // console.log('滚动事件', e)
546
+ if (e.target.scrollTop === 0) {
547
+ this.isTop = true
548
+ } else {
549
+ this.isTop = false
550
+ }
551
+ },
552
+ // 触屏滑动事件
553
+ touchStart(e) { // 触屏开始位置
554
+ this.start_Y = e.changedTouches[0].pageY
555
+ },
556
+ touchEnd(e) { // 滑动当前位置
557
+ let end_Y = e.changedTouches[0].pageY
558
+ if (end_Y - this.start_Y > 50) {
559
+ // 下滑加载
560
+ console.log('发生滑动时间:' + e)
561
+ this.loadHistory(e)
562
+ }
563
+ },
564
+ // 滚轮事件,为解决刚进来没有滚动时,加载历史记录
565
+ wheelUp(e) {
566
+ if (e.wheelDelta > 0) {
567
+ console.log('发生滚轮时间:' + e)
568
+ this.loadHistory(e)
569
+ }
570
+ },
571
+ loadHistory(e) {
572
+ if (this.isTop) { // 加载历史开始了
573
+ if (this.users.length == 0 || !this.users[this.active].openId)
574
+ return
575
+ let dt = ''
576
+ // 如果维修员想要查看历史消息,但是还没有聊天的情况下,
577
+ if (this.users[this.active].msgs.length == 0)
578
+ dt = Util.toStandardTimeString()
579
+ else
580
+ dt = `20${this.users[this.active].msgs[0].date} ${this.users[this.active].msgs[0].time}`
581
+ this.$resetpost(`${this.$androidUtil.getProxyUrl()}/rs/sql/tel_getChatHistory`,
582
+ {
583
+ data: {
584
+ f_dt: dt,
585
+ f_open_id: this.users[this.active].openId
586
+ }
587
+ },
588
+ {resolveMsg: null, rejectMsg: null}).then((res) => {
589
+ console.log('加载到的数据是', res)
590
+ if (res.data.length > 0) {
591
+ let msgs = []
592
+ res.data.forEach((item) => {
593
+ if (item.f_msg_type !== 'system') {
594
+ let msg = {
595
+ content: item.f_content,
596
+ date: item.f_dt.split(' ')[0].substring(2, item.f_dt.split(' ')[0].length),
597
+ time: item.f_dt.split(' ')[1],
598
+ media: "",
599
+ msgType: item.f_msg_type,
600
+ name: (item.f_msg_direction === '发送') ? (item.f_repairman ? item.f_repairman : null) : item.f_user_name,
601
+ openId: item.f_open_id,
602
+ gh_id:item.gh_id,
603
+ sessionId: item.f_session_id,
604
+ thumbnail: item.f_thumbnail,
605
+ userId: item.f_user_id
606
+ }
607
+ if (item.f_msg_direction === '发送') {
608
+ msg.aBzType = "send"
609
+ msg.branch = this.fengongsi
610
+ msg.gh_id=this.gh_id
611
+ }
612
+ if (item.f_msg_type === 'video' || item.f_msg_type === 'voice' || item.f_msg_type === 'image') {
613
+ console.log('聊天历史消息:', JSON.stringify(item))
614
+ if (item.f_msg_direction === '发送') { // 话务员发送的消息
615
+ msg.src = `${this.$androidUtil.getProxyUrl()}/materials/${item.f_file_name}`
616
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/materials/${item.thumbnail}`
617
+ } else { // 用户发送的消息
618
+ msg.src = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_content}`
619
+ msg.src_img = `${this.$androidUtil.getProxyUrl()}/umaterials/${item.f_thumbnail}`
620
+ }
621
+ }
622
+ msgs.push(msg)
623
+ }
624
+ })
625
+ console.log('组成消息组是', msgs)
626
+ this.users[this.active].msgs.unshift(...msgs)
627
+ } else { // 没有记录了
628
+ this.$showAlert('没有记录了', 'warning', 1000)
629
+ }
630
+ })
631
+ // console.log('向上滚')
632
+ // console.log(e.target.scrollTop)
633
+ } else {
634
+ // console.log('向下滚')
635
+ }
636
+ },
637
+ // 自文本内容中加入小图标
638
+ contentAddIcon(key, emoji) {
639
+ // 获取焦点,防止选择表情无法输入
640
+ let el = this.$els.content
641
+ el.focus() // 获取焦点
642
+ // 将光标定位到文档最后
643
+ let range = document.createRange();
644
+ range.selectNodeContents(el);
645
+ range.collapse(true);
646
+ range.setEnd(el, el.childNodes.length);
647
+ range.setStart(el, el.childNodes.length);
648
+ let sel = window.getSelection();
649
+ sel.removeAllRanges();
650
+ sel.addRange(range);
651
+ // 定位光标后
652
+ this.content += key
653
+ document.execCommand('insertImage', false, `static/wechat/${emoji}`)
654
+ },
655
+ // 按键事件
656
+ handleKeys(event) {
657
+ if (event.which === 9) event.preventDefault()
658
+ if (event.which === 13 && event.ctrlKey) {
659
+ event.preventDefault()
660
+ this.send('text')
661
+ }
662
+ // if (event.which === 13 && event.ctrlKey){
663
+ // this.content = this.$els.content.innerHTML
664
+ // }
665
+ // console.log('this.content---->', this.content)
666
+ },
667
+ // 内容发生变化
668
+ contentChanged() {
669
+ if (this.$els.content.innerHTML === '') {
670
+ return
671
+ }
672
+ this.content = emoji.editorChange(this.$els.content.innerHTML)
673
+ },
674
+ // insertTextAtCursor () {
675
+ // let sel
676
+ // if (window.getSelection) {
677
+ // sel = window.getSelection();
678
+ // if (sel.getRangeAt && sel.rangeCount) {
679
+ // range = sel.getRangeAt(0)
680
+ // range.deleteContents()
681
+ // }
682
+ // }
683
+ // }
684
+ // insertTextAtCursor(text) {
685
+ // var sel, range, html;
686
+ // console.log('11111111111', window.getSelection())
687
+ // if (window.getSelection) {
688
+ // sel = window.getSelection();
689
+ // if (sel.getRangeAt && sel.rangeCount) {
690
+ // range = sel.getRangeAt(0);
691
+ // range.deleteContents();
692
+ // // range.insertNode( document.createTextNode(text) );
693
+ // }
694
+ // } else if (document.selection && document.selection.createRange) {
695
+ // // document.selection.createRange().text = text;
696
+ // }
697
+ // },
698
+ // saveSelection () {
699
+ // if (window.getSelection) {
700
+ // sel = window.getSelection()
701
+ // if (sel.getRangeAt && sel.rangeCount) {
702
+ // return sel.getRangeAt(0)
703
+ // }
704
+ // } else if (document.selection && document.selection.createRange) {
705
+ // return document.selection.createRange()
706
+ // }
707
+ // return null
708
+ // },
709
+ // restoreSelection(range) {
710
+ // if (range) {
711
+ // if (window.getSelection) {
712
+ // sel = window.getSelection()
713
+ // sel.removeAllRanges()
714
+ // sel.addRange(range)
715
+ // } else if (document.selection && range.select) {
716
+ // range.select()
717
+ // }
718
+ // }
719
+ // }
720
+ },
721
+ beforeDestroy() {
722
+ clearInterval(this.interval)
723
+ let gen = outGen(this)
724
+ co(gen)
725
+ },
726
+ computed:{
727
+ reply() {
728
+ return this.$appdata.getParam('快速回复')
729
+ }
730
+
731
+ },
732
+ }
733
+ </script>
734
+ <style scoped>
735
+ .text-editor {
736
+ flex: 1;
737
+ }
738
+
739
+ div[contenteditable=true] {
740
+ outline: none;
741
+ border-top: 1px solid #DDD;
742
+ overflow: auto;
743
+ background: #FFF;
744
+ padding: 5px 10px;
745
+ }
746
+
747
+ div[contenteditable=true] div {
748
+ height: auto;
749
+ }
750
+
751
+ div[contenteditable=true] img {
752
+ width: 25px;
753
+ }
754
+
755
+ .send-msg {
756
+ /*position: relative;*/
757
+ display: flex;
758
+ height: 120px;
759
+ flex-direction: column;
760
+ }
761
+
762
+ .send-msg > button {
763
+ /*position: absolute;*/
764
+ right: 20px;
765
+ bottom: 5px;
766
+ padding: 3px 20px;
767
+ }
768
+
769
+ /* 文字客服页签样式 */
770
+ /* .text-server .flex {
771
+ display: flex;
772
+ flex-direction: row;
773
+ } */
774
+ .text-server .flex-row > ul {
775
+ background: #009BDB;
776
+ width: 60px;
777
+
778
+ }
779
+
780
+ .text-server .flex-row > ul > li {
781
+ width: 100%;
782
+ display: flex;
783
+ justify-content: center;
784
+ }
785
+
786
+ .text-server .flex-row > ul > li > a {
787
+ border-bottom: none;
788
+ /* background: #FFF; */
789
+ padding: 0px;
790
+ margin-right: 0px;
791
+ line-height: 40px;
792
+ text-align: center;
793
+ font-size: 1.2em;
794
+ width: 40px;
795
+ height: 40px;
796
+ margin: 5px 0px;
797
+ border-radius: 50%;
798
+ }
799
+
800
+ .text-server .flex-row > ul > li.active {
801
+ background: rgba(255, 255, 255, 0.3);
802
+ }
803
+
804
+ .text-server ul > li > a > span {
805
+ display: inherit;
806
+ }
807
+
808
+ /* 关闭按钮 badge glyphicon style="position: absolute;right: -5px;top: 0px;background: #F61003;" */
809
+ #text-service > ul > li > a {
810
+ position: relative;
811
+ }
812
+
813
+ #text-service > ul > li > a > .glyphicon {
814
+ display: none;
815
+ }
816
+
817
+ #text-service > ul > li > a > .badge {
818
+ /* display: initial; */
819
+ position: absolute;
820
+ right: -5px;
821
+ top: 0px;
822
+ background: #F61003;
823
+ }
824
+
825
+ #text-service > ul > li > a:hover > .glyphicon {
826
+ display: initial;
827
+ position: absolute;
828
+ /* font-size: 13px; */
829
+ background-color: rgb(255, 255, 255, 0.5);
830
+ right: -5px;
831
+ top: 0px;
832
+ }
833
+
834
+ /* 当鼠标悬停在游湖头像时,未读消息显示隐藏,关闭按钮显示 */
835
+ #text-service > ul > li > a:hover > .badge {
836
+ display: none;
837
+ }
838
+
839
+ #text-service > ul > li > a:hover > .glyphicon:hover {
840
+ background-color: #F61003;
841
+ color: #FFF;
842
+ /* color: #5CBDED; */
843
+ }
844
+
845
+ .offline {
846
+ background: #888 !important;
847
+ }
848
+
849
+ </style>