system-clients 3.2.78 → 3.2.79

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 (266) hide show
  1. package/.babelrc +5 -5
  2. package/.editorconfig +9 -9
  3. package/.eslintrc.js +16 -16
  4. package/.gradle/7.4/checksums/checksums.lock +0 -0
  5. package/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock +0 -0
  6. package/.gradle/7.4/dependencies-accessors/gc.properties +0 -0
  7. package/.gradle/7.4/executionHistory/executionHistory.bin +0 -0
  8. package/.gradle/7.4/executionHistory/executionHistory.lock +0 -0
  9. package/.gradle/7.4/fileChanges/last-build.bin +0 -0
  10. package/.gradle/7.4/fileHashes/fileHashes.bin +0 -0
  11. package/.gradle/7.4/fileHashes/fileHashes.lock +0 -0
  12. package/.gradle/7.4/gc.properties +0 -0
  13. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  16. package/.gradle/file-system.probe +0 -0
  17. package/.gradle/vcs-1/gc.properties +0 -0
  18. package/CHANGELOG.md +51 -51
  19. package/README.md +36 -36
  20. package/SystemClient.iml +8 -8
  21. package/build/css-loaders.js +34 -34
  22. package/build/dev-client.js +8 -8
  23. package/build/example-server.js +80 -80
  24. package/build/release.sh +28 -28
  25. package/build/utils.js +71 -71
  26. package/build/webpack.base.conf.js +85 -85
  27. package/build/webpack.dev.conf.js +31 -31
  28. package/build/webpack.example.conf.js +49 -49
  29. package/build/webpack.prod.conf.js +60 -60
  30. package/build/webpack.test.conf.js +31 -31
  31. package/build.gradle +6 -6
  32. package/config/dev.env.js +6 -6
  33. package/config/index.js +38 -38
  34. package/config/prod.env.js +3 -3
  35. package/config/test.env.js +6 -6
  36. package/doc/Login.md +7 -7
  37. package/examples/LoginPage/App.vue +21 -21
  38. package/examples/LoginPage/index.html +11 -11
  39. package/examples/LoginPage/main.js +15 -15
  40. package/examples/ReadCard/App.vue +23 -23
  41. package/examples/ReadCard/index.html +11 -11
  42. package/examples/ReadCard/main.js +12 -12
  43. package/index.html +21 -21
  44. package/package.json +1 -1
  45. package/release.bat +5 -5
  46. package/src/App.vue +24 -24
  47. package/src/LodopFuncs.js +123 -123
  48. package/src/assets/binding.svg +1 -1
  49. package/src/assets/unbind.svg +1 -1
  50. package/src/assets//345/205/254/345/221/212.svg +1 -1
  51. package/src/assets//347/207/203/346/260/224/347/274/264/350/264/271.eps +116 -116
  52. package/src/assets//350/201/224/347/263/273/346/210/221/344/273/254.svg +1 -1
  53. package/src/components/List.vue +51 -51
  54. package/src/components/Main.vue +923 -923
  55. package/src/components/TabButton.vue +201 -201
  56. package/src/components/Table.js +74 -74
  57. package/src/components/Tabs.vue +67 -67
  58. package/src/components/Util.js +343 -343
  59. package/src/components/addressManage/AddressCascadingMenu.vue +145 -145
  60. package/src/components/common/ProgressBase.vue +83 -83
  61. package/src/components/equipment/EquipmentManage.vue +65 -65
  62. package/src/components/equipment/PcAdd.vue +105 -105
  63. package/src/components/equipment/PcList.vue +119 -119
  64. package/src/components/equipment/PcManage.vue +60 -60
  65. package/src/components/equipment/PhoneAdd.vue +107 -107
  66. package/src/components/equipment/PhoneList.vue +112 -112
  67. package/src/components/equipment/PhoneManage.vue +60 -60
  68. package/src/components/equipment/PosAdd.vue +323 -323
  69. package/src/components/equipment/PosList.vue +294 -294
  70. package/src/components/equipment/PosManage.vue +138 -138
  71. package/src/components/equipment/PosManageBoth.vue +125 -125
  72. package/src/components/equipment/PosParamAdd.vue +236 -236
  73. package/src/components/equipment/PosParamList.vue +121 -121
  74. package/src/components/equipment/PosParamManage.vue +51 -51
  75. package/src/components/materialManage/materialData.vue +44 -44
  76. package/src/components/materialManage/materialList.vue +255 -255
  77. package/src/components/parammanage/ParamManage.vue +42 -42
  78. package/src/components/parammanage/ParamManages.vue +43 -43
  79. package/src/components/parammanage/ParamPage.vue +337 -337
  80. package/src/components/parammanage/ParamPages.vue +222 -222
  81. package/src/components/parammanage/SinglePage.vue +235 -235
  82. package/src/components/parammanage/SinglePages.vue +167 -167
  83. package/src/components/server/AddChangeMsg.vue +66 -66
  84. package/src/components/server/ChangeDeclare.vue +45 -45
  85. package/src/components/server/IconTree.vue +26 -26
  86. package/src/components/server/ImageVieweTest.vue +56 -56
  87. package/src/components/server/ImageViewer.vue +350 -350
  88. package/src/components/server/LeftTree.vue +111 -111
  89. package/src/components/server/LoadData.vue +55 -55
  90. package/src/components/server/Login.vue +566 -566
  91. package/src/components/server/LoginPage.vue +235 -235
  92. package/src/components/server/LoginView.vue +128 -128
  93. package/src/components/server/Menu.vue +188 -188
  94. package/src/components/server/ModifyPw.vue +125 -125
  95. package/src/components/server/PcdBuildingSelect.vue +241 -241
  96. package/src/components/server/ResSelect.vue +166 -155
  97. package/src/components/server/ResSelectGroup.vue +6 -0
  98. package/src/components/server/RightTree.vue +348 -348
  99. package/src/components/server/RoleSelector.vue +88 -88
  100. package/src/components/server/TestResSelect.vue +58 -58
  101. package/src/components/server/TestResSelectGroup.vue +388 -388
  102. package/src/components/server/TestRightTree.vue +42 -42
  103. package/src/filiale/baole/Login.vue +568 -568
  104. package/src/filiale/baole/system.js +5 -5
  105. package/src/filiale/chengtou/Login.vue +537 -537
  106. package/src/filiale/chengtou/system.js +5 -5
  107. package/src/filiale/dongguan/Login.vue +900 -900
  108. package/src/filiale/dongguan/Main.vue +715 -715
  109. package/src/filiale/dongguan/system.js +6 -6
  110. package/src/filiale/furuike/Login.vue +583 -583
  111. package/src/filiale/furuike/Main.vue +827 -827
  112. package/src/filiale/furuike/system.js +7 -7
  113. package/src/filiale/gehua/Main.vue +807 -807
  114. package/src/filiale/gehua/system.js +6 -6
  115. package/src/filiale/konggang/Login.vue +470 -470
  116. package/src/filiale/konggang/system.js +7 -7
  117. package/src/filiale/qianneng/Login.vue +566 -566
  118. package/src/filiale/qianneng/Main.vue +816 -816
  119. package/src/filiale/qianneng/ModifyPw.vue +107 -107
  120. package/src/filiale/qianneng/system.js +11 -11
  121. package/src/filiale/rizhao/LeftTree.vue +111 -111
  122. package/src/filiale/rizhao/Login.vue +791 -791
  123. package/src/filiale/rizhao/Main.vue +611 -611
  124. package/src/filiale/rizhao/system.js +14 -14
  125. package/src/filiale/shiquan/Login.vue +564 -564
  126. package/src/filiale/shiquan/system.js +8 -8
  127. package/src/filiale/tianyi/Login.vue +571 -571
  128. package/src/filiale/tianyi/system.js +5 -5
  129. package/src/filiale/tongchuan/Login.vue +561 -561
  130. package/src/filiale/tongchuan/Main.vue +1019 -1019
  131. package/src/filiale/tongchuan/system.js +7 -7
  132. package/src/filiale/wenxi/Login.vue +535 -535
  133. package/src/filiale/wenxi/Main.vue +785 -785
  134. package/src/filiale/wenxi/system.js +10 -10
  135. package/src/filiale/wuhai/LeftTree.vue +141 -141
  136. package/src/filiale/wuhai/Main.vue +807 -807
  137. package/src/filiale/wuhai/system.js +10 -10
  138. package/src/filiale/yuchuan/Login.vue +889 -889
  139. package/src/filiale/yuchuan/Main.vue +864 -864
  140. package/src/filiale/yuchuan/system.js +10 -10
  141. package/src/filiale/zhoukou/Main.vue +807 -807
  142. package/src/filiale/zhoukou/system.js +6 -6
  143. package/src/index.js +7 -7
  144. package/src/plugins/EncryptUtil.js +53 -53
  145. package/src/plugins/GetLoginInfoService.js +536 -536
  146. package/src/plugins/HeatGetLoginInfoService.js +491 -491
  147. package/src/plugins/validation.js +15 -15
  148. package/src/project/ProjectPage.vue +24 -24
  149. package/src/project/State.js +17 -17
  150. package/src/stores/AppData.js +38 -38
  151. package/src/stores/HeatAppData.js +38 -38
  152. package/src/styles/fonts/glyphicons-halflings-regular.svg +288 -288
  153. package/src/styles/less/.csscomb.json +304 -304
  154. package/src/styles/less/.csslintrc +19 -19
  155. package/src/styles/less/alerts.less +73 -73
  156. package/src/styles/less/aofeng/animate.min.css +10 -10
  157. package/src/styles/less/aofeng/expandcss.less +569 -569
  158. package/src/styles/less/aofeng/login.less +367 -367
  159. package/src/styles/less/aofeng/standard.less +2507 -2507
  160. package/src/styles/less/aofeng/themeOne/BinaryTemplate.less +690 -690
  161. package/src/styles/less/aofeng/themeOne/loginStyle.less +1586 -1586
  162. package/src/styles/less/aofeng/themeOne/systemStyle.less +2650 -2650
  163. package/src/styles/less/aofeng/themeOne.less +17 -17
  164. package/src/styles/less/aofeng/themeTwo/newStyle1.less +415 -415
  165. package/src/styles/less/aofeng/themeTwo.less +3 -3
  166. package/src/styles/less/badges.less +66 -66
  167. package/src/styles/less/bootstrap.less +66 -66
  168. package/src/styles/less/breadcrumbs.less +26 -26
  169. package/src/styles/less/button-groups.less +247 -247
  170. package/src/styles/less/buttons.less +172 -172
  171. package/src/styles/less/carousel.less +269 -269
  172. package/src/styles/less/close.less +34 -34
  173. package/src/styles/less/code.less +69 -69
  174. package/src/styles/less/component-animations.less +33 -33
  175. package/src/styles/less/dropdowns.less +216 -216
  176. package/src/styles/less/fonts-list.less +25 -25
  177. package/src/styles/less/forms.less +626 -626
  178. package/src/styles/less/glyphicons.less +305 -305
  179. package/src/styles/less/grid.less +84 -84
  180. package/src/styles/less/input-groups.less +167 -167
  181. package/src/styles/less/jumbotron.less +52 -52
  182. package/src/styles/less/labels.less +64 -64
  183. package/src/styles/less/list-group.less +141 -141
  184. package/src/styles/less/manageStyle/manageChile.less +180 -180
  185. package/src/styles/less/manageStyle/manageStyle/manageChile.less +180 -180
  186. package/src/styles/less/manageStyle/manageStyle/manageStyle.less +1102 -1102
  187. package/src/styles/less/manageStyle/manageStyle/safeStyle.less +498 -498
  188. package/src/styles/less/manageStyle/manageStyle.less +1102 -1102
  189. package/src/styles/less/manageStyle/safeStyle.less +498 -498
  190. package/src/styles/less/media.less +66 -66
  191. package/src/styles/less/mixins/alerts.less +14 -14
  192. package/src/styles/less/mixins/background-variant.less +9 -9
  193. package/src/styles/less/mixins/border-radius.less +18 -18
  194. package/src/styles/less/mixins/buttons.less +69 -69
  195. package/src/styles/less/mixins/center-block.less +7 -7
  196. package/src/styles/less/mixins/clearfix.less +22 -22
  197. package/src/styles/less/mixins/forms.less +90 -90
  198. package/src/styles/less/mixins/gradients.less +59 -59
  199. package/src/styles/less/mixins/grid-framework.less +92 -92
  200. package/src/styles/less/mixins/grid.less +122 -122
  201. package/src/styles/less/mixins/hide-text.less +21 -21
  202. package/src/styles/less/mixins/image.less +33 -33
  203. package/src/styles/less/mixins/labels.less +12 -12
  204. package/src/styles/less/mixins/list-group.less +30 -30
  205. package/src/styles/less/mixins/nav-divider.less +10 -10
  206. package/src/styles/less/mixins/nav-vertical-align.less +9 -9
  207. package/src/styles/less/mixins/opacity.less +8 -8
  208. package/src/styles/less/mixins/pagination.less +24 -24
  209. package/src/styles/less/mixins/panels.less +24 -24
  210. package/src/styles/less/mixins/progress-bar.less +10 -10
  211. package/src/styles/less/mixins/reset-filter.less +8 -8
  212. package/src/styles/less/mixins/reset-text.less +18 -18
  213. package/src/styles/less/mixins/resize.less +6 -6
  214. package/src/styles/less/mixins/responsive-visibility.less +15 -15
  215. package/src/styles/less/mixins/size.less +10 -10
  216. package/src/styles/less/mixins/tab-focus.less +9 -9
  217. package/src/styles/less/mixins/table-row.less +44 -44
  218. package/src/styles/less/mixins/text-emphasis.less +9 -9
  219. package/src/styles/less/mixins/text-overflow.less +8 -8
  220. package/src/styles/less/mixins/vendor-prefixes.less +227 -227
  221. package/src/styles/less/mixins.less +40 -40
  222. package/src/styles/less/modals.less +151 -151
  223. package/src/styles/less/navbar.less +660 -660
  224. package/src/styles/less/navs.less +285 -285
  225. package/src/styles/less/normalize.less +424 -424
  226. package/src/styles/less/pager.less +76 -76
  227. package/src/styles/less/pagination.less +89 -89
  228. package/src/styles/less/panels.less +275 -275
  229. package/src/styles/less/popovers.less +131 -131
  230. package/src/styles/less/print.less +101 -101
  231. package/src/styles/less/progress-bars.less +87 -87
  232. package/src/styles/less/responsive-embed.less +35 -35
  233. package/src/styles/less/responsive-utilities.less +194 -194
  234. package/src/styles/less/scaffolding.less +161 -161
  235. package/src/styles/less/stand.less +207 -207
  236. package/src/styles/less/tables.less +312 -312
  237. package/src/styles/less/theme.less +291 -291
  238. package/src/styles/less/thumbnails.less +36 -36
  239. package/src/styles/less/tooltip.less +102 -102
  240. package/src/styles/less/type.less +316 -316
  241. package/src/styles/less/utilities.less +55 -55
  242. package/src/styles/less/variables.less +899 -899
  243. package/src/styles/less/wells.less +29 -29
  244. package/src/system.js +121 -121
  245. package/src/systemphone.js +11 -11
  246. package/src/util/Daiban.json +12 -12
  247. package/src/util/LdapHelper.js +75 -75
  248. package/test/e2e/custom-assertions/elementCount.js +26 -26
  249. package/test/e2e/nightwatch.conf.js +40 -40
  250. package/test/e2e/runner.js +30 -30
  251. package/test/e2e/specs/test.js +14 -14
  252. package/test/unit/.eslintrc +5 -5
  253. package/test/unit/index.js +13 -13
  254. package/test/unit/init.js +10 -10
  255. package/test/unit/karma.conf.js +49 -49
  256. package/test/unit/specs/base64.spec.js +5 -5
  257. package/test/unit/specs/components/parammanage/ParamPage.spec.js +20 -20
  258. package/test/unit/specs/components/parammanage/SinglePage.spec.js +20 -20
  259. package/test/unit/specs/components/server/LeftTree/App.vue +18 -18
  260. package/test/unit/specs/components/server/LeftTree/LeftTree.spec.js +22 -22
  261. package/test/unit/specs/components/server/LoadData.spec.js +24 -24
  262. package/test/unit/specs/components/server/Login.spec.js +61 -61
  263. package/test/unit/specs/components/server/RightTree.spec.js +50 -50
  264. package/test/unit/specs/plugins/GetLoginInfoService.spec.js +55 -55
  265. package/test/unit/test.html +76 -76
  266. package/yarn-error.log +6896 -6896
