hd-idevvue3 3.0.0 → 3.0.1

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 (226) hide show
  1. package/README.md +22 -191
  2. package/dist/index.html +17 -0
  3. package/package.json +13 -9
  4. package/pnpm-lock.yaml +5593 -0
  5. package/src/App.vue +15 -0
  6. package/src/assets/sound/notify.wav +0 -0
  7. package/src/demo/demo.vue +43 -0
  8. package/src/demo/dropdemo.vue +43 -0
  9. package/src/demo/extsets.vue +107 -0
  10. package/src/demo/formedit.vue +145 -0
  11. package/src/demo/hightquery.vue +169 -0
  12. package/src/demo/inlineedit.vue +88 -0
  13. package/src/demo/selfdrop.vue +41 -0
  14. package/src/demo//350/241/214/345/206/205/347/272/247/350/201/224.txt +2 -0
  15. package/src/directive/el-dragDialog/drag.js +124 -0
  16. package/src/directive/el-dragDialog/index.js +13 -0
  17. package/src/errorLog.js +14 -0
  18. package/src/hdcom/BigGrid.js +173 -0
  19. package/src/hdcom/BillShow.vue +90 -0
  20. package/src/hdcom/BillUpload.vue +253 -0
  21. package/src/hdcom/BtnRight.vue +98 -0
  22. package/src/hdcom/ErrHint.vue +30 -0
  23. package/src/hdcom/ExtendColumn.vue +108 -0
  24. package/src/hdcom/ExtendCommon.js +29 -0
  25. package/src/hdcom/ExtendForm.vue +114 -0
  26. package/src/hdcom/FacePicUpload.vue +71 -0
  27. package/src/hdcom/FaceRecTest.vue +104 -0
  28. package/src/hdcom/GridChart.vue +194 -0
  29. package/src/hdcom/GridExField.vue +281 -0
  30. package/src/hdcom/GridShow.vue +238 -0
  31. package/src/hdcom/HdAside.vue +178 -0
  32. package/src/hdcom/HdBtn.vue +113 -0
  33. package/src/hdcom/HdButton.vue +137 -0
  34. package/src/hdcom/HdComFaceRec.vue +58 -0
  35. package/src/hdcom/HdComGrid.vue +776 -0
  36. package/src/hdcom/HdComQuery.vue +273 -0
  37. package/src/hdcom/HdComQueryDetail.vue +161 -0
  38. package/src/hdcom/HdComSortDetail.vue +155 -0
  39. package/src/hdcom/HdDatePicker.vue +78 -0
  40. package/src/hdcom/HdDialog.vue +63 -0
  41. package/src/hdcom/HdDrop.vue +163 -0
  42. package/src/hdcom/HdFileUpload.vue +148 -0
  43. package/src/hdcom/HdFilterBox.vue +90 -0
  44. package/src/hdcom/HdFooter.vue +149 -0
  45. package/src/hdcom/HdForm.vue +278 -0
  46. package/src/hdcom/HdFormBtn.vue +89 -0
  47. package/src/hdcom/HdFormItem.vue +35 -0
  48. package/src/hdcom/HdGctosGrid +0 -0
  49. package/src/hdcom/HdGrid.vue +825 -0
  50. package/src/hdcom/HdGridEditBtn.vue +44 -0
  51. package/src/hdcom/HdGridExt.js +219 -0
  52. package/src/hdcom/HdGridSel.vue +223 -0
  53. package/src/hdcom/HdHeader.vue +148 -0
  54. package/src/hdcom/HdHotKey.vue +81 -0
  55. package/src/hdcom/HdInputHint.vue +49 -0
  56. package/src/hdcom/HdMain.vue +43 -0
  57. package/src/hdcom/HdMessage.vue +192 -0
  58. package/src/hdcom/HdNum.vue +69 -0
  59. package/src/hdcom/HdPopSel.vue +58 -0
  60. package/src/hdcom/HdRightMenu.vue +61 -0
  61. package/src/hdcom/HdSel/SelGridFieldcod.vue +36 -0
  62. package/src/hdcom/HdTableColumn.vue +334 -0
  63. package/src/hdcom/HdTempSave.vue +140 -0
  64. package/src/hdcom/HdTree.vue +86 -0
  65. package/src/hdcom/HdTreeTable/eval.js +32 -0
  66. package/src/hdcom/HdTreeTable/index.vue +174 -0
  67. package/src/hdcom/ImportExcel.vue +143 -0
  68. package/src/hdcom/PdfShow.vue +266 -0
  69. package/src/hdcom/index.js +80 -0
  70. package/src/idev.common.js +72 -0
  71. package/src/index.js +13 -0
  72. package/src/utils/HdQuery.js +54 -0
  73. package/src/utils/comutils.js +98 -0
  74. package/src/utils/utils.js +105 -0
  75. package/src/vendor/Blob.js +179 -0
  76. package/src/vendor/Export2Excel.js +220 -0
  77. package/src/vendor/Export2Zip.js +22 -0
  78. package/src/views/layout/AppMain.vue +32 -0
  79. package/src/views/layout/HdLayout.vue +78 -0
  80. package/src/views/layout/header/ElasticSearch.vue +225 -0
  81. package/src/views/layout/header/HZRecorder.js +231 -0
  82. package/src/views/layout/header/HeaderSearch.vue +198 -0
  83. package/src/views/layout/header/Levelbar.vue +49 -0
  84. package/src/views/layout/header/MainHeader.vue +271 -0
  85. package/src/views/layout/header/Navbar.vue +105 -0
  86. package/src/views/layout/header/ScrollPane.vue +81 -0
  87. package/src/views/layout/header/TagsView.vue +210 -0
  88. package/src/views/layout/header/VocRec.vue +97 -0
  89. package/src/views/layout/header/changepswform.vue +96 -0
  90. package/src/views/layout/index.js +12 -0
  91. package/src/views/layout/menu/Hamburger.vue +45 -0
  92. package/src/views/layout/menu/HdMenu.vue +167 -0
  93. package/src/views/layout/menu/css/menu.css +288 -0
  94. package/src/views/layout/menu/index.vue +25 -0
  95. package/src/views/privilege/commsg/commsg.vue +78 -0
  96. package/src/views/privilege/commsg/commsgOrgn.vue +42 -0
  97. package/src/views/privilege/commsg/commsgRole.vue +149 -0
  98. package/src/views/privilege/commsg/commsgform.vue +160 -0
  99. package/src/views/privilege/commsg/commsgiframe.vue +33 -0
  100. package/src/views/privilege/commsg/commsgto.vue +120 -0
  101. package/src/views/privilege/commsg/commsgtoform.vue +108 -0
  102. package/src/views/privilege/commsg/commsgtrans.vue +155 -0
  103. package/src/views/privilege/exfield/comexcolumn.vue +71 -0
  104. package/src/views/privilege/exfield/comexcolumnform.vue +101 -0
  105. package/src/views/privilege/exfield/comexfield.vue +31 -0
  106. package/src/views/privilege/exfield/comexfieldform.vue +94 -0
  107. package/src/views/privilege/exfield/comexfieldsub.vue +72 -0
  108. package/src/views/privilege/index.js +42 -0
  109. package/src/views/privilege/menu/comMenu.vue +41 -0
  110. package/src/views/privilege/menu/menu.vue +133 -0
  111. package/src/views/privilege/menu/menuinfo.vue +56 -0
  112. package/src/views/privilege/menu/rolelist.vue +47 -0
  113. package/src/views/privilege/menu/userlist.vue +49 -0
  114. package/src/views/privilege/mobile/authmobileupdate.vue +69 -0
  115. package/src/views/privilege/mobile/authmobileupdateform.vue +90 -0
  116. package/src/views/privilege/orgDept/authOrgn.vue +96 -0
  117. package/src/views/privilege/orgDept/authorgnform.vue +145 -0
  118. package/src/views/privilege/orgDept/orgDept.vue +37 -0
  119. package/src/views/privilege/orgDept/orgTree.vue +88 -0
  120. package/src/views/privilege/orgDept/orgnselect.vue +134 -0
  121. package/src/views/privilege/personDept/authuser.vue +123 -0
  122. package/src/views/privilege/personDept/authuserform.vue +154 -0
  123. package/src/views/privilege/personDept/facerec.vue +117 -0
  124. package/src/views/privilege/personDept/orgncascader.vue +125 -0
  125. package/src/views/privilege/personDept/personDept.vue +31 -0
  126. package/src/views/privilege/quartz/comquartzjob.vue +65 -0
  127. package/src/views/privilege/quartz/comquartzjobform.vue +99 -0
  128. package/src/views/privilege/quartz/comquartzlog.vue +59 -0
  129. package/src/views/privilege/role/btnRole.vue +117 -0
  130. package/src/views/privilege/role/menuRole.vue +64 -0
  131. package/src/views/privilege/role/orgnRole.vue +56 -0
  132. package/src/views/privilege/role/role.vue +67 -0
  133. package/src/views/privilege/role/rolelist.vue +67 -0
  134. package/src/views/privilege/role/roleselect.vue +57 -0
  135. package/src/views/privilege/search/comsearch.vue +105 -0
  136. package/src/views/privilege/search/menu.vue +52 -0
  137. package/src/views/privilege/syscode/syscode.vue +103 -0
  138. package/src/views/privilege/syscode/sysfield.vue +66 -0
  139. package/src/views/privilege/syscode/sysfieldframe.vue +30 -0
  140. package/src/views/privilege/syslog/menulog.vue +52 -0
  141. package/src/views/privilege/syslog/syslog.vue +115 -0
  142. package/src/views/privilege/syslog/syslogconfig.vue +61 -0
  143. package/src/views/privilege/syslog/syslogform.vue +83 -0
  144. package/src/views/privilege/syslog/syslogframe.vue +26 -0
  145. package/src/views/privilege/userRole/userRole.vue +122 -0
  146. package/src/views/privilege.zip +0 -0
  147. package/vite.config.js +118 -0
  148. package/.babelrc +0 -17
  149. package/.editorconfig +0 -14
  150. package/.eslintignore +0 -3
  151. package/.npminstall.done +0 -1
  152. package/.postcssrc.js +0 -8
  153. package/LICENSE +0 -21
  154. package/Listening +0 -28
  155. package/build/build.js +0 -70
  156. package/build/check-versions.js +0 -45
  157. package/build/config.js +0 -81
  158. package/build/dev-client.js +0 -9
  159. package/build/dev-server.js +0 -93
  160. package/build/utils.js +0 -78
  161. package/build/vue-loader.conf.js +0 -12
  162. package/build/webpack.common.js +0 -37
  163. package/build/webpack.component.js +0 -36
  164. package/build/webpack.prod.conf.js +0 -38
  165. package/components.json +0 -8
  166. package/conf.js +0 -42
  167. package/config/dev.env.js +0 -6
  168. package/config/index.js +0 -43
  169. package/config/prod.env.js +0 -6
  170. package/config/sit.env.js +0 -6
  171. package/favicon.ico +0 -0
  172. package/jsdoc-vue.js +0 -12
  173. package/lib/0.index.js +0 -12573
  174. package/lib/1.index.js +0 -6
  175. package/lib/2.index.js +0 -2
  176. package/lib/idev.common.js +0 -1
  177. package/lib/idv8.common.js +0 -1
  178. package/lib/index.js +0 -49170
  179. package/lib/js/ErrHint.js +0 -1
  180. package/lib/js/HdAside.js +0 -1
  181. package/lib/js/HdBtn.js +0 -1
  182. package/lib/js/HdButton.js +0 -1
  183. package/lib/js/HdComFaceRec.js +0 -1
  184. package/lib/js/HdComGrid.js +0 -1
  185. package/lib/js/HdDatePicker.js +0 -1
  186. package/lib/js/HdDialog.js +0 -1
  187. package/lib/js/HdDrop.js +0 -1
  188. package/lib/js/HdFileUpload.js +0 -1
  189. package/lib/js/HdFooter.js +0 -1
  190. package/lib/js/HdForm.js +0 -1
  191. package/lib/js/HdFormBtn.js +0 -1
  192. package/lib/js/HdFormItem.js +0 -1
  193. package/lib/js/HdGrid.js +0 -1
  194. package/lib/js/HdGridEditBtn.js +0 -1
  195. package/lib/js/HdGridSel.js +0 -1
  196. package/lib/js/HdHeader.js +0 -1
  197. package/lib/js/HdHotkey.js +0 -1
  198. package/lib/js/HdLayout.js +0 -1
  199. package/lib/js/HdMain.js +0 -1
  200. package/lib/js/HdMessage.js +0 -1
  201. package/lib/js/HdNum.js +0 -1
  202. package/lib/js/HdPopSel.js +0 -1
  203. package/lib/js/HdSearch.js +0 -1
  204. package/lib/js/HdTableColumn.js +0 -1
  205. package/lib/js/HdTempSave.js +0 -1
  206. package/lib/js/HdTree.js +0 -1
  207. package/lib/js/HdTreeTable.js +0 -1
  208. package/lib/js/authmobileupdate.js +0 -1
  209. package/lib/js/comexfield.js +0 -1
  210. package/lib/js/commsg.js +0 -1
  211. package/lib/js/commsgto.js +0 -1
  212. package/lib/js/comquartzjob.js +0 -1
  213. package/lib/js/comquartzlog.js +0 -1
  214. package/lib/js/comsearch.js +0 -1
  215. package/lib/js/menu.js +0 -1
  216. package/lib/js/menuinfo.js +0 -1
  217. package/lib/js/orgDept.js +0 -1
  218. package/lib/js/orgTree.js +0 -1
  219. package/lib/js/personDept.js +0 -1
  220. package/lib/js/role.js +0 -1
  221. package/lib/js/sysfieldframe.js +0 -1
  222. package/lib/js/syslog.js +0 -1
  223. package/lib/js/syslogframe.js +0 -1
  224. package/lib/js/userRole.js +0 -1
  225. package/npminstall-debug.log +0 -200
  226. package/ytgvue.rar +0 -0
