diff --git a/.env.development b/.env.development index c1e100b..3d457ce 100644 --- a/.env.development +++ b/.env.development @@ -2,6 +2,6 @@ ENV='development' # base api -VUE_APP_BASE_API=zhiyuan-test.ali251.langye.net -VUE_APP_UPLOAD_API=zhiyuan-test.ali251.langye.net/api/admin/upload-file +VUE_APP_BASE_API=http://zhiyuan-test.ali251.langye.net +VUE_APP_UPLOAD_API=http://zhiyuan-test.ali251.langye.net/api/admin/upload-file VUE_APP_PREVIEW_API=http://view.ali251.langye.net:8012/onlinePreview diff --git a/.env.production b/.env.production index aaeb0c2..6946e95 100644 --- a/.env.production +++ b/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # base api -VUE_APP_BASE_API = http://starter.ali251.langye.net -VUE_APP_UPLOAD_API =http://starter.ali251.langye.net/api/admin/upload-file +VUE_APP_BASE_API = '' +VUE_APP_UPLOAD_API =/api/admin/upload-file VUE_APP_PREVIEW_API=http://view.ali251.langye.net:8012/onlinePreview diff --git a/.eslintrc.js b/.eslintrc.js index c977505..d13693d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -189,7 +189,7 @@ module.exports = { 'yield-star-spacing': [2, 'both'], 'yoda': [2, 'never'], 'prefer-const': 2, - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'no-debugger': 0, 'object-curly-spacing': [2, 'always', { objectsInObjects: false }], diff --git a/.gitignore b/.gitignore index 9ad28d2..fdd2adc 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ tests/**/coverage/ *.ntvs* *.njsproj *.sln +/script/ diff --git a/package.json b/package.json index c0c964d..7b193e7 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,14 @@ "vuedraggable": "^2.24.3", "vuex": "3.1.0", "webpack-md5-hash": "^0.0.6", - "xlsx": "^0.18.5" + "xlsx": "^0.18.5", + "vxe-table-plugin-export-xlsx": "^3.3.4", + "vxe-pc-ui": "^3.3.11", + "vxe-table": "^3.11.12", + "exceljs": "^4.4.0" }, "devDependencies": { + "ejs": "^3.1.10", "@vue/cli-plugin-babel": "4.4.4", "@vue/cli-plugin-eslint": "4.4.4", "@vue/cli-plugin-unit-jest": "4.4.4", diff --git a/public/favicon.ico b/public/favicon.ico index c48d62c..df783c0 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/api/area/area.js b/src/api/area/area.js new file mode 100644 index 0000000..70521c0 --- /dev/null +++ b/src/api/area/area.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +export function index(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/area/index', + params, +isLoading + }) +} + +export function show(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/area/show', + params, + isLoading + }) +} + +export function save(data, isLoading = true) { + return request({ + method: 'post', + url: '/api/admin/area/save', + data, + isLoading + }) +} + +export function destroy(params, isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/area/destroy', + params, + isLoading + }) +} diff --git a/src/api/school/school.js b/src/api/school/school.js new file mode 100644 index 0000000..347527b --- /dev/null +++ b/src/api/school/school.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +export function index(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/school/index', + params, +isLoading + }) +} + +export function show(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/school/show', + params, + isLoading + }) +} + +export function save(data, isLoading = true) { + return request({ + method: 'post', + url: '/api/admin/school/save', + data, + isLoading + }) +} + +export function destroy(params, isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/school/destroy', + params, + isLoading + }) +} diff --git a/src/api/score/score.js b/src/api/score/score.js new file mode 100644 index 0000000..3e4f8fd --- /dev/null +++ b/src/api/score/score.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +export function index(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/score/index', + params, +isLoading + }) +} + +export function show(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/score/show', + params, + isLoading + }) +} + +export function save(data, isLoading = true) { + return request({ + method: 'post', + url: '/api/admin/score/save', + data, + isLoading + }) +} + +export function destroy(params, isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/score/destroy', + params, + isLoading + }) +} diff --git a/src/api/user/user.js b/src/api/user/user.js new file mode 100644 index 0000000..9bcb9d0 --- /dev/null +++ b/src/api/user/user.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +export function index(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/user/index', + params, +isLoading + }) +} + +export function show(params,isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/user/show', + params, + isLoading + }) +} + +export function save(data, isLoading = true) { + return request({ + method: 'post', + url: '/api/admin/user/save', + data, + isLoading + }) +} + +export function destroy(params, isLoading = true) { + return request({ + method: 'get', + url: '/api/admin/user/destroy', + params, + isLoading + }) +} diff --git a/src/assets/logo-mini.png b/src/assets/logo-mini.png index 8ecb6ba..0c091ff 100644 Binary files a/src/assets/logo-mini.png and b/src/assets/logo-mini.png differ diff --git a/src/assets/logo.png b/src/assets/logo.png index 6405818..e9d299c 100644 Binary files a/src/assets/logo.png and b/src/assets/logo.png differ diff --git a/src/components/RichTextModal/index.vue b/src/components/RichTextModal/index.vue new file mode 100644 index 0000000..5baabe2 --- /dev/null +++ b/src/components/RichTextModal/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue index a8e6806..9cb58af 100644 --- a/src/layout/components/Sidebar/Logo.vue +++ b/src/layout/components/Sidebar/Logo.vue @@ -36,8 +36,8 @@ transition: opacity 1.5s; } .sidebar-name-logo { - width: 120px; - height: 22px; + object-fit: contain; + height: 80%; } .sidebarLogoFade-enter, diff --git a/src/main.js b/src/main.js index 2d7aa25..3b85f70 100644 --- a/src/main.js +++ b/src/main.js @@ -52,6 +52,21 @@ Vue.use(avue) import AvueMap from 'avue-plugin-map' Vue.use(AvueMap); +import VxeUI from 'vxe-pc-ui' +import 'vxe-pc-ui/lib/style.css' +import VxeUITable from 'vxe-table' +import 'vxe-table/lib/style.css' +import domZIndex from 'dom-zindex' +domZIndex.setCurrent(2000) +import VxeTable from 'vxe-table' +Vue.use(VxeUI) +import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx' +import ExcelJS from 'exceljs' +VxeTable.use(VXETablePluginExportXLSX, { + ExcelJS +}) +Vue.use(VxeUITable) + Vue.directive('loadMore', { bind(el, binding) { const selectWrap = el.querySelector('.el-scrollbar__wrap') @@ -94,5 +109,8 @@ new Vue({ el: '#app', router, store, + beforeCreate() { + Vue.prototype.$bus = this + }, render: h => h(App) }) diff --git a/src/settings.js b/src/settings.js index 8c81eae..686b509 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1,7 +1,7 @@ module.exports = { - title: '朗业基础平台', - TOKEN_KEY: 'starter_token', + title: '新飞跃', + TOKEN_KEY: 'xinfeiyue_token', /** * @type {boolean} true | false * @description Whether fix the header @@ -12,5 +12,12 @@ module.exports = { * @type {boolean} true | false * @description Whether show the logo in sidebar */ - sidebarLogo: true + sidebarLogo: true, + uploadSize: 20 * 1024 * 1024, + defaultModalSize: { + width: '76vw', + height: '80vh', + sWidth: '64vw', + sHeight: '72vh', + } } diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index 3859c95..8ca9ae6 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -228,6 +228,11 @@ const actions = { } else { accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) } + asyncRoutes.push({ + path: '*', + redirect: '/404', + hidden: true + }) commit('SET_ROUTES', accessedRoutes) resolve(accessedRoutes) diff --git a/src/styles/iconfont.css b/src/styles/iconfont.css index 9f6fdb2..1438432 100644 --- a/src/styles/iconfont.css +++ b/src/styles/iconfont.css @@ -1,8 +1,8 @@ @font-face { - font-family: "iconfont"; /* Project id 4052909 */ - src: url('iconfont.woff2?t=1683361610626') format('woff2'), - url('iconfont.woff?t=1683361610626') format('woff'), - url('iconfont.ttf?t=1683361610626') format('truetype'); + font-family: "iconfont"; /* Project id 4840280 */ + src: url('iconfont.woff2?t=1740625338753') format('woff2'), + url('iconfont.woff?t=1740625338753') format('woff'), + url('iconfont.ttf?t=1740625338753') format('truetype'); } .iconfont { @@ -13,107 +13,151 @@ -moz-osx-font-smoothing: grayscale; } -.icon-jurassic_process-list:before { - content: "\e6c4"; +.icon-xiaoliang:before { + content: "\e600"; } -.icon-biaodan:before { - content: "\e663"; +.icon-customer:before { + content: "\e618"; } -.icon-biaozhunhuaguizeguanli:before { - content: "\e60a"; +.icon-report:before { + content: "\e622"; +} + +.icon-fenshuxian-:before { + content: "\e613"; +} + +.icon-fenshuxian-1:before { + content: "\e614"; +} + +.icon-kehuqunzu:before { + content: "\e673"; +} + +.icon-zhibiaomoban:before { + content: "\e631"; +} + +.icon-zhibiaotongji:before { + content: "\e632"; +} + +.icon-zhibiaojihua:before { + content: "\e633"; +} + +.icon-zhuanyemingcheng:before { + content: "\e627"; +} + +.icon-renshixuexiao:before { + content: "\e604"; +} + +.icon-tongji:before { + content: "\e605"; +} + +.icon-zhuanyeyukecheng:before { + content: "\e660"; } -.icon-a-zhidu6:before { - content: "\eb07"; +.icon-xueshengchengchangdangan_xueshengchengchangdangan:before { + content: "\e601"; } -.icon-dat:before { - content: "\e691"; +.icon-xuexiao:before { + content: "\e643"; } -.icon-audio:before { - content: "\e692"; +.icon-fenshu:before { + content: "\e60b"; } -.icon-video:before { - content: "\e693"; +.icon-xuexiao_xuexiaoxinxi:before { + content: "\e661"; } -.icon-zip:before { - content: "\e694"; +.icon-zhuanyexitong:before { + content: "\e60a"; } -.icon-image:before { - content: "\e695"; +.icon-xuexiao_kemu:before { + content: "\e615"; } -.icon-pdf:before { - content: "\e696"; +.icon-jiankangzhibiao:before { + content: "\e67c"; } -.icon-ppt:before { - content: "\e697"; +.icon-xuesheng:before { + content: "\e6e7"; } -.icon-21excel:before { - content: "\e698"; +.icon-kehu:before { + content: "\e623"; } -.icon-21word:before { - content: "\e699"; +.icon-tuijian:before { + content: "\e602"; } -.icon-21move:before { - content: "\e69a"; +.icon-tongji1:before { + content: "\e6b7"; } -.icon-21setting:before { - content: "\e69b"; +.icon-yunwei:before { + content: "\e6b8"; } -.icon-21upload:before { - content: "\e69c"; +.icon-statistics-full:before { + content: "\e86b"; } -.icon-21download:before { - content: "\e69d"; +.icon-zhuanyeguanli:before { + content: "\e70b"; } -.icon-21cancel:before { +.icon-yunweifenxipingtai:before { content: "\e69e"; } -.icon-21ok:before { - content: "\e69f"; +.icon-tuijian1:before { + content: "\e759"; +} + +.icon-xueshengtejia:before { + content: "\e6ed"; } -.icon-21copy:before { - content: "\e6a0"; +.icon-fenxiangtuijian-m:before { + content: "\e7dc"; } -.icon-21delete:before { - content: "\e6a1"; +.icon-zhibiaoyingyong:before { + content: "\e66f"; } -.icon-21edit:before { - content: "\e6a2"; +.icon-icon_xueshengdanganshengcheng:before { + content: "\e61e"; } -.icon-21new:before { - content: "\e6a3"; +.icon-xitongyunweilei:before { + content: "\e634"; } -.icon-21folder:before { - content: "\e6a4"; +.icon-zhiyuantianbao:before { + content: "\e60f"; } -.icon-21mutil:before { - content: "\e6a5"; +.icon-gaokao_zhiyuantianbao:before { + content: "\e61a"; } -.icon-21file:before { - content: "\e6a6"; +.icon-zhiyuantianbao1:before { + content: "\e6dc"; } diff --git a/src/styles/iconfont.ttf b/src/styles/iconfont.ttf index 4e2970e..f4f1adc 100644 Binary files a/src/styles/iconfont.ttf and b/src/styles/iconfont.ttf differ diff --git a/src/styles/iconfont.woff b/src/styles/iconfont.woff index b7c5531..50fadde 100644 Binary files a/src/styles/iconfont.woff and b/src/styles/iconfont.woff differ diff --git a/src/styles/iconfont.woff2 b/src/styles/iconfont.woff2 index 0c051c5..bd736ab 100644 Binary files a/src/styles/iconfont.woff2 and b/src/styles/iconfont.woff2 differ diff --git a/src/utils/downloadRequest.js b/src/utils/downloadRequest.js index 5489be5..9c033b1 100644 --- a/src/utils/downloadRequest.js +++ b/src/utils/downloadRequest.js @@ -52,7 +52,7 @@ export async function download(url, method = "get", info, filename) { if (!filename) { filename = response.headers["content-disposition"]?.match(/filename=(.*)/)[1] || - ""; + `${new Date().valueOf()}.xlsx`; } // 将二进制流转为blob diff --git a/src/utils/index.js b/src/utils/index.js index 32825fb..13a8ced 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -171,3 +171,15 @@ export function debounce(func, delay) { } } +export function formatFileSize(size) { + if (size < 1024 * 1024) { + const temp = size / 1024; + return temp.toFixed(2) + "KB"; + } else if (size < 1024 * 1024 * 1024) { + const temp = size / (1024 * 1024); + return temp.toFixed(2) + "MB"; + } else { + const temp = size / (1024 * 1024 * 1024); + return temp.toFixed(2) + "GB"; + } +} diff --git a/src/views/404.vue b/src/views/404.vue index 1791f55..3793e3a 100644 --- a/src/views/404.vue +++ b/src/views/404.vue @@ -8,13 +8,13 @@ 404
-
OOPS!
-
All rights reserved - wallstreetcn -
+
404
+ + +
{{ message }}
-
Please check that the URL you entered is correct, or click the button below to return to the homepage.
- Back to home + + 返回首页
@@ -26,7 +26,7 @@ export default { name: 'Page404', computed: { message() { - return 'The webmaster said that you can not enter this page...' + return '访问页面不存在...' } } } diff --git a/src/views/Area/Area.vue b/src/views/Area/Area.vue new file mode 100644 index 0000000..373d38a --- /dev/null +++ b/src/views/Area/Area.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/src/views/Area/components/AddArea.vue b/src/views/Area/components/AddArea.vue new file mode 100644 index 0000000..13e997f --- /dev/null +++ b/src/views/Area/components/AddArea.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/src/views/Area/components/ShowArea.vue b/src/views/Area/components/ShowArea.vue new file mode 100644 index 0000000..d7998e2 --- /dev/null +++ b/src/views/Area/components/ShowArea.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/School/School.vue b/src/views/School/School.vue new file mode 100644 index 0000000..85039e9 --- /dev/null +++ b/src/views/School/School.vue @@ -0,0 +1,685 @@ + + + + + diff --git a/src/views/School/components/AddSchool.vue b/src/views/School/components/AddSchool.vue new file mode 100644 index 0000000..1f4c318 --- /dev/null +++ b/src/views/School/components/AddSchool.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/views/School/components/ShowSchool.vue b/src/views/School/components/ShowSchool.vue new file mode 100644 index 0000000..f10b900 --- /dev/null +++ b/src/views/School/components/ShowSchool.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/Score/Score.vue b/src/views/Score/Score.vue new file mode 100644 index 0000000..4a96729 --- /dev/null +++ b/src/views/Score/Score.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/src/views/Score/components/AddScore.vue b/src/views/Score/components/AddScore.vue new file mode 100644 index 0000000..4b4f8cd --- /dev/null +++ b/src/views/Score/components/AddScore.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/src/views/Score/components/ShowScore.vue b/src/views/Score/components/ShowScore.vue new file mode 100644 index 0000000..d442b18 --- /dev/null +++ b/src/views/Score/components/ShowScore.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/views/User/User.vue b/src/views/User/User.vue new file mode 100644 index 0000000..ce9f93a --- /dev/null +++ b/src/views/User/User.vue @@ -0,0 +1,547 @@ + + + + + diff --git a/src/views/User/components/AddUser.vue b/src/views/User/components/AddUser.vue new file mode 100644 index 0000000..4f8ade0 --- /dev/null +++ b/src/views/User/components/AddUser.vue @@ -0,0 +1,370 @@ + + + + + diff --git a/src/views/User/components/ShowUser.vue b/src/views/User/components/ShowUser.vue new file mode 100644 index 0000000..899d4fc --- /dev/null +++ b/src/views/User/components/ShowUser.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/vue.config.js b/vue.config.js index e16b92c..c24091f 100644 --- a/vue.config.js +++ b/vue.config.js @@ -25,7 +25,7 @@ module.exports = { * Detail: https://cli.vuejs.org/config/#publicpath */ publicPath: process.env.ENV === 'staging' ? '/admin_test' : '/admin', - outputDir: './dist', + outputDir: `../git-store/zhiyuan/public/${process.env.ENV === 'staging' ? '/admin_test' : '/admin'}`, assetsDir: 'static', css: { loaderOptions: { // 向 CSS 相关的 loader 传递选项 @@ -37,7 +37,7 @@ module.exports = { } } }, - lintOnSave: process.env.NODE_ENV === 'development', + lintOnSave: false, productionSourceMap: false, devServer: { port: port,