@@ -1,785 +1,785 @@
1
- <template>
2
- <div @click="hindsetting1()" :class="{'with-watermark':showwatermakeflag}">
3
- <span class="newTip" transition="newTip" @click="tipClick" v-if="newTipShow">
4
- <span>您有一条新提醒</span>
5
- </span>
6
- <!-- <div class="system-main" id="box" v-el:box v-if="!isManger">-->
7
- <!-- <div class="system-logo" style="height: auto">-->
8
- <!-- <img :src="imgs.logoimg" alt=""/>-->
9
- <!-- <label>{{systemname}}</label>-->
10
- <!-- <div class="system-logo-chi" >-->
11
- <!-- <div v-if="userpane" class="auto system-logo-prompt" style="float: right">-->
12
- <!-- <span>{{orgpathnames}}</span>-->
13
- <!-- </div>-->
14
- <!-- &lt;!&ndash;<div class="system-logo-chi-img1" style="float: right" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()"></div>&ndash;&gt;-->
15
- <!-- <span style="float: right; padding-top: 2px" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()" class="system-logo-chi-span-1">{{$login.f.name}}</span>-->
16
- <!-- <span style="border-left: 1px solid;float: right;padding-top: 2px" class="system-logo-chi-span-1"> <img src="../../static/newStyle/login-f.png" height="20" width="20"> </span>-->
17
- <!-- <a href="index.html" onclick="return confirm('您确定要退出系统吗?');" style="float: right;padding-top: 2px">-->
18
- <!-- <img src="../../static/newStyle/system-off.png" alt="" >-->
19
- <!-- <span class="system-logo-chi-span-1">退出系统</span>-->
20
- <!-- </a>-->
21
- <!-- <div style="float: right" :class="{'dropstyle':setting,'dropstyle-1':!setting}">-->
22
- <!-- <dropdown class="auto" >-->
23
- <!-- <span data-toggle="dropdown" @click="hindsetting()" >-->
24
- <!-- <img :src="srcsetting" alt=""><span>系统设置</span>-->
25
- <!-- </span>-->
26
- <!-- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up dropstyle-chi" >-->
27
- <!-- &lt;!&ndash; <li>系统信息及设置</li>&ndash;&gt;-->
28
- <!-- <li style="color: #ffffff;white-space: nowrap" @click="show=true">修改密码</li>-->
29
- <!-- <li style="color: #ffffff;white-space: nowrap" @click="AddChangeMsgShow=true">系统版本</li>-->
30
- <!-- </ul>-->
31
- <!-- </dropdown>-->
32
- <!-- </div>-->
33
-
34
- <!-- </div>-->
35
- <!-- </div>-->
36
- <!-- <div class="system-left tree-flex" :class="{'system-left-1': !treeOrIcon}" id="top" v-el:top >-->
37
- <!-- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >-->
38
- <!-- <div class="span system-left-tree" >-->
39
- <!-- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" :treeOrIcon="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>-->
40
- <!-- &lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
41
- <!-- </div>-->
42
- <!-- </div>-->
43
- <!-- <div class="system-foot-stretch" >-->
44
- <!-- <a @click="changeShow()"><img src="../../static/images/lefticon/菜单伸缩.png" alt=""></a>-->
45
- <!-- </div>-->
46
- <!-- </div>-->
47
-
48
-
49
- <!-- <div class="system-right" :class="{'system-right-1': !treeOrIcon}" id="bottom" v-el:bottom>-->
50
- <!-- <div class="span">-->
51
- <!-- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>-->
52
- <!-- <dynamic :comps='[]' :showup="true" :showhide="false" name='main' :selecttab.sync="selecttab" @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>-->
53
- <!-- </div>-->
54
- <!-- </div>-->
55
- <!-- <div class="system-foot" v-el:bottom>-->
56
-
57
- <!-- <div class="system-foot-box">-->
58
-
59
- <!-- </div>-->
60
- <!-- </div>-->
61
- <!-- </div>-->
62
- <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
63
- <div class="auto login-operator1" v-if="$refs.mic.tabs.length === 0">
64
- <span>
65
- <img
66
- src="../../assets/people.png" height="15" width="15">
67
- 登录人:</span>
68
- <label>{{ orgpathnames }}</label>
69
- </div>
70
- <div class="system-left tree-flex" :class="{'tree-flex-icon': !treeOrIcon}" id="top" v-el:top>
71
- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}">
72
- <div class="span system-left-tree " style="height:85%">
73
- <h3>{{ systemname }}</h3>
74
- <!-- <div class="span" style="margin-bottom:10px;padding-bottom:5px;padding-top:5px;flex: 1;border-top: 1px solid #e5e5e5;border-bottom: 1px solid #e5e5e5;">-->
75
- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon"
76
- :tabs="tabs" v-ref:tree></left-tree>
77
- <!--&lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
78
- </div>
79
-
80
- <div class="tree-flex-footer">
81
- <!-- <a @click="changeShow()"><img :src="imgs.open" alt=""><span v-if="treeOrIcon">菜单伸缩</span></a>-->
82
- <!-- <a><img src="../../../static/treeset.png" alt="">系统设置</a> -->
83
- <dropdown class="auto">
84
- <button type="button" data-toggle="dropdown">
85
- <img :src="imgs.set" alt=""><span v-if="treeOrIcon">系统设置</span>
86
- </button>
87
- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up">
88
- <li>系统信息及设置</li>
89
- <!-- <li>{{name}}</li> -->
90
- <li>{{ date }}</li>
91
- <li @click="openUrl()">售后服务</li>
92
- <li @click="qrCode=true">APP二维码</li>
93
- <li @click="show=true">修改密码</li>
94
- <li @click="AddChangeMsgShow=true">系统版本:V3.0</li>
95
- </ul>
96
-
97
- </dropdown>
98
- <a href="index.html" @click.prevent="logOut">
99
- <img :src="imgs.out" alt=""><span v-if="treeOrIcon">退出系统</span>
100
- </a>
101
- </div>
102
- </div>
103
- </div>
104
- <!-- <div class="line" id="line" v-show="treeOrIcon" v-el:line></div> -->
105
-
106
- <div class="flex right-bg system-right" id="bottom" v-el:bottom>
107
- <!-- <operator-badge></operator-badge> -->
108
- <div class="span">
109
- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>
110
- <dynamic :comps='[]' name='main' :selecttab.sync="selecttab" :orgpathnames="orgpathnames"
111
- @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>
112
- </div>
113
- </div>
114
- </div>
115
- <div v-show="isManger">
116
- <route v-ref:route></route>
117
- </div>
118
- <modal v-if="newTipContextShow" :show.sync="newTipContextShow" :backdrop="false">
119
- <header slot="modal-header" style="display:none"> </header>
120
- <article slot="modal-body" class="modal-body">
121
- <form class="form-horizontal">
122
- <div class="row">
123
- <div class="col-sm-12 " v-if="AppDaiBan !==''">
124
- <label class="col-sm-2">报装待办:</label>
125
- <span style="font-weight:normal">{{AppDaiBan}}</span>
126
- </div>
127
- <div class="col-sm-12 " v-if="OrderDaiBan !==''">
128
- <label class="col-sm-2">预约待办:</label>
129
- <span style="font-weight:normal">{{OrderDaiBan}}</span>
130
- </div>
131
- </div>
132
- </form>
133
- </article>
134
- <footer slot="modal-footer" style="height: 8vh" class="modal-footer">
135
- <button class="button_search" @click="newTipContextShow = false">确认</button>
136
- </footer>
137
- </modal>
138
-
139
- <!-- 变更录入 模态框 -->
140
- <add-changemsg :show="AddChangeMsgShow" v-on:toggle="AddChangeMsgShow = false"></add-changemsg>
141
- <!-- 修改密码组件 -->
142
- <modify-pw :show.sync="show" v-if="show"></modify-pw>
143
- <!-- 手机扫描二维码 -->
144
- <modal :show.sync="qrCode" v-if="qrCode" v-ref:qrmodal backdrop="false">
145
- <header slot="modal-header" class="modal-header">
146
- 请打开手机扫一扫功能进行扫描下载App
147
- </header>
148
- <article slot="modal-body" class="modal-body">
149
- <img style="width: 300px;height: 300px;display: block;margin: auto" src="/images/DownLoadQRCode.png"/>
150
- </article>
151
- <footer slot="modal-footer" class="modal-footer">
152
- <button type="button" class="btn btn-success" @click='qrCode=false'>关闭</button>
153
- </footer>
154
- </modal>
155
- </div>
156
- </template>
157
-
158
- <script>
159
- import vue from 'vue'
160
- import co from 'co'
161
- import {HttpResetClass} from "vue-client";
162
-
163
- let getwartermakr = async function (self) {
164
- let param = {
165
- tablename: 't_singlevalue',
166
- condition: " 1=1 and name=\'水印内容\'"
167
- };
168
- let result = await self.$resetpost('rs/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: null});
169
- if (result && result.data.length > 0) {
170
- self.showwatermakeflag = true;
171
- createWaterMark(`${result.data[0].value}${self.$login.f.ename}`);
172
- } else {
173
- self.showwatermakeflag = false;
174
- }
175
- }
176
-
177
- let createWaterMark = function (userName) {
178
- let style;
179
- if (style) style.remove();
180
- let width = window.parseInt(document.body.clientWidth);
181
- let canvasWidth = width / window.parseInt(width / 320);
182
- let fontFamily = window.getComputedStyle(document.body)["font-family"];
183
- let canvas = document.createElement("canvas");
184
- canvas.width = canvasWidth;
185
- canvas.height = 200;
186
- let ctx = canvas.getContext("2d");
187
- ctx.rotate((-20 * Math.PI) / 180);
188
- ctx.font = `20px ${fontFamily}`;
189
- ctx.fillStyle = "rgba(8,8,8,.1)";
190
- ctx.fillText(userName, 50, 200);
191
- let imgSrc = canvas.toDataURL("image/png");
192
- style = document.createElement("style");
193
- style.innerHTML = `.with-watermark:before{
194
- pointer-events: none;
195
- content: "";
196
- width: 100%;
197
- height: 100%;
198
- display: block;
199
- position: absolute;
200
- background-image: url("${imgSrc}");
201
- }`;
202
- (document.head.append || document.head.appendChild).apply(document.head, [style]);
203
- }
204
-
205
- window.onunload = () => {
206
- vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
207
- }
208
- window.onbeforeunload = () => {
209
- vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
210
- }
211
- export default {
212
- title: '主界面',
213
- props: ['functions', 'userid', 'config'],
214
- data() {
215
- return {
216
- // 页面提示信息定时器
217
- interval: null,
218
- newTipShow: false,
219
- newTipContextShow: false,
220
- AppDaiBan: '',
221
- OrderDaiBan: '',
222
- // 左侧树下部三个小图标
223
- imgs: {
224
- open: '/images/lefticon/菜单伸缩.png',
225
- set: '/images/lefticon/系统设置.png',
226
- out: '/images/lefticon/退出系统.png',
227
- img1: '/images/newStyle/login-user.png',
228
- logoimg: '/static/newStyle/fife.png'
229
- // img2: '/images/lefticon/退出系统.png',
230
- },
231
- treeOrIcon: false,
232
- qrCode:false,
233
- isManger: false,
234
- show: false,
235
- orgpathnames: `${this.$login.f.orgs}-${this.$login.f.deps}-${this.$login.f.name}`,
236
- systemname: '客服系统',
237
- date: this.$login.toStandardDateString(),
238
- tabs: [], //已初始化页签数组
239
- selecttab: '',
240
- setting: true,
241
- srcsetting: '../../static/newStyle/setting.png',
242
- showwatermakeflag: false,
243
- // headerHint: true, // 右侧顶部提示信息
244
- // value: 25645.26,
245
- // AddChangeMsgShow: false,
246
- // showsum: false
247
- }
248
- },
249
- ready() {
250
- getwartermakr(this);
251
- let component = this.$login.getUrlCompileParames('component')
252
- if (component) {
253
- this.isManger = true
254
- this.$refs.route.init(component, {data: this.functions.functions})
255
- }
256
- if (this.$login.f.password == '1') {
257
- this.$showMessage('本地登录系统为此账户的初始密码,请确认修改密码!!!', ['confirm', 'cancel']).then((res) => {
258
- if (res == 'confirm')
259
- this.show = true
260
- })
261
- }
262
- console.log("系统名称", this.$appdata.getSingleValue("系统名称"))
263
- this.systemname = this.$appdata.getSingleValue("系统名称") ? this.$appdata.getSingleValue("系统名称") : '客服系统'
264
- // let oBox = this.getElement("box")
265
- // let oTop = this.getElement("top")
266
- // let oBottom = this.getElement("bottom")
267
- // let oLine = this.getElement("line")
268
- // let that = this
269
- // oLine.onmousedown = function(e) {
270
- // let disX = (e || event).clientX
271
- // oLine.left = oLine.offsetLeft
272
- // document.onmousemove = function(e) {
273
- // let iT = oLine.left + ((e || event).clientX - disX)
274
- // var e = e || window.event
275
- // let tarnameb = e.target || e.srcElement
276
- // let maxT = oBox.clientWight - oLine.offsetWidth
277
- // oLine.style.margin = 0
278
- // iT < 0 && (iT = 0)
279
- // iT > maxT && (iT = maxT)
280
- // oLine.style.left = oTop.style.width = iT + "px"
281
- // oBottom.style.width = oBox.clientWidth - iT + "px"
282
- // that.$set('treeWidth', iT)
283
- // return false
284
- // }
285
- // document.onmouseup = function() {
286
- // document.onmousemove = null
287
- // document.onmouseup = null
288
- // oLine.releaseCapture && oLine.releaseCapture()
289
- // }
290
- // oLine.setCapture && oLine.setCapture()
291
- // return false
292
- // }
293
- this.changeShow()
294
- this.gotoWorkOrderSite()
295
- // 获取预约列表
296
- this.functions.f_role_name && this.functions.f_role_name.includes(this.config.msgRole) && this.config.isTip && this.getOrderList()
297
- },
298
- methods: {
299
- getOrderList(){
300
- let times = this.config.times * 60 * 1000
301
- console.log("=定时提示间隔=", times)
302
- try {
303
- this.interval = setInterval(() => {
304
- this.getDaiBan()
305
- }, times)
306
- } catch (error) {
307
- console.log('捕获到异常', error)
308
- }
309
- },
310
- async getDaiBan(){
311
- this.OrderDaiBan = ''
312
- this.AppDaiBan = ''
313
- let http = new HttpResetClass()
314
- await http.load('POST', '/rs/sql/singleTable', {data: {
315
- tablename:'t_order_center',
316
- condition:` (f_orderstate != '预约成功' and f_orgstr ='${this.$login.f.orgid}' and f_orderstate != '预约失败' ) or f_orderstate is null`
317
- }}, {
318
- resolveMsg: null,
319
- rejectMsg: null
320
- }).then((res) => {
321
- let OrderDaiBan = {}
322
- res.data.forEach(item=>{
323
- OrderDaiBan[item.f_ordertype] = OrderDaiBan[item.f_ordertype] || []
324
- OrderDaiBan[item.f_ordertype].push(item)
325
- })
326
- if (res.data.length> 0){
327
- this.OrderDaiBan = `您有${res.data.length}条需要处理的微信预约业务!`
328
- this.OrderDaiBan += `其中 ${Object.keys(OrderDaiBan).map(key=>`${key}:${OrderDaiBan[key].length}条`).join(', ')}`
329
- }
330
- })
331
- let data = {
332
- condition: '1 = 1',
333
- data: {
334
- orgid: this.$login.f.orgid,
335
- id: this.$login.f.id
336
- }
337
- }
338
- await http.load('POST', '/rs/sql/checkuser', {data: data}, {
339
- resolveMsg: null,
340
- rejectMsg: null
341
- }).then((res) => {
342
- let AppDaiBan = {}
343
- res.data.forEach(item=>{
344
- AppDaiBan[item.defname] = AppDaiBan[item.defname] || []
345
- AppDaiBan[item.defname].push(item)
346
- })
347
- if (res.data.length> 0){
348
- this.AppDaiBan = `您有${res.data.length}条需要处理的报建待办业务!`
349
- this.AppDaiBan += `其中 ${Object.keys(AppDaiBan).map(key=>`${key}:${AppDaiBan[key].length}条`).join(', ')}`
350
- }
351
- }).catch((e)=>{
352
- console.error(e)
353
- })
354
- if(this.AppDaiBan || this.OrderDaiBan){
355
- this.newTipShow = true
356
- }
357
- },
358
- // 提醒框被点击
359
- tipClick(){
360
- this.newTipShow = false
361
- this.newTipContextShow = true
362
- },
363
- gotoWorkOrderSite(){
364
- const isRemind =this.$appdata.getSingleValue("站点工单提醒")
365
- console.log('站点工单是否提醒',isRemind)
366
- if(isRemind && isRemind !== '是'){
367
- return
368
- }
369
- if(this.functions && this.functions.f_role_name && this.functions.f_role_name.indexOf('派单员') !== -1){
370
- const data = {
371
- "condition":
372
- {
373
- "condition":" 1=1 ",
374
- "sign":"1=1"
375
- },
376
- "userid":this.functions.name
377
- }
378
- new HttpResetClass().load('POST','rs/path/operatorService/n', {data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
379
- if(res.data && res.data.n !== 0){
380
- this.$showMessage('你有'+res.data.n+'个工单待处理,请尽快前往站点工单页面进行处理')
381
- }
382
- })
383
- }
384
- },
385
- openUrl() {
386
- var url = `http://123.60.214.109:8406/submitTicket?contact=${this.$login.f.name}&orgName=${this.$login.f.orgs}&phone=${this.$login.f.f_user_telephone}`
387
- window.open(url, '_blank')
388
- },
389
- hindsetting() {
390
- this.setting = !this.setting
391
- if (this.setting) {
392
- this.srcsetting = '../../static/newStyle/setting.png'
393
- } else {
394
- this.srcsetting = '../../static/newStyle/setting1.png'
395
- }
396
-
397
- },
398
- hindsetting1() {
399
-
400
- if (!this.setting) {
401
- this.srcsetting = '../../static/newStyle/setting.png'
402
- this.setting = true
403
- }
404
-
405
- },
406
- isnodo(val) {
407
- console.log(val, 'ss')
408
- this.selecttab = val
409
- },
410
- unfurl() {
411
- if (this.showsum) {
412
- this.showsum = false
413
- } else {
414
- this.showsum = true
415
- }
416
- },
417
- // getElement(id) {
418
- // return document.getElementById(id)
419
- // },
420
- changeShow() {
421
- // this.treeOrIcon = !this.treeOrIcon
422
- // let oBox = this.getElement("box")
423
- // let oTop = this.getElement("top")
424
- // let oBottom = this.getElement("bottom")
425
- // let oLine = this.getElement("line")
426
- // if (this.treeOrIcon) {
427
- // // oLine.style.left = oTop.style.width = 300 + "px"
428
- // oTop.style.width = 150 + "px"
429
- // oBottom.style.width = oBox.clientWidth - 150 + "px"
430
- // }else {
431
- // oLine.style.left = oTop.style.width = 50 + "px"
432
- // oBottom.style.width = oBox.clientWidth - 50 + "px"
433
- // }
434
- // }
435
- this.treeOrIcon = !this.treeOrIcon
436
- // if (this.treeOrIcon) {
437
- // this.$els.top.style.width = 14 + "%"
438
- // this.$els.bottom.style.width = this.$els.box.clientWidth - 14 + "%"
439
- // }else {
440
- // this.$els.top.style.width = 8 + "%"
441
- // this.$els.bottom.style.width = this.$els.box.clientWidth - 8 + "%"
442
- // }
443
- },
444
- changeMain(userid) {
445
- this.$goto('res-main', {userid: this.userid}, 'self')
446
- },
447
- tabChange(name) {
448
- console.log(name, 'tabchanage')
449
- this.selecttab = name
450
- this.$refs.tree.changeSelect(name)
451
- },
452
- tabcg(val) {
453
- console.log(val)
454
- this.tabs = val
455
- },
456
- logOut() {
457
- console.log(this.$login.f)
458
- this.$showMessage('您确定要退出系统吗?', ['confirm', 'cancel']).then(async (res) => {
459
- if (res == 'confirm') {
460
- let data = {
461
- userid: this.$login.f.id,
462
- username: this.$login.f.name,
463
- usertelephone: this.$login.f.f_user_telephone
464
- }
465
- await this.$resetpost('rs/logic/logOut', data, {resolveMsg: '退出成功', rejectMsg: null})
466
- window.location.reload()
467
- }
468
- })
469
- }
470
- },
471
- computed: {
472
- nowDate() {
473
- return this.$login.getNowDate()
474
- }
475
- }
476
- }
477
- </script>
478
- <style lang="less">
479
- .newTip-transition {
480
- transition: all .4s ease;
481
- }
482
- .newTip-enter, .newTip-leave {
483
- height: 0;
484
- padding: 0 10px;
485
- opacity: 0;
486
- }
487
- .newTip a {
488
- color: #333;
489
- }
490
- .newTip {
491
- cursor: pointer;
492
- text-align: center;
493
- position: absolute;
494
- top: 3em;
495
- margin: 0 auto;
496
- width: 200px;
497
- left: 48%;
498
- line-height: 2;
499
- z-index: 10010;
500
- box-shadow: 0 4px 12px rgba(0,0,0,0.38);
501
- pointer-events: all;
502
- border-radius: 4px;
503
- background-color: whitesmoke;
504
- }
505
- /* 组件内通用样式 */
506
- .select-error {
507
- button {
508
- border-bottom: 1px solid #a94442 !important;
509
- }
510
- }
511
-
512
- // input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{
513
- // -webkit-appearance:textfield;
514
- // }
515
- /* 表单输入框组 */
516
- .form-input-group {
517
- display: flex;
518
-
519
- label {
520
- width: 100px;
521
- text-align: right;
522
-
523
- + * {
524
- flex: 1;
525
- }
526
- }
527
- }
528
-
529
- // 日期组件在表单中沾满
530
- .form-horizontal .datepicker {
531
- width: 100%;
532
- }
533
-
534
- // 下拉选择框占据剩余全部空间
535
- .select-overspread {
536
- .form-group {
537
- // margin: 0px 5px 10px 0px;
538
- .form-control {
539
- margin-right: 0px;
540
- }
541
- }
542
-
543
- .btn-group, .btn-group-vertical {
544
- width: 100%;
545
- // padding-right: 5px;
546
- button {
547
- width: 100%;
548
- display: flex;
549
- justify-content: space-between;
550
- align-items: center;
551
- }
552
- }
553
-
554
- .dropdown-menu {
555
- width: 100%
556
- }
557
- }
558
-
559
- // 需要特定宽度的的样式
560
- .width-60 {
561
- width: 60px;
562
- }
563
-
564
- .userpanel {
565
- font-weight: 300;
566
- color: #333;
567
- position: fixed;
568
- right: 30px;
569
- top: 45px;
570
- background-color: white;
571
- box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px;
572
- padding: 4px 10px 4px 10px;
573
- border-radius: 2px;
574
- }
575
-
576
- .width-80 {
577
- width: 80px;
578
- }
579
-
580
- .width-100 {
581
- width: 100px;
582
- }
583
-
584
-
585
- /*右侧区域的背景*/
586
- .right-bg {
587
- width: 100%;
588
- flex: 1;
589
- color: #304A66;
590
- }
591
-
592
- .tree-flex {
593
- height: 100%;
594
- // width: 150px;
595
- /*width: 60px;*/
596
- background: #4a7cae;
597
- color: #fff;
598
-
599
- }
600
-
601
- .tree-flex-icon {
602
- width: 50px;
603
- /*transition: 0.5s;*/
604
-
605
- > .span {
606
- overflow-x: visible;
607
- }
608
- }
609
-
610
- .tree-flex h3 {
611
- text-align: center;
612
- margin: 1em 0;
613
- }
614
-
615
- .tree-flex-footer {
616
- height: 50px;
617
- display: flex;
618
- flex-direction: column;
619
- color: #fff;
620
- }
621
-
622
- .tree-flex-footer a, .tree-flex-footer button {
623
- flex: 1;
624
- padding: 8px 5px;
625
- font-size: 1.2em;
626
- // border-top: 1px solid #697D93;
627
- border-top: 1px solid #4a7cae;
628
- text-decoration: none;
629
- color: #fff;
630
- cursor: pointer;
631
- }
632
-
633
- .tree-flex-footer button {
634
- height: auto;
635
- width: 100%;
636
- border-radius: 0px;
637
- background-color: rgba(255, 255, 255, 0);
638
- border: none;
639
- border-top: 1px solid #4a7cae;
640
- // border-top: 1px solid #697D93;
641
- text-align: left;
642
- }
643
-
644
- .tree-flex-footer button:hover {
645
- outline: none;
646
- background-color: rgba(255, 255, 255, 0.2);
647
- }
648
-
649
- .tree-flex-footer button:focus {
650
- outline: none;
651
- background-color: rgba(255, 255, 255, 0.5);
652
- }
653
-
654
- .tree-flex-footer a:hover {
655
- color: #FFF;
656
- background-color: rgba(255, 255, 255, 0.2);
657
- }
658
-
659
- .tree-flex .btn-group {
660
- height: 50px !important;
661
- }
662
-
663
- .tree-flex .dropdown-menu {
664
- /* 控制显示列表的样式 */
665
- background: #4a7cae;
666
- border-radius: 0px;
667
- color: #fff;
668
- width: auto;
669
- margin: 0px;
670
- padding: 0px;
671
- }
672
-
673
- .tree-flex .dropdown-menu-up {
674
- /* bottom,top控制上下,left和right控制左右*/
675
- left: 100% !important;
676
- top: auto !important;
677
- bottom: 0;
678
- }
679
-
680
- .tree-flex .dropdown-menu-down {
681
- /* bottom,top控制上下,left和right控制左右*/
682
- left: 100% !important;
683
- top: 0 !important;
684
- }
685
-
686
- .tree-flex .dropdown-menu li {
687
- text-align: center;
688
- line-height: 50px;
689
- border-bottom: 1px solid #697D93;
690
- font-size: 1.2em;
691
- width: auto;
692
- white-space: nowrap;
693
- cursor: default;
694
-
695
- }
696
-
697
- .tree-flex .dropdown-menu li + li {
698
- text-align: left;
699
- border: 0;
700
- line-height: 40px;
701
- padding-left: 15px;
702
- padding-right: 15px;
703
- font-size: 1em;
704
- cursor: pointer;
705
- }
706
-
707
- .tree-flex .dropdown-menu li + li:hover {
708
- background-color: rgba(255, 255, 255, 0.2);
709
- }
710
-
711
- .tree-flex .dropdown-menu li a {
712
- border: none;
713
- color: #fff;
714
- height: 40px;
715
- line-height: 40px;
716
- font-size: 1em;
717
- padding: 0px;
718
- }
719
-
720
- .tree-flex .dropdown-menu li a:hover {
721
- color: #fff;
722
- background-color: rgba(255, 255, 255, 0);
723
- }
724
-
725
- .tree-flex img {
726
- height: 1.2em;
727
- width: 1.2em;
728
- margin-right: 15px;
729
- margin-left: 5px;
730
- }
731
-
732
- .line {
733
- height: 100%;
734
- width: 5px;
735
- background: #4C637B;
736
- cursor: e-resize;
737
- }
738
-
739
- /*为树(tree)组件写的样式*/
740
- .tree-img {
741
- font-size: 1.2em;
742
- }
743
-
744
- /*将较长信息截断显示,鼠标悬停显示全部信息*/
745
- .cutout50 {
746
- max-width: 50px;
747
- overflow: hidden;
748
- text-overflow: ellipsis;
749
- white-space: nowrap;
750
- }
751
-
752
- /* 滚动条样式 */
753
- /*---滚动条默认显示样式--*/
754
- ::-webkit-scrollbar-thumb {
755
- // display: none;
756
- background-color: rgba(0, 0, 0, 0.4);
757
- /*background-color:red;*/
758
- height: 50px;
759
- outline-offset: -2px;
760
- /*outline:2px solid #fff;*/
761
- -webkit-border-radius: 4px;
762
- /*border: 2px solid #fff;*/
763
- }
764
-
765
- /*---鼠标点击滚动条显示样式--*/
766
- ::-webkit-scrollbar-thumb:hover {
767
- // display: inherit;
768
- background-color: rgba(0, 0, 0, 0.4);
769
- height: 50px;
770
- -webkit-border-radius: 4px;
771
- }
772
-
773
- /*---滚动条大小--*/
774
- ::-webkit-scrollbar {
775
- width: 8px;
776
- height: 8px;
777
- }
778
-
779
- /*---滚动框背景样式--*/
780
- ::-webkit-scrollbar-track-piece {
781
- /* 全透明,不显示 */
782
- background-color: rgba(255, 255, 255, 0);
783
- -webkit-border-radius: 0;
784
- }
785
- </style>
1
+ <template>
2
+ <div @click="hindsetting1()" :class="{'with-watermark':showwatermakeflag}">
3
+ <span class="newTip" transition="newTip" @click="tipClick" v-if="newTipShow">
4
+ <span>您有一条新提醒</span>
5
+ </span>
6
+ <!-- <div class="system-main" id="box" v-el:box v-if="!isManger">-->
7
+ <!-- <div class="system-logo" style="height: auto">-->
8
+ <!-- <img :src="imgs.logoimg" alt=""/>-->
9
+ <!-- <label>{{systemname}}</label>-->
10
+ <!-- <div class="system-logo-chi" >-->
11
+ <!-- <div v-if="userpane" class="auto system-logo-prompt" style="float: right">-->
12
+ <!-- <span>{{orgpathnames}}</span>-->
13
+ <!-- </div>-->
14
+ <!-- &lt;!&ndash;<div class="system-logo-chi-img1" style="float: right" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()"></div>&ndash;&gt;-->
15
+ <!-- <span style="float: right; padding-top: 2px" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()" class="system-logo-chi-span-1">{{$login.f.name}}</span>-->
16
+ <!-- <span style="border-left: 1px solid;float: right;padding-top: 2px" class="system-logo-chi-span-1"> <img src="../../static/newStyle/login-f.png" height="20" width="20"> </span>-->
17
+ <!-- <a href="index.html" onclick="return confirm('您确定要退出系统吗?');" style="float: right;padding-top: 2px">-->
18
+ <!-- <img src="../../static/newStyle/system-off.png" alt="" >-->
19
+ <!-- <span class="system-logo-chi-span-1">退出系统</span>-->
20
+ <!-- </a>-->
21
+ <!-- <div style="float: right" :class="{'dropstyle':setting,'dropstyle-1':!setting}">-->
22
+ <!-- <dropdown class="auto" >-->
23
+ <!-- <span data-toggle="dropdown" @click="hindsetting()" >-->
24
+ <!-- <img :src="srcsetting" alt=""><span>系统设置</span>-->
25
+ <!-- </span>-->
26
+ <!-- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up dropstyle-chi" >-->
27
+ <!-- &lt;!&ndash; <li>系统信息及设置</li>&ndash;&gt;-->
28
+ <!-- <li style="color: #ffffff;white-space: nowrap" @click="show=true">修改密码</li>-->
29
+ <!-- <li style="color: #ffffff;white-space: nowrap" @click="AddChangeMsgShow=true">系统版本</li>-->
30
+ <!-- </ul>-->
31
+ <!-- </dropdown>-->
32
+ <!-- </div>-->
33
+
34
+ <!-- </div>-->
35
+ <!-- </div>-->
36
+ <!-- <div class="system-left tree-flex" :class="{'system-left-1': !treeOrIcon}" id="top" v-el:top >-->
37
+ <!-- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >-->
38
+ <!-- <div class="span system-left-tree" >-->
39
+ <!-- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" :treeOrIcon="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>-->
40
+ <!-- &lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
41
+ <!-- </div>-->
42
+ <!-- </div>-->
43
+ <!-- <div class="system-foot-stretch" >-->
44
+ <!-- <a @click="changeShow()"><img src="../../static/images/lefticon/菜单伸缩.png" alt=""></a>-->
45
+ <!-- </div>-->
46
+ <!-- </div>-->
47
+
48
+
49
+ <!-- <div class="system-right" :class="{'system-right-1': !treeOrIcon}" id="bottom" v-el:bottom>-->
50
+ <!-- <div class="span">-->
51
+ <!-- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>-->
52
+ <!-- <dynamic :comps='[]' :showup="true" :showhide="false" name='main' :selecttab.sync="selecttab" @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>-->
53
+ <!-- </div>-->
54
+ <!-- </div>-->
55
+ <!-- <div class="system-foot" v-el:bottom>-->
56
+
57
+ <!-- <div class="system-foot-box">-->
58
+
59
+ <!-- </div>-->
60
+ <!-- </div>-->
61
+ <!-- </div>-->
62
+ <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
63
+ <div class="auto login-operator1" v-if="$refs.mic.tabs.length === 0">
64
+ <span>
65
+ <img
66
+ src="../../assets/people.png" height="15" width="15">
67
+ 登录人:</span>
68
+ <label>{{ orgpathnames }}</label>
69
+ </div>
70
+ <div class="system-left tree-flex" :class="{'tree-flex-icon': !treeOrIcon}" id="top" v-el:top>
71
+ <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}">
72
+ <div class="span system-left-tree " style="height:85%">
73
+ <h3>{{ systemname }}</h3>
74
+ <!-- <div class="span" style="margin-bottom:10px;padding-bottom:5px;padding-top:5px;flex: 1;border-top: 1px solid #e5e5e5;border-bottom: 1px solid #e5e5e5;">-->
75
+ <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon"
76
+ :tabs="tabs" v-ref:tree></left-tree>
77
+ <!--&lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
78
+ </div>
79
+
80
+ <div class="tree-flex-footer">
81
+ <!-- <a @click="changeShow()"><img :src="imgs.open" alt=""><span v-if="treeOrIcon">菜单伸缩</span></a>-->
82
+ <!-- <a><img src="../../../static/treeset.png" alt="">系统设置</a> -->
83
+ <dropdown class="auto">
84
+ <button type="button" data-toggle="dropdown">
85
+ <img :src="imgs.set" alt=""><span v-if="treeOrIcon">系统设置</span>
86
+ </button>
87
+ <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up">
88
+ <li>系统信息及设置</li>
89
+ <!-- <li>{{name}}</li> -->
90
+ <li>{{ date }}</li>
91
+ <li @click="openUrl()">售后服务</li>
92
+ <li @click="qrCode=true">APP二维码</li>
93
+ <li @click="show=true">修改密码</li>
94
+ <li @click="AddChangeMsgShow=true">系统版本:V3.0</li>
95
+ </ul>
96
+
97
+ </dropdown>
98
+ <a href="index.html" @click.prevent="logOut">
99
+ <img :src="imgs.out" alt=""><span v-if="treeOrIcon">退出系统</span>
100
+ </a>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ <!-- <div class="line" id="line" v-show="treeOrIcon" v-el:line></div> -->
105
+
106
+ <div class="flex right-bg system-right" id="bottom" v-el:bottom>
107
+ <!-- <operator-badge></operator-badge> -->
108
+ <div class="span">
109
+ <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>
110
+ <dynamic :comps='[]' name='main' :selecttab.sync="selecttab" :orgpathnames="orgpathnames"
111
+ @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ <div v-show="isManger">
116
+ <route v-ref:route></route>
117
+ </div>
118
+ <modal v-if="newTipContextShow" :show.sync="newTipContextShow" :backdrop="false">
119
+ <header slot="modal-header" style="display:none"> </header>
120
+ <article slot="modal-body" class="modal-body">
121
+ <form class="form-horizontal">
122
+ <div class="row">
123
+ <div class="col-sm-12 " v-if="AppDaiBan !==''">
124
+ <label class="col-sm-2">报装待办:</label>
125
+ <span style="font-weight:normal">{{AppDaiBan}}</span>
126
+ </div>
127
+ <div class="col-sm-12 " v-if="OrderDaiBan !==''">
128
+ <label class="col-sm-2">预约待办:</label>
129
+ <span style="font-weight:normal">{{OrderDaiBan}}</span>
130
+ </div>
131
+ </div>
132
+ </form>
133
+ </article>
134
+ <footer slot="modal-footer" style="height: 8vh" class="modal-footer">
135
+ <button class="button_search" @click="newTipContextShow = false">确认</button>
136
+ </footer>
137
+ </modal>
138
+
139
+ <!-- 变更录入 模态框 -->
140
+ <add-changemsg :show="AddChangeMsgShow" v-on:toggle="AddChangeMsgShow = false"></add-changemsg>
141
+ <!-- 修改密码组件 -->
142
+ <modify-pw :show.sync="show" v-if="show"></modify-pw>
143
+ <!-- 手机扫描二维码 -->
144
+ <modal :show.sync="qrCode" v-if="qrCode" v-ref:qrmodal backdrop="false">
145
+ <header slot="modal-header" class="modal-header">
146
+ 请打开手机扫一扫功能进行扫描下载App
147
+ </header>
148
+ <article slot="modal-body" class="modal-body">
149
+ <img style="width: 300px;height: 300px;display: block;margin: auto" src="/images/DownLoadQRCode.png"/>
150
+ </article>
151
+ <footer slot="modal-footer" class="modal-footer">
152
+ <button type="button" class="btn btn-success" @click='qrCode=false'>关闭</button>
153
+ </footer>
154
+ </modal>
155
+ </div>
156
+ </template>
157
+
158
+ <script>
159
+ import vue from 'vue'
160
+ import co from 'co'
161
+ import {HttpResetClass} from "vue-client";
162
+
163
+ let getwartermakr = async function (self) {
164
+ let param = {
165
+ tablename: 't_singlevalue',
166
+ condition: " 1=1 and name=\'水印内容\'"
167
+ };
168
+ let result = await self.$resetpost('rs/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: null});
169
+ if (result && result.data.length > 0) {
170
+ self.showwatermakeflag = true;
171
+ createWaterMark(`${result.data[0].value}${self.$login.f.ename}`);
172
+ } else {
173
+ self.showwatermakeflag = false;
174
+ }
175
+ }
176
+
177
+ let createWaterMark = function (userName) {
178
+ let style;
179
+ if (style) style.remove();
180
+ let width = window.parseInt(document.body.clientWidth);
181
+ let canvasWidth = width / window.parseInt(width / 320);
182
+ let fontFamily = window.getComputedStyle(document.body)["font-family"];
183
+ let canvas = document.createElement("canvas");
184
+ canvas.width = canvasWidth;
185
+ canvas.height = 200;
186
+ let ctx = canvas.getContext("2d");
187
+ ctx.rotate((-20 * Math.PI) / 180);
188
+ ctx.font = `20px ${fontFamily}`;
189
+ ctx.fillStyle = "rgba(8,8,8,.1)";
190
+ ctx.fillText(userName, 50, 200);
191
+ let imgSrc = canvas.toDataURL("image/png");
192
+ style = document.createElement("style");
193
+ style.innerHTML = `.with-watermark:before{
194
+ pointer-events: none;
195
+ content: "";
196
+ width: 100%;
197
+ height: 100%;
198
+ display: block;
199
+ position: absolute;
200
+ background-image: url("${imgSrc}");
201
+ }`;
202
+ (document.head.append || document.head.appendChild).apply(document.head, [style]);
203
+ }
204
+
205
+ window.onunload = () => {
206
+ vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
207
+ }
208
+ window.onbeforeunload = () => {
209
+ vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
210
+ }
211
+ export default {
212
+ title: '主界面',
213
+ props: ['functions', 'userid', 'config'],
214
+ data() {
215
+ return {
216
+ // 页面提示信息定时器
217
+ interval: null,
218
+ newTipShow: false,
219
+ newTipContextShow: false,
220
+ AppDaiBan: '',
221
+ OrderDaiBan: '',
222
+ // 左侧树下部三个小图标
223
+ imgs: {
224
+ open: '/images/lefticon/菜单伸缩.png',
225
+ set: '/images/lefticon/系统设置.png',
226
+ out: '/images/lefticon/退出系统.png',
227
+ img1: '/images/newStyle/login-user.png',
228
+ logoimg: '/static/newStyle/fife.png'
229
+ // img2: '/images/lefticon/退出系统.png',
230
+ },
231
+ treeOrIcon: false,
232
+ qrCode:false,
233
+ isManger: false,
234
+ show: false,
235
+ orgpathnames: `${this.$login.f.orgs}-${this.$login.f.deps}-${this.$login.f.name}`,
236
+ systemname: '客服系统',
237
+ date: this.$login.toStandardDateString(),
238
+ tabs: [], //已初始化页签数组
239
+ selecttab: '',
240
+ setting: true,
241
+ srcsetting: '../../static/newStyle/setting.png',
242
+ showwatermakeflag: false,
243
+ // headerHint: true, // 右侧顶部提示信息
244
+ // value: 25645.26,
245
+ // AddChangeMsgShow: false,
246
+ // showsum: false
247
+ }
248
+ },
249
+ ready() {
250
+ getwartermakr(this);
251
+ let component = this.$login.getUrlCompileParames('component')
252
+ if (component) {
253
+ this.isManger = true
254
+ this.$refs.route.init(component, {data: this.functions.functions})
255
+ }
256
+ if (this.$login.f.password == '1') {
257
+ this.$showMessage('本地登录系统为此账户的初始密码,请确认修改密码!!!', ['confirm', 'cancel']).then((res) => {
258
+ if (res == 'confirm')
259
+ this.show = true
260
+ })
261
+ }
262
+ console.log("系统名称", this.$appdata.getSingleValue("系统名称"))
263
+ this.systemname = this.$appdata.getSingleValue("系统名称") ? this.$appdata.getSingleValue("系统名称") : '客服系统'
264
+ // let oBox = this.getElement("box")
265
+ // let oTop = this.getElement("top")
266
+ // let oBottom = this.getElement("bottom")
267
+ // let oLine = this.getElement("line")
268
+ // let that = this
269
+ // oLine.onmousedown = function(e) {
270
+ // let disX = (e || event).clientX
271
+ // oLine.left = oLine.offsetLeft
272
+ // document.onmousemove = function(e) {
273
+ // let iT = oLine.left + ((e || event).clientX - disX)
274
+ // var e = e || window.event
275
+ // let tarnameb = e.target || e.srcElement
276
+ // let maxT = oBox.clientWight - oLine.offsetWidth
277
+ // oLine.style.margin = 0
278
+ // iT < 0 && (iT = 0)
279
+ // iT > maxT && (iT = maxT)
280
+ // oLine.style.left = oTop.style.width = iT + "px"
281
+ // oBottom.style.width = oBox.clientWidth - iT + "px"
282
+ // that.$set('treeWidth', iT)
283
+ // return false
284
+ // }
285
+ // document.onmouseup = function() {
286
+ // document.onmousemove = null
287
+ // document.onmouseup = null
288
+ // oLine.releaseCapture && oLine.releaseCapture()
289
+ // }
290
+ // oLine.setCapture && oLine.setCapture()
291
+ // return false
292
+ // }
293
+ this.changeShow()
294
+ this.gotoWorkOrderSite()
295
+ // 获取预约列表
296
+ this.functions.f_role_name && this.functions.f_role_name.includes(this.config.msgRole) && this.config.isTip && this.getOrderList()
297
+ },
298
+ methods: {
299
+ getOrderList(){
300
+ let times = this.config.times * 60 * 1000
301
+ console.log("=定时提示间隔=", times)
302
+ try {
303
+ this.interval = setInterval(() => {
304
+ this.getDaiBan()
305
+ }, times)
306
+ } catch (error) {
307
+ console.log('捕获到异常', error)
308
+ }
309
+ },
310
+ async getDaiBan(){
311
+ this.OrderDaiBan = ''
312
+ this.AppDaiBan = ''
313
+ let http = new HttpResetClass()
314
+ await http.load('POST', '/rs/sql/singleTable', {data: {
315
+ tablename:'t_order_center',
316
+ condition:` (f_orderstate != '预约成功' and f_orgstr ='${this.$login.f.orgid}' and f_orderstate != '预约失败' ) or f_orderstate is null`
317
+ }}, {
318
+ resolveMsg: null,
319
+ rejectMsg: null
320
+ }).then((res) => {
321
+ let OrderDaiBan = {}
322
+ res.data.forEach(item=>{
323
+ OrderDaiBan[item.f_ordertype] = OrderDaiBan[item.f_ordertype] || []
324
+ OrderDaiBan[item.f_ordertype].push(item)
325
+ })
326
+ if (res.data.length> 0){
327
+ this.OrderDaiBan = `您有${res.data.length}条需要处理的微信预约业务!`
328
+ this.OrderDaiBan += `其中 ${Object.keys(OrderDaiBan).map(key=>`${key}:${OrderDaiBan[key].length}条`).join(', ')}`
329
+ }
330
+ })
331
+ let data = {
332
+ condition: '1 = 1',
333
+ data: {
334
+ orgid: this.$login.f.orgid,
335
+ id: this.$login.f.id
336
+ }
337
+ }
338
+ await http.load('POST', '/rs/sql/checkuser', {data: data}, {
339
+ resolveMsg: null,
340
+ rejectMsg: null
341
+ }).then((res) => {
342
+ let AppDaiBan = {}
343
+ res.data.forEach(item=>{
344
+ AppDaiBan[item.defname] = AppDaiBan[item.defname] || []
345
+ AppDaiBan[item.defname].push(item)
346
+ })
347
+ if (res.data.length> 0){
348
+ this.AppDaiBan = `您有${res.data.length}条需要处理的报建待办业务!`
349
+ this.AppDaiBan += `其中 ${Object.keys(AppDaiBan).map(key=>`${key}:${AppDaiBan[key].length}条`).join(', ')}`
350
+ }
351
+ }).catch((e)=>{
352
+ console.error(e)
353
+ })
354
+ if(this.AppDaiBan || this.OrderDaiBan){
355
+ this.newTipShow = true
356
+ }
357
+ },
358
+ // 提醒框被点击
359
+ tipClick(){
360
+ this.newTipShow = false
361
+ this.newTipContextShow = true
362
+ },
363
+ gotoWorkOrderSite(){
364
+ const isRemind =this.$appdata.getSingleValue("站点工单提醒")
365
+ console.log('站点工单是否提醒',isRemind)
366
+ if(isRemind && isRemind !== '是'){
367
+ return
368
+ }
369
+ if(this.functions && this.functions.f_role_name && this.functions.f_role_name.indexOf('派单员') !== -1){
370
+ const data = {
371
+ "condition":
372
+ {
373
+ "condition":" 1=1 ",
374
+ "sign":"1=1"
375
+ },
376
+ "userid":this.functions.name
377
+ }
378
+ new HttpResetClass().load('POST','rs/path/operatorService/n', {data}, {resolveMsg: null, rejectMsg: null}).then(res=>{
379
+ if(res.data && res.data.n !== 0){
380
+ this.$showMessage('你有'+res.data.n+'个工单待处理,请尽快前往站点工单页面进行处理')
381
+ }
382
+ })
383
+ }
384
+ },
385
+ openUrl() {
386
+ var url = `http://123.60.214.109:8406/submitTicket?contact=${this.$login.f.name}&orgName=${this.$login.f.orgs}&phone=${this.$login.f.f_user_telephone}`
387
+ window.open(url, '_blank')
388
+ },
389
+ hindsetting() {
390
+ this.setting = !this.setting
391
+ if (this.setting) {
392
+ this.srcsetting = '../../static/newStyle/setting.png'
393
+ } else {
394
+ this.srcsetting = '../../static/newStyle/setting1.png'
395
+ }
396
+
397
+ },
398
+ hindsetting1() {
399
+
400
+ if (!this.setting) {
401
+ this.srcsetting = '../../static/newStyle/setting.png'
402
+ this.setting = true
403
+ }
404
+
405
+ },
406
+ isnodo(val) {
407
+ console.log(val, 'ss')
408
+ this.selecttab = val
409
+ },
410
+ unfurl() {
411
+ if (this.showsum) {
412
+ this.showsum = false
413
+ } else {
414
+ this.showsum = true
415
+ }
416
+ },
417
+ // getElement(id) {
418
+ // return document.getElementById(id)
419
+ // },
420
+ changeShow() {
421
+ // this.treeOrIcon = !this.treeOrIcon
422
+ // let oBox = this.getElement("box")
423
+ // let oTop = this.getElement("top")
424
+ // let oBottom = this.getElement("bottom")
425
+ // let oLine = this.getElement("line")
426
+ // if (this.treeOrIcon) {
427
+ // // oLine.style.left = oTop.style.width = 300 + "px"
428
+ // oTop.style.width = 150 + "px"
429
+ // oBottom.style.width = oBox.clientWidth - 150 + "px"
430
+ // }else {
431
+ // oLine.style.left = oTop.style.width = 50 + "px"
432
+ // oBottom.style.width = oBox.clientWidth - 50 + "px"
433
+ // }
434
+ // }
435
+ this.treeOrIcon = !this.treeOrIcon
436
+ // if (this.treeOrIcon) {
437
+ // this.$els.top.style.width = 14 + "%"
438
+ // this.$els.bottom.style.width = this.$els.box.clientWidth - 14 + "%"
439
+ // }else {
440
+ // this.$els.top.style.width = 8 + "%"
441
+ // this.$els.bottom.style.width = this.$els.box.clientWidth - 8 + "%"
442
+ // }
443
+ },
444
+ changeMain(userid) {
445
+ this.$goto('res-main', {userid: this.userid}, 'self')
446
+ },
447
+ tabChange(name) {
448
+ console.log(name, 'tabchanage')
449
+ this.selecttab = name
450
+ this.$refs.tree.changeSelect(name)
451
+ },
452
+ tabcg(val) {
453
+ console.log(val)
454
+ this.tabs = val
455
+ },
456
+ logOut() {
457
+ console.log(this.$login.f)
458
+ this.$showMessage('您确定要退出系统吗?', ['confirm', 'cancel']).then(async (res) => {
459
+ if (res == 'confirm') {
460
+ let data = {
461
+ userid: this.$login.f.id,
462
+ username: this.$login.f.name,
463
+ usertelephone: this.$login.f.f_user_telephone
464
+ }
465
+ await this.$resetpost('rs/logic/logOut', data, {resolveMsg: '退出成功', rejectMsg: null})
466
+ window.location.reload()
467
+ }
468
+ })
469
+ }
470
+ },
471
+ computed: {
472
+ nowDate() {
473
+ return this.$login.getNowDate()
474
+ }
475
+ }
476
+ }
477
+ </script>
478
+ <style lang="less">
479
+ .newTip-transition {
480
+ transition: all .4s ease;
481
+ }
482
+ .newTip-enter, .newTip-leave {
483
+ height: 0;
484
+ padding: 0 10px;
485
+ opacity: 0;
486
+ }
487
+ .newTip a {
488
+ color: #333;
489
+ }
490
+ .newTip {
491
+ cursor: pointer;
492
+ text-align: center;
493
+ position: absolute;
494
+ top: 3em;
495
+ margin: 0 auto;
496
+ width: 200px;
497
+ left: 48%;
498
+ line-height: 2;
499
+ z-index: 10010;
500
+ box-shadow: 0 4px 12px rgba(0,0,0,0.38);
501
+ pointer-events: all;
502
+ border-radius: 4px;
503
+ background-color: whitesmoke;
504
+ }
505
+ /* 组件内通用样式 */
506
+ .select-error {
507
+ button {
508
+ border-bottom: 1px solid #a94442 !important;
509
+ }
510
+ }
511
+
512
+ // input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{
513
+ // -webkit-appearance:textfield;
514
+ // }
515
+ /* 表单输入框组 */
516
+ .form-input-group {
517
+ display: flex;
518
+
519
+ label {
520
+ width: 100px;
521
+ text-align: right;
522
+
523
+ + * {
524
+ flex: 1;
525
+ }
526
+ }
527
+ }
528
+
529
+ // 日期组件在表单中沾满
530
+ .form-horizontal .datepicker {
531
+ width: 100%;
532
+ }
533
+
534
+ // 下拉选择框占据剩余全部空间
535
+ .select-overspread {
536
+ .form-group {
537
+ // margin: 0px 5px 10px 0px;
538
+ .form-control {
539
+ margin-right: 0px;
540
+ }
541
+ }
542
+
543
+ .btn-group, .btn-group-vertical {
544
+ width: 100%;
545
+ // padding-right: 5px;
546
+ button {
547
+ width: 100%;
548
+ display: flex;
549
+ justify-content: space-between;
550
+ align-items: center;
551
+ }
552
+ }
553
+
554
+ .dropdown-menu {
555
+ width: 100%
556
+ }
557
+ }
558
+
559
+ // 需要特定宽度的的样式
560
+ .width-60 {
561
+ width: 60px;
562
+ }
563
+
564
+ .userpanel {
565
+ font-weight: 300;
566
+ color: #333;
567
+ position: fixed;
568
+ right: 30px;
569
+ top: 45px;
570
+ background-color: white;
571
+ box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px;
572
+ padding: 4px 10px 4px 10px;
573
+ border-radius: 2px;
574
+ }
575
+
576
+ .width-80 {
577
+ width: 80px;
578
+ }
579
+
580
+ .width-100 {
581
+ width: 100px;
582
+ }
583
+
584
+
585
+ /*右侧区域的背景*/
586
+ .right-bg {
587
+ width: 100%;
588
+ flex: 1;
589
+ color: #304A66;
590
+ }
591
+
592
+ .tree-flex {
593
+ height: 100%;
594
+ // width: 150px;
595
+ /*width: 60px;*/
596
+ background: #4a7cae;
597
+ color: #fff;
598
+
599
+ }
600
+
601
+ .tree-flex-icon {
602
+ width: 50px;
603
+ /*transition: 0.5s;*/
604
+
605
+ > .span {
606
+ overflow-x: visible;
607
+ }
608
+ }
609
+
610
+ .tree-flex h3 {
611
+ text-align: center;
612
+ margin: 1em 0;
613
+ }
614
+
615
+ .tree-flex-footer {
616
+ height: 50px;
617
+ display: flex;
618
+ flex-direction: column;
619
+ color: #fff;
620
+ }
621
+
622
+ .tree-flex-footer a, .tree-flex-footer button {
623
+ flex: 1;
624
+ padding: 8px 5px;
625
+ font-size: 1.2em;
626
+ // border-top: 1px solid #697D93;
627
+ border-top: 1px solid #4a7cae;
628
+ text-decoration: none;
629
+ color: #fff;
630
+ cursor: pointer;
631
+ }
632
+
633
+ .tree-flex-footer button {
634
+ height: auto;
635
+ width: 100%;
636
+ border-radius: 0px;
637
+ background-color: rgba(255, 255, 255, 0);
638
+ border: none;
639
+ border-top: 1px solid #4a7cae;
640
+ // border-top: 1px solid #697D93;
641
+ text-align: left;
642
+ }
643
+
644
+ .tree-flex-footer button:hover {
645
+ outline: none;
646
+ background-color: rgba(255, 255, 255, 0.2);
647
+ }
648
+
649
+ .tree-flex-footer button:focus {
650
+ outline: none;
651
+ background-color: rgba(255, 255, 255, 0.5);
652
+ }
653
+
654
+ .tree-flex-footer a:hover {
655
+ color: #FFF;
656
+ background-color: rgba(255, 255, 255, 0.2);
657
+ }
658
+
659
+ .tree-flex .btn-group {
660
+ height: 50px !important;
661
+ }
662
+
663
+ .tree-flex .dropdown-menu {
664
+ /* 控制显示列表的样式 */
665
+ background: #4a7cae;
666
+ border-radius: 0px;
667
+ color: #fff;
668
+ width: auto;
669
+ margin: 0px;
670
+ padding: 0px;
671
+ }
672
+
673
+ .tree-flex .dropdown-menu-up {
674
+ /* bottom,top控制上下,left和right控制左右*/
675
+ left: 100% !important;
676
+ top: auto !important;
677
+ bottom: 0;
678
+ }
679
+
680
+ .tree-flex .dropdown-menu-down {
681
+ /* bottom,top控制上下,left和right控制左右*/
682
+ left: 100% !important;
683
+ top: 0 !important;
684
+ }
685
+
686
+ .tree-flex .dropdown-menu li {
687
+ text-align: center;
688
+ line-height: 50px;
689
+ border-bottom: 1px solid #697D93;
690
+ font-size: 1.2em;
691
+ width: auto;
692
+ white-space: nowrap;
693
+ cursor: default;
694
+
695
+ }
696
+
697
+ .tree-flex .dropdown-menu li + li {
698
+ text-align: left;
699
+ border: 0;
700
+ line-height: 40px;
701
+ padding-left: 15px;
702
+ padding-right: 15px;
703
+ font-size: 1em;
704
+ cursor: pointer;
705
+ }
706
+
707
+ .tree-flex .dropdown-menu li + li:hover {
708
+ background-color: rgba(255, 255, 255, 0.2);
709
+ }
710
+
711
+ .tree-flex .dropdown-menu li a {
712
+ border: none;
713
+ color: #fff;
714
+ height: 40px;
715
+ line-height: 40px;
716
+ font-size: 1em;
717
+ padding: 0px;
718
+ }
719
+
720
+ .tree-flex .dropdown-menu li a:hover {
721
+ color: #fff;
722
+ background-color: rgba(255, 255, 255, 0);
723
+ }
724
+
725
+ .tree-flex img {
726
+ height: 1.2em;
727
+ width: 1.2em;
728
+ margin-right: 15px;
729
+ margin-left: 5px;
730
+ }
731
+
732
+ .line {
733
+ height: 100%;
734
+ width: 5px;
735
+ background: #4C637B;
736
+ cursor: e-resize;
737
+ }
738
+
739
+ /*为树(tree)组件写的样式*/
740
+ .tree-img {
741
+ font-size: 1.2em;
742
+ }
743
+
744
+ /*将较长信息截断显示,鼠标悬停显示全部信息*/
745
+ .cutout50 {
746
+ max-width: 50px;
747
+ overflow: hidden;
748
+ text-overflow: ellipsis;
749
+ white-space: nowrap;
750
+ }
751
+
752
+ /* 滚动条样式 */
753
+ /*---滚动条默认显示样式--*/
754
+ ::-webkit-scrollbar-thumb {
755
+ // display: none;
756
+ background-color: rgba(0, 0, 0, 0.4);
757
+ /*background-color:red;*/
758
+ height: 50px;
759
+ outline-offset: -2px;
760
+ /*outline:2px solid #fff;*/
761
+ -webkit-border-radius: 4px;
762
+ /*border: 2px solid #fff;*/
763
+ }
764
+
765
+ /*---鼠标点击滚动条显示样式--*/
766
+ ::-webkit-scrollbar-thumb:hover {
767
+ // display: inherit;
768
+ background-color: rgba(0, 0, 0, 0.4);
769
+ height: 50px;
770
+ -webkit-border-radius: 4px;
771
+ }
772
+
773
+ /*---滚动条大小--*/
774
+ ::-webkit-scrollbar {
775
+ width: 8px;
776
+ height: 8px;
777
+ }
778
+
779
+ /*---滚动框背景样式--*/
780
+ ::-webkit-scrollbar-track-piece {
781
+ /* 全透明,不显示 */
782
+ background-color: rgba(255, 255, 255, 0);
783
+ -webkit-border-radius: 0;
784
+ }
785
+ </style>