telephone-clients 3.0.104-104 → 3.0.104-105

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 (1079) 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/ImgArea.vue +80 -80
  130. package/src/components/android/Lbt.vue +103 -103
  131. package/src/components/android/LoginApp.vue +374 -374
  132. package/src/components/android/NavBottom.vue +104 -104
  133. package/src/components/changemeter/ChangeMeterAll.vue +189 -189
  134. package/src/components/changemeter/ChangeMeterDetail.vue +300 -300
  135. package/src/components/changemeter/ChangeMeterMain.vue +37 -37
  136. package/src/components/eachart/BarBrokenline.vue +206 -206
  137. package/src/components/eachart/BarChart.vue +165 -165
  138. package/src/components/eachart/PieChart.vue +182 -182
  139. package/src/components/eachart/datesumchart.vue +165 -165
  140. package/src/components/eachart/statework.vue +226 -226
  141. package/src/components/eachart/workorderchart.vue +183 -183
  142. package/src/components/guoxin/Console.vue +393 -393
  143. package/src/components/guoxin/RecordInfoRight.vue +75 -75
  144. package/src/components/guoxin/VisitInfo.vue +270 -270
  145. package/src/components/guoxin/call.state.api.js +217 -217
  146. package/src/components/guoxin/reconnecting-websocket.min.js +1 -1
  147. package/src/components/guoxin/telephone.js +15 -15
  148. package/src/components/map/AMapTrailShowWx.vue +178 -178
  149. package/src/components/map/CallMap.vue +403 -403
  150. package/src/components/map/CriteriaData.vue +81 -81
  151. package/src/components/map/OlMap.vue +831 -831
  152. package/src/components/map/OrderService.vue +249 -249
  153. package/src/components/map/PipeMap.vue +154 -154
  154. package/src/components/map/dragbox.js +234 -234
  155. package/src/components/pay/createQRcode.vue +192 -192
  156. package/src/components/pay/telReadCard.vue +59 -59
  157. package/src/components/pc/AllUser.vue +615 -615
  158. package/src/components/pc/AllUserNew.vue +638 -638
  159. package/src/components/pc/ArrearsList.vue +397 -397
  160. package/src/components/pc/AttendantCallStat.vue +213 -213
  161. package/src/components/pc/AttendantWorkHistory.vue +98 -98
  162. package/src/components/pc/Auxfunc.vue +76 -76
  163. package/src/components/pc/BottleGas/BottleGasManage.vue +304 -304
  164. package/src/components/pc/BottleGasWork.vue +214 -214
  165. package/src/components/pc/BuildReport.vue +60 -60
  166. package/src/components/pc/CallerInfoList.vue +98 -98
  167. package/src/components/pc/ChatMsg.vue +338 -338
  168. package/src/components/pc/ComplainWork.vue +329 -329
  169. package/src/components/pc/Console.vue +617 -617
  170. package/src/components/pc/DelayReply.vue +60 -60
  171. package/src/components/pc/DistributeWork.vue +177 -177
  172. package/src/components/pc/ElseWork.vue +44 -44
  173. package/src/components/pc/ElseWorkList.vue +267 -267
  174. package/src/components/pc/Emoji.vue +64 -64
  175. package/src/components/pc/Evaluate.vue +145 -145
  176. package/src/components/pc/EvaluateList.vue +195 -195
  177. package/src/components/pc/EvaluateModel.vue +53 -53
  178. package/src/components/pc/FailureEdit.vue +192 -192
  179. package/src/components/pc/FailureShow.vue +61 -61
  180. package/src/components/pc/FireQuery.vue +165 -165
  181. package/src/components/pc/FootPrintList.vue +40 -40
  182. package/src/components/pc/GasWork.vue +764 -764
  183. package/src/components/pc/GroupResend.vue +111 -111
  184. package/src/components/pc/InstallWork.vue +734 -734
  185. package/src/components/pc/ManageMaterial.vue +282 -282
  186. package/src/components/pc/MessageList.vue +635 -635
  187. package/src/components/pc/MessageManage.vue +136 -136
  188. package/src/components/pc/MessageManageList.vue +127 -127
  189. package/src/components/pc/MessageManageNew.vue +121 -121
  190. package/src/components/pc/MonitorGroup.vue +82 -82
  191. package/src/components/pc/NewRepairPaper.vue +378 -378
  192. package/src/components/pc/OrderService.vue +182 -182
  193. package/src/components/pc/ProgressBar.vue +50 -50
  194. package/src/components/pc/QueryJoinlv.vue +136 -136
  195. package/src/components/pc/QueryTeleHistory.vue +95 -95
  196. package/src/components/pc/QueryTextHistory.vue +98 -98
  197. package/src/components/pc/QueryVisitHistory.vue +217 -217
  198. package/src/components/pc/ReVisitList.vue +208 -208
  199. package/src/components/pc/RecordInfoRight.vue +84 -84
  200. package/src/components/pc/RecordList.vue +53 -53
  201. package/src/components/pc/RecordList2.vue +155 -155
  202. package/src/components/pc/RecordListLeft.vue +258 -258
  203. package/src/components/pc/RecordReport.vue +181 -181
  204. package/src/components/pc/ReminderOrder.vue +52 -52
  205. package/src/components/pc/RepairHistoryList.vue +152 -152
  206. package/src/components/pc/RepairsWork.vue +870 -870
  207. package/src/components/pc/ReturnRecord.vue +126 -126
  208. package/src/components/pc/RoleSelector.vue +145 -145
  209. package/src/components/pc/RoleSelectorDep.vue +158 -158
  210. package/src/components/pc/SeatInfo.vue +207 -207
  211. package/src/components/pc/Seekwork.vue +313 -313
  212. package/src/components/pc/ServerAppendixInfo.vue +52 -52
  213. package/src/components/pc/ServiceBack.vue +49 -49
  214. package/src/components/pc/ServiceDetails.vue +53 -53
  215. package/src/components/pc/ServiceDetailsNew.vue +53 -53
  216. package/src/components/pc/SiteBack.vue +84 -84
  217. package/src/components/pc/SiteCase.vue +87 -87
  218. package/src/components/pc/SiteSend.vue +318 -318
  219. package/src/components/pc/StandSend.vue +600 -600
  220. package/src/components/pc/StandServer.vue +25 -25
  221. package/src/components/pc/StandWork.vue +91 -91
  222. package/src/components/pc/StandWorkNew.vue +91 -91
  223. package/src/components/pc/TelFindUser.vue +304 -304
  224. package/src/components/pc/TelListener.vue +174 -174
  225. package/src/components/pc/TelLossList.vue +264 -264
  226. package/src/components/pc/TelMaterSelect.vue +225 -225
  227. package/src/components/pc/TelUserMaterSend.vue +171 -171
  228. package/src/components/pc/TeleInfo.vue +140 -140
  229. package/src/components/pc/TeleList.vue +99 -99
  230. package/src/components/pc/TeleOperKl.vue +91 -91
  231. package/src/components/pc/TemplateMessage.vue +92 -92
  232. package/src/components/pc/TextControl.vue +113 -113
  233. package/src/components/pc/TextInfoRight.vue +84 -84
  234. package/src/components/pc/TextList.vue +45 -45
  235. package/src/components/pc/TextListLeft.vue +156 -156
  236. package/src/components/pc/TextServer.vue +154 -154
  237. package/src/components/pc/TextService.vue +849 -849
  238. package/src/components/pc/UserDefinedMessage.vue +90 -90
  239. package/src/components/pc/UserDefinedMessageNew.vue +121 -121
  240. package/src/components/pc/UserOperate.vue +48 -48
  241. package/src/components/pc/VideoPlayer.vue +73 -73
  242. package/src/components/pc/VisitInfo.vue +311 -311
  243. package/src/components/pc/VoiceServer.vue +208 -208
  244. package/src/components/pc/WorkCenter.vue +105 -105
  245. package/src/components/pc/WorkCenterContent.vue +100 -100
  246. package/src/components/pc/WorkCenterList.vue +292 -292
  247. package/src/components/pc/WorkFind.vue +128 -128
  248. package/src/components/pc/WorkHistory.vue +560 -560
  249. package/src/components/pc/WorkList.vue +744 -744
  250. package/src/components/pc/WorkListAll.vue +630 -630
  251. package/src/components/pc/WorkListAllNew.vue +715 -715
  252. package/src/components/pc/WorkListNew.vue +722 -722
  253. package/src/components/pc/WorkMsg.vue +105 -105
  254. package/src/components/pc/analysis/AnalysisMain.vue +423 -423
  255. package/src/components/pc/analysis/StateStatistics.vue +292 -292
  256. package/src/components/pc/analysis/TelephoneAnaly.vue +104 -104
  257. package/src/components/pc/analysis/TelephoneType.vue +270 -270
  258. package/src/components/pc/config/DefaultPrint.js +7 -7
  259. package/src/components/pc/dataManager/KlCatalog.vue +293 -293
  260. package/src/components/pc/dataManager/KlContent.vue +193 -193
  261. package/src/components/pc/dataManager/Knowledge.vue +21 -21
  262. package/src/components/pc/dataManager/Materials.vue +553 -553
  263. package/src/components/pc/dataManager/OutletsList.vue +85 -85
  264. package/src/components/pc/dataManager/SafeEditor.vue +91 -91
  265. package/src/components/pc/dataManager/SafeList.vue +77 -77
  266. package/src/components/pc/dataManager/ShowMaterials.vue +159 -159
  267. package/src/components/pc/dataManager/StopGasManager.vue +320 -320
  268. package/src/components/pc/imgmove.vue +192 -192
  269. package/src/components/pc/olddata/OldWorkList.vue +193 -193
  270. package/src/components/pc/serviceDeleteOrder.vue +53 -53
  271. package/src/components/pc/wx/BookingService.vue +407 -407
  272. package/src/components/pc/wx/CustomMenu.vue +154 -154
  273. package/src/components/pc/wx/MenuView.vue +249 -249
  274. package/src/components/pc/wx/MobileView.vue +273 -273
  275. package/src/components/pc/wx/NewsMaterial.vue +144 -144
  276. package/src/components/pc/wx/SelectMaterial.vue +100 -100
  277. package/src/components/pc/wx/TelOutletsManager.vue +186 -186
  278. package/src/components/pos/Init.vue +213 -213
  279. package/src/components/pos/Main.vue +123 -123
  280. package/src/components/pos/Plugin/AndroidPlugin.js +148 -148
  281. package/src/components/pos/Plugin/PosUtil.js +315 -315
  282. package/src/components/pos/aotePos.js +55 -55
  283. package/src/components/pos/bootstrap/fonts/glyphicons-halflings-regular.svg +287 -287
  284. package/src/components/pos/bootstrap/less/.csscomb.json +304 -304
  285. package/src/components/pos/bootstrap/less/.csslintrc +19 -19
  286. package/src/components/pos/bootstrap/less/alerts.less +73 -73
  287. package/src/components/pos/bootstrap/less/badges.less +66 -66
  288. package/src/components/pos/bootstrap/less/bootstrap.less +56 -56
  289. package/src/components/pos/bootstrap/less/breadcrumbs.less +26 -26
  290. package/src/components/pos/bootstrap/less/button-groups.less +247 -247
  291. package/src/components/pos/bootstrap/less/buttons.less +172 -172
  292. package/src/components/pos/bootstrap/less/carousel.less +269 -269
  293. package/src/components/pos/bootstrap/less/close.less +34 -34
  294. package/src/components/pos/bootstrap/less/code.less +69 -69
  295. package/src/components/pos/bootstrap/less/component-animations.less +33 -33
  296. package/src/components/pos/bootstrap/less/dropdowns.less +216 -216
  297. package/src/components/pos/bootstrap/less/forms.less +626 -626
  298. package/src/components/pos/bootstrap/less/glyphicons.less +305 -305
  299. package/src/components/pos/bootstrap/less/grid.less +84 -84
  300. package/src/components/pos/bootstrap/less/input-groups.less +167 -167
  301. package/src/components/pos/bootstrap/less/jumbotron.less +52 -52
  302. package/src/components/pos/bootstrap/less/labels.less +64 -64
  303. package/src/components/pos/bootstrap/less/list-group.less +141 -141
  304. package/src/components/pos/bootstrap/less/media.less +66 -66
  305. package/src/components/pos/bootstrap/less/mixins/alerts.less +14 -14
  306. package/src/components/pos/bootstrap/less/mixins/background-variant.less +9 -9
  307. package/src/components/pos/bootstrap/less/mixins/border-radius.less +18 -18
  308. package/src/components/pos/bootstrap/less/mixins/buttons.less +69 -69
  309. package/src/components/pos/bootstrap/less/mixins/center-block.less +7 -7
  310. package/src/components/pos/bootstrap/less/mixins/clearfix.less +22 -22
  311. package/src/components/pos/bootstrap/less/mixins/forms.less +90 -90
  312. package/src/components/pos/bootstrap/less/mixins/gradients.less +59 -59
  313. package/src/components/pos/bootstrap/less/mixins/grid-framework.less +92 -92
  314. package/src/components/pos/bootstrap/less/mixins/grid.less +122 -122
  315. package/src/components/pos/bootstrap/less/mixins/hide-text.less +21 -21
  316. package/src/components/pos/bootstrap/less/mixins/image.less +33 -33
  317. package/src/components/pos/bootstrap/less/mixins/labels.less +12 -12
  318. package/src/components/pos/bootstrap/less/mixins/list-group.less +30 -30
  319. package/src/components/pos/bootstrap/less/mixins/nav-divider.less +10 -10
  320. package/src/components/pos/bootstrap/less/mixins/nav-vertical-align.less +9 -9
  321. package/src/components/pos/bootstrap/less/mixins/opacity.less +8 -8
  322. package/src/components/pos/bootstrap/less/mixins/pagination.less +24 -24
  323. package/src/components/pos/bootstrap/less/mixins/panels.less +24 -24
  324. package/src/components/pos/bootstrap/less/mixins/progress-bar.less +10 -10
  325. package/src/components/pos/bootstrap/less/mixins/reset-filter.less +8 -8
  326. package/src/components/pos/bootstrap/less/mixins/reset-text.less +18 -18
  327. package/src/components/pos/bootstrap/less/mixins/resize.less +6 -6
  328. package/src/components/pos/bootstrap/less/mixins/responsive-visibility.less +15 -15
  329. package/src/components/pos/bootstrap/less/mixins/size.less +10 -10
  330. package/src/components/pos/bootstrap/less/mixins/tab-focus.less +9 -9
  331. package/src/components/pos/bootstrap/less/mixins/table-row.less +44 -44
  332. package/src/components/pos/bootstrap/less/mixins/text-emphasis.less +9 -9
  333. package/src/components/pos/bootstrap/less/mixins/text-overflow.less +8 -8
  334. package/src/components/pos/bootstrap/less/mixins/vendor-prefixes.less +227 -227
  335. package/src/components/pos/bootstrap/less/mixins.less +40 -40
  336. package/src/components/pos/bootstrap/less/modals.less +151 -151
  337. package/src/components/pos/bootstrap/less/navbar.less +660 -660
  338. package/src/components/pos/bootstrap/less/navs.less +286 -286
  339. package/src/components/pos/bootstrap/less/normalize.less +424 -424
  340. package/src/components/pos/bootstrap/less/pager.less +76 -76
  341. package/src/components/pos/bootstrap/less/pagination.less +89 -89
  342. package/src/components/pos/bootstrap/less/panels.less +274 -274
  343. package/src/components/pos/bootstrap/less/popovers.less +131 -131
  344. package/src/components/pos/bootstrap/less/print.less +101 -101
  345. package/src/components/pos/bootstrap/less/progress-bars.less +87 -87
  346. package/src/components/pos/bootstrap/less/responsive-embed.less +35 -35
  347. package/src/components/pos/bootstrap/less/responsive-utilities.less +194 -194
  348. package/src/components/pos/bootstrap/less/scaffolding.less +161 -161
  349. package/src/components/pos/bootstrap/less/tables.less +262 -262
  350. package/src/components/pos/bootstrap/less/theme.less +291 -291
  351. package/src/components/pos/bootstrap/less/thumbnails.less +36 -36
  352. package/src/components/pos/bootstrap/less/tooltip.less +102 -102
  353. package/src/components/pos/bootstrap/less/type.less +303 -303
  354. package/src/components/pos/bootstrap/less/utilities.less +55 -55
  355. package/src/components/pos/bootstrap/less/variables.less +895 -895
  356. package/src/components/pos/bootstrap/less/wells.less +29 -29
  357. package/src/components/pos/charge/card/CardInfo.vue +43 -43
  358. package/src/components/pos/charge/card/CheckUser.Vue +116 -116
  359. package/src/components/pos/charge/card/ReadCardInter.vue +177 -177
  360. package/src/components/pos/charge/card/ReadCardToBuy.vue +174 -174
  361. package/src/components/pos/charge/card/SelectUser.Vue +104 -104
  362. package/src/components/pos/charge/machine/MachineSearch.Vue +124 -124
  363. package/src/components/pos/charge/sellgas/AdvertPop.vue +70 -70
  364. package/src/components/pos/charge/sellgas/CardSellGas.vue +361 -361
  365. package/src/components/pos/charge/sellgas/ChoosePayWay.vue +275 -275
  366. package/src/components/pos/charge/sellgas/GudingPrice.vue +38 -38
  367. package/src/components/pos/charge/sellgas/JietiPrice.vue +54 -54
  368. package/src/components/pos/charge/sellgas/ScanQrcode.vue +171 -171
  369. package/src/components/pos/charge/sellgas/WriteCard.vue +366 -366
  370. package/src/components/pos/charge/userinfo/ChangeMeterList.vue +43 -43
  371. package/src/components/pos/charge/userinfo/FillGasList.vue +43 -43
  372. package/src/components/pos/charge/userinfo/HistorySellList.vue +90 -90
  373. package/src/components/pos/charge/userinfo/OtherList.vue +43 -43
  374. package/src/components/pos/charge/userinfo/SellList.vue +43 -43
  375. package/src/components/pos/charge/userinfo/TransList.vue +43 -43
  376. package/src/components/pos/charge/userinfo/UserInfo.vue +176 -176
  377. package/src/components/pos/charge/userinfo/WritecardInfo.vue +44 -44
  378. package/src/components/pos/css/bootstrap.less +6757 -6757
  379. package/src/components/pos/css/style.less +158 -158
  380. package/src/components/pos/css/style.less.bak +84 -84
  381. package/src/components/pos/fonts/fontawesome-webfont.svg +2671 -2671
  382. package/src/components/pos/fonts/glyphicons-halflings-regular.svg +287 -287
  383. package/src/components/pos/js/bootstrap.js +2377 -2377
  384. package/src/components/pos/js/bootstrap.min.js +6 -6
  385. package/src/components/pos/js/jquery.chromatable.js +150 -150
  386. package/src/components/pos/js/jquery.min.js +5 -5
  387. package/src/components/pos/js/npm.js +12 -12
  388. package/src/components/pos/ztprint.js +26 -26
  389. package/src/components/qinhua/qhonlineChangeMeter.vue +440 -440
  390. package/src/components/qinhua/qhonlineoperation.vue +227 -227
  391. package/src/components/reli/ChoosePayWay.vue +179 -179
  392. package/src/components/reli/HistorySellLists.vue +128 -128
  393. package/src/components/reli/MachineMain.vue +470 -470
  394. package/src/components/reli/UserInfo.vue +211 -211
  395. package/src/components/reli/searchSells.vue +446 -446
  396. package/src/components/repaircount/RepairDetail.vue +74 -74
  397. package/src/components/repaircount/RepairPlan.vue +58 -58
  398. package/src/components/repaircount/SelectRepairPlan.vue +189 -189
  399. package/src/components/sale/CardMeterCenter.vue +625 -625
  400. package/src/components/sale/IOTMeterCenter.vue +443 -443
  401. package/src/components/sale/MachineMeterCenter.vue +591 -591
  402. package/src/components/sendsingle/CardChangeFill.vue +338 -338
  403. package/src/components/sendsingle/ChangeSendCard.vue +19 -19
  404. package/src/components/sendsingle/IotChangeFill.vue +471 -471
  405. package/src/components/sendsingle/MachineChangeFill.vue +143 -143
  406. package/src/components/sendsingle/PosMakeGas.vue +342 -342
  407. package/src/components/sendsingle/QueryTemporaryRepair.vue +226 -226
  408. package/src/components/sendsingle/TelLotChangeFill.vue +626 -626
  409. package/src/components/sendsingle/TemporarySingle.vue +480 -480
  410. package/src/components/sendsingle/ceshi.vue +51 -51
  411. package/src/components/sendsingle/onlineBuyGas.vue +632 -632
  412. package/src/components/sendsingle/onlineBuyGasOld.vue +19 -19
  413. package/src/components/sendsingle/onlineChangeMeter.vue +419 -419
  414. package/src/components/sendsingle/onlinemakecard.vue +413 -413
  415. package/src/components/sendsingle/onlineoperation.vue +401 -401
  416. package/src/components/sendsingle/onlinequeryuser.vue +468 -468
  417. package/src/components/sendsingle/posMaintainer.vue +277 -277
  418. package/src/components/shaoguan/DelayReply.vue +60 -60
  419. package/src/components/shaoguan/FailureEdit.vue +172 -172
  420. package/src/components/shaoguan/RepairDetailsChange.vue +399 -399
  421. package/src/components/shaoguan/RepairOrderChange.vue +673 -673
  422. package/src/components/shaoguan/RepairUserInfoChange.vue +532 -532
  423. package/src/components/shaoguan/WorkHistory.vue +346 -346
  424. package/src/components/shaoguan/WorkListAll.vue +521 -521
  425. package/src/components/shaoguan/config/DefaultPrint.js +7 -7
  426. package/src/components/telcount/TelByAttendant.vue +118 -118
  427. package/src/components/telcount/TelByLouQi.vue +113 -113
  428. package/src/components/telcount/TelByLouQiMingxi.vue +117 -117
  429. package/src/components/telcount/TelByOrderMan.vue +123 -123
  430. package/src/components/telcount/TelByWeiXiu.vue +199 -199
  431. package/src/components/telcount/TelByZhiHuan.vue +109 -109
  432. package/src/components/telreport/HotlineMonthly.vue +121 -121
  433. package/src/components/telreport/RepairsDetailsReport.vue +98 -98
  434. package/src/components/telreport/TableFaultReport.vue +96 -96
  435. package/src/components/telreport/TelAgentVoiceReport.vue +275 -275
  436. package/src/components/telreport/TelMan.vue +127 -127
  437. package/src/components/telreport/TelReport.vue +122 -122
  438. package/src/components/telreport/TelephoneManReport.vue +121 -121
  439. package/src/components/telreport/Traffic.vue +94 -94
  440. package/src/components/telreport/TrafficClassificationReport.vue +134 -134
  441. package/src/components/telreport/Trafficassess.vue +121 -121
  442. package/src/components/temp/BusinessMessage.vue +60 -60
  443. package/src/components/temp/BusinesscheckInfo.vue +82 -82
  444. package/src/components/temp/CallRecords.vue +86 -86
  445. package/src/components/temp/ChangemeterInfo.vue +75 -75
  446. package/src/components/temp/DeviceInfo.vue +80 -80
  447. package/src/components/temp/DisableInforMation.vue +82 -82
  448. package/src/components/temp/HandplanInfo.vue +93 -93
  449. package/src/components/temp/InfoTable.vue +134 -134
  450. package/src/components/temp/InstructInfo.vue +86 -86
  451. package/src/components/temp/Main.vue +375 -375
  452. package/src/components/temp/MetereadInfo.vue +80 -80
  453. package/src/components/temp/MetterInfo.vue +92 -92
  454. package/src/components/temp/OldRepairList.vue +100 -100
  455. package/src/components/temp/ParamManager/ParamPage.vue +285 -285
  456. package/src/components/temp/ParamManager/SinglePage.vue +161 -161
  457. package/src/components/temp/RepairList.vue +125 -125
  458. package/src/components/temp/SecurityMessage.vue +64 -64
  459. package/src/components/temp/SecuritycheckInfo.vue +87 -87
  460. package/src/components/temp/SellInfo.vue +153 -153
  461. package/src/components/temp/TelList.vue +99 -99
  462. package/src/components/temp/rightview/CardList.vue +287 -287
  463. package/src/components/temp/rightview/RecordCancel.vue +103 -103
  464. package/src/components/temp/rightview/carddetail/AddUserDetail.vue +65 -65
  465. package/src/components/temp/rightview/carddetail/BankDKDetail.vue +75 -75
  466. package/src/components/temp/rightview/carddetail/BankPay.vue +75 -75
  467. package/src/components/temp/rightview/carddetail/CancellationDetail.vue +58 -58
  468. package/src/components/temp/rightview/carddetail/CardMeterCenterDetail.vue +58 -58
  469. package/src/components/temp/rightview/carddetail/CardOverUserDetail.vue +62 -62
  470. package/src/components/temp/rightview/carddetail/ChangeMeterDetail.vue +70 -70
  471. package/src/components/temp/rightview/carddetail/OtherChargeDetail.vue +56 -56
  472. package/src/components/temp/rightview/carddetail/RefundDetail.vue +63 -63
  473. package/src/components/temp/rightview/carddetail/ReissueBill.vue +165 -165
  474. package/src/components/temp/rightview/carddetail/SortingQuery.vue +295 -295
  475. package/src/components/temp/rightview/carddetail/UserChangeDetail.vue +77 -77
  476. package/src/components/temp/rightview/carddetail/WeChatPay.vue +75 -75
  477. package/src/components/temp/server/ChangeDeclare.vue +45 -45
  478. package/src/components/temp/server/LoadData.vue +60 -60
  479. package/src/components/temp/server/Login.vue +401 -401
  480. package/src/components/temp/server/ModifyPw.vue +143 -143
  481. package/src/components/tongcheng/DistributeWork.vue +129 -129
  482. package/src/components/tongcheng/InfoTable.vue +55 -55
  483. package/src/components/tongcheng/MetterInfo.vue +90 -90
  484. package/src/components/tongcheng/RepairsWork.vue +788 -788
  485. package/src/components/tongcheng/SellInfo.vue +152 -152
  486. package/src/components/tongcheng/StandServer.vue +24 -24
  487. package/src/components/tongcheng/UserOperate.vue +43 -43
  488. package/src/components/tongcheng/VoiceServer.vue +136 -136
  489. package/src/components/tongcheng/WorkListAll.vue +535 -535
  490. package/src/components/weinan/ComplainMsg.vue +141 -141
  491. package/src/components/weinan/ComplainWork.vue +205 -205
  492. package/src/components/weinan/Console.vue +418 -418
  493. package/src/components/weinan/DistributeWork.vue +138 -138
  494. package/src/components/weinan/ExportExcel.vue +204 -204
  495. package/src/components/weinan/FailureEdit.vue +182 -182
  496. package/src/components/weinan/InfoTable.vue +67 -67
  497. package/src/components/weinan/RecordList.vue +299 -299
  498. package/src/components/weinan/RepairFirstV.vue +547 -547
  499. package/src/components/weinan/RepairInfo.vue +163 -163
  500. package/src/components/weinan/RepairListTel.vue +96 -96
  501. package/src/components/weinan/RepairOrderV.vue +1447 -1447
  502. package/src/components/weinan/RepairUserInfo.vue +533 -533
  503. package/src/components/weinan/RepairsWork.vue +806 -806
  504. package/src/components/weinan/Seekwork.vue +178 -178
  505. package/src/components/weinan/SiteChange.vue +228 -228
  506. package/src/components/weinan/SiteSend.vue +228 -228
  507. package/src/components/weinan/SiteSendWeixiu.vue +268 -268
  508. package/src/components/weinan/StandWorkWeixiu.vue +91 -91
  509. package/src/components/weinan/TelByAttendant.vue +110 -110
  510. package/src/components/weinan/TelFindUser.vue +241 -241
  511. package/src/components/weinan/WorkList.vue +726 -726
  512. package/src/components/weinan/WorkListAll.vue +974 -974
  513. package/src/components/weinan/WorkListWeixiu.vue +608 -608
  514. package/src/components/workOrderApplication/OrderWorkDetail.vue +796 -796
  515. package/src/components/workOrderApplication/orderApplicationManage.vue +98 -98
  516. package/src/components/workOrderApplication/orderApply.vue +57 -57
  517. package/src/components/workOrderApplication/orderTable.vue +214 -214
  518. package/src/components/workOrderApplication/orderWork.vue +114 -114
  519. package/src/components/workorder/AfTabset.vue +125 -125
  520. package/src/components/workorder/AndroidStopGasManager.vue +270 -270
  521. package/src/components/workorder/AppInstallationMaterial.vue +613 -613
  522. package/src/components/workorder/ChangeMeter.vue +546 -546
  523. package/src/components/workorder/ChangeMeterList.vue +236 -236
  524. package/src/components/workorder/ChangeMeterPage.vue +506 -506
  525. package/src/components/workorder/CompletedInstall.vue +214 -214
  526. package/src/components/workorder/CompletedRepair.vue +321 -321
  527. package/src/components/workorder/CookingUtensils.vue +134 -134
  528. package/src/components/workorder/DelayApply.vue +105 -105
  529. package/src/components/workorder/DeviceService.vue +133 -133
  530. package/src/components/workorder/DoorService.vue +355 -355
  531. package/src/components/workorder/FirstGasCheck.vue +310 -310
  532. package/src/components/workorder/InputSelect.vue +110 -110
  533. package/src/components/workorder/InstallFirst.vue +517 -517
  534. package/src/components/workorder/InstallUpLoad.vue +111 -111
  535. package/src/components/workorder/MaterialSum.vue +238 -238
  536. package/src/components/workorder/MonitorMSend.vue +202 -202
  537. package/src/components/workorder/Othercharge.vue +477 -477
  538. package/src/components/workorder/Outlay.vue +236 -236
  539. package/src/components/workorder/PhoneGroupResend.vue +88 -88
  540. package/src/components/workorder/PhoneStandWork.vue +354 -354
  541. package/src/components/workorder/PhoneUpDetail.vue +1041 -1041
  542. package/src/components/workorder/PhoneUpUserinfo.vue +1041 -1041
  543. package/src/components/workorder/PhotoWrite.vue +116 -116
  544. package/src/components/workorder/Pipeline.vue +497 -497
  545. package/src/components/workorder/QueryTemporaryRepair.vue +220 -220
  546. package/src/components/workorder/ReadCardPage.vue +217 -217
  547. package/src/components/workorder/RepairDetails.vue +619 -619
  548. package/src/components/workorder/RepairDetails22.vue +128 -128
  549. package/src/components/workorder/RepairFirst.vue +170 -170
  550. package/src/components/workorder/RepairFirstOld.vue +410 -410
  551. package/src/components/workorder/RepairFirstV.vue +673 -673
  552. package/src/components/workorder/RepairFirstVnew.vue +542 -542
  553. package/src/components/workorder/RepairInfo.vue +166 -166
  554. package/src/components/workorder/RepairMatterInfo.vue +186 -186
  555. package/src/components/workorder/RepairOrder.vue +688 -688
  556. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  557. package/src/components/workorder/RepairOrderVnew.vue +868 -868
  558. package/src/components/workorder/RepairPaperAndroid.vue +351 -351
  559. package/src/components/workorder/RepairSend.vue +264 -264
  560. package/src/components/workorder/RepairUserInfo.vue +532 -532
  561. package/src/components/workorder/Repairpage.vue +100 -100
  562. package/src/components/workorder/RepairsVisit.vue +319 -319
  563. package/src/components/workorder/SafeCheckService.vue +355 -355
  564. package/src/components/workorder/ServiceOnlineQuery.vue +306 -306
  565. package/src/components/workorder/SubstitFirstV.vue +143 -143
  566. package/src/components/workorder/SubstitutionPage.vue +100 -100
  567. package/src/components/workorder/TelChangeMatter.vue +231 -231
  568. package/src/components/workorder/TemporarySingle.vue +524 -524
  569. package/src/components/workorder/TroubleRemoval.vue +419 -419
  570. package/src/components/workorder/UpLoad.vue +111 -111
  571. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  572. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  573. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  574. package/src/expandcss.less +620 -620
  575. package/src/filiale/fugu/pc/ComplainWork.vue +206 -206
  576. package/src/filiale/fugu/pc/FailureEdit.vue +183 -183
  577. package/src/filiale/fugu/pc/RepairsWork.vue +793 -793
  578. package/src/filiale/fugu/pc/Seekwork.vue +182 -182
  579. package/src/filiale/fugu/telephone.js +16 -16
  580. package/src/filiale/furuike/android/CompletedRepair.vue +210 -210
  581. package/src/filiale/furuike/android/FaultAll.vue +861 -861
  582. package/src/filiale/furuike/android/Materials.vue +410 -410
  583. package/src/filiale/furuike/android/RepairFirstVnew.vue +580 -580
  584. package/src/filiale/furuike/android/RepairOrderVnew.vue +890 -890
  585. package/src/filiale/furuike/pc/Auxfunc.vue +109 -109
  586. package/src/filiale/furuike/pc/CallRcords.vue +109 -109
  587. package/src/filiale/furuike/pc/ChangemeterInfo.vue +87 -87
  588. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  589. package/src/filiale/furuike/pc/DeviceInfo.vue +82 -82
  590. package/src/filiale/furuike/pc/DisableInforMation.vue +82 -82
  591. package/src/filiale/furuike/pc/FailureEdit.vue +198 -198
  592. package/src/filiale/furuike/pc/HandplanInfo.vue +78 -78
  593. package/src/filiale/furuike/pc/InfoTable.vue +134 -134
  594. package/src/filiale/furuike/pc/InstructInfo.vue +86 -86
  595. package/src/filiale/furuike/pc/LineReport.vue +215 -215
  596. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +400 -400
  597. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +63 -63
  598. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +381 -381
  599. package/src/filiale/furuike/pc/MetereadInfo.vue +82 -82
  600. package/src/filiale/furuike/pc/MetterInfo.vue +92 -92
  601. package/src/filiale/furuike/pc/NewRepairPaper.vue +415 -415
  602. package/src/filiale/furuike/pc/ProblemList.vue +170 -170
  603. package/src/filiale/furuike/pc/QueryVisitHistory.vue +196 -196
  604. package/src/filiale/furuike/pc/RecordListLeft.vue +259 -259
  605. package/src/filiale/furuike/pc/ReminderOrder.vue +50 -50
  606. package/src/filiale/furuike/pc/RepairList.vue +102 -102
  607. package/src/filiale/furuike/pc/RepairsWork.vue +918 -918
  608. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +128 -128
  609. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  610. package/src/filiale/furuike/pc/SellInfo.vue +158 -158
  611. package/src/filiale/furuike/pc/TableReport.vue +160 -160
  612. package/src/filiale/furuike/pc/TelFindUser.vue +229 -229
  613. package/src/filiale/furuike/pc/TelLossList.vue +145 -145
  614. package/src/filiale/furuike/pc/TelePhoneUpload.vue +279 -279
  615. package/src/filiale/furuike/pc/TextServer.vue +168 -168
  616. package/src/filiale/furuike/pc/VoiceServer.vue +216 -216
  617. package/src/filiale/furuike/pc/WorkCenter.vue +104 -104
  618. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  619. package/src/filiale/furuike/pc/WorkListAllNew.vue +855 -855
  620. package/src/filiale/furuike/telephone.js +115 -115
  621. package/src/filiale/furuike/telephoneAndroid.js +23 -23
  622. package/src/filiale/gehua/pc/Console.vue +676 -676
  623. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +285 -285
  624. package/src/filiale/gehua/pc/TelFindUser.vue +214 -214
  625. package/src/filiale/gehua/telephone.js +16 -16
  626. package/src/filiale/gehua/telephoneAndroid.js +9 -9
  627. package/src/filiale/gongyi/android/RepairDetails.vue +542 -542
  628. package/src/filiale/gongyi/android/RepairFirstV.vue +537 -537
  629. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  630. package/src/filiale/gongyi/pc/WorkListAll.vue +632 -632
  631. package/src/filiale/gongyi/telephone.js +13 -13
  632. package/src/filiale/gongyi/telephoneAndroid.js +15 -15
  633. package/src/filiale/guangxi/android/FaultAll.vue +896 -896
  634. package/src/filiale/guangxi/telephoneAndroid.js +13 -13
  635. package/src/filiale/hanzhong/PagedList.js +248 -248
  636. package/src/filiale/hanzhong/android/Outlay.vue +265 -265
  637. package/src/filiale/hanzhong/android/RepairInfo.vue +167 -167
  638. package/src/filiale/hanzhong/hzSelectUtil.js +84 -84
  639. package/src/filiale/hanzhong/md5.js +266 -266
  640. package/src/filiale/hanzhong/pc/AnalysisMain.vue +477 -477
  641. package/src/filiale/hanzhong/pc/Console.vue +884 -884
  642. package/src/filiale/hanzhong/pc/DistributeWork.vue +420 -420
  643. package/src/filiale/hanzhong/pc/FailureEdit.vue +195 -195
  644. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +84 -84
  645. package/src/filiale/hanzhong/pc/RecordList.vue +53 -53
  646. package/src/filiale/hanzhong/pc/RecordListLeft.vue +196 -196
  647. package/src/filiale/hanzhong/pc/Seekwork.vue +318 -318
  648. package/src/filiale/hanzhong/pc/StateStatistics.vue +292 -292
  649. package/src/filiale/hanzhong/pc/TelFindUser.vue +224 -224
  650. package/src/filiale/hanzhong/pc/TelLossList.vue +137 -137
  651. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +104 -104
  652. package/src/filiale/hanzhong/pc/TelephoneType.vue +269 -269
  653. package/src/filiale/hanzhong/pc/TextServer.vue +157 -157
  654. package/src/filiale/hanzhong/pc/VoiceServer.vue +208 -208
  655. package/src/filiale/hanzhong/pc/message/AllUser.vue +615 -615
  656. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +638 -638
  657. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +397 -397
  658. package/src/filiale/hanzhong/pc/message/MessageList.vue +635 -635
  659. package/src/filiale/hanzhong/pc/message/MessageManage.vue +136 -136
  660. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +127 -127
  661. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +121 -121
  662. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +92 -92
  663. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +90 -90
  664. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +121 -121
  665. package/src/filiale/hanzhong/telephone.js +48 -48
  666. package/src/filiale/hanzhong/telephoneAndroid.js +15 -15
  667. package/src/filiale/jiaocheng/android/createQRcode.vue +204 -204
  668. package/src/filiale/jiaocheng/android/onlineBuyGas.vue +637 -637
  669. package/src/filiale/jiaocheng/telephone.js +8 -8
  670. package/src/filiale/jiaocheng/telephoneAndroid.js +15 -15
  671. package/src/filiale/kelai/android/AppTakePic.vue +143 -143
  672. package/src/filiale/kelai/android/Outlay.vue +274 -274
  673. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -176
  674. package/src/filiale/kelai/android/RepairFirstV.vue +552 -552
  675. package/src/filiale/kelai/android/RepairOrderV.vue +1446 -1446
  676. package/src/filiale/kelai/android/RepairTypeList.vue +170 -170
  677. package/src/filiale/kelai/android/RepairUserInfo.vue +537 -537
  678. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +612 -612
  679. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +128 -128
  680. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +69 -69
  681. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +82 -82
  682. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +60 -60
  683. package/src/filiale/kelai/pc/CallReport/Time.vue +107 -107
  684. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +76 -76
  685. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +66 -66
  686. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +297 -297
  687. package/src/filiale/kelai/pc/RecordListLeft.vue +188 -188
  688. package/src/filiale/kelai/pc/Seekwork.vue +308 -308
  689. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +276 -276
  690. package/src/filiale/kelai/pc/TelFindUser.vue +214 -214
  691. package/src/filiale/kelai/pc/TelLossList.vue +154 -154
  692. package/src/filiale/kelai/pc/TextServer.vue +157 -157
  693. package/src/filiale/kelai/pc/Trafficassess.vue +159 -159
  694. package/src/filiale/kelai/pc/VisitInfo.vue +268 -268
  695. package/src/filiale/kelai/pc/VoiceServer.vue +227 -227
  696. package/src/filiale/kelai/pc/WorkCenterList.vue +315 -315
  697. package/src/filiale/kelai/pc/WorkListAllNew.vue +717 -717
  698. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -55
  699. package/src/filiale/kelai/telephone.js +40 -40
  700. package/src/filiale/kelai/telephoneAndroid.js +19 -19
  701. package/src/filiale/liaoyuan/android/FaultAll.vue +737 -737
  702. package/src/filiale/liaoyuan/android/RepairDetails.vue +493 -493
  703. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  704. package/src/filiale/liaoyuan/telephoneAndroid.js +13 -13
  705. package/src/filiale/lixian/onlineChangeMeter.vue +481 -481
  706. package/src/filiale/lixian/onlineoperation.vue +606 -606
  707. package/src/filiale/lixian/onlinequeryuser.vue +509 -509
  708. package/src/filiale/lixian/telephoneAndroid.js +23 -23
  709. package/src/filiale/meihekou/android/Othercharge.vue +443 -443
  710. package/src/filiale/meihekou/android/createQRcode.vue +192 -192
  711. package/src/filiale/meihekou/android/onlineBuyGas.vue +793 -793
  712. package/src/filiale/meihekou/telephone.js +13 -13
  713. package/src/filiale/meihekou/telephoneAndroid.js +18 -18
  714. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1067 -1067
  715. package/src/filiale/qianneng/android/Examine.vue +513 -513
  716. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  717. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  718. package/src/filiale/qianneng/android/PhoneStandWork.vue +412 -412
  719. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  720. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  721. package/src/filiale/qianneng/android/RepairFirstV.vue +615 -615
  722. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  723. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  724. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  725. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -537
  726. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  727. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  728. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  729. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  730. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  731. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -260
  732. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -144
  733. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  734. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  735. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -992
  736. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  737. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  738. package/src/filiale/qianneng/pc/WorkListAllNew.vue +757 -757
  739. package/src/filiale/qianneng/pc/changetable.vue +273 -273
  740. package/src/filiale/qianneng/telephone.js +22 -22
  741. package/src/filiale/qianneng/telephoneAndroid.js +22 -22
  742. package/src/filiale/rizhao/android/FaultAll.vue +893 -893
  743. package/src/filiale/rizhao/android/Othercharge.vue +423 -423
  744. package/src/filiale/rizhao/android/RepairFirstV.vue +525 -525
  745. package/src/filiale/rizhao/android/RepairInfo.vue +172 -172
  746. package/src/filiale/rizhao/android/RepairOrderV.vue +1415 -1415
  747. package/src/filiale/rizhao/pc/AnalysisMain.vue +355 -355
  748. package/src/filiale/rizhao/pc/CallRecords.vue +89 -89
  749. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +87 -87
  750. package/src/filiale/rizhao/pc/ComplainWork.vue +357 -357
  751. package/src/filiale/rizhao/pc/Console.vue +456 -456
  752. package/src/filiale/rizhao/pc/DispatchMan.vue +100 -100
  753. package/src/filiale/rizhao/pc/DispatchWork.vue +100 -100
  754. package/src/filiale/rizhao/pc/DistributeWork.vue +188 -188
  755. package/src/filiale/rizhao/pc/FailureEdit.vue +183 -183
  756. package/src/filiale/rizhao/pc/FailureEditFire.vue +169 -169
  757. package/src/filiale/rizhao/pc/FailureEditRepair.vue +174 -174
  758. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +889 -889
  759. package/src/filiale/rizhao/pc/NewRepairPaper.vue +377 -377
  760. package/src/filiale/rizhao/pc/RecordListLeft.vue +189 -189
  761. package/src/filiale/rizhao/pc/ReminderOrder.vue +51 -51
  762. package/src/filiale/rizhao/pc/RepairsWork.vue +935 -935
  763. package/src/filiale/rizhao/pc/Seekwork.vue +339 -339
  764. package/src/filiale/rizhao/pc/SiteSend.vue +258 -258
  765. package/src/filiale/rizhao/pc/StateStatistics.vue +292 -292
  766. package/src/filiale/rizhao/pc/TelFindUser.vue +243 -243
  767. package/src/filiale/rizhao/pc/TelMan.vue +133 -133
  768. package/src/filiale/rizhao/pc/TeleInfo.vue +142 -142
  769. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +72 -72
  770. package/src/filiale/rizhao/pc/TelephoneType.vue +272 -272
  771. package/src/filiale/rizhao/pc/Traffic.vue +91 -91
  772. package/src/filiale/rizhao/pc/UserOperate.vue +49 -49
  773. package/src/filiale/rizhao/pc/VoiceServer.vue +219 -219
  774. package/src/filiale/rizhao/pc/WorkCenterList.vue +294 -294
  775. package/src/filiale/rizhao/pc/WorkHistory.vue +541 -541
  776. package/src/filiale/rizhao/pc/WorkList.vue +783 -783
  777. package/src/filiale/rizhao/pc/WorkListAllNew.vue +679 -679
  778. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +134 -134
  779. package/src/filiale/rizhao/telephone.js +57 -57
  780. package/src/filiale/rizhao/telephoneAndroid.js +16 -16
  781. package/src/filiale/rongcheng/CliWorkListAll.vue +701 -701
  782. package/src/filiale/rongcheng/FaultAll.vue +713 -713
  783. package/src/filiale/rongcheng/RepairFirstV.vue +418 -418
  784. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -1445
  785. package/src/filiale/rongcheng/RepairUserInfo.vue +539 -539
  786. package/src/filiale/rongcheng/ServiceDetails.vue +53 -53
  787. package/src/filiale/rongcheng/WorkListAll.vue +727 -727
  788. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +303 -303
  789. package/src/filiale/rongcheng/checkmsgZG.vue +243 -243
  790. package/src/filiale/rongcheng/onlineBuyGas.vue +799 -799
  791. package/src/filiale/rongcheng/onlineoperation.vue +383 -383
  792. package/src/filiale/rongcheng/onlinequeryuser.vue +460 -460
  793. package/src/filiale/rongcheng/telephone.js +19 -19
  794. package/src/filiale/rongcheng/telephoneAndroid.js +19 -19
  795. package/src/filiale/shanxian/android/RepairFirstV.vue +642 -642
  796. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -826
  797. package/src/filiale/shanxian/pc/TelFindUser.vue +310 -310
  798. package/src/filiale/shanxian/pc/WorkList.vue +823 -823
  799. package/src/filiale/shanxian/telephone.js +14 -14
  800. package/src/filiale/shanxian/telephoneAndroid.js +13 -13
  801. package/src/filiale/shaoguan/pc/WorkCenterList.vue +326 -326
  802. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +683 -683
  803. package/src/filiale/shaoguan/telephone.js +14 -14
  804. package/src/filiale/shexian/android/AddMyTask.vue +361 -361
  805. package/src/filiale/shexian/android/CompletedRepair.vue +280 -280
  806. package/src/filiale/shexian/android/FaultAll.vue +847 -847
  807. package/src/filiale/shexian/android/Outlay.vue +266 -266
  808. package/src/filiale/shexian/android/RepairFirstV.vue +780 -780
  809. package/src/filiale/shexian/android/RepairInfo.vue +183 -183
  810. package/src/filiale/shexian/android/RepairOrderV.vue +732 -732
  811. package/src/filiale/shexian/pc/NewRepairPaper.vue +374 -374
  812. package/src/filiale/shexian/pc/QueryVisitHistory.vue +237 -237
  813. package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +271 -271
  814. package/src/filiale/shexian/pc/TelByOrderMan.vue +109 -109
  815. package/src/filiale/shexian/pc/TelByOrderManCount.vue +124 -124
  816. package/src/filiale/shexian/pc/TelByRepairType.vue +111 -111
  817. package/src/filiale/shexian/pc/WorkList.vue +785 -785
  818. package/src/filiale/shexian/pc/WorkListAllNew.vue +735 -735
  819. package/src/filiale/shexian/telephone.js +21 -21
  820. package/src/filiale/shexian/telephoneAndroid.js +32 -32
  821. package/src/filiale/shimen/pc/ChangemeterInfo.vue +108 -108
  822. package/src/filiale/shimen/pc/ComplainWork.vue +297 -297
  823. package/src/filiale/shimen/pc/DistributeWork.vue +173 -173
  824. package/src/filiale/shimen/pc/InfoTable.vue +122 -122
  825. package/src/filiale/shimen/pc/RepairList.vue +109 -109
  826. package/src/filiale/shimen/pc/RepairsWork.vue +803 -803
  827. package/src/filiale/shimen/pc/Seekwork.vue +307 -307
  828. package/src/filiale/shimen/pc/SellInfo.vue +87 -87
  829. package/src/filiale/shimen/pc/WorkListAllNew.vue +680 -680
  830. package/src/filiale/shimen/telephone.js +23 -23
  831. package/src/filiale/tianke/android/FaultAll.vue +854 -854
  832. package/src/filiale/tianke/android/RepairFirstV.vue +614 -614
  833. package/src/filiale/tianke/android.js +12 -12
  834. package/src/filiale/tianke/pc/DistributeWork.vue +180 -180
  835. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +801 -801
  836. package/src/filiale/tianke/pc/NewRepairPaper.vue +370 -370
  837. package/src/filiale/tianke/pc/RepairsWork.vue +794 -794
  838. package/src/filiale/tianke/pc/WorkList.vue +769 -769
  839. package/src/filiale/tianke/telephone.js +17 -17
  840. package/src/filiale/tianke/telephoneAndroid.js +13 -13
  841. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +321 -321
  842. package/src/filiale/tongchuan/android/CompletedRepair.vue +211 -211
  843. package/src/filiale/tongchuan/android/PhoneStandWork.vue +409 -409
  844. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +1005 -1005
  845. package/src/filiale/tongchuan/android/RepairDetails.vue +623 -623
  846. package/src/filiale/tongchuan/android/RepairFirstV.vue +646 -646
  847. package/src/filiale/tongchuan/android/RepairInfo.vue +172 -172
  848. package/src/filiale/tongchuan/android/RepairOrderV.vue +1446 -1446
  849. package/src/filiale/tongchuan/android/TicketDetails.vue +411 -411
  850. package/src/filiale/tongchuan/pc/AnalysisMain.vue +355 -355
  851. package/src/filiale/tongchuan/pc/CallRecords.vue +96 -96
  852. package/src/filiale/tongchuan/pc/CheckWork.vue +289 -289
  853. package/src/filiale/tongchuan/pc/ComplainWork.vue +324 -324
  854. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +148 -148
  855. package/src/filiale/tongchuan/pc/DistributeWork.vue +179 -179
  856. package/src/filiale/tongchuan/pc/ExportExcel.vue +204 -204
  857. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +115 -115
  858. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +236 -236
  859. package/src/filiale/tongchuan/pc/RecordListLeft.vue +216 -216
  860. package/src/filiale/tongchuan/pc/RepairList.vue +102 -102
  861. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +133 -133
  862. package/src/filiale/tongchuan/pc/RepairsWork.vue +844 -844
  863. package/src/filiale/tongchuan/pc/SeatInfo.vue +325 -325
  864. package/src/filiale/tongchuan/pc/Seekwork.vue +307 -307
  865. package/src/filiale/tongchuan/pc/ServiceDetails.vue +112 -112
  866. package/src/filiale/tongchuan/pc/StateStatistics.vue +292 -292
  867. package/src/filiale/tongchuan/pc/TelFindUser.vue +278 -278
  868. package/src/filiale/tongchuan/pc/TelMan.vue +142 -142
  869. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +102 -102
  870. package/src/filiale/tongchuan/pc/TelephoneType.vue +272 -272
  871. package/src/filiale/tongchuan/pc/Traffic.vue +103 -103
  872. package/src/filiale/tongchuan/pc/UserWork.vue +813 -813
  873. package/src/filiale/tongchuan/pc/VisitInfo.vue +305 -305
  874. package/src/filiale/tongchuan/pc/VisitListWork.vue +251 -251
  875. package/src/filiale/tongchuan/pc/VoiceServer.vue +218 -218
  876. package/src/filiale/tongchuan/pc/WorkCenterList.vue +297 -297
  877. package/src/filiale/tongchuan/pc/WorkHistory.vue +521 -521
  878. package/src/filiale/tongchuan/pc/WorkList.vue +811 -811
  879. package/src/filiale/tongchuan/pc/WorkListAll.vue +731 -731
  880. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +294 -294
  881. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +376 -376
  882. package/src/filiale/tongchuan/pc/visitPlanList.vue +342 -342
  883. package/src/filiale/tongchuan/pc/visitPlanManage.vue +599 -599
  884. package/src/filiale/tongchuan/pc/visitServiceList.vue +285 -285
  885. package/src/filiale/tongchuan/telephone.js +52 -52
  886. package/src/filiale/tongchuan/telephoneAndroid.js +23 -23
  887. package/src/filiale/v3new/android/FaultAll.vue +809 -809
  888. package/src/filiale/v3new/android/RepairFirstV.vue +633 -633
  889. package/src/filiale/v3new/pc/SiteBack.vue +83 -83
  890. package/src/filiale/v3new/pc/WorkCenter.vue +104 -104
  891. package/src/filiale/v3new/pc/WorkCenterList.vue +274 -274
  892. package/src/filiale/v3new/pc/WorkHistory.vue +537 -537
  893. package/src/filiale/v3new/pc/WorkList.vue +766 -766
  894. package/src/filiale/v3new/pc/WorkListNew.vue +706 -706
  895. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +51 -51
  896. package/src/filiale/v3new/telephone.js +19 -19
  897. package/src/filiale/v3new/telephoneAndroid.js +15 -15
  898. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +586 -586
  899. package/src/filiale/weinanct/android/FaultAll.vue +854 -854
  900. package/src/filiale/weinanct/android/RepairDetails.vue +508 -508
  901. package/src/filiale/weinanct/android/RepairFirstV.vue +635 -635
  902. package/src/filiale/weinanct/android/RepairOrderV.vue +1443 -1443
  903. package/src/filiale/weinanct/pc/TelFindUser.vue +213 -213
  904. package/src/filiale/weinanct/pc/VoiceServer.vue +208 -208
  905. package/src/filiale/weinanct/telephone.js +14 -14
  906. package/src/filiale/weinanct/telephoneAndroid.js +20 -20
  907. package/src/filiale/weinanct//350/257/264/346/230/216.txt +1 -1
  908. package/src/filiale/wenxi/android/FailureShow.vue +61 -61
  909. package/src/filiale/wenxi/android/FaultAll.vue +710 -710
  910. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +964 -964
  911. package/src/filiale/wenxi/android/RepairFirstV.vue +537 -537
  912. package/src/filiale/wenxi/android/RepairInfo.vue +252 -252
  913. package/src/filiale/wenxi/android/RepairOrderV.vue +805 -805
  914. package/src/filiale/wenxi/android/RepairUserInfo.vue +532 -532
  915. package/src/filiale/wenxi/android/ZHihuanFirst.vue +522 -522
  916. package/src/filiale/wenxi/pc/DistributeWork.vue +163 -163
  917. package/src/filiale/wenxi/pc/FailureEdit.vue +206 -206
  918. package/src/filiale/wenxi/pc/GasWork.vue +747 -747
  919. package/src/filiale/wenxi/pc/MetereadInfo.vue +82 -82
  920. package/src/filiale/wenxi/pc/NewTelAgentVoiceReport.vue +248 -248
  921. package/src/filiale/wenxi/pc/RecordListLeft.vue +272 -272
  922. package/src/filiale/wenxi/pc/RepairsWork.vue +853 -853
  923. package/src/filiale/wenxi/pc/TelAgentVoiceReport.vue +290 -290
  924. package/src/filiale/wenxi/pc/TelFindUser.vue +306 -306
  925. package/src/filiale/wenxi/pc/TelLossList.vue +272 -272
  926. package/src/filiale/wenxi/pc/VoiceServer.vue +214 -214
  927. package/src/filiale/wenxi/pc/WorkListAll.vue +698 -698
  928. package/src/filiale/wenxi/telephone.js +22 -22
  929. package/src/filiale/wenxi/telephoneAndroid.js +20 -20
  930. package/src/filiale/wuan/Util.js +461 -461
  931. package/src/filiale/wuan/android/AddMyTask.vue +227 -227
  932. package/src/filiale/wuan/android/RepairInfo.vue +136 -136
  933. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  934. package/src/filiale/wuan/android/RepairUserInfo.vue +581 -581
  935. package/src/filiale/wuan/pc/BatchList.vue +329 -329
  936. package/src/filiale/wuan/pc/BatchListSanhu.vue +329 -329
  937. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +115 -115
  938. package/src/filiale/wuan/pc/CheckWork.vue +263 -263
  939. package/src/filiale/wuan/pc/DistributeWork.vue +136 -136
  940. package/src/filiale/wuan/pc/FailureEdit.vue +174 -174
  941. package/src/filiale/wuan/pc/GasWorkSanhu.vue +817 -817
  942. package/src/filiale/wuan/pc/RepairsWork.vue +848 -848
  943. package/src/filiale/wuan/pc/Seekwork.vue +311 -311
  944. package/src/filiale/wuan/pc/TelFindUser.vue +229 -229
  945. package/src/filiale/wuan/pc/WorkListAll.vue +642 -642
  946. package/src/filiale/wuan/telephone.js +23 -23
  947. package/src/filiale/wuan/telephoneAndroid.js +17 -17
  948. package/src/filiale/wuhai/pc/CallRcords.vue +109 -109
  949. package/src/filiale/wuhai/pc/ComplainWork.vue +324 -324
  950. package/src/filiale/wuhai/pc/Console.vue +432 -432
  951. package/src/filiale/wuhai/pc/DistributeWork.vue +173 -173
  952. package/src/filiale/wuhai/pc/FailureEdit.vue +190 -190
  953. package/src/filiale/wuhai/pc/InfoTable.vue +135 -135
  954. package/src/filiale/wuhai/pc/NewRepairPaper.vue +380 -380
  955. package/src/filiale/wuhai/pc/RecordListLeft.vue +202 -202
  956. package/src/filiale/wuhai/pc/RepairsWork.vue +811 -811
  957. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +92 -92
  958. package/src/filiale/wuhai/pc/Seekwork.vue +361 -361
  959. package/src/filiale/wuhai/pc/ServiceRcords.vue +146 -146
  960. package/src/filiale/wuhai/pc/TelFindUser.vue +256 -256
  961. package/src/filiale/wuhai/pc/VoiceServer.vue +211 -211
  962. package/src/filiale/wuhai/pc/WorkCenter.vue +104 -104
  963. package/src/filiale/wuhai/pc/WorkCenterList.vue +337 -337
  964. package/src/filiale/wuhai/pc/WorkListAllNew.vue +715 -715
  965. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +54 -54
  966. package/src/filiale/wuhai/telephone.js +35 -35
  967. package/src/filiale/xinkang/android/FaultAll.vue +840 -840
  968. package/src/filiale/xinkang/android/RepairFirstV.vue +484 -484
  969. package/src/filiale/xinkang/telephoneAndroid.js +14 -14
  970. package/src/filiale/yuansheng/android/RepairFirstV.vue +636 -636
  971. package/src/filiale/yuansheng/android/RepairInfo.vue +166 -166
  972. package/src/filiale/yuansheng/pc/DistributeWork.vue +177 -177
  973. package/src/filiale/yuansheng/pc/FailureEdit.vue +188 -188
  974. package/src/filiale/yuansheng/pc/HandplanInfo.vue +78 -78
  975. package/src/filiale/yuansheng/pc/MetereadInfo.vue +83 -83
  976. package/src/filiale/yuansheng/pc/ReservationWork.vue +156 -156
  977. package/src/filiale/yuansheng/pc/TelFindUser.vue +237 -237
  978. package/src/filiale/yuansheng/pc/VoiceServer.vue +208 -208
  979. package/src/filiale/yuansheng/telephone.js +20 -20
  980. package/src/filiale/yuansheng/telephoneAndroid.js +16 -16
  981. package/src/filiale/yuncheng/android/LdapHelper.js +75 -75
  982. package/src/filiale/yuncheng/android/Outlay.vue +201 -201
  983. package/src/filiale/yuncheng/android/RepairInfo.vue +163 -163
  984. package/src/filiale/yuncheng/android/RepairOrderV.vue +1483 -1483
  985. package/src/filiale/yuncheng/android/RepairUserInfo.vue +390 -390
  986. package/src/filiale/yuncheng/android/RightTree.vue +218 -218
  987. package/src/filiale/yuncheng/android/TemporarySingle.vue +522 -522
  988. package/src/filiale/yuncheng/android/ZHihuanFirst.vue +541 -541
  989. package/src/filiale/yuncheng/pc/DistributeWork.vue +199 -199
  990. package/src/filiale/yuncheng/pc/GasWork.vue +773 -773
  991. package/src/filiale/yuncheng/pc/TelFindUser.vue +322 -322
  992. package/src/filiale/yuncheng/pc/WorkList.vue +823 -823
  993. package/src/filiale/yuncheng/pc/WorkListAllNew.vue +781 -781
  994. package/src/filiale/yuncheng/telephone.js +16 -16
  995. package/src/filiale/yuncheng/telephoneAndroid.js +19 -19
  996. package/src/filiale/zhongsheng/android/FailureShow.vue +61 -61
  997. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -741
  998. package/src/filiale/zhongsheng/android/RepairFirstV.vue +464 -464
  999. package/src/filiale/zhongsheng/android/RepairInfo.vue +133 -133
  1000. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  1001. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +559 -559
  1002. package/src/filiale/zhongsheng/pc/ComplainWork.vue +299 -299
  1003. package/src/filiale/zhongsheng/pc/Console.vue +432 -432
  1004. package/src/filiale/zhongsheng/pc/DistributeWork.vue +173 -173
  1005. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +836 -836
  1006. package/src/filiale/zhongsheng/pc/InfoTable.vue +124 -124
  1007. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  1008. package/src/filiale/zhongsheng/pc/Seekwork.vue +283 -283
  1009. package/src/filiale/zhongsheng/pc/TelFindUser.vue +216 -216
  1010. package/src/filiale/zhongsheng/pc/WorkList.vue +805 -805
  1011. package/src/filiale/zhongsheng/pc/WorkListAll.vue +628 -628
  1012. package/src/filiale/zhongsheng/telephone.js +23 -23
  1013. package/src/filiale/zhongsheng/telephoneAndroid.js +19 -19
  1014. package/src/filiale/zhongyi/android/FaultAll.vue +854 -854
  1015. package/src/filiale/zhongyi/android/RepairFirstV.vue +614 -614
  1016. package/src/filiale/zhongyi/android.js +12 -12
  1017. package/src/filiale/zhongyi/pc/DistributeWork.vue +180 -180
  1018. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +801 -801
  1019. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +370 -370
  1020. package/src/filiale/zhongyi/pc/RepairsWork.vue +794 -794
  1021. package/src/filiale/zhongyi/pc/WorkList.vue +769 -769
  1022. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +673 -673
  1023. package/src/filiale/zhongyi/telephone.js +18 -18
  1024. package/src/filiale/zhongyi/telephoneAndroid.js +13 -13
  1025. package/src/filiale/zhoukou/android/ChargeBill.vue +201 -201
  1026. package/src/filiale/zhoukou/android/FaultAll.vue +779 -779
  1027. package/src/filiale/zhoukou/android/Othercharge.vue +591 -591
  1028. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +574 -574
  1029. package/src/filiale/zhoukou/android/Outlay.vue +236 -236
  1030. package/src/filiale/zhoukou/android/RepairDetails.vue +544 -544
  1031. package/src/filiale/zhoukou/android/RepairFirstV.vue +542 -542
  1032. package/src/filiale/zhoukou/android/RepairInfo.vue +136 -136
  1033. package/src/filiale/zhoukou/android/RepairOrderV.vue +1383 -1383
  1034. package/src/filiale/zhoukou/android/RepairUserInfo.vue +532 -532
  1035. package/src/filiale/zhoukou/android/ZkBill.vue +191 -191
  1036. package/src/filiale/zhoukou/android/createQRcode.vue +256 -256
  1037. package/src/filiale/zhoukou/android/onlineBuyGas.vue +804 -804
  1038. package/src/filiale/zhoukou/android/onlineoperation.vue +416 -416
  1039. package/src/filiale/zhoukou/android/onlinequeryuser.vue +468 -468
  1040. package/src/filiale/zhoukou/pc/ExportExcel.vue +204 -204
  1041. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +366 -366
  1042. package/src/filiale/zhoukou/pc/SiteSend.vue +265 -265
  1043. package/src/filiale/zhoukou/pc/WorkHistory.vue +514 -514
  1044. package/src/filiale/zhoukou/pc/WorkList.vue +653 -653
  1045. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +675 -675
  1046. package/src/filiale/zhoukou/telephone.js +18 -18
  1047. package/src/filiale/zhoukou/telephoneAndroid.js +33 -33
  1048. package/src/index.js +15 -15
  1049. package/src/main.js +1 -1
  1050. package/src/plugins/DataSql.js +569 -569
  1051. package/src/plugins/EmojiData.js +514 -514
  1052. package/src/plugins/EncryptUtil.js +53 -53
  1053. package/src/plugins/HttpLoad.js +93 -93
  1054. package/src/plugins/LoadData.js +40 -40
  1055. package/src/plugins/LoadParams.js +54 -54
  1056. package/src/plugins/LocalPagedList.js +107 -107
  1057. package/src/plugins/ObjTree.js +532 -532
  1058. package/src/plugins/TelGetSaleParams.js +63 -63
  1059. package/src/qrcode.js +618 -618
  1060. package/src/qrcode.min.js +1 -1
  1061. package/src/stores/exportConfig.js +10 -10
  1062. package/src/stores/wxconfig.js +10 -10
  1063. package/src/telephone-android.js +374 -374
  1064. package/src/telephone-shaoguan.js +256 -256
  1065. package/src/telephone-tongcheng.js +254 -254
  1066. package/src/telephone.js +749 -749
  1067. package/src/telephoneanaly.less +704 -704
  1068. package/src/utils/LdapHelper.js +99 -99
  1069. package/src/weinan-android.js +350 -350
  1070. package/src/weinan.js +537 -537
  1071. package/static/fonts/font.css +6 -6
  1072. package/static/js/adapter.min.js +2049 -2049
  1073. package/static/js/bootstrap.min.js +7 -7
  1074. package/static/js/ctilink.js +1303 -1303
  1075. package/static/js/ctimsg.js +655 -655
  1076. package/static/js/janus.js +4034 -4034
  1077. package/static/js/jquery-2.1.1.min.js +5 -5
  1078. package/yarn-error.log +7872 -7872
  1079. 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>