telephone-clients 3.0.104-103 → 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 (1078) 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/FaultAll.vue +852 -826
  532. package/src/components/workorder/FirstGasCheck.vue +310 -310
  533. package/src/components/workorder/InputSelect.vue +110 -110
  534. package/src/components/workorder/InstallFirst.vue +517 -517
  535. package/src/components/workorder/InstallUpLoad.vue +111 -111
  536. package/src/components/workorder/MaterialSum.vue +238 -238
  537. package/src/components/workorder/MonitorMSend.vue +202 -202
  538. package/src/components/workorder/Othercharge.vue +477 -477
  539. package/src/components/workorder/Outlay.vue +236 -236
  540. package/src/components/workorder/PhoneGroupResend.vue +88 -88
  541. package/src/components/workorder/PhoneStandWork.vue +354 -354
  542. package/src/components/workorder/PhoneUpDetail.vue +1041 -1041
  543. package/src/components/workorder/PhoneUpUserinfo.vue +1041 -1041
  544. package/src/components/workorder/PhotoWrite.vue +116 -116
  545. package/src/components/workorder/Pipeline.vue +497 -497
  546. package/src/components/workorder/QueryTemporaryRepair.vue +220 -220
  547. package/src/components/workorder/ReadCardPage.vue +217 -217
  548. package/src/components/workorder/RepairDetails.vue +619 -619
  549. package/src/components/workorder/RepairDetails22.vue +128 -128
  550. package/src/components/workorder/RepairFirst.vue +170 -170
  551. package/src/components/workorder/RepairFirstOld.vue +410 -410
  552. package/src/components/workorder/RepairFirstV.vue +673 -673
  553. package/src/components/workorder/RepairFirstVnew.vue +542 -542
  554. package/src/components/workorder/RepairInfo.vue +166 -166
  555. package/src/components/workorder/RepairMatterInfo.vue +186 -186
  556. package/src/components/workorder/RepairOrder.vue +688 -688
  557. package/src/components/workorder/RepairOrderV.vue +1446 -1446
  558. package/src/components/workorder/RepairOrderVnew.vue +868 -868
  559. package/src/components/workorder/RepairPaperAndroid.vue +351 -351
  560. package/src/components/workorder/RepairSend.vue +264 -264
  561. package/src/components/workorder/RepairUserInfo.vue +532 -532
  562. package/src/components/workorder/Repairpage.vue +100 -100
  563. package/src/components/workorder/RepairsVisit.vue +319 -319
  564. package/src/components/workorder/SafeCheckService.vue +355 -355
  565. package/src/components/workorder/ServiceOnlineQuery.vue +306 -306
  566. package/src/components/workorder/SubstitFirstV.vue +143 -143
  567. package/src/components/workorder/SubstitutionPage.vue +100 -100
  568. package/src/components/workorder/TelChangeMatter.vue +231 -231
  569. package/src/components/workorder/TemporarySingle.vue +524 -524
  570. package/src/components/workorder/TroubleRemoval.vue +419 -419
  571. package/src/components/workorder/UpLoad.vue +111 -111
  572. package/src/components/workorder/ZHihuanFirst.vue +546 -546
  573. package/src/components/workorder/ZhiCompletedRepair.vue +217 -217
  574. package/src/components/workorder/ZhiUpLoad.vue +136 -136
  575. package/src/expandcss.less +620 -620
  576. package/src/filiale/fugu/pc/ComplainWork.vue +206 -206
  577. package/src/filiale/fugu/pc/FailureEdit.vue +183 -183
  578. package/src/filiale/fugu/pc/RepairsWork.vue +793 -793
  579. package/src/filiale/fugu/pc/Seekwork.vue +182 -182
  580. package/src/filiale/fugu/telephone.js +16 -16
  581. package/src/filiale/furuike/android/CompletedRepair.vue +210 -210
  582. package/src/filiale/furuike/android/FaultAll.vue +861 -861
  583. package/src/filiale/furuike/android/Materials.vue +410 -410
  584. package/src/filiale/furuike/android/RepairFirstVnew.vue +580 -580
  585. package/src/filiale/furuike/android/RepairOrderVnew.vue +890 -890
  586. package/src/filiale/furuike/pc/Auxfunc.vue +109 -109
  587. package/src/filiale/furuike/pc/CallRcords.vue +109 -109
  588. package/src/filiale/furuike/pc/ChangemeterInfo.vue +87 -87
  589. package/src/filiale/furuike/pc/ComplainWork.vue +348 -348
  590. package/src/filiale/furuike/pc/DeviceInfo.vue +82 -82
  591. package/src/filiale/furuike/pc/DisableInforMation.vue +82 -82
  592. package/src/filiale/furuike/pc/FailureEdit.vue +198 -198
  593. package/src/filiale/furuike/pc/HandplanInfo.vue +78 -78
  594. package/src/filiale/furuike/pc/InfoTable.vue +134 -134
  595. package/src/filiale/furuike/pc/InstructInfo.vue +86 -86
  596. package/src/filiale/furuike/pc/LineReport.vue +215 -215
  597. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWork.vue +400 -400
  598. package/src/filiale/furuike/pc/MaterialWorkOrder/MaterialWorkOrderManage.vue +63 -63
  599. package/src/filiale/furuike/pc/MaterialWorkOrder/WorkOrderMaterial.vue +381 -381
  600. package/src/filiale/furuike/pc/MetereadInfo.vue +82 -82
  601. package/src/filiale/furuike/pc/MetterInfo.vue +92 -92
  602. package/src/filiale/furuike/pc/NewRepairPaper.vue +415 -415
  603. package/src/filiale/furuike/pc/ProblemList.vue +170 -170
  604. package/src/filiale/furuike/pc/QueryVisitHistory.vue +196 -196
  605. package/src/filiale/furuike/pc/RecordListLeft.vue +259 -259
  606. package/src/filiale/furuike/pc/ReminderOrder.vue +50 -50
  607. package/src/filiale/furuike/pc/RepairList.vue +102 -102
  608. package/src/filiale/furuike/pc/RepairsWork.vue +918 -918
  609. package/src/filiale/furuike/pc/SecuritycheckInfo.vue +128 -128
  610. package/src/filiale/furuike/pc/Seekwork.vue +352 -352
  611. package/src/filiale/furuike/pc/SellInfo.vue +158 -158
  612. package/src/filiale/furuike/pc/TableReport.vue +160 -160
  613. package/src/filiale/furuike/pc/TelFindUser.vue +229 -229
  614. package/src/filiale/furuike/pc/TelLossList.vue +145 -145
  615. package/src/filiale/furuike/pc/TelePhoneUpload.vue +279 -279
  616. package/src/filiale/furuike/pc/TextServer.vue +168 -168
  617. package/src/filiale/furuike/pc/VoiceServer.vue +216 -216
  618. package/src/filiale/furuike/pc/WorkCenter.vue +104 -104
  619. package/src/filiale/furuike/pc/WorkHistory.vue +576 -576
  620. package/src/filiale/furuike/pc/WorkListAllNew.vue +855 -855
  621. package/src/filiale/furuike/telephone.js +115 -115
  622. package/src/filiale/furuike/telephoneAndroid.js +23 -23
  623. package/src/filiale/gehua/pc/Console.vue +676 -676
  624. package/src/filiale/gehua/pc/TelAgentVoiceReport.vue +285 -285
  625. package/src/filiale/gehua/pc/TelFindUser.vue +214 -214
  626. package/src/filiale/gehua/telephone.js +16 -16
  627. package/src/filiale/gehua/telephoneAndroid.js +9 -9
  628. package/src/filiale/gongyi/android/RepairDetails.vue +542 -542
  629. package/src/filiale/gongyi/android/RepairFirstV.vue +537 -537
  630. package/src/filiale/gongyi/android/RepairOrderV.vue +1415 -1415
  631. package/src/filiale/gongyi/pc/WorkListAll.vue +632 -632
  632. package/src/filiale/gongyi/telephone.js +13 -13
  633. package/src/filiale/gongyi/telephoneAndroid.js +15 -15
  634. package/src/filiale/guangxi/android/FaultAll.vue +896 -896
  635. package/src/filiale/guangxi/telephoneAndroid.js +13 -13
  636. package/src/filiale/hanzhong/PagedList.js +248 -248
  637. package/src/filiale/hanzhong/android/Outlay.vue +265 -265
  638. package/src/filiale/hanzhong/android/RepairInfo.vue +167 -167
  639. package/src/filiale/hanzhong/hzSelectUtil.js +84 -84
  640. package/src/filiale/hanzhong/md5.js +266 -266
  641. package/src/filiale/hanzhong/pc/AnalysisMain.vue +477 -477
  642. package/src/filiale/hanzhong/pc/Console.vue +884 -884
  643. package/src/filiale/hanzhong/pc/DistributeWork.vue +420 -420
  644. package/src/filiale/hanzhong/pc/FailureEdit.vue +195 -195
  645. package/src/filiale/hanzhong/pc/RecordInfoRight.vue +84 -84
  646. package/src/filiale/hanzhong/pc/RecordList.vue +53 -53
  647. package/src/filiale/hanzhong/pc/RecordListLeft.vue +196 -196
  648. package/src/filiale/hanzhong/pc/Seekwork.vue +318 -318
  649. package/src/filiale/hanzhong/pc/StateStatistics.vue +292 -292
  650. package/src/filiale/hanzhong/pc/TelFindUser.vue +224 -224
  651. package/src/filiale/hanzhong/pc/TelLossList.vue +137 -137
  652. package/src/filiale/hanzhong/pc/TelephoneAnaly.vue +104 -104
  653. package/src/filiale/hanzhong/pc/TelephoneType.vue +269 -269
  654. package/src/filiale/hanzhong/pc/TextServer.vue +157 -157
  655. package/src/filiale/hanzhong/pc/VoiceServer.vue +208 -208
  656. package/src/filiale/hanzhong/pc/message/AllUser.vue +615 -615
  657. package/src/filiale/hanzhong/pc/message/AllUserNew.vue +638 -638
  658. package/src/filiale/hanzhong/pc/message/ArrearsList.vue +397 -397
  659. package/src/filiale/hanzhong/pc/message/MessageList.vue +635 -635
  660. package/src/filiale/hanzhong/pc/message/MessageManage.vue +136 -136
  661. package/src/filiale/hanzhong/pc/message/MessageManageList.vue +127 -127
  662. package/src/filiale/hanzhong/pc/message/MessageManageNew.vue +121 -121
  663. package/src/filiale/hanzhong/pc/message/TemplateMessage.vue +92 -92
  664. package/src/filiale/hanzhong/pc/message/UserDefinedMessage.vue +90 -90
  665. package/src/filiale/hanzhong/pc/message/UserDefinedMessageNew.vue +121 -121
  666. package/src/filiale/hanzhong/telephone.js +48 -48
  667. package/src/filiale/hanzhong/telephoneAndroid.js +15 -15
  668. package/src/filiale/jiaocheng/android/createQRcode.vue +204 -204
  669. package/src/filiale/jiaocheng/android/onlineBuyGas.vue +637 -637
  670. package/src/filiale/jiaocheng/telephone.js +8 -8
  671. package/src/filiale/jiaocheng/telephoneAndroid.js +15 -15
  672. package/src/filiale/kelai/android/AppTakePic.vue +143 -143
  673. package/src/filiale/kelai/android/Outlay.vue +274 -274
  674. package/src/filiale/kelai/android/PhoneVentilationLeave.vue +176 -176
  675. package/src/filiale/kelai/android/RepairFirstV.vue +552 -552
  676. package/src/filiale/kelai/android/RepairOrderV.vue +1446 -1446
  677. package/src/filiale/kelai/android/RepairTypeList.vue +170 -170
  678. package/src/filiale/kelai/android/RepairUserInfo.vue +537 -537
  679. package/src/filiale/kelai/pc/CallReport/CallReportMainPage-Kelai.vue +612 -612
  680. package/src/filiale/kelai/pc/CallReport/CumulativeCalls.vue +128 -128
  681. package/src/filiale/kelai/pc/CallReport/IncomingTimedata.vue +69 -69
  682. package/src/filiale/kelai/pc/CallReport/Incomingcallvolume.vue +82 -82
  683. package/src/filiale/kelai/pc/CallReport/SeatStatus.vue +60 -60
  684. package/src/filiale/kelai/pc/CallReport/Time.vue +107 -107
  685. package/src/filiale/kelai/pc/CallReport/WorkorderTypesum.vue +76 -76
  686. package/src/filiale/kelai/pc/CallReport/timeRunning.vue +66 -66
  687. package/src/filiale/kelai/pc/KeLaiMaintenanceReport.vue +297 -297
  688. package/src/filiale/kelai/pc/RecordListLeft.vue +188 -188
  689. package/src/filiale/kelai/pc/Seekwork.vue +308 -308
  690. package/src/filiale/kelai/pc/TelAgentVoiceReport.vue +276 -276
  691. package/src/filiale/kelai/pc/TelFindUser.vue +214 -214
  692. package/src/filiale/kelai/pc/TelLossList.vue +154 -154
  693. package/src/filiale/kelai/pc/TextServer.vue +157 -157
  694. package/src/filiale/kelai/pc/Trafficassess.vue +159 -159
  695. package/src/filiale/kelai/pc/VisitInfo.vue +268 -268
  696. package/src/filiale/kelai/pc/VoiceServer.vue +227 -227
  697. package/src/filiale/kelai/pc/WorkCenterList.vue +315 -315
  698. package/src/filiale/kelai/pc/WorkListAllNew.vue +717 -717
  699. package/src/filiale/kelai/pc/serviceDeleteOrder.vue +55 -55
  700. package/src/filiale/kelai/telephone.js +40 -40
  701. package/src/filiale/kelai/telephoneAndroid.js +19 -19
  702. package/src/filiale/liaoyuan/android/FaultAll.vue +737 -737
  703. package/src/filiale/liaoyuan/android/RepairDetails.vue +493 -493
  704. package/src/filiale/liaoyuan/android/RepairOrderV.vue +831 -831
  705. package/src/filiale/liaoyuan/telephoneAndroid.js +13 -13
  706. package/src/filiale/lixian/onlineChangeMeter.vue +481 -481
  707. package/src/filiale/lixian/onlineoperation.vue +606 -606
  708. package/src/filiale/lixian/onlinequeryuser.vue +509 -509
  709. package/src/filiale/lixian/telephoneAndroid.js +23 -23
  710. package/src/filiale/meihekou/android/Othercharge.vue +443 -443
  711. package/src/filiale/meihekou/android/createQRcode.vue +192 -192
  712. package/src/filiale/meihekou/android/onlineBuyGas.vue +793 -793
  713. package/src/filiale/meihekou/telephone.js +13 -13
  714. package/src/filiale/meihekou/telephoneAndroid.js +18 -18
  715. package/src/filiale/qianneng/android/AppInstallationMaterial.vue +1067 -1067
  716. package/src/filiale/qianneng/android/Examine.vue +513 -513
  717. package/src/filiale/qianneng/android/FaultAll.vue +883 -883
  718. package/src/filiale/qianneng/android/MaterIialOne.vue +123 -123
  719. package/src/filiale/qianneng/android/PhoneStandWork.vue +412 -412
  720. package/src/filiale/qianneng/android/QueryTemporaryRepair.vue +243 -243
  721. package/src/filiale/qianneng/android/RepairDetails.vue +666 -666
  722. package/src/filiale/qianneng/android/RepairFirstV.vue +615 -615
  723. package/src/filiale/qianneng/android/RepairInfo.vue +147 -147
  724. package/src/filiale/qianneng/android/RepairOrderV.vue +874 -874
  725. package/src/filiale/qianneng/android/RepairUserInfo.vue +542 -542
  726. package/src/filiale/qianneng/android/TemporarySingle.vue +537 -537
  727. package/src/filiale/qianneng/android/chargesList.vue +161 -161
  728. package/src/filiale/qianneng/pc/ComplainWork.vue +324 -324
  729. package/src/filiale/qianneng/pc/DistributeWork.vue +182 -182
  730. package/src/filiale/qianneng/pc/FailureEdit.vue +161 -161
  731. package/src/filiale/qianneng/pc/Indoorinstallation.vue +832 -832
  732. package/src/filiale/qianneng/pc/MaterialDetailed.vue +260 -260
  733. package/src/filiale/qianneng/pc/MaterialStatistics.vue +144 -144
  734. package/src/filiale/qianneng/pc/NewRepairPaper.vue +467 -467
  735. package/src/filiale/qianneng/pc/Outdoorinstallation.vue +736 -736
  736. package/src/filiale/qianneng/pc/RepairsWork.vue +992 -992
  737. package/src/filiale/qianneng/pc/Seekwork.vue +308 -308
  738. package/src/filiale/qianneng/pc/WorkHistory.vue +562 -562
  739. package/src/filiale/qianneng/pc/WorkListAllNew.vue +757 -757
  740. package/src/filiale/qianneng/pc/changetable.vue +273 -273
  741. package/src/filiale/qianneng/telephone.js +22 -22
  742. package/src/filiale/qianneng/telephoneAndroid.js +22 -22
  743. package/src/filiale/rizhao/android/FaultAll.vue +893 -893
  744. package/src/filiale/rizhao/android/Othercharge.vue +423 -423
  745. package/src/filiale/rizhao/android/RepairFirstV.vue +525 -525
  746. package/src/filiale/rizhao/android/RepairInfo.vue +172 -172
  747. package/src/filiale/rizhao/android/RepairOrderV.vue +1415 -1415
  748. package/src/filiale/rizhao/pc/AnalysisMain.vue +355 -355
  749. package/src/filiale/rizhao/pc/CallRecords.vue +89 -89
  750. package/src/filiale/rizhao/pc/ChangemeterInfo.vue +87 -87
  751. package/src/filiale/rizhao/pc/ComplainWork.vue +357 -357
  752. package/src/filiale/rizhao/pc/Console.vue +456 -456
  753. package/src/filiale/rizhao/pc/DispatchMan.vue +100 -100
  754. package/src/filiale/rizhao/pc/DispatchWork.vue +100 -100
  755. package/src/filiale/rizhao/pc/DistributeWork.vue +188 -188
  756. package/src/filiale/rizhao/pc/FailureEdit.vue +183 -183
  757. package/src/filiale/rizhao/pc/FailureEditFire.vue +169 -169
  758. package/src/filiale/rizhao/pc/FailureEditRepair.vue +174 -174
  759. package/src/filiale/rizhao/pc/IgnitionVentilation.vue +889 -889
  760. package/src/filiale/rizhao/pc/NewRepairPaper.vue +377 -377
  761. package/src/filiale/rizhao/pc/RecordListLeft.vue +189 -189
  762. package/src/filiale/rizhao/pc/ReminderOrder.vue +51 -51
  763. package/src/filiale/rizhao/pc/RepairsWork.vue +935 -935
  764. package/src/filiale/rizhao/pc/Seekwork.vue +339 -339
  765. package/src/filiale/rizhao/pc/SiteSend.vue +258 -258
  766. package/src/filiale/rizhao/pc/StateStatistics.vue +292 -292
  767. package/src/filiale/rizhao/pc/TelFindUser.vue +243 -243
  768. package/src/filiale/rizhao/pc/TelMan.vue +133 -133
  769. package/src/filiale/rizhao/pc/TeleInfo.vue +142 -142
  770. package/src/filiale/rizhao/pc/TelephoneAnaly.vue +72 -72
  771. package/src/filiale/rizhao/pc/TelephoneType.vue +272 -272
  772. package/src/filiale/rizhao/pc/Traffic.vue +91 -91
  773. package/src/filiale/rizhao/pc/UserOperate.vue +49 -49
  774. package/src/filiale/rizhao/pc/VoiceServer.vue +219 -219
  775. package/src/filiale/rizhao/pc/WorkCenterList.vue +294 -294
  776. package/src/filiale/rizhao/pc/WorkHistory.vue +541 -541
  777. package/src/filiale/rizhao/pc/WorkList.vue +783 -783
  778. package/src/filiale/rizhao/pc/WorkListAllNew.vue +679 -679
  779. package/src/filiale/rizhao/pc/WxBaobiaoService.vue +134 -134
  780. package/src/filiale/rizhao/telephone.js +57 -57
  781. package/src/filiale/rizhao/telephoneAndroid.js +16 -16
  782. package/src/filiale/rongcheng/CliWorkListAll.vue +701 -701
  783. package/src/filiale/rongcheng/FaultAll.vue +713 -713
  784. package/src/filiale/rongcheng/RepairFirstV.vue +418 -418
  785. package/src/filiale/rongcheng/RepairOrderV.vue +1445 -1445
  786. package/src/filiale/rongcheng/RepairUserInfo.vue +539 -539
  787. package/src/filiale/rongcheng/ServiceDetails.vue +53 -53
  788. package/src/filiale/rongcheng/WorkListAll.vue +727 -727
  789. package/src/filiale/rongcheng/batchPrintSafeCheckOrder.vue +303 -303
  790. package/src/filiale/rongcheng/checkmsgZG.vue +243 -243
  791. package/src/filiale/rongcheng/onlineBuyGas.vue +799 -799
  792. package/src/filiale/rongcheng/onlineoperation.vue +383 -383
  793. package/src/filiale/rongcheng/onlinequeryuser.vue +460 -460
  794. package/src/filiale/rongcheng/telephone.js +19 -19
  795. package/src/filiale/rongcheng/telephoneAndroid.js +19 -19
  796. package/src/filiale/shanxian/android/RepairFirstV.vue +642 -642
  797. package/src/filiale/shanxian/pc/RepairsWork.vue +826 -826
  798. package/src/filiale/shanxian/pc/TelFindUser.vue +310 -310
  799. package/src/filiale/shanxian/pc/WorkList.vue +823 -823
  800. package/src/filiale/shanxian/telephone.js +14 -14
  801. package/src/filiale/shanxian/telephoneAndroid.js +13 -13
  802. package/src/filiale/shaoguan/pc/WorkCenterList.vue +326 -326
  803. package/src/filiale/shaoguan/pc/WorkListAllNew.vue +683 -683
  804. package/src/filiale/shaoguan/telephone.js +14 -14
  805. package/src/filiale/shexian/android/AddMyTask.vue +361 -361
  806. package/src/filiale/shexian/android/CompletedRepair.vue +280 -280
  807. package/src/filiale/shexian/android/FaultAll.vue +847 -847
  808. package/src/filiale/shexian/android/Outlay.vue +266 -266
  809. package/src/filiale/shexian/android/RepairFirstV.vue +780 -780
  810. package/src/filiale/shexian/android/RepairInfo.vue +183 -183
  811. package/src/filiale/shexian/android/RepairOrderV.vue +732 -732
  812. package/src/filiale/shexian/pc/NewRepairPaper.vue +374 -374
  813. package/src/filiale/shexian/pc/QueryVisitHistory.vue +237 -237
  814. package/src/filiale/shexian/pc/TelAgentVoiceReport.vue +271 -271
  815. package/src/filiale/shexian/pc/TelByOrderMan.vue +109 -109
  816. package/src/filiale/shexian/pc/TelByOrderManCount.vue +124 -124
  817. package/src/filiale/shexian/pc/TelByRepairType.vue +111 -111
  818. package/src/filiale/shexian/pc/WorkList.vue +785 -785
  819. package/src/filiale/shexian/pc/WorkListAllNew.vue +735 -735
  820. package/src/filiale/shexian/telephone.js +21 -21
  821. package/src/filiale/shexian/telephoneAndroid.js +32 -32
  822. package/src/filiale/shimen/pc/ChangemeterInfo.vue +108 -108
  823. package/src/filiale/shimen/pc/ComplainWork.vue +297 -297
  824. package/src/filiale/shimen/pc/DistributeWork.vue +173 -173
  825. package/src/filiale/shimen/pc/InfoTable.vue +122 -122
  826. package/src/filiale/shimen/pc/RepairList.vue +109 -109
  827. package/src/filiale/shimen/pc/RepairsWork.vue +803 -803
  828. package/src/filiale/shimen/pc/Seekwork.vue +307 -307
  829. package/src/filiale/shimen/pc/SellInfo.vue +87 -87
  830. package/src/filiale/shimen/pc/WorkListAllNew.vue +680 -680
  831. package/src/filiale/shimen/telephone.js +23 -23
  832. package/src/filiale/tianke/android/FaultAll.vue +854 -854
  833. package/src/filiale/tianke/android/RepairFirstV.vue +614 -614
  834. package/src/filiale/tianke/android.js +12 -12
  835. package/src/filiale/tianke/pc/DistributeWork.vue +180 -180
  836. package/src/filiale/tianke/pc/IgnitionVentilationWork.vue +801 -801
  837. package/src/filiale/tianke/pc/NewRepairPaper.vue +370 -370
  838. package/src/filiale/tianke/pc/RepairsWork.vue +794 -794
  839. package/src/filiale/tianke/pc/WorkList.vue +769 -769
  840. package/src/filiale/tianke/telephone.js +17 -17
  841. package/src/filiale/tianke/telephoneAndroid.js +13 -13
  842. package/src/filiale/tongchuan/android/AndroidStopGasManager.vue +321 -321
  843. package/src/filiale/tongchuan/android/CompletedRepair.vue +211 -211
  844. package/src/filiale/tongchuan/android/PhoneStandWork.vue +409 -409
  845. package/src/filiale/tongchuan/android/PhoneUpUserinfo.vue +1005 -1005
  846. package/src/filiale/tongchuan/android/RepairDetails.vue +623 -623
  847. package/src/filiale/tongchuan/android/RepairFirstV.vue +646 -646
  848. package/src/filiale/tongchuan/android/RepairInfo.vue +172 -172
  849. package/src/filiale/tongchuan/android/RepairOrderV.vue +1446 -1446
  850. package/src/filiale/tongchuan/android/TicketDetails.vue +411 -411
  851. package/src/filiale/tongchuan/pc/AnalysisMain.vue +355 -355
  852. package/src/filiale/tongchuan/pc/CallRecords.vue +96 -96
  853. package/src/filiale/tongchuan/pc/CheckWork.vue +289 -289
  854. package/src/filiale/tongchuan/pc/ComplainWork.vue +324 -324
  855. package/src/filiale/tongchuan/pc/DepRepairManCount.vue +148 -148
  856. package/src/filiale/tongchuan/pc/DistributeWork.vue +179 -179
  857. package/src/filiale/tongchuan/pc/ExportExcel.vue +204 -204
  858. package/src/filiale/tongchuan/pc/HiddenSituationWeixiu.vue +115 -115
  859. package/src/filiale/tongchuan/pc/QueryVisitHistory.vue +236 -236
  860. package/src/filiale/tongchuan/pc/RecordListLeft.vue +216 -216
  861. package/src/filiale/tongchuan/pc/RepairList.vue +102 -102
  862. package/src/filiale/tongchuan/pc/RepairWorkReport.vue +133 -133
  863. package/src/filiale/tongchuan/pc/RepairsWork.vue +844 -844
  864. package/src/filiale/tongchuan/pc/SeatInfo.vue +325 -325
  865. package/src/filiale/tongchuan/pc/Seekwork.vue +307 -307
  866. package/src/filiale/tongchuan/pc/ServiceDetails.vue +112 -112
  867. package/src/filiale/tongchuan/pc/StateStatistics.vue +292 -292
  868. package/src/filiale/tongchuan/pc/TelFindUser.vue +278 -278
  869. package/src/filiale/tongchuan/pc/TelMan.vue +142 -142
  870. package/src/filiale/tongchuan/pc/TelephoneAnaly.vue +102 -102
  871. package/src/filiale/tongchuan/pc/TelephoneType.vue +272 -272
  872. package/src/filiale/tongchuan/pc/Traffic.vue +103 -103
  873. package/src/filiale/tongchuan/pc/UserWork.vue +813 -813
  874. package/src/filiale/tongchuan/pc/VisitInfo.vue +305 -305
  875. package/src/filiale/tongchuan/pc/VisitListWork.vue +251 -251
  876. package/src/filiale/tongchuan/pc/VoiceServer.vue +218 -218
  877. package/src/filiale/tongchuan/pc/WorkCenterList.vue +297 -297
  878. package/src/filiale/tongchuan/pc/WorkHistory.vue +521 -521
  879. package/src/filiale/tongchuan/pc/WorkList.vue +811 -811
  880. package/src/filiale/tongchuan/pc/WorkListAll.vue +731 -731
  881. package/src/filiale/tongchuan/pc/WorkOrderStatistics.vue +294 -294
  882. package/src/filiale/tongchuan/pc/WorkorderCheckDistributePlan.vue +376 -376
  883. package/src/filiale/tongchuan/pc/visitPlanList.vue +342 -342
  884. package/src/filiale/tongchuan/pc/visitPlanManage.vue +599 -599
  885. package/src/filiale/tongchuan/pc/visitServiceList.vue +285 -285
  886. package/src/filiale/tongchuan/telephone.js +52 -52
  887. package/src/filiale/tongchuan/telephoneAndroid.js +23 -23
  888. package/src/filiale/v3new/android/FaultAll.vue +809 -809
  889. package/src/filiale/v3new/android/RepairFirstV.vue +633 -633
  890. package/src/filiale/v3new/pc/SiteBack.vue +83 -83
  891. package/src/filiale/v3new/pc/WorkCenter.vue +104 -104
  892. package/src/filiale/v3new/pc/WorkCenterList.vue +274 -274
  893. package/src/filiale/v3new/pc/WorkHistory.vue +537 -537
  894. package/src/filiale/v3new/pc/WorkList.vue +766 -766
  895. package/src/filiale/v3new/pc/WorkListNew.vue +706 -706
  896. package/src/filiale/v3new/pc/serviceDeleteOrder.vue +51 -51
  897. package/src/filiale/v3new/telephone.js +19 -19
  898. package/src/filiale/v3new/telephoneAndroid.js +15 -15
  899. package/src/filiale/weinanct/android/AppInstallationMaterial.vue +586 -586
  900. package/src/filiale/weinanct/android/FaultAll.vue +854 -854
  901. package/src/filiale/weinanct/android/RepairDetails.vue +508 -508
  902. package/src/filiale/weinanct/android/RepairFirstV.vue +635 -635
  903. package/src/filiale/weinanct/android/RepairOrderV.vue +1443 -1443
  904. package/src/filiale/weinanct/pc/TelFindUser.vue +213 -213
  905. package/src/filiale/weinanct/pc/VoiceServer.vue +208 -208
  906. package/src/filiale/weinanct/telephone.js +14 -14
  907. package/src/filiale/weinanct/telephoneAndroid.js +20 -20
  908. package/src/filiale/weinanct//350/257/264/346/230/216.txt +1 -1
  909. package/src/filiale/wenxi/android/FailureShow.vue +61 -61
  910. package/src/filiale/wenxi/android/FaultAll.vue +710 -710
  911. package/src/filiale/wenxi/android/PhoneUpUserinfo.vue +964 -964
  912. package/src/filiale/wenxi/android/RepairFirstV.vue +537 -537
  913. package/src/filiale/wenxi/android/RepairInfo.vue +252 -252
  914. package/src/filiale/wenxi/android/RepairOrderV.vue +805 -805
  915. package/src/filiale/wenxi/android/RepairUserInfo.vue +532 -532
  916. package/src/filiale/wenxi/android/ZHihuanFirst.vue +522 -522
  917. package/src/filiale/wenxi/pc/DistributeWork.vue +163 -163
  918. package/src/filiale/wenxi/pc/FailureEdit.vue +206 -206
  919. package/src/filiale/wenxi/pc/GasWork.vue +747 -747
  920. package/src/filiale/wenxi/pc/MetereadInfo.vue +82 -82
  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/telephoneAndroid.js +20 -20
  929. package/src/filiale/wuan/Util.js +461 -461
  930. package/src/filiale/wuan/android/AddMyTask.vue +227 -227
  931. package/src/filiale/wuan/android/RepairInfo.vue +136 -136
  932. package/src/filiale/wuan/android/RepairOrderV.vue +1384 -1384
  933. package/src/filiale/wuan/android/RepairUserInfo.vue +581 -581
  934. package/src/filiale/wuan/pc/BatchList.vue +329 -329
  935. package/src/filiale/wuan/pc/BatchListSanhu.vue +329 -329
  936. package/src/filiale/wuan/pc/BatchOrdersSanhu.vue +115 -115
  937. package/src/filiale/wuan/pc/CheckWork.vue +263 -263
  938. package/src/filiale/wuan/pc/DistributeWork.vue +136 -136
  939. package/src/filiale/wuan/pc/FailureEdit.vue +174 -174
  940. package/src/filiale/wuan/pc/GasWorkSanhu.vue +817 -817
  941. package/src/filiale/wuan/pc/RepairsWork.vue +848 -848
  942. package/src/filiale/wuan/pc/Seekwork.vue +311 -311
  943. package/src/filiale/wuan/pc/TelFindUser.vue +229 -229
  944. package/src/filiale/wuan/pc/WorkListAll.vue +642 -642
  945. package/src/filiale/wuan/telephone.js +23 -23
  946. package/src/filiale/wuan/telephoneAndroid.js +17 -17
  947. package/src/filiale/wuhai/pc/CallRcords.vue +109 -109
  948. package/src/filiale/wuhai/pc/ComplainWork.vue +324 -324
  949. package/src/filiale/wuhai/pc/Console.vue +432 -432
  950. package/src/filiale/wuhai/pc/DistributeWork.vue +173 -173
  951. package/src/filiale/wuhai/pc/FailureEdit.vue +190 -190
  952. package/src/filiale/wuhai/pc/InfoTable.vue +135 -135
  953. package/src/filiale/wuhai/pc/NewRepairPaper.vue +380 -380
  954. package/src/filiale/wuhai/pc/RecordListLeft.vue +202 -202
  955. package/src/filiale/wuhai/pc/RepairsWork.vue +811 -811
  956. package/src/filiale/wuhai/pc/SecuritycheckInfo.vue +92 -92
  957. package/src/filiale/wuhai/pc/Seekwork.vue +361 -361
  958. package/src/filiale/wuhai/pc/ServiceRcords.vue +146 -146
  959. package/src/filiale/wuhai/pc/TelFindUser.vue +256 -256
  960. package/src/filiale/wuhai/pc/VoiceServer.vue +211 -211
  961. package/src/filiale/wuhai/pc/WorkCenter.vue +104 -104
  962. package/src/filiale/wuhai/pc/WorkCenterList.vue +337 -337
  963. package/src/filiale/wuhai/pc/WorkListAllNew.vue +715 -715
  964. package/src/filiale/wuhai/pc/serviceDeleteOrder.vue +54 -54
  965. package/src/filiale/wuhai/telephone.js +35 -35
  966. package/src/filiale/xinkang/android/FaultAll.vue +840 -840
  967. package/src/filiale/xinkang/android/RepairFirstV.vue +484 -484
  968. package/src/filiale/xinkang/telephoneAndroid.js +14 -14
  969. package/src/filiale/yuansheng/android/RepairFirstV.vue +636 -636
  970. package/src/filiale/yuansheng/android/RepairInfo.vue +166 -166
  971. package/src/filiale/yuansheng/pc/DistributeWork.vue +177 -177
  972. package/src/filiale/yuansheng/pc/FailureEdit.vue +188 -188
  973. package/src/filiale/yuansheng/pc/HandplanInfo.vue +78 -78
  974. package/src/filiale/yuansheng/pc/MetereadInfo.vue +83 -83
  975. package/src/filiale/yuansheng/pc/ReservationWork.vue +156 -156
  976. package/src/filiale/yuansheng/pc/TelFindUser.vue +237 -237
  977. package/src/filiale/yuansheng/pc/VoiceServer.vue +208 -208
  978. package/src/filiale/yuansheng/telephone.js +20 -20
  979. package/src/filiale/yuansheng/telephoneAndroid.js +16 -16
  980. package/src/filiale/yuncheng/android/LdapHelper.js +75 -75
  981. package/src/filiale/yuncheng/android/Outlay.vue +201 -201
  982. package/src/filiale/yuncheng/android/RepairInfo.vue +163 -163
  983. package/src/filiale/yuncheng/android/RepairOrderV.vue +1483 -1483
  984. package/src/filiale/yuncheng/android/RepairUserInfo.vue +390 -390
  985. package/src/filiale/yuncheng/android/RightTree.vue +218 -218
  986. package/src/filiale/yuncheng/android/TemporarySingle.vue +522 -522
  987. package/src/filiale/yuncheng/android/ZHihuanFirst.vue +541 -541
  988. package/src/filiale/yuncheng/pc/DistributeWork.vue +199 -199
  989. package/src/filiale/yuncheng/pc/GasWork.vue +773 -773
  990. package/src/filiale/yuncheng/pc/TelFindUser.vue +322 -322
  991. package/src/filiale/yuncheng/pc/WorkList.vue +823 -823
  992. package/src/filiale/yuncheng/pc/WorkListAllNew.vue +781 -781
  993. package/src/filiale/yuncheng/telephone.js +16 -16
  994. package/src/filiale/yuncheng/telephoneAndroid.js +19 -19
  995. package/src/filiale/zhongsheng/android/FailureShow.vue +61 -61
  996. package/src/filiale/zhongsheng/android/FaultAll.vue +741 -741
  997. package/src/filiale/zhongsheng/android/RepairFirstV.vue +464 -464
  998. package/src/filiale/zhongsheng/android/RepairInfo.vue +133 -133
  999. package/src/filiale/zhongsheng/android/RepairOrderV.vue +1430 -1430
  1000. package/src/filiale/zhongsheng/android/RepairUserInfo.vue +559 -559
  1001. package/src/filiale/zhongsheng/pc/ComplainWork.vue +299 -299
  1002. package/src/filiale/zhongsheng/pc/Console.vue +432 -432
  1003. package/src/filiale/zhongsheng/pc/DistributeWork.vue +173 -173
  1004. package/src/filiale/zhongsheng/pc/IgnitionVentilationWork.vue +836 -836
  1005. package/src/filiale/zhongsheng/pc/InfoTable.vue +124 -124
  1006. package/src/filiale/zhongsheng/pc/RepairsWork.vue +775 -775
  1007. package/src/filiale/zhongsheng/pc/Seekwork.vue +283 -283
  1008. package/src/filiale/zhongsheng/pc/TelFindUser.vue +216 -216
  1009. package/src/filiale/zhongsheng/pc/WorkList.vue +805 -805
  1010. package/src/filiale/zhongsheng/pc/WorkListAll.vue +628 -628
  1011. package/src/filiale/zhongsheng/telephone.js +23 -23
  1012. package/src/filiale/zhongsheng/telephoneAndroid.js +19 -19
  1013. package/src/filiale/zhongyi/android/FaultAll.vue +854 -854
  1014. package/src/filiale/zhongyi/android/RepairFirstV.vue +614 -614
  1015. package/src/filiale/zhongyi/android.js +12 -12
  1016. package/src/filiale/zhongyi/pc/DistributeWork.vue +180 -180
  1017. package/src/filiale/zhongyi/pc/IgnitionVentilationWork.vue +801 -801
  1018. package/src/filiale/zhongyi/pc/NewRepairPaper.vue +370 -370
  1019. package/src/filiale/zhongyi/pc/RepairsWork.vue +794 -794
  1020. package/src/filiale/zhongyi/pc/WorkList.vue +769 -769
  1021. package/src/filiale/zhongyi/pc/WorkListAllNew.vue +673 -673
  1022. package/src/filiale/zhongyi/telephone.js +18 -18
  1023. package/src/filiale/zhongyi/telephoneAndroid.js +13 -13
  1024. package/src/filiale/zhoukou/android/ChargeBill.vue +201 -201
  1025. package/src/filiale/zhoukou/android/FaultAll.vue +779 -779
  1026. package/src/filiale/zhoukou/android/Othercharge.vue +591 -591
  1027. package/src/filiale/zhoukou/android/OtherchargeZhoukou.vue +574 -574
  1028. package/src/filiale/zhoukou/android/Outlay.vue +236 -236
  1029. package/src/filiale/zhoukou/android/RepairDetails.vue +544 -544
  1030. package/src/filiale/zhoukou/android/RepairFirstV.vue +542 -542
  1031. package/src/filiale/zhoukou/android/RepairInfo.vue +136 -136
  1032. package/src/filiale/zhoukou/android/RepairOrderV.vue +1383 -1383
  1033. package/src/filiale/zhoukou/android/RepairUserInfo.vue +532 -532
  1034. package/src/filiale/zhoukou/android/ZkBill.vue +191 -191
  1035. package/src/filiale/zhoukou/android/createQRcode.vue +256 -256
  1036. package/src/filiale/zhoukou/android/onlineBuyGas.vue +804 -804
  1037. package/src/filiale/zhoukou/android/onlineoperation.vue +416 -416
  1038. package/src/filiale/zhoukou/android/onlinequeryuser.vue +468 -468
  1039. package/src/filiale/zhoukou/pc/ExportExcel.vue +204 -204
  1040. package/src/filiale/zhoukou/pc/NewRepairPaper.vue +366 -366
  1041. package/src/filiale/zhoukou/pc/SiteSend.vue +265 -265
  1042. package/src/filiale/zhoukou/pc/WorkHistory.vue +514 -514
  1043. package/src/filiale/zhoukou/pc/WorkList.vue +653 -653
  1044. package/src/filiale/zhoukou/pc/WorkListAllNew.vue +675 -675
  1045. package/src/filiale/zhoukou/telephone.js +18 -18
  1046. package/src/filiale/zhoukou/telephoneAndroid.js +33 -33
  1047. package/src/index.js +15 -15
  1048. package/src/main.js +1 -1
  1049. package/src/plugins/DataSql.js +569 -569
  1050. package/src/plugins/EmojiData.js +514 -514
  1051. package/src/plugins/EncryptUtil.js +53 -53
  1052. package/src/plugins/HttpLoad.js +93 -93
  1053. package/src/plugins/LoadData.js +40 -40
  1054. package/src/plugins/LoadParams.js +54 -54
  1055. package/src/plugins/LocalPagedList.js +107 -107
  1056. package/src/plugins/ObjTree.js +532 -532
  1057. package/src/plugins/TelGetSaleParams.js +63 -63
  1058. package/src/qrcode.js +618 -618
  1059. package/src/qrcode.min.js +1 -1
  1060. package/src/stores/exportConfig.js +10 -10
  1061. package/src/stores/wxconfig.js +10 -10
  1062. package/src/telephone-android.js +374 -374
  1063. package/src/telephone-shaoguan.js +256 -256
  1064. package/src/telephone-tongcheng.js +254 -254
  1065. package/src/telephone.js +749 -749
  1066. package/src/telephoneanaly.less +704 -704
  1067. package/src/utils/LdapHelper.js +99 -99
  1068. package/src/weinan-android.js +350 -350
  1069. package/src/weinan.js +537 -537
  1070. package/static/fonts/font.css +6 -6
  1071. package/static/js/adapter.min.js +2049 -2049
  1072. package/static/js/bootstrap.min.js +7 -7
  1073. package/static/js/ctilink.js +1303 -1303
  1074. package/static/js/ctimsg.js +655 -655
  1075. package/static/js/janus.js +4034 -4034
  1076. package/static/js/jquery-2.1.1.min.js +5 -5
  1077. package/yarn-error.log +7872 -7872
  1078. 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>