@gonsin/gview 1.0.1 → 1.0.2

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 (73) hide show
  1. package/README.md +66 -13
  2. package/dist/fonts/element-icons.313f7dac.woff +0 -0
  3. package/dist/fonts/element-icons.45201881.ttf +0 -0
  4. package/dist/index.js +335 -0
  5. package/package.json +6 -2
  6. package/.browserslistrc +0 -2
  7. package/babel.config.js +0 -5
  8. package/gonsin-gview-1.0.1.tgz +0 -0
  9. package/postcss.config.js +0 -5
  10. package/public/css/theme/animate.min.css +0 -7
  11. package/public/css/theme/brownishTheme.css +0 -10
  12. package/public/css/theme/coffeeTheme.css +0 -10
  13. package/public/css/theme/cyanTheme.css +0 -10
  14. package/public/css/theme/defaultTheme.css +0 -10
  15. package/public/css/theme/greenTheme.css +0 -16
  16. package/public/css/theme/greyTheme.css +0 -10
  17. package/public/css/theme/orangeTheme.css +0 -10
  18. package/public/css/theme/purpleTheme.css +0 -10
  19. package/public/css/theme/skyblueTheme.css +0 -10
  20. package/public/favicon.ico +0 -0
  21. package/public/imgs/antOutline-border.png +0 -0
  22. package/public/imgs/bg.png +0 -0
  23. package/public/imgs/logo.png +0 -0
  24. package/public/imgs/menu.png +0 -0
  25. package/public/index.html +0 -17
  26. package/src/App.vue +0 -143
  27. package/src/api/api.js +0 -28
  28. package/src/api/index.js +0 -31
  29. package/src/api/request.js +0 -210
  30. package/src/assets/font/font.scss +0 -12
  31. package/src/assets/font/font_dev.scss +0 -12
  32. package/src/assets/font/icon.scss +0 -179
  33. package/src/assets/images/svg/color.svg +0 -1
  34. package/src/assets/logo.png +0 -0
  35. package/src/assets/scss/common.scss +0 -338
  36. package/src/assets/scss/themeColor.scss +0 -35
  37. package/src/components/MyDialog.vue +0 -251
  38. package/src/components/MyForm.vue +0 -324
  39. package/src/components/MyFormAutocomplete.vue +0 -135
  40. package/src/components/MyFormCascader.vue +0 -107
  41. package/src/components/MyFormCheckBox.vue +0 -67
  42. package/src/components/MyFormEditor.vue +0 -85
  43. package/src/components/MyFormInput.vue +0 -68
  44. package/src/components/MyFormLine.vue +0 -49
  45. package/src/components/MyFormRadio.vue +0 -92
  46. package/src/components/MyFormSelect.vue +0 -122
  47. package/src/components/MyFormSelectDate.vue +0 -72
  48. package/src/components/MyFormSelectDateTime.vue +0 -82
  49. package/src/components/MyFormSelectTime.vue +0 -84
  50. package/src/components/MyFormSwitch.vue +0 -60
  51. package/src/components/MyFormTag.vue +0 -67
  52. package/src/components/MyFormTree.vue +0 -137
  53. package/src/components/MyFormUploads.vue +0 -91
  54. package/src/components/MyHeader.vue +0 -176
  55. package/src/components/MyMenus.vue +0 -150
  56. package/src/components/MyPageHeader.vue +0 -344
  57. package/src/components/MyTab.vue +0 -69
  58. package/src/components/MyTable.vue +0 -244
  59. package/src/components/Templatess.vue +0 -630
  60. package/src/index.js +0 -23
  61. package/src/main.js +0 -86
  62. package/src/router.js +0 -52
  63. package/src/store/index.js +0 -71
  64. package/src/utils/common.js +0 -96
  65. package/src/utils/permission.js +0 -36
  66. package/src/views/GView.vue +0 -185
  67. package/src/views/Home.vue +0 -26
  68. package/src/views/Login.vue +0 -249
  69. package/src/websocket/test.js +0 -140
  70. package/src/websocket/websocket.js +0 -141
  71. package/src/websocket/websocket1.js +0 -117
  72. package/src/websocket/websocket2.js +0 -128
  73. package/vue.config.js +0 -42