@@ -0,0 +1,97 @@
1
+ <script>
2
+ import './HZRecorder.js'
3
+
4
+ export default {
5
+ name: 'VocRec',
6
+ components: {},
7
+ mounted() {
8
+ this.vocRec()
9
+ },
10
+ data() {
11
+ return {
12
+ vocTimeHandle: null,
13
+ vocTime: 0,//录制的毫秒数,低于1秒的丢弃
14
+ recorder: null,
15
+ hotKeyDown: false,
16
+ isRecording: false//是否正在录音由于录音设备异步问题,需要标志位控制
17
+ //log: errLogStore.state.errLog
18
+ }
19
+ },
20
+ methods: {
21
+ vocHotKey() {
22
+ if (!this.hotKeyDown) {
23
+ this.hotKeyDown = true
24
+ this.startRecording()
25
+ } else {
26
+ this.hotKeyDown = false
27
+ this.endRecording();
28
+ }
29
+ },
30
+ vocRec() {
31
+ $(".mainHeader .mike").mousedown(() => {
32
+ console.info('startClick')
33
+ this.startRecording()
34
+ });
35
+
36
+ $(".mainHeader .mike").mouseup(() => {
37
+ this.endRecording();
38
+ });
39
+ },
40
+ startRecording() {
41
+ this.isRecording = true
42
+ HZRecorder.get((rec) => {
43
+ this.recorder = rec;
44
+ if (this.isRecording) {//还未启动就释放的
45
+ this.recorder.start();
46
+ } else {
47
+ this.recorder.stop();
48
+ }
49
+ })
50
+ this.vocTime = new Date().getTime()
51
+ this.$message({
52
+ message: this.$t('正在录音...'),
53
+ type: 'warn',
54
+ duration: 999999,
55
+ showClose: true
56
+ })
57
+ },
58
+ endRecording() {
59
+ this.stopRecording()
60
+ this.$message.closeAll()
61
+ let nowTime = new Date().getTime()
62
+ if (nowTime - this.vocTime < 1000) {//低于一秒的录制不处理
63
+ return false
64
+ }
65
+ this.uploadAudio()
66
+ },
67
+ uploadAudio() {//doClose是否关闭录音,repeate是否同时上传
68
+ this.recorder.upload("/webresources/login/com/comwav/vocRec", (state, e) => {
69
+ switch (state) {
70
+ case 'uploading':
71
+ //var percentComplete = Math.round(e.loaded * 100 / e.total) + '%';
72
+ break;
73
+ case 'ok':
74
+ var genJson = eval('(' + e.target.responseText + ')');
75
+ if (genJson.message) {
76
+ if (genJson.code == '1') {//根据id打开菜单
77
+ this.$router.push({name: genJson.message})
78
+ } else {
79
+ this.$store.state.app.vocRec = genJson.message//识别为拼音名
80
+ console.info(genJson.message)
81
+ }
82
+ }
83
+ break;
84
+ case 'error':
85
+ break;
86
+ case 'cancel':
87
+ break;
88
+ }
89
+ });
90
+ },
91
+ stopRecording() {//停止录音
92
+ this.isRecording = false
93
+ this.recorder.stop();
94
+ }
95
+ }
96
+ }
97
+ </script>
@@ -0,0 +1,96 @@
1
+ <template>
2
+
3
+ <el-dialog title="修改密码" :visible.sync="visiable">
4
+ <el-form label-width="100px" :model="hdform" ref="hdform" :rules="checkRules">
5
+ <el-row>
6
+ <el-col :span="24">
7
+ <el-form-item label="旧密码" prop="oldPassword">
8
+ <el-input type="text" v-model="hdform.oldPassword" placeholder="请输入旧密码">
9
+ </el-input>
10
+ </el-form-item>
11
+ </el-col>
12
+ <el-col :span="24">
13
+ <el-form-item label="新密码" prop="newPassword">
14
+ <el-input type="password" v-model="hdform.newPassword" placeholder="请输入密码" autocomplete="new-password">
15
+ </el-input>
16
+ </el-form-item>
17
+ </el-col>
18
+ <el-col :span="24">
19
+ <el-form-item label="重复确认" prop="passwordTemp">
20
+ <el-input type="password" v-model="hdform.passwordTemp" placeholder="请重复输入密码" autocomplete="new-password">
21
+ </el-input>
22
+ </el-form-item>
23
+ </el-col>
24
+ </el-row>
25
+ </el-form>
26
+ <div slot="footer" class="dialog-footer">
27
+ <el-button @click="visiable = false">{{$t('取 消')}}</el-button>
28
+ <el-button type="primary" @click="doRegist" :loading="loading"> {{$t('确 定')}}</el-button>
29
+ </div>
30
+ </el-dialog>
31
+
32
+ </template>
33
+
34
+ <script>
35
+ export default {
36
+ name: 'registform',
37
+ data() {
38
+ const validatePassword = (rule, value, callback) => {
39
+ if (!value || value.length < 2) {
40
+ callback(new Error(this.$t('密码不能小于2位')))
41
+ } else {
42
+ callback()
43
+ }
44
+ }
45
+ const validatePasswordSame = (rule, value, callback) => {
46
+ if (this.hdform.newPassword !== this.hdform.passwordTemp) {
47
+ callback(new Error(this.$t('两次输入密码不一致')))
48
+ } else {
49
+ callback()
50
+ }
51
+ }
52
+ return {
53
+ hdform: {},
54
+ visiable: false,
55
+ tsLoading: false,
56
+ loading: false,
57
+ checkRules: {
58
+ oldPassword: [{ required: true, trigger: 'change', validator: validatePassword }],
59
+ newPassword: [{ required: true, trigger: 'change', validator: validatePassword }],
60
+ passwordTemp: [{ required: true, trigger: 'change', validator: validatePasswordSame }]
61
+ }
62
+ }
63
+ },
64
+ methods:
65
+ {
66
+ show() {
67
+ this.visiable = true
68
+ },
69
+ doRegist() {
70
+ this.$refs['hdform'].validate((valid) => {
71
+ if (!valid) {
72
+ return false
73
+ }
74
+ if (this.hdform.passwordTemp !== this.hdform.newPassword) {
75
+ this.$alert(this.$t('两次密码输入不一致'), this.$t('错误'))
76
+ return false
77
+ }
78
+ this.loading = true
79
+ this.$http.post('/webresources/login/privilege/AuthUser/modifyPasswordVue?oldPassword=' + this.hdform.oldPassword + '&newPassword=' + this.hdform.newPassword).then(response => {
80
+ this.loading = false
81
+ const data = response.data
82
+ this.$message({
83
+ type: data.code === '-1' ? 'error' : 'success',
84
+ message: data.message
85
+ })
86
+ if (data.code === '-1') {
87
+ return
88
+ }
89
+ this.visiable = false
90
+ })
91
+ })
92
+ }
93
+ }
94
+ }
95
+ </script>
96
+
@@ -0,0 +1,12 @@
1
+ import HdLayout from './HdLayout'
2
+ import HdSearch from './header/HeaderSearch'
3
+
4
+
5
+ export default {
6
+ install(Vue) {//布局,包括菜单,多任务tag,用户设置等
7
+ Vue.component('HdLayout', HdLayout)
8
+ Vue.component('HdSearch', HdSearch)
9
+ }
10
+ }
11
+
12
+
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <span>
3
+ <svg t="1492500959545" @click="toggleClick" class="wscn-icon hamburger" :class="{'is-active':isActive}" style="" viewBox="0 0 1024 1024"
4
+ version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1691" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64">
5
+ <path d="M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z"
6
+ p-id="1692"></path>
7
+ <path d="M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z"
8
+ p-id="1693"></path>
9
+ <path d="M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z"
10
+ p-id="1694"></path>
11
+ </svg>
12
+ </span>
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ name: 'hamburger',
18
+ props: {
19
+ isActive: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ toggleClick: {
24
+ type: Function,
25
+ default: null
26
+ }
27
+ }
28
+ }
29
+ </script>
30
+
31
+ <style scoped>
32
+ .hamburger {
33
+ display: inline-block;
34
+ cursor: pointer;
35
+ width: 20px;
36
+ height: 20px;
37
+ transform: rotate(90deg);
38
+ transition: .38s;
39
+ transform-origin: 30% 50%;
40
+ }
41
+
42
+ .hamburger.is-active {
43
+ transform: rotate(0deg);
44
+ }
45
+ </style>
@@ -0,0 +1,167 @@
1
+ <template>
2
+ <div>
3
+ <div class="menuSvg" ref="menuSvg">
4
+ <hamburger :isActive="sidebar.opened" :toggleClick="toggleSideBar" class="hamburger-container"></hamburger>
5
+ </div>
6
+ <div class="product_sort">
7
+ <el-scrollbar ref="scrollbar" style="height: 100%;">
8
+ <div class="bd">
9
+ <div @mouseleave="mouseLeave($event)"
10
+ @mouseover="mouseOver($event)" class="item" v-for="item,index in routes">
11
+ <div class="title" v-show="$store.state.app.sidebar.opened">
12
+ <a href="javascript:void(0)">
13
+ <i :class="item.meta.icon" style="display:inline" v-if="item.meta&&item.meta.icon"></i>
14
+ <span v-if="item.meta&&item.meta.title">{{generateTitle(item.meta)}}</span>
15
+ <!--<span>{{item.meta.title}}</span>-->
16
+ </a>
17
+ </div>
18
+ <div class="arrow" v-if="$store.state.app.sidebar.opened">&gt;</div>
19
+ <div class="arrow" v-else><i :class="item.meta.icon" style="color:#494949"
20
+ v-if="item.meta&&item.meta.icon"></i></div>
21
+ <div class="line"></div>
22
+ <div class="subitem">
23
+
24
+ <template v-if="item.children&&item.children.length>0">
25
+ <div class="inner" v-for="itemTwo,indexTwo in item.children">
26
+ <div class="tit tit1">
27
+ <div class="name" v-if="itemTwo.meta&&itemTwo.meta.title">
28
+ <i :class="itemTwo.meta.icon" style="display:inline" v-if="itemTwo.meta.icon"></i>
29
+ {{generateTitle(itemTwo.meta)}}
30
+ </div>
31
+ <ul>
32
+ <li @click="clickOne(itemThree)" v-for="itemThree,indexThree in itemTwo.children">
33
+ <a href="javascript:void(0)"
34
+ v-if="itemThree.meta&&itemThree.meta.title">
35
+ <i :class="itemThree.meta.icon" style="display:inline" v-if="itemThree.meta.icon"></i>
36
+ {{generateTitle(itemThree.meta)}}
37
+ </a>
38
+ </li>
39
+ </ul>
40
+ </div>
41
+ </div>
42
+ </template>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </el-scrollbar>
47
+ </div>
48
+ </div>
49
+ </template>
50
+ <script>
51
+ import {mapGetters} from 'vuex'
52
+ import Hamburger from './Hamburger'
53
+
54
+ export default {
55
+ name: 'SidebarItem',
56
+ components: {
57
+ Hamburger,
58
+ },
59
+ props: {
60
+ routes: {
61
+ type: Array
62
+ }
63
+ },
64
+ data() {
65
+ return {
66
+ menuVisitUrl: "",
67
+ menuSelUrl: "",
68
+ isShow: false
69
+ }
70
+ },
71
+ mounted() {
72
+
73
+ },
74
+ methods: {
75
+ generateTitle(meta) {
76
+
77
+ if (this.$i18n.locale == 'zh') {
78
+ return meta.title//i18n wxl
79
+ } else {
80
+ return meta.enTitle//
81
+ }
82
+ //return this.$t('route.' + title)
83
+ },
84
+ mouseOver(e) {
85
+ if (this.isShow == true) {
86
+ return
87
+ }
88
+ let outerheight = document.getElementsByClassName('hd-header')[0].clientHeight
89
+ let subcls = e.currentTarget.getElementsByClassName('subitem')[0]
90
+ e.currentTarget.classList.add('layer')
91
+ subcls.style.left = e.currentTarget.offsetWidth - 10 + "px";
92
+ subcls.style.position = 'fixed'
93
+ subcls.style.overflow = 'auto'
94
+ //距离页面顶的距离
95
+ let itemTop = e.currentTarget.offsetTop - this.$refs.scrollbar.wrap.scrollTop + outerheight + this.$refs.menuSvg.clientHeight
96
+ let menuHeight = subcls.clientHeight;
97
+ let windowHeigth = document.body.clientHeight;
98
+ if ((itemTop + menuHeight) > windowHeigth) {
99
+ if (itemTop + +e.currentTarget.clientHeight - menuHeight < 0) {
100
+ subcls.style.top = '0px'
101
+ subcls.style.bottom = '0px'
102
+ } else {
103
+ subcls.style.top = itemTop + e.currentTarget.clientHeight - menuHeight + "px";
104
+ // subcls.style.bottom = '0px'
105
+ }
106
+ } else {
107
+ subcls.style.top = itemTop + "px";
108
+ // subcls.style.bottom = '0px'
109
+ }
110
+ this.isShow = true
111
+ },
112
+ mouseLeave(e) {
113
+ this.isShow = false
114
+ e.currentTarget.classList.remove('layer')
115
+ },
116
+ clickOne(item) {
117
+
118
+ if (!item.path && !item.redirect) {
119
+ return false
120
+ }
121
+ let obj = {path: item.path ? item.path : item.url, menuId: item.menuId, title: item.meta.title}
122
+ //记录菜单点击
123
+ this.$http.post('/webresources/login/com/ComMenuHistory/menuClick', obj).then(response => {
124
+ this.menuSelUrl = this.menuVisitUrl;
125
+ });
126
+ if (item.meta.type === "2") {
127
+ if (item.redirect) {
128
+ window.open(item.redirect, '_blank');
129
+ } else {
130
+ let routeData = this.$router.resolve({
131
+ name: item.name,
132
+ params: item.meta.addQuery
133
+ });
134
+ window.open(routeData.href, '_blank');
135
+ }
136
+ } else {
137
+ this.$router.push({
138
+ name: item.name,
139
+ params: item.meta.addQuery
140
+ });
141
+ }
142
+ },
143
+ toggleSideBar() {
144
+ this.$store.dispatch('toggleSideBar')
145
+ },
146
+ },
147
+ computed: {
148
+ ...mapGetters([
149
+ 'sidebar',
150
+ ])
151
+ },
152
+ }
153
+
154
+ </script>
155
+ <style lang="scss" scoped>
156
+ @import 'css/menu.css'; // normalize.css 样式格式化
157
+ .product_sort {
158
+ /deep/ .el-scrollbar__wrap {
159
+ overflow-x: hidden;
160
+ }
161
+
162
+ /deep/ .is-horizontal {
163
+ height: 0;
164
+ }
165
+ }
166
+ </style>
167
+
@@ -0,0 +1,288 @@
1
+ @charset "utf-8";
2
+ /* CSS Document */
3
+
4
+ ul, ol {
5
+ list-style: none;
6
+ }
7
+
8
+ /*清除浮动*/
9
+ .clearfix:after {
10
+ clear: both;
11
+ content: ".";
12
+ display: block;
13
+ height: 0;
14
+ visibility: hidden;
15
+ }
16
+
17
+ .clearfix {
18
+ display: inline-table;
19
+ }
20
+
21
+ * html .clearfix {
22
+ height: 1%;
23
+ }
24
+
25
+ .clearfix {
26
+ display: block;
27
+ }
28
+
29
+ .ma {
30
+ margin-left: auto;
31
+ margin-right: auto;
32
+ }
33
+
34
+ .w980 {
35
+ width: 980px;
36
+ }
37
+
38
+ .mt10 {
39
+ margin-top: 10px;
40
+ }
41
+
42
+ .product_sortBg {
43
+ background-color: #ededed;
44
+ }
45
+
46
+ /*.fa{ margin-right:5px;}*/
47
+
48
+ /*缩进按钮*/
49
+ .menuSvg {
50
+ height: 30px;
51
+ background-color: #ededed;
52
+ border-bottom: solid 1px #bbb;
53
+ text-align: center;
54
+ color: #f0f0f0;
55
+ padding-top: 5px;
56
+ }
57
+
58
+ .hamburger[data-v-4e6f274c] {
59
+ width: 16px !important;
60
+ height: 16px !important;
61
+ fill: #bbbbbb;
62
+ }
63
+
64
+ .scroll-container .scroll-wrapper { /*background-color:#666666;*/
65
+ }
66
+
67
+ /*菜单的高度 height:calc(100vh + 70px) 70 对应ScrllBar\index.vue 32 行的判断尺寸*/
68
+ .product_sort { /*border-bottom:solid 1px #3299fd;border-right:solid 1px #3299fd;*/
69
+ height: calc(100vh - 80px);
70
+ position: relative;
71
+ z-index: 999;
72
+ }
73
+
74
+ .product_sort .hd {
75
+ line-height: 40px;
76
+ text-indent: 20px;
77
+ font-size: 15px;
78
+ font-weight: bold;
79
+ color: #fff;
80
+ }
81
+
82
+ .product_sort .bd {
83
+ padding-bottom: 10px;
84
+ }
85
+
86
+ .product_sort .bd .item {
87
+ border-bottom: solid 1px #bbb;
88
+ height: 50px;
89
+ position: relative;
90
+ }
91
+
92
+ .product_sort .bd .item .title {
93
+ text-indent: 13px;
94
+ height: 50px;
95
+ overflow: hidden;
96
+ line-height: 50px;
97
+ font-size: 15px;
98
+ font-weight: bold;;
99
+ }
100
+
101
+ .product_sort .bd .item .title a {
102
+ position: relative;
103
+ }
104
+
105
+ .product_sort .bd .item .title .fa {
106
+ font-size: 16px;
107
+ margin-right: 5px;
108
+ width: 20px !important;
109
+ height: 20px !important;
110
+ display: block !important;
111
+ float: left;
112
+ margin-top: 15px;
113
+ }
114
+
115
+ /*选择和不被选择时的背景色*/
116
+ .product_sortSelected {
117
+ background-color: #409EFF;
118
+ }
119
+
120
+ .product_sortUnselected {
121
+ background-color: #666666;
122
+ }
123
+
124
+ /*二级弹出菜单结束*/
125
+ .product_sortTwo {
126
+ width: 820px;
127
+ min-height: 30px;
128
+ max-height: 400px;
129
+ overflow-y: auto;
130
+ position: absolute;
131
+ left: 142px;
132
+ padding-top: 10px;
133
+ padding-bottom: 5px;
134
+ border: 1px solid #b6b6b6;
135
+ color: #494949;
136
+ background: #FFF;
137
+ }
138
+
139
+ .product_sortTwoDiv {
140
+ width: 770px;
141
+ float: left;
142
+ margin-left: 25px;
143
+ margin-bottom: 5px;
144
+ padding-bottom: 0px;
145
+ }
146
+
147
+ .product_sortTwoBottomLine {
148
+ border: 0px;
149
+ padding-bottom: 0px;
150
+ }
151
+
152
+ .product_sortSpan {
153
+ color: #0555a6;
154
+ font-weight: bold;
155
+ display: block;
156
+ float: left;
157
+ width: 100%;
158
+ height: 30px;
159
+ line-height: 30px;
160
+ margin-right: 10px;
161
+ border-bottom: 1px solid #ccc;
162
+ }
163
+
164
+ .product_sortSpan a {
165
+ display: inline-block;
166
+ }
167
+
168
+ .product_sortTwoMenu {
169
+ width: 100%;
170
+ float: left;
171
+ margin-top: 5px;
172
+ }
173
+
174
+ .product_sortTwoMenu > a {
175
+ min-width: 50px;
176
+ width: auto !important;
177
+ height: 30px;
178
+ line-height: 30px;
179
+ float: left;
180
+ color: #646464;
181
+ display: block;
182
+ margin-right: 10px;
183
+ }
184
+
185
+ .product_sortTwoMenu a:hover {
186
+ color: #888;
187
+ }
188
+
189
+ .product_sortTwo678 {
190
+ width: 850px;
191
+ min-height: 30px;
192
+ height: auto !important;
193
+ position: absolute;
194
+ left: 142px;
195
+ padding-top: 10px;
196
+ padding-bottom: 10px;
197
+ border: 1px solid #b6b6b6;
198
+ color: #494949;
199
+ background: #FFF;
200
+ bottom: 0px;
201
+ }
202
+
203
+ .product_sortTwo9 {
204
+ width: 850px;
205
+ min-height: 30px;
206
+ height: auto !important;
207
+ position: absolute;
208
+ left: 142px;
209
+ padding-top: 10px;
210
+ padding-bottom: 10px;
211
+ border: 1px solid #b6b6b6;
212
+ color: #494949;
213
+ background: #FFF;
214
+ bottom: 0px;
215
+ }
216
+
217
+ /*二级弹出菜单结束*/
218
+
219
+ .product_sort .bd .item .list {
220
+ padding-left: 5px;
221
+ height: 30px;
222
+ line-height: 30px;
223
+ overflow: hidden;
224
+ }
225
+
226
+ .product_sort .bd .item .list a {
227
+ color: #333;
228
+ }
229
+
230
+ .product_sort .bd .item .list a:hover {
231
+ text-decoration: underline;
232
+ }
233
+
234
+ .product_sort .bd .item .arrow {
235
+ font-size: 12px;
236
+ color: #333;
237
+ position: absolute;
238
+ right: 10px;
239
+ top: 18px;
240
+ }
241
+
242
+ .product_sort .bd .menuvisit .arrow {
243
+ font-size: 12px;
244
+ color: white;
245
+ position: absolute;
246
+ right: 10px;
247
+ top: 18px;
248
+ }
249
+
250
+ .product_sort .bd .item .line {
251
+ position: absolute;
252
+ right: -2px;
253
+ top: 0px;
254
+ width: 2px;
255
+ height: 55px;
256
+ background-color: #fff;
257
+ z-index: 999;
258
+ display: none;
259
+ }
260
+
261
+ .product_sort .bd .item .subitem {
262
+ display: none;
263
+ }
264
+
265
+ .product_sort .bd .layer .line {
266
+ display: block;
267
+ }
268
+
269
+ .product_sort .bd .layer .arrow {
270
+ display: block;
271
+ }
272
+
273
+ .product_sort .bd .layer .subitem {
274
+ width: 731px;
275
+ background: #fff;
276
+ border: solid 1px #dbd4d5;
277
+ border-left: none;
278
+ position: absolute;
279
+ top: -1px;
280
+ z-index: 999;
281
+ min-height: 55px;
282
+ height: auto !important;
283
+ height: 55px;
284
+ padding: 10px 20px;
285
+ display: block;
286
+ }
287
+
288
+