olp-table 5.3.4 → 5.3.5
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.
- package/package.json +12 -92
- package/.env.build +0 -1
- package/README.md +0 -26
- package/babel.config.js +0 -5
- package/jsconfig.json +0 -22
- package/public/favicon.ico +0 -0
- package/public/index.html +0 -17
- package/rmMode.bat +0 -1
- package/src/App.vue +0 -199
- package/src/api/crud.js +0 -22
- package/src/api/dist.js +0 -6
- package/src/assets/iconfont/iconfont.css +0 -20
- package/src/assets/iconfont/iconfont.json +0 -16
- package/src/assets/iconfont/iconfont.ttf +0 -0
- package/src/assets/iconfont/iconfont.woff +0 -0
- package/src/assets/iconfont/iconfont.woff2 +0 -0
- package/src/assets/logo.png +0 -0
- package/src/components/auto-height/index.vue +0 -75
- package/src/components/codemirror-tag.vue +0 -100
- package/src/components/lazy-load-select.vue +0 -107
- package/src/components/ol-dialog-excel.vue +0 -112
- package/src/components/ol-dialog-import.vue +0 -304
- package/src/components/ol-dialog-json.vue +0 -82
- package/src/components/ol-dialog-table.vue +0 -81
- package/src/components/ol-dialog-upload-file.vue +0 -208
- package/src/components/ol-dict-tag.vue +0 -271
- package/src/components/ol-select-dom.vue +0 -71
- package/src/components/ol-table-filter.vue +0 -28
- package/src/components/ol-table-render.vue +0 -44
- package/src/components/ol-table-select.vue +0 -150
- package/src/components/pinia-init.vue +0 -18
- package/src/components/table/model/ModelMixins.js +0 -43
- package/src/components/table/model/model-index.vue +0 -121
- package/src/components/table/model/ot-left-right.vue +0 -18
- package/src/components/table/model/ot-left-tree-right-table.scss +0 -14
- package/src/components/table/model/ot-left-tree-right-table.vue +0 -41
- package/src/components/table/model/ot-top-1-bottom-2.vue +0 -39
- package/src/components/table/model/ot-top-2-bottom-1.vue +0 -38
- package/src/components/table/model/ot-top-2-bottom-2.vue +0 -38
- package/src/components/table/model/ot-top-bottom.vue +0 -18
- package/src/components/table/model/splitpanesModel.css +0 -22
- package/src/components/table/model/splitpanesModel.vue +0 -54
- package/src/components/table/ol-form/index.vue +0 -537
- package/src/components/table/ol-form-v3/index.vue +0 -455
- package/src/components/table/ol-main-form-sub-table/index.vue +0 -601
- package/src/components/table/ol-pager/index.vue +0 -46
- package/src/components/table/ol-table/components/ol-table-column-config/columnIndex.vue +0 -233
- package/src/components/table/ol-table/components/ol-table-column-config/index.vue +0 -145
- package/src/components/table/ol-table/components/ol-table-column-dict-color/index.vue +0 -88
- package/src/components/table/ol-table/index.vue +0 -232
- package/src/components/table/ol-table-operate/index.vue +0 -61
- package/src/components/table/ol-table-search/index.vue +0 -17
- package/src/components/table/ol-table-tool-btn/index.vue +0 -60
- package/src/components/tree/components/o-tree.vue +0 -289
- package/src/components/tree/index.vue +0 -46
- package/src/components/v-component/index.vue +0 -43
- package/src/config/dev-config.js +0 -5
- package/src/config/prod-config.js +0 -5
- package/src/config/shared-config.js +0 -20
- package/src/data.js +0 -9378
- package/src/directives/permission/hasPermi.js +0 -63
- package/src/directives/permission/hasRole.js +0 -30
- package/src/main.js +0 -55
- package/src/mixins/VTMixin/DefaultMethods.js +0 -749
- package/src/mixins/VTMixin/OTMixinBody.js +0 -105
- package/src/mixins/VTMixin/OTMixinBodyFooter.js +0 -93
- package/src/mixins/VTMixin/OTMixinBodyMethods.js +0 -420
- package/src/mixins/VTMixin/OTMixinColumnMethod.js +0 -450
- package/src/mixins/VTMixin/OTMixinInitMethod.js +0 -130
- package/src/mixins/VTMixin/OTMixinPager.js +0 -38
- package/src/mixins/VTMixin/OTMixinSortable.js +0 -43
- package/src/mixins/VTMixin/index.js +0 -18
- package/src/package/index.js +0 -20
- package/src/plugins/axios.js +0 -61
- package/src/store/dict.js +0 -76
- package/src/store/dictType.js +0 -52
- package/src/store/permi.js +0 -45
- package/src/styles/common.scss +0 -37
- package/src/styles/index.scss +0 -48
- package/src/styles/theme.scss +0 -32
- package/src/utils/AESCRUDUtils.js +0 -87
- package/src/utils/DateUtils.js +0 -35
- package/src/utils/ExcelUtil.js +0 -159
- package/src/utils/TableSortUtil.js +0 -91
- package/src/utils/columnProp.js +0 -3
- package/src/utils/groupCompute.js +0 -68
- package/src/utils/http/httpFactory.js +0 -92
- package/src/utils/http/httpFactory2.js +0 -79
- package/src/utils/http/httpUtil.js +0 -123
- package/src/utils/http/httpUtils.js +0 -38
- package/src/utils/loadStyle.js +0 -14
- package/src/utils/message.js +0 -56
- package/src/utils/object.js +0 -80
- package/src/utils/security/TokenUtil.js +0 -19
- package/src/utils/tree.js +0 -54
- package/src/utils/util.js +0 -127
- package/src/views/Test/index.vue +0 -77
- package/src/views/Test/index2.vue +0 -33
- package/src/views/components/btn-config/index.vue +0 -202
- package/src/views/components/option-config/index.vue +0 -192
- package/src/views/db/chineseToEnglish.vue +0 -127
- package/src/views/db/filed.vue +0 -395
- package/src/views/db/index.vue +0 -192
- package/src/views/db/preview/index.vue +0 -139
- package/src/views/db/preview/left.vue +0 -204
- package/src/views/db/preview/right.vue +0 -466
- package/src/views/groupTable/index.vue +0 -137
- package/src/views/groupTable/ol-table-column-config/columnIndex.vue +0 -194
- package/src/views/groupTable/ol-table-column-config/index.vue +0 -92
- package/src/views/table/add-or-edit/config/base-config/index.vue +0 -539
- package/src/views/table/add-or-edit/config/base-config/table-form.vue +0 -333
- package/src/views/table/add-or-edit/config/column-config/header-config.vue +0 -475
- package/src/views/table/add-or-edit/config/column-config/index.vue +0 -790
- package/src/views/table/add-or-edit/config/data/column.js +0 -218
- package/src/views/table/add-or-edit/config/data/crud.js +0 -122
- package/src/views/table/add-or-edit/config/data/events.js +0 -109
- package/src/views/table/add-or-edit/config/data/method.js +0 -127
- package/src/views/table/add-or-edit/config/data/option.js +0 -725
- package/src/views/table/add-or-edit/config/data/page.js +0 -79
- package/src/views/table/add-or-edit/config/field-config/filed-config-table.vue +0 -42
- package/src/views/table/add-or-edit/config/field-config/index.vue +0 -91
- package/src/views/table/add-or-edit/config/form-config/index.vue +0 -1179
- package/src/views/table/add-or-edit/config/index.vue +0 -376
- package/src/views/table/add-or-edit/config/initFormObject.js +0 -25
- package/src/views/table/add-or-edit/config/script-config/LeftMeun.vue +0 -71
- package/src/views/table/add-or-edit/config/script-config/index.vue +0 -70
- package/src/views/table/add-or-edit/config/table-config/btn-config.vue +0 -340
- package/src/views/table/add-or-edit/config/table-config/btn-sort.vue +0 -132
- package/src/views/table/add-or-edit/config/table-config/index.vue +0 -446
- package/src/views/table/add-or-edit/configOld/dataTags/filed-config-table-model.vue +0 -41
- package/src/views/table/add-or-edit/configOld/dataTags/filed-config.vue +0 -74
- package/src/views/table/add-or-edit/configOld/dataTags/index.vue +0 -439
- package/src/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue +0 -79
- package/src/views/table/add-or-edit/configOld/dataTags/table-on-config.vue +0 -74
- package/src/views/table/add-or-edit/configOld/index.vue +0 -127
- package/src/views/table/add-or-edit/configOld/tableTags/columnConfig.js +0 -5
- package/src/views/table/add-or-edit/configOld/tableTags/index.vue +0 -353
- package/src/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue +0 -75
- package/src/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue +0 -92
- package/src/views/table/add-or-edit/index.vue +0 -201
- package/src/views/table/add-or-edit/themeModel/index.vue +0 -53
- package/src/views/table/add-or-edit/themeModel/init-model-table.vue +0 -48
- package/src/views/table/add-or-edit/themeModel/init-model.vue +0 -81
- package/src/views/table/add-or-edit/themeModel/left-right.vue +0 -24
- package/src/views/table/add-or-edit/themeModel/left-tree-right-table.vue +0 -75
- package/src/views/table/add-or-edit/themeModel/olTableSearchModelMixins.js +0 -42
- package/src/views/table/add-or-edit/themeModel/splitpanesThemeModel.vue +0 -49
- package/src/views/table/add-or-edit/themeModel/top-1-bottom-2.vue +0 -29
- package/src/views/table/add-or-edit/themeModel/top-2-bottom-1.vue +0 -32
- package/src/views/table/add-or-edit/themeModel/top-2-bottom-2.vue +0 -32
- package/src/views/table/add-or-edit/themeModel/top-bottom.vue +0 -14
- package/src/views/table/index.vue +0 -43
- package/src/views/table/index2.vue +0 -199
- package/src/views/table/preview/index.vue +0 -29
- package/src/views/tree/components/config-core-data.vue +0 -85
- package/src/views/tree/components/config-core-table.vue +0 -362
- package/src/views/tree/components/config-core-tree/data/events.js +0 -95
- package/src/views/tree/components/config-core-tree/data/option.js +0 -88
- package/src/views/tree/components/config-core-tree/data/prop.js +0 -28
- package/src/views/tree/components/config-core-tree/index.vue +0 -181
- package/src/views/tree/components/config-core.vue +0 -42
- package/src/views/tree/components/form-config/index.vue +0 -967
- package/src/views/tree/index.vue +0 -424
- package/vue.config.js +0 -44
- /package/{olp-table/demo.html → demo.html} +0 -0
- /package/{olp-table/fonts → fonts}/iconfont.1720006583309.7e4906d9.woff +0 -0
- /package/{olp-table/fonts → fonts}/iconfont.1720006583309.947a27f0.ttf +0 -0
- /package/{olp-table/olp-table.common.js → olp-table.common.js} +0 -0
- /package/{olp-table/olp-table.css → olp-table.css} +0 -0
- /package/{olp-table/olp-table.umd.js → olp-table.umd.js} +0 -0
- /package/{olp-table/olp-table.umd.min.js → olp-table.umd.min.js} +0 -0
package/src/package/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import olTable from "@/components/table/ol-table/index.vue";
|
|
2
|
-
import olCodemirrorTag from "@/components/codemirror-tag.vue";
|
|
3
|
-
import olSelectDom from "@/components/ol-select-dom.vue";
|
|
4
|
-
import olDictTag from "@/components/ol-dict-tag.vue";
|
|
5
|
-
import modelIndex from "@/components/table/model/model-index";
|
|
6
|
-
// 权限
|
|
7
|
-
import {hasPermi} from '@/directives/permission/hasPermi';
|
|
8
|
-
|
|
9
|
-
const coms = [olTable,olCodemirrorTag,olDictTag,olSelectDom];
|
|
10
|
-
|
|
11
|
-
// 批量组件注册
|
|
12
|
-
const install = function (Vue) {
|
|
13
|
-
coms.forEach((com) => {
|
|
14
|
-
Vue.component(com.name, com);
|
|
15
|
-
});
|
|
16
|
-
Vue.component("OTable", modelIndex);
|
|
17
|
-
hasPermi(Vue);
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export default {install}; // 这个方法以后再使用的时候可以被use调用
|
package/src/plugins/axios.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Vue from 'vue';
|
|
4
|
-
import axios from "axios";
|
|
5
|
-
|
|
6
|
-
// Full config: https://github.com/axios/axios#request-config
|
|
7
|
-
// axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
|
|
8
|
-
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
|
|
9
|
-
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
10
|
-
|
|
11
|
-
let config = {
|
|
12
|
-
// baseURL: process.env.baseURL || process.env.apiUrl || ""
|
|
13
|
-
// timeout: 60 * 1000, // Timeout
|
|
14
|
-
// withCredentials: true, // Check cross-site Access-Control
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const _axios = axios.create(config);
|
|
18
|
-
|
|
19
|
-
_axios.interceptors.request.use(
|
|
20
|
-
function(config) {
|
|
21
|
-
// Do something before request is sent
|
|
22
|
-
return config;
|
|
23
|
-
},
|
|
24
|
-
function(error) {
|
|
25
|
-
// Do something with request error
|
|
26
|
-
return Promise.reject(error);
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
// Add a response interceptor
|
|
31
|
-
_axios.interceptors.response.use(
|
|
32
|
-
function(response) {
|
|
33
|
-
// Do something with response data
|
|
34
|
-
return response;
|
|
35
|
-
},
|
|
36
|
-
function(error) {
|
|
37
|
-
// Do something with response error
|
|
38
|
-
return Promise.reject(error);
|
|
39
|
-
}
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
Plugin.install = function(Vue, options) {
|
|
43
|
-
Vue.axios = _axios;
|
|
44
|
-
window.axios = _axios;
|
|
45
|
-
Object.defineProperties(Vue.prototype, {
|
|
46
|
-
axios: {
|
|
47
|
-
get() {
|
|
48
|
-
return _axios;
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
$axios: {
|
|
52
|
-
get() {
|
|
53
|
-
return _axios;
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
Vue.use(Plugin)
|
|
60
|
-
|
|
61
|
-
export default Plugin;
|
package/src/store/dict.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
|
|
2
|
-
const DIST = "ONLINE-DEVELOPMENT-TABLE-DIST";
|
|
3
|
-
import {get} from "@/utils/http/httpUtil";
|
|
4
|
-
|
|
5
|
-
if (!getActivePinia()) {
|
|
6
|
-
setActivePinia(createPinia())
|
|
7
|
-
}
|
|
8
|
-
export const storeDict = defineStore(DIST, {
|
|
9
|
-
state: () => {
|
|
10
|
-
return {
|
|
11
|
-
value: {},//{type:[]} 数组形式
|
|
12
|
-
object: {},//对象形式
|
|
13
|
-
isInit: true,
|
|
14
|
-
}
|
|
15
|
-
}, getters: {
|
|
16
|
-
val: (state) => {
|
|
17
|
-
return (code) => {
|
|
18
|
-
return state.value[code]
|
|
19
|
-
};
|
|
20
|
-
}, obj: (state) => {
|
|
21
|
-
return (code) => state.object[code];
|
|
22
|
-
}, default: (state) => {
|
|
23
|
-
return async (code) => {
|
|
24
|
-
if (state.value[code]) {
|
|
25
|
-
for (let o of state.value[code]) {
|
|
26
|
-
if (o.isDefault == 1) {
|
|
27
|
-
return String(o.value);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}, actions: {
|
|
34
|
-
async init() {
|
|
35
|
-
if (this.isInit) {
|
|
36
|
-
await this.initValue();
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
async initValue() {
|
|
40
|
-
let dictItems = localStorage.getItem(DIST);
|
|
41
|
-
if (dictItems) {
|
|
42
|
-
let value = JSON.parse(dictItems);
|
|
43
|
-
this.value = value;
|
|
44
|
-
let obj = {};
|
|
45
|
-
for (let key of Object.keys(value)) {
|
|
46
|
-
for (let o of value[key]) {
|
|
47
|
-
o.label = o.dictLabel;
|
|
48
|
-
o.value = String(o.dictValue);
|
|
49
|
-
obj[o.dictCode] = o;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
this.object = obj;
|
|
53
|
-
this.isInit = false;
|
|
54
|
-
} else {
|
|
55
|
-
console.log("数据字典未初始化:"+DIST)
|
|
56
|
-
//await this.refresh()
|
|
57
|
-
}
|
|
58
|
-
}, async refresh() {
|
|
59
|
-
localStorage.removeItem(DIST);
|
|
60
|
-
await get( '/online/sysDictData/initDist').then((value) => {
|
|
61
|
-
//await get( '/online/sysDictData/listOnline').then((value) => {
|
|
62
|
-
let obj = {};
|
|
63
|
-
for (let key of Object.keys(value)) {
|
|
64
|
-
for (let o of value[key]) {
|
|
65
|
-
o.label = o.dictLabel;
|
|
66
|
-
o.value = String(o.dictValue);
|
|
67
|
-
obj[o.dictCode] = o;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
this.value = value;
|
|
71
|
-
this.object = obj;
|
|
72
|
-
localStorage.setItem(DIST, JSON.stringify(value));
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
})
|
package/src/store/dictType.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
|
|
3
|
-
import {get} from "@/utils/http/httpUtil";
|
|
4
|
-
const DIST_TYPE = "ONLINE-DEVELOPMENT-TABLE-DIST-TYPE";
|
|
5
|
-
|
|
6
|
-
if (!getActivePinia()) {
|
|
7
|
-
setActivePinia(createPinia())
|
|
8
|
-
}
|
|
9
|
-
export const storeDictType = defineStore(DIST_TYPE, {
|
|
10
|
-
state: () => {
|
|
11
|
-
return {
|
|
12
|
-
value: [], isInit: true,
|
|
13
|
-
http: undefined,
|
|
14
|
-
}
|
|
15
|
-
}, getters: {
|
|
16
|
-
val: (state) => {
|
|
17
|
-
return () => state.value;
|
|
18
|
-
}
|
|
19
|
-
}, actions: {
|
|
20
|
-
async init() {
|
|
21
|
-
if (this.isInit) {
|
|
22
|
-
await this.initValue();
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
async initValue() {
|
|
26
|
-
let dictItems = localStorage.getItem(DIST_TYPE);
|
|
27
|
-
//let dictItems = undefined;
|
|
28
|
-
if (dictItems) {
|
|
29
|
-
let value = JSON.parse(dictItems);
|
|
30
|
-
this.value = value;
|
|
31
|
-
this.isInit = false;
|
|
32
|
-
} else {
|
|
33
|
-
console.log("数据字典未初始化:"+DIST_TYPE)
|
|
34
|
-
//await this.refresh()
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
async refresh() {
|
|
38
|
-
localStorage.removeItem(DIST_TYPE);
|
|
39
|
-
//await get('/online/sysDictType/listOnline').then((v) => {
|
|
40
|
-
await get('/online/sysDictType/listDict').then((v) => {
|
|
41
|
-
for (let o of v) {
|
|
42
|
-
o.dictLabel = o.name;
|
|
43
|
-
o.dictValue = String(o.code);
|
|
44
|
-
o.label = o.name;
|
|
45
|
-
o.value = String(o.code);
|
|
46
|
-
}
|
|
47
|
-
localStorage.setItem(DIST_TYPE, JSON.stringify(v));
|
|
48
|
-
this.value = v;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
})
|
package/src/store/permi.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import {createPinia, defineStore, getActivePinia, setActivePinia} from 'pinia'
|
|
2
|
-
|
|
3
|
-
//缓存的键名,唯一标识
|
|
4
|
-
const PERMISSION_CACHE_KEY = "ONLINE-DEVELOPMENT-TABLE-PERMI";
|
|
5
|
-
import {get} from "@/utils/http/httpUtil";
|
|
6
|
-
|
|
7
|
-
if (!getActivePinia()) {
|
|
8
|
-
setActivePinia(createPinia())
|
|
9
|
-
}
|
|
10
|
-
export const storePermi = defineStore(PERMISSION_CACHE_KEY , {
|
|
11
|
-
state: () => {
|
|
12
|
-
return {
|
|
13
|
-
value: [],
|
|
14
|
-
isInit: true,
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
getters: {
|
|
18
|
-
// 获取缓存的值
|
|
19
|
-
val: (state) => state.value,
|
|
20
|
-
},
|
|
21
|
-
actions: {
|
|
22
|
-
async init() {
|
|
23
|
-
if (this.isInit) {
|
|
24
|
-
await this.initValue();
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
async initValue() {
|
|
28
|
-
let dataItems = localStorage.getItem(PERMISSION_CACHE_KEY );
|
|
29
|
-
if (dataItems) {
|
|
30
|
-
let value = JSON.parse(dataItems);
|
|
31
|
-
this.value = value;
|
|
32
|
-
this.isInit = false
|
|
33
|
-
} else {
|
|
34
|
-
// await this.refresh(http)
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
async refresh() {
|
|
38
|
-
localStorage.removeItem(PERMISSION_CACHE_KEY );
|
|
39
|
-
await get('/online/sysDictData/listPermi').then((value) => {
|
|
40
|
-
this.value = value;
|
|
41
|
-
localStorage.setItem(PERMISSION_CACHE_KEY , JSON.stringify(value));
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
})
|
package/src/styles/common.scss
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
|
|
2
|
-
@font-face {
|
|
3
|
-
font-family: 'online'; /* Project id 4539076 */
|
|
4
|
-
src:
|
|
5
|
-
url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.woff2?t=1715239008922') format('woff2'),
|
|
6
|
-
url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.woff?t=1715239008922') format('woff'),
|
|
7
|
-
url('//at.alicdn.com/t/c/font_4539076_9ii7aenrdz.ttf?t=1715239008922') format('truetype');
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.online {
|
|
11
|
-
font-family: "online" !important;
|
|
12
|
-
font-style: normal;
|
|
13
|
-
-webkit-font-smoothing: antialiased;
|
|
14
|
-
-moz-osx-font-smoothing: grayscale;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// 关于 图标 CSS 的设置
|
|
18
|
-
[class^="online-"] {
|
|
19
|
-
font-family: "online" !important;
|
|
20
|
-
/* 以下内容参照第三方图标库本身的规则 */
|
|
21
|
-
font-style: normal;
|
|
22
|
-
-webkit-font-smoothing: antialiased;
|
|
23
|
-
-moz-osx-font-smoothing: grayscale;
|
|
24
|
-
}
|
|
25
|
-
.el-menu-item [class^=online] {
|
|
26
|
-
margin-right: 5px;
|
|
27
|
-
width: 24px;
|
|
28
|
-
text-align: center;
|
|
29
|
-
vertical-align: middle;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.el-submenu [class^=online] {
|
|
33
|
-
vertical-align: middle;
|
|
34
|
-
margin-right: 5px;
|
|
35
|
-
width: 24px;
|
|
36
|
-
text-align: center;
|
|
37
|
-
}
|
package/src/styles/index.scss
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--vxe-table-row-height-medium: 43px !important;
|
|
3
|
-
--vxe-button-height-medium:35px !important;
|
|
4
|
-
--vxe-input-height-medium:35px !important;
|
|
5
|
-
--vxe-font-size-medium: 15px !important;
|
|
6
|
-
--vxe-table-row-height-small: 36px !important;
|
|
7
|
-
--vxe-button-height-small:30px !important;
|
|
8
|
-
--vxe-input-height-small:31px !important;
|
|
9
|
-
--vxe-font-size-small: 14px !important;
|
|
10
|
-
--vxe-table-row-height-mini: 30px !important;
|
|
11
|
-
--vxe-button-height-mini:28px !important;
|
|
12
|
-
--vxe-button-height-mini:28px !important;
|
|
13
|
-
--vxe-font-size-mini: 13px !important;
|
|
14
|
-
--vxe-primary-color: #1677FF !important;
|
|
15
|
-
--vxe-success-color: #52c41a !important;
|
|
16
|
-
--vxe-warning-color: #faad14 !important;
|
|
17
|
-
--vxe-error-color: #ff4d4f !important;
|
|
18
|
-
--vxe-info-color: #1677ff !important;
|
|
19
|
-
--vxe-table-header-font-weight: 600;
|
|
20
|
-
--vxe-table-row-striped-background-color: rgba(0, 119, 255, 0.04) !important;
|
|
21
|
-
--vxe-table-row-radio-checked-background-color: #e1f4fd !important;
|
|
22
|
-
--vxe-table-row-checkbox-checked-background-color: #cbeefd !important;
|
|
23
|
-
--vxe-table-row-current-background-color: #e1f4fd !important;
|
|
24
|
-
--vxe-pager-perfect-button-background-color: #f4f4f56b !important;
|
|
25
|
-
|
|
26
|
-
.vxe-table {
|
|
27
|
-
.vxe-header--row {
|
|
28
|
-
color: rgba(0, 0, 0, 0.59);
|
|
29
|
-
background-color: #fafafa;
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
.vxe-body--column{
|
|
33
|
-
color: rgba(0, 0, 0, 0.88);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
.vxe-grid.size--mini {
|
|
38
|
-
.vxe-header--row{
|
|
39
|
-
font-size: 12px;
|
|
40
|
-
}
|
|
41
|
-
.vxe-toolbar,.vxe-form{
|
|
42
|
-
.vxe-button{
|
|
43
|
-
font-size: 13px;
|
|
44
|
-
min-width: 32px !important;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
package/src/styles/theme.scss
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/* 为整个页面的滚动条设置样式 */
|
|
3
|
-
::-webkit-scrollbar {
|
|
4
|
-
width: 8px; /* 设置滚动条的宽度 */
|
|
5
|
-
height: 8px; /* 设置滚动条的宽度 */
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
/* 滚动条的滑块 */
|
|
9
|
-
::-webkit-scrollbar-thumb {
|
|
10
|
-
background: #caced0; /* 设置滑块的背景颜色 */
|
|
11
|
-
border-radius: 4px;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/* 当鼠标悬停在滑块上 */
|
|
15
|
-
::-webkit-scrollbar-thumb:hover {
|
|
16
|
-
background: #93999d; /* 设置滑块的背景颜色 */
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/* 覆盖表格文本颜色 */
|
|
21
|
-
.vxe-table {
|
|
22
|
-
/* .vxe-header--row{
|
|
23
|
-
color: #909399;
|
|
24
|
-
}*/
|
|
25
|
-
.row--hover{
|
|
26
|
-
background-color: #ace3fc !important;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.vxe-header--row {
|
|
30
|
-
background-color: #ffffff;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import CryptoJS from 'crypto-js';
|
|
2
|
-
import pako from 'pako';
|
|
3
|
-
import { Base64 } from 'js-base64';
|
|
4
|
-
|
|
5
|
-
// 配置参数
|
|
6
|
-
const SECRETKEY = "liuzhououlaipu66"; // 必须与Java保持一致
|
|
7
|
-
const IV_LENGTH = 16;
|
|
8
|
-
|
|
9
|
-
// ================== 加密流程 ================== //
|
|
10
|
-
/**
|
|
11
|
-
* JS加密(与Java互操作)
|
|
12
|
-
* @param {Object|string} data - 待加密数据
|
|
13
|
-
* @returns {string} Base64加密字符串
|
|
14
|
-
*/
|
|
15
|
-
function encryptWithCompress(data) {
|
|
16
|
-
// Step1:JSON序列化
|
|
17
|
-
const jsonStr = typeof data === 'string' ? data : JSON.stringify(data);
|
|
18
|
-
|
|
19
|
-
// Step2:GZIP压缩
|
|
20
|
-
const compressed = pako.gzip(jsonStr, { level: 6 });
|
|
21
|
-
|
|
22
|
-
// Step3:生成随机IV
|
|
23
|
-
const iv = CryptoJS.lib.WordArray.random(IV_LENGTH);
|
|
24
|
-
|
|
25
|
-
// Step4:AES加密
|
|
26
|
-
const key = CryptoJS.enc.Utf8.parse(SECRETKEY);
|
|
27
|
-
const cipher = CryptoJS.AES.encrypt(
|
|
28
|
-
CryptoJS.lib.WordArray.create(compressed),
|
|
29
|
-
key,
|
|
30
|
-
{
|
|
31
|
-
iv: iv,
|
|
32
|
-
mode: CryptoJS.mode.CBC,
|
|
33
|
-
padding: CryptoJS.pad.Pkcs7
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
// Step5:拼接IV+密文 → Base64
|
|
38
|
-
const ivBytes = CryptoJS.enc.Hex.parse(iv.toString(CryptoJS.enc.Hex));
|
|
39
|
-
const combined = ivBytes.concat(cipher.ciphertext);
|
|
40
|
-
return combined.toString(CryptoJS.enc.Base64);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// ================== 解密流程 ================== //
|
|
44
|
-
/**
|
|
45
|
-
* JS解密(兼容Java加密数据)
|
|
46
|
-
* @param {string} encryptedBase64 - Java加密字符串
|
|
47
|
-
* @returns {Object} 原始数据
|
|
48
|
-
*/
|
|
49
|
-
function decryptWithDecompress(encryptedBase64) {
|
|
50
|
-
// Step1:Base64解码(处理Apache格式)
|
|
51
|
-
const rawData = Base64.toUint8Array(encryptedBase64.replace(/\n/g, ''));
|
|
52
|
-
|
|
53
|
-
// Step2:提取IV和密文
|
|
54
|
-
const ivBytes = rawData.slice(0, IV_LENGTH);
|
|
55
|
-
const cipherBytes = rawData.slice(IV_LENGTH);
|
|
56
|
-
|
|
57
|
-
// Step3:AES解密配置
|
|
58
|
-
const key = CryptoJS.enc.Utf8.parse(SECRETKEY);
|
|
59
|
-
const iv = CryptoJS.lib.WordArray.create(ivBytes);
|
|
60
|
-
|
|
61
|
-
// Step4:执行解密
|
|
62
|
-
const decrypted = CryptoJS.AES.decrypt(
|
|
63
|
-
{ ciphertext: CryptoJS.lib.WordArray.create(cipherBytes) },
|
|
64
|
-
key,
|
|
65
|
-
{ iv: iv, padding: CryptoJS.pad.Pkcs7 }
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
// Step5:GZIP解压
|
|
69
|
-
const uint8Array = new Uint8Array(decrypted.sigBytes);
|
|
70
|
-
decrypted.words.forEach((word, i) => {
|
|
71
|
-
uint8Array[i*4] = (word >> 24) & 0xff;
|
|
72
|
-
uint8Array[i*4+1] = (word >> 16) & 0xff;
|
|
73
|
-
uint8Array[i*4+2] = (word >> 8) & 0xff;
|
|
74
|
-
uint8Array[i*4+3] = word & 0xff;
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
try {
|
|
78
|
-
const decompressed = pako.ungzip(uint8Array);
|
|
79
|
-
const str = new TextDecoder().decode(decompressed);
|
|
80
|
-
return JSON.parse(str);
|
|
81
|
-
} catch (e) {
|
|
82
|
-
throw new Error(`解密失败:${e.message}`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export {
|
|
86
|
-
encryptWithCompress, decryptWithDecompress,
|
|
87
|
-
}
|
package/src/utils/DateUtils.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export const getDate = () => {
|
|
2
|
-
return dateFormat(new Date(), 1)
|
|
3
|
-
}
|
|
4
|
-
export const getDateTime = (format) => {
|
|
5
|
-
return dateFormat(new Date(), format)
|
|
6
|
-
}
|
|
7
|
-
export const dateFormat = (date, format) => {
|
|
8
|
-
if (!date) {
|
|
9
|
-
date = new Date();
|
|
10
|
-
}
|
|
11
|
-
let yyyy = date.getFullYear(); // 年
|
|
12
|
-
let MM = date.getMonth() + 1; // 月
|
|
13
|
-
MM = MM < 10 ? '0' + MM : MM;
|
|
14
|
-
let dd = date.getDate(); // 日
|
|
15
|
-
dd = dd < 10 ? '0' + dd : dd; // 日
|
|
16
|
-
let HH = date.getHours(); // 时
|
|
17
|
-
HH = HH < 10 ? '0' + HH : HH; // 如果只有一位,则前面补零
|
|
18
|
-
let mm = date.getMinutes(); // 分
|
|
19
|
-
mm = mm < 10 ? '0' + mm : mm; // 如果只有一位,则前面补零
|
|
20
|
-
let ss = date.getSeconds();//秒
|
|
21
|
-
ss = ss < 10 ? '0' + ss : ss; // 如果只有一位,则前面补零
|
|
22
|
-
|
|
23
|
-
if (format === 1) {
|
|
24
|
-
return yyyy
|
|
25
|
-
} else if (format === 2) {
|
|
26
|
-
return yyyy + '-' + MM
|
|
27
|
-
} else if (format === 3) {
|
|
28
|
-
return yyyy + '-' + MM + '-' + dd
|
|
29
|
-
} else if (format === 98) {
|
|
30
|
-
return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss + "_" + date.getTime().toString().substring(10)
|
|
31
|
-
} else if (format === 99) {
|
|
32
|
-
return yyyy + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日'
|
|
33
|
-
}
|
|
34
|
-
return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss
|
|
35
|
-
}
|
package/src/utils/ExcelUtil.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import {useMessage} from "@/utils/message";
|
|
2
|
-
import FileSaver from "file-saver";
|
|
3
|
-
|
|
4
|
-
const message = useMessage() // 消息弹窗
|
|
5
|
-
/**
|
|
6
|
-
* 组装导出表格
|
|
7
|
-
* @param data 页面导出数据
|
|
8
|
-
* @param name 文件名
|
|
9
|
-
* @param keys 自定义导出字段
|
|
10
|
-
* @param option 对齐方式
|
|
11
|
-
* @param columns 页面字段
|
|
12
|
-
* @param sheetOpt 多sheet
|
|
13
|
-
*/
|
|
14
|
-
import ExcelJS from "exceljs";
|
|
15
|
-
|
|
16
|
-
export function exportExcel({data, name, keys, option, columns, sheetOpt}) {
|
|
17
|
-
// 创建工作簿
|
|
18
|
-
const workbook = new ExcelJS.Workbook();
|
|
19
|
-
// 添加工作表,名为sheet1
|
|
20
|
-
const sheet1 = workbook.addWorksheet("sheet1");
|
|
21
|
-
sheet1.columns = getColumns(columns)
|
|
22
|
-
// 将数据写入工作表
|
|
23
|
-
if (data && data.length >= 1) {
|
|
24
|
-
setExportData(data, sheet1, columns)
|
|
25
|
-
}
|
|
26
|
-
// 标题宽度
|
|
27
|
-
setColumnWidth({sheet: sheet1, option: option})
|
|
28
|
-
setRowHorizontal({sheet: sheet1, option: option})
|
|
29
|
-
|
|
30
|
-
saveXlsx(workbook, name)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* 获取导出excel标题列
|
|
35
|
-
* @param keys 自定义导出字段
|
|
36
|
-
* @param columns 页面字段
|
|
37
|
-
* @returns {*[]}
|
|
38
|
-
*/
|
|
39
|
-
function getColumns(columns) {
|
|
40
|
-
let res = []
|
|
41
|
-
for (const column of columns) {
|
|
42
|
-
const width = column.width
|
|
43
|
-
res.push({
|
|
44
|
-
header: column.title, key: column.field, width: isNaN(width) ? 20 : width / 10
|
|
45
|
-
})
|
|
46
|
-
}
|
|
47
|
-
return res
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* 设置全部单元格对齐方式
|
|
52
|
-
* @param sheet
|
|
53
|
-
* @param option
|
|
54
|
-
*/
|
|
55
|
-
function setRowHorizontal({sheet, option}) {
|
|
56
|
-
sheet.eachRow((row, rowNumber) => {
|
|
57
|
-
// 遍历每个单元格
|
|
58
|
-
row.eachCell((cell) => {
|
|
59
|
-
// 设置边框样式
|
|
60
|
-
// cell.border = {
|
|
61
|
-
// top: {style: 'thin'},
|
|
62
|
-
// left: {style: 'thin'},
|
|
63
|
-
// bottom: {style: 'thin'},
|
|
64
|
-
// right: {style: 'thin'}
|
|
65
|
-
// };
|
|
66
|
-
// 设置居中对齐
|
|
67
|
-
cell.alignment = {
|
|
68
|
-
vertical: 'middle', horizontal: option.align
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
row.font = {
|
|
72
|
-
size: 12, name: '宋体'
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* 根据表格单元格值设置单元格宽度
|
|
79
|
-
* @param sheet 表格
|
|
80
|
-
* @param option 单元格内容对齐方式
|
|
81
|
-
*/
|
|
82
|
-
function setColumnWidth({sheet, option}) {
|
|
83
|
-
sheet.columns.forEach(function (column, i) {
|
|
84
|
-
let maxLength = 0;
|
|
85
|
-
column["eachCell"]({includeEmpty: true}, function (cell) {
|
|
86
|
-
let columnLength = cell.value ? cell.value.toString().length : 10;
|
|
87
|
-
if (new RegExp("[\\u4E00-\\u9FFF]+", "g").test(cell.value)) {
|
|
88
|
-
columnLength = columnLength * 2
|
|
89
|
-
}
|
|
90
|
-
maxLength = 10
|
|
91
|
-
if (columnLength >= maxLength) {
|
|
92
|
-
maxLength = columnLength + 3;
|
|
93
|
-
}
|
|
94
|
-
column.width = maxLength > 30 ? 30 : maxLength;
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// 列头样式
|
|
98
|
-
let cell = sheet.getCell(column.letter + '1')
|
|
99
|
-
cell.fill = {
|
|
100
|
-
type: 'pattern', pattern: 'solid', fgColor: {argb: 'ff808080'}, bgColor: {argb: '00000000'},
|
|
101
|
-
}
|
|
102
|
-
cell.font = {
|
|
103
|
-
color: {argb: 'ffffffff'},
|
|
104
|
-
}
|
|
105
|
-
cell.alignment = {
|
|
106
|
-
horizontal: option.align, vertical: 'middle',
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* 导出表格赋值
|
|
113
|
-
* @param data 导出数据
|
|
114
|
-
* @param keys 自定义导出字段 t_id
|
|
115
|
-
* @param sheet 表格
|
|
116
|
-
* @param columns 页面表单字段
|
|
117
|
-
*/
|
|
118
|
-
function setExportData(data, sheet, columns) {
|
|
119
|
-
data.map(row => {
|
|
120
|
-
let column = {}
|
|
121
|
-
columns.forEach((item) => {
|
|
122
|
-
column[item.field] = getRowValue(item, row)
|
|
123
|
-
})
|
|
124
|
-
let values = Object.values(column);
|
|
125
|
-
sheet.addRow(values);
|
|
126
|
-
})
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* 获取行数据值
|
|
131
|
-
* @param columns 页面表单字段
|
|
132
|
-
* @param row 行数据
|
|
133
|
-
* @param key 字段
|
|
134
|
-
* @returns {*}
|
|
135
|
-
*/
|
|
136
|
-
function getRowValue(column, row) {
|
|
137
|
-
let value = row[column.field]
|
|
138
|
-
if (column.params && column.params.dictValueLabel && column.params.dictValueLabel[value]) {
|
|
139
|
-
value = column.params.dictValueLabel[value];
|
|
140
|
-
}
|
|
141
|
-
return value
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* 导出
|
|
146
|
-
* @param workbook 工作表格
|
|
147
|
-
* @param name 导出文件名称
|
|
148
|
-
*/
|
|
149
|
-
function saveXlsx(workbook, name) {
|
|
150
|
-
// 导出表格文件
|
|
151
|
-
workbook.xlsx.writeBuffer().then((buffer) => {
|
|
152
|
-
let file = new Blob([buffer], {type: "application/octet-stream"});
|
|
153
|
-
FileSaver.saveAs(file, name + ".xlsx");
|
|
154
|
-
message.success("导出成功[" + name + ".xlsx]")
|
|
155
|
-
}).catch(error => {
|
|
156
|
-
message.error("导出失败[" + name + ".xlsx]")
|
|
157
|
-
console.log('Error writing excel export', error)
|
|
158
|
-
})
|
|
159
|
-
}
|