@@ -1,344 +0,0 @@
1
- <!--
2
- * @Author: your name
3
- * @Date: 2022-04-22 15:51:20
4
- * @LastEditTime: 2022-11-22 16:56:33
5
- * @LastEditors: lrm lrm@gonsin.cn
6
- * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
7
- * @FilePath: \client\src\components\MyPageHeader.vue
8
- -->
9
-
10
- <template>
11
- <header class="wrapper_header header">
12
- <div class="logo-title">
13
- <!-- <span>{{ roomsName }}</span> -->
14
- GView
15
- </div>
16
- <div id="icon" @click="collapseHandler">
17
- <img
18
- src="../.././public/imgs/menu.png"
19
- alt
20
- :class="Collapse ? 'img_rotate' : 'img_no_rotate'"
21
- />
22
- </div>
23
- <div class="right">
24
- <!-- <el-dropdown trigger="click">
25
- <img
26
- src="../assets/images/svg/color.svg"
27
- width="20"
28
- height="20"
29
- alt=""
30
- style="margin-right: 15px"
31
- />
32
- <el-dropdown-menu slot="dropdown">
33
- <el-dropdown-item
34
- v-for="(item, index) in themeList"
35
- :key="index"
36
- @click.native="handlePicker(item)"
37
- >{{ item.name }}</el-dropdown-item
38
- >
39
- </el-dropdown-menu>
40
- </el-dropdown> -->
41
- <!-- <el-badge class="item">
42
- <i
43
- class="el-icon-message"
44
- @click="$router.push({ path: '/showEmail' })"
45
- ></i>
46
- </el-badge> -->
47
- <i id="user_icon" class="el-icon-user" @click="handelUser"></i>
48
- <!-- vue过渡动画 -->
49
- <transition name="slide-fade">
50
- <ul class="user_ul" v-show="isShow === true">
51
- <!-- <li @click="handleUserInfo">
52
- <i class="el-icon-user"></i>
53
- <span>用户信息</span>
54
- </li> -->
55
- <!-- <li @click="handleShare">
56
- <i class="el-icon-share"></i>
57
- <span>分享链接</span>
58
- </li> -->
59
- <!-- <li
60
- @click="handleCopySystem"
61
- v-if="user.admin"
62
- v-loading.fullscreen.lock="fullscreenLoading"
63
- >
64
- <i class="el-icon-user"></i>
65
- <span>备份系统</span>
66
- </li> -->
67
- <li @click="handleLogout">
68
- <i class="el-icon-unlock"></i>
69
- <span>退出登录</span>
70
- </li>
71
- </ul>
72
- </transition>
73
- </div>
74
- </header>
75
- </template>
76
-
77
- <script>
78
- import { mapState } from "vuex";
79
- import { setLogin,closeWebsocket } from "../websocket/test";
80
- export default {
81
- props: {},
82
- components: {},
83
- computed: {
84
- ...mapState({
85
- Collapse: (state) => state.isCollapse,
86
- // unreadMessagesTotal: (state) => state.unreadMessageTotal,
87
- // roomsName: (state) => state.globalSystem.title,
88
- }),
89
- },
90
- data() {
91
- return {
92
- fullscreenLoading: false, //全局loading
93
- isShow: false,
94
- // logoutURL: "/api/logout", // 登出
95
- currentColor: localStorage.getItem("currentColor")
96
- ? localStorage.getItem("currentColor")
97
- : "defaultTheme",
98
- themeList: [
99
- {
100
- label: "defaultTheme",
101
- name: "默认",
102
- },
103
- {
104
- label: "greenTheme",
105
- name: "绿色",
106
- },
107
- {
108
- label: "cyanTheme",
109
- name: "青色",
110
- },
111
- {
112
- label: "orangeTheme",
113
- name: "橙色",
114
- },
115
- {
116
- label: "coffeeTheme",
117
- name: "咖啡",
118
- },
119
- {
120
- label: "greyTheme",
121
- name: "浅灰色",
122
- },
123
- {
124
- label: "skyblueTheme",
125
- name: "天蓝色",
126
- },
127
- {
128
- label: "brownishTheme",
129
- name: "酒红色",
130
- },
131
- {
132
- label: "purpleTheme",
133
- name: "紫色",
134
- },
135
- ],
136
- user: JSON.parse(sessionStorage.getItem("user")),
137
- };
138
- },
139
- mounted() {
140
-
141
- },
142
- methods: {
143
- handleUserInfo() {},
144
- // fullscreenLoading() {},
145
- handleLogout() {
146
- this.$confirm("您是否要退出登录?", "提示", {
147
- confirmButtonText: "确定",
148
- cancelButtonText: "取消",
149
- type: "warning",
150
- }).then(() => {
151
- this.$message({
152
- type: "success",
153
- message: "退出登录",
154
- });
155
- sessionStorage.removeItem("user");
156
- sessionStorage.removeItem("roomsInfo")
157
- setLogin(false)
158
- closeWebsocket()
159
- this.$router.push({
160
- path: "/login",
161
- });
162
- // this.getRequest(this.$url.logoutUrl).then(() => {
163
- // this.$message({
164
- // type: "success",
165
- // message: "退出登录",
166
- // });
167
- // sessionStorage.removeItem("user");
168
- // sessionStorage.removeItem("roomsInfo")
169
-
170
- // this.$router.push({
171
- // path: "/login",
172
- // });
173
- // // this.$store.state.websocket.close();
174
- // });
175
- });
176
- },
177
- collapseHandler() {
178
- this.$store.commit("Collapse");
179
-
180
- },
181
- handelUser() {
182
- this.isShow = !this.isShow;
183
- },
184
- /**
185
- * @description: 颜色选择
186
- * @param {type}
187
- * @return:
188
- */
189
- handlePicker(item) {
190
- localStorage.setItem("currentColor", item.label);
191
- location.reload();
192
- },
193
- handleCopySystem() {},
194
- },
195
- };
196
- </script>
197
- <style lang="scss" scoped>
198
- .wrapper_header {
199
- width: 100%;
200
- // height: 60px;
201
- height: 60px;
202
- background-color: #3e99f6;
203
- box-sizing: border-box;
204
- position: relative;
205
- z-index: 1;
206
- .logo-title {
207
- width: 200px;
208
- font-family: "微软雅黑";
209
- font-size: 24px;
210
- line-height: 60px;
211
- color: #fff;
212
- text-align: center;
213
- overflow: hidden;
214
- text-overflow: ellipsis;
215
- white-space: nowrap;
216
- }
217
-
218
- #icon {
219
- width: 20px;
220
- height: 20px;
221
- display: inline-block;
222
- position: absolute;
223
- top: 50%;
224
- transform: translateY(-50%);
225
- left: 200px;
226
- cursor: pointer;
227
-
228
- img {
229
- width: 100%;
230
- }
231
-
232
- .img_rotate {
233
- transform: rotate(90deg);
234
- transition: all 0.3s;
235
- }
236
-
237
- .img_no_rotate {
238
- transform: rotate(0);
239
- transition: all 0.3s;
240
- }
241
- }
242
-
243
- .right {
244
- position: absolute;
245
- top: 50%;
246
- right: 30px;
247
- transform: translateY(-50%);
248
- height: 60px;
249
- display: flex;
250
- align-items: center;
251
-
252
- i {
253
- font-size: 20px;
254
- color: #fff;
255
- cursor: pointer;
256
- }
257
-
258
- #user_icon {
259
- margin-left: 15px;
260
- transition: all 0.3s;
261
- position: relative;
262
- }
263
-
264
- .user_ul {
265
- position: absolute;
266
- width: 250px;
267
- text-align: left;
268
- background-color: #fff;
269
- top: 30px;
270
- right: -10px;
271
- padding: 10px 15px;
272
- box-sizing: border-box;
273
- border-radius: 3px;
274
- box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
275
- li {
276
- display: block;
277
- width: 100%;
278
- height: 40px;
279
-
280
- i,
281
- span {
282
- line-height: 40px;
283
- font-size: 14px;
284
- color: #7a878e;
285
- }
286
-
287
- span {
288
- margin-left: 15px;
289
- font-size: 12px;
290
- }
291
- }
292
-
293
- li:hover {
294
- background-color: rgba(0, 0, 0, 0.05);
295
- transition: all 0.3s;
296
- cursor: pointer;
297
- }
298
- }
299
-
300
- #user_icon:hover {
301
- transition: all 0.3s;
302
- color: #ccc;
303
- }
304
- }
305
- }
306
- </style>
307
-
308
- <style lang="scss">
309
- /** 拷贝的字体图标 */
310
- // @font-face {
311
- // font-family: "iconfont"; /* project id 1978833 */
312
- // src: url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.eot");
313
- // src: url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.eot?#iefix")
314
- // format("embedded-opentype"),
315
- // url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.woff2") format("woff2"),
316
- // url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.woff") format("woff"),
317
- // url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.ttf") format("truetype"),
318
- // url("//at.alicdn.com/t/font_1978833_h88nwlpvtfr.svg#iconfont")
319
- // format("svg");
320
- // }
321
- .iconfont {
322
- margin-right: 10px;
323
- font-family: "iconfont" !important;
324
- line-height: 60px;
325
- font-style: normal;
326
- -webkit-font-smoothing: antialiased;
327
- -webkit-text-stroke-width: 0.2px;
328
- -moz-osx-font-smoothing: grayscale;
329
- }
330
-
331
- .slide-fade-enter-active {
332
- transition: all 0.3s ease;
333
- }
334
-
335
- .slide-fade-leave-active {
336
- transition: all 0.4s cubic-bezier(1, 0.5, 0.8, 1);
337
- }
338
-
339
- .slide-fade-enter,
340
- .slide-fade-leave-to {
341
- transform: translateX(10px);
342
- opacity: 0;
343
- }
344
- </style>
@@ -1,69 +0,0 @@
1
- <!--
2
- * @Author: lrm lrm@gonsin.cn
3
- * @Date: 2022-11-02 09:37:58
4
- * @LastEditors: lrm lrm@gonsin.cn
5
- * @LastEditTime: 2022-11-07 17:30:27
6
- * @FilePath: \client\src\components\MyTab.vue
7
- * @Description:
8
- *
9
- * Copyright (c) 2022 by lrm lrm@gonsin.cn, All Rights Reserved.
10
- -->
11
- <template>
12
- <div class="my_tab" ref="my_tab">
13
- <el-tabs v-model="currentTabTitle" type="border-card" @tab-click="handleClick">
14
- <el-tab-pane v-for="tab in tabs"
15
- :key="tab.title"
16
- :label="tab.title"
17
- :name="tab.title"
18
- class="my_tab_item"
19
- :lazy="true"
20
- >
21
- <templatess
22
- :viewName="tab.title"
23
- :board="tab.board"
24
- ></templatess>
25
- </el-tab-pane>
26
- </el-tabs>
27
- </div>
28
- </template>
29
-
30
- <script>
31
-
32
- export default {
33
- name: "myTab",
34
- components: {
35
- templatess: () => import('../components/Templatess.vue')
36
- },
37
- props: {
38
- tabs: {
39
- type: Array,
40
- default: () => []
41
- }
42
- },
43
- data() {
44
- return {
45
- currentTabTitle: this.tabs[0].title,
46
- formData: {}, // 表单数据
47
- dataList: [], // 表格数据
48
- }
49
- },
50
- methods: {
51
- handleClick(tab, event) {
52
- // console.log(tab);
53
- }
54
- }
55
- }
56
- </script>
57
-
58
- <style lang="scss" scoped>
59
- .my_tab {
60
- flex: 1;
61
- position: relative;
62
- margin-top: 20px;
63
- margin-bottom: 20px;
64
-
65
- .my_tab_item {
66
- height: 100%;
67
- }
68
- }
69
- </style>
@@ -1,244 +0,0 @@
1
- <!--
2
- * @Author: your name
3
- * @Date: 2022-04-22 11:44:31
4
- * @LastEditTime: 2022-11-28 15:13:40
5
- * @LastEditors: lrm lrm@gonsin.cn
6
- * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
7
- * @FilePath: \client\src\components\MyTable.vue
8
- -->
9
- <template>
10
- <div class="my_table" ref="my_table">
11
- <div class="heads" ref="heads">
12
- <el-table
13
- :data="list"
14
- style="width: 100%"
15
- :height="tableHeight"
16
- v-if="show"
17
- ref="multipleTable"
18
- @selection-change="handleSelectionChange"
19
- >
20
- <el-table-column type="selection" width="55"> </el-table-column>
21
- <el-table-column
22
- v-for="(column, idx) in data.columns"
23
- :key="column.idx"
24
- :index="idx"
25
- :prop="column.keyName"
26
- :label="column.name"
27
- >
28
- <template slot-scope="scope">
29
- <div v-if="column.columnType == 'DATE'">
30
- {{ returnDateValue(column, scope.row[column.keyName]) }}
31
- </div>
32
- <div v-else-if="column.columnType == 'BUTTONS'">
33
- <el-button
34
- type="text"
35
- v-for="(btns, indexss) in column.buttons"
36
- v-if="handleShowIf(scope.row, btns.showIf)"
37
- :key="indexss"
38
- @click="btnReturn(scope.row, btns)"
39
- >{{ btns.name }}</el-button
40
- >
41
- </div>
42
- <div v-else-if="column.columnType == 'IMAGE'">
43
- <el-image
44
- style="width: 80px; height: 80px"
45
- :src="imageReturn(column, scope.row)"
46
- :preview-src-list="[imageReturn(column, scope.row)]"
47
- />
48
- </div>
49
- <div v-else-if="column.columnType == 'QR_CODE'">
50
- <vue-qr :text="returnValue(column, scope.row)" :size="80" :margin="5" />
51
- </div>
52
- <div v-else-if="column.columnType == 'TEXT' || column.columnType == 'ENUMS'">
53
- {{ returnValue(column, scope.row) }}
54
- </div>
55
- </template>
56
- </el-table-column>
57
- </el-table>
58
- </div>
59
-
60
- <div class="bottom" v-if="list.length !=0">
61
- <el-pagination
62
- @size-change="handleSizeChange"
63
- @current-change="handleCurrentChange"
64
- :current-page="pagination.page+1"
65
- :page-sizes="[10, 20, 30, 50]"
66
- :page-size="pagination.count"
67
- layout="total, sizes, prev, pager, next, jumper"
68
- :total="pagination.totalCount"
69
- >
70
- </el-pagination>
71
- </div>
72
- </div>
73
- </template>
74
-
75
- <script>
76
- import moment from 'moment';
77
- import Mustache from 'mustache'
78
- import { vFun } from '../utils/common'
79
- import VueQr from 'vue-qr'
80
-
81
-
82
- export default {
83
- name: "myTable",
84
- props: {
85
- data: {
86
- type: Object,
87
- },
88
- list: {
89
- type: Array,
90
- },
91
- propsPagination: {
92
- type: Object,
93
- },
94
- },
95
- components: { VueQr },
96
- watch: {
97
- propsPagination: {
98
- handler: function (newModel, oldModel) {
99
- // console.log('newModel',newModel)
100
- // console.log(parseInt(newModel.page)+1)
101
- this.pagination = newModel;
102
- // this.pagination.page = parseInt(newModel.page)+1;
103
- // this.pagination.totalCount = parseInt(newModel.totalCount);
104
- // this.pagination.count = parseInt(newModel.count);
105
- // this.pagination.page = parseInt(this.pagination.page)+1;
106
- },
107
- deep: true,
108
- },
109
- },
110
- data() {
111
- return {
112
- tableHeight: "400",
113
- show: false,
114
- currentPage4: 1,
115
- sum: 1,
116
- pagination:{
117
- page:0,
118
- totalCount:0,
119
- count:0,
120
- },
121
- item: {
122
- }
123
- };
124
- },
125
- mounted() {
126
- // this.$nextTick(()=>{
127
- // console.log( parseInt(window
128
- // .getComputedStyle(this.$refs.heads)
129
- // .height.replace("px", ""))-50)
130
- // // this.tableHeight = 825;
131
- // this.tableHeight = parseInt(window
132
- // .getComputedStyle(this.$refs.heads)
133
- // .height.replace("px", "")-50);
134
- // this.show = true;
135
- // })
136
- // console.log( parseInt(window
137
- // .getComputedStyle(this.$refs.heads)
138
- // .height.replace("px", "")))
139
- // this.tableHeight = 893;
140
- // this.tableHeight = parseInt(
141
- // window.getComputedStyle(this.$refs.heads).height.replace("px", "") -
142
- // 50
143
- // );
144
- this.show = true;
145
- },
146
- methods: {
147
- //返回列表的日期
148
- returnDateValue(column, target){
149
- return moment(target).format(column.format)
150
- },
151
- //返回列表的值
152
- returnValue(column, row) {
153
- if (column.enums == null || column.enums == '') {
154
- if (column.value != "") {
155
- let result = Mustache.render(column.value, { item: row })
156
- return result
157
- } else if (column.value == "") {
158
- return row[column.keyName]
159
- }
160
- } else if (column.enums != null) {
161
- let arr = column.enums;
162
- let targetArr = arr.filter((element) => {
163
- if (element.value == row[column.keyName].toString()) {
164
- return element;
165
- }
166
- });
167
- if (targetArr.length != 0) {
168
- return targetArr[0].text;
169
- } else {
170
- return row[column.keyName];
171
- }
172
- }
173
- },
174
- imageReturn(column, row) {
175
- if (column.columnType == 'QR_CODE') {
176
- let result = Mustache.render(column.value, { item: row })
177
- return result
178
- } else {
179
- return row[column.keyName]
180
- }
181
- },
182
- //返回列表的操作
183
- btnReturn(row, action) {
184
- this.$emit("returnAction", row, action);
185
- },
186
- //返回有变化的选项
187
- handleSelectionChange(e) {
188
- this.$emit("returnSelect", e);
189
- },
190
- //列表的分页的每页数量
191
- handleSizeChange(val) {
192
- console.log(`每页 ${val} 条`);
193
- let model = this.pagination;
194
- model.count = val;
195
- model.page = 0;
196
- this.$emit("returnProps", model);
197
- },
198
- //列表分页的当前页面
199
- handleCurrentChange(val) {
200
- console.log(`当前页: ${val}`);
201
- let model = this.pagination;
202
- model.page = parseInt(val) - 1;
203
- this.$emit("returnProps", model);
204
- },
205
- handleShowIf(row, showIf) {
206
- const v = vFun
207
- if (showIf != null && showIf != "1") {
208
- let result, evalResult
209
- try {
210
- result = Mustache.render(showIf, { item: row })
211
- evalResult = eval(result)
212
- } catch (e) {
213
- console.warn(e);
214
- }
215
- // return true
216
- return eval(evalResult)
217
- } else {
218
- return true
219
- }
220
- }
221
- },
222
- };
223
- </script>
224
- <style lang="scss" scoped>
225
- .my_table {
226
- flex: 1;
227
- position: relative;
228
- margin-bottom: 50px;
229
- // display: flex;
230
- // flex-direction: column;
231
- .heads {
232
- height: 100%;
233
- }
234
- .bottom {
235
- height: 32px;
236
- position: fixed;
237
- bottom: 9px;
238
- right: 30px;
239
- width: 100%;
240
- // background:#ffffff;
241
- text-align: right;
242
- }
243
- }
244
- </style>