telephone-clients 3.0.103-67 → 3.0.103-69

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