diff --git a/package.json b/package.json index 1e9e38e..a8a6465 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ } }, "dependencies": { + "autoprefixer": "^10.4.20", "axios": "^0.18.0", "element-ui": "^2.15.14", "js-cookie": "^3.0.5", @@ -96,6 +97,7 @@ "mini-css-extract-plugin": "0.4.0", "node-loader": "^0.6.0", "node-sass": "^4.9.2", + "postcss-px-to-viewport": "^1.1.1", "sass-loader": "^7.0.3", "style-loader": "^0.21.0", "url-loader": "^1.0.1", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..bc2413e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,17 @@ +module.exports = { + plugins: [ + require('postcss-px-to-viewport')({ + viewportWidth: 1920, // 设计稿的视口宽度 + unitPrecision: 5, // 单位转换后保留的精度 + propList: ['*'], // 能转化为vw的属性列表 + viewportUnit: 'vw', // 希望使用的视口单位 + fontViewportUnit: 'vw', // 字体使用的视口单位 + selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 + minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 + mediaQuery: false, // 媒体查询里的单位是否需要转换单位 + replace: true, // 是否直接更换属性值,而不添加备用属性 + exclude: /node_modules/, // 忽略node_modules目录下的文件 + include: undefined, // 如果设置了include,那将只有匹配到的文件才会被转换 + }) + ] +}; \ No newline at end of file diff --git a/src/main/index.js b/src/main/index.js index c3c8486..3a4e47d 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,4 +1,4 @@ -import { app, BrowserWindow } from 'electron' +import { app, BrowserWindow, Menu } from 'electron' import '../renderer/store' /** @@ -19,13 +19,20 @@ function createWindow () { * Initial window options */ mainWindow = new BrowserWindow({ + width: 1920, height: 1080, - useContentSize: true, - width: 1920 + show: false, + fullscreen: true, + webPreferences: { + nodeIntegration: true + } }) mainWindow.loadURL(winURL) - + // 禁用默认菜单 + Menu.setApplicationMenu(null); + mainWindow.maximize() + mainWindow.show() mainWindow.on('closed', () => { mainWindow = null }) diff --git a/src/renderer/assets/images/Arrow_left1_icon.png b/src/renderer/assets/images/Arrow_left1_icon.png new file mode 100644 index 0000000..b497905 Binary files /dev/null and b/src/renderer/assets/images/Arrow_left1_icon.png differ diff --git a/src/renderer/assets/images/Arrow_right1_icon.png b/src/renderer/assets/images/Arrow_right1_icon.png new file mode 100644 index 0000000..f8fdf7b Binary files /dev/null and b/src/renderer/assets/images/Arrow_right1_icon.png differ diff --git a/src/renderer/assets/images/Calendar_icon.png b/src/renderer/assets/images/Calendar_icon.png new file mode 100644 index 0000000..8d11778 Binary files /dev/null and b/src/renderer/assets/images/Calendar_icon.png differ diff --git a/src/renderer/assets/images/Plus1_icon.png b/src/renderer/assets/images/Plus1_icon.png new file mode 100644 index 0000000..11741cd Binary files /dev/null and b/src/renderer/assets/images/Plus1_icon.png differ diff --git a/src/renderer/assets/images/Plus_icon.png b/src/renderer/assets/images/Plus_icon.png new file mode 100644 index 0000000..ba93177 Binary files /dev/null and b/src/renderer/assets/images/Plus_icon.png differ diff --git a/src/renderer/assets/images/Search1_icon.png b/src/renderer/assets/images/Search1_icon.png new file mode 100644 index 0000000..766b83a Binary files /dev/null and b/src/renderer/assets/images/Search1_icon.png differ diff --git a/src/renderer/assets/images/Search_icon.png b/src/renderer/assets/images/Search_icon.png new file mode 100644 index 0000000..f1331a7 Binary files /dev/null and b/src/renderer/assets/images/Search_icon.png differ diff --git a/src/renderer/assets/images/Setting_icon.png b/src/renderer/assets/images/Setting_icon.png new file mode 100644 index 0000000..7db7132 Binary files /dev/null and b/src/renderer/assets/images/Setting_icon.png differ diff --git a/src/renderer/assets/images/index1.jpg b/src/renderer/assets/images/index1.jpg new file mode 100644 index 0000000..fd291bf Binary files /dev/null and b/src/renderer/assets/images/index1.jpg differ diff --git a/src/renderer/assets/images/index2.jpg b/src/renderer/assets/images/index2.jpg new file mode 100644 index 0000000..2a2799e Binary files /dev/null and b/src/renderer/assets/images/index2.jpg differ diff --git a/src/renderer/assets/images/index3.jpg b/src/renderer/assets/images/index3.jpg new file mode 100644 index 0000000..66bea37 Binary files /dev/null and b/src/renderer/assets/images/index3.jpg differ diff --git a/src/renderer/assets/images/index4.jpg b/src/renderer/assets/images/index4.jpg new file mode 100644 index 0000000..7abb17f Binary files /dev/null and b/src/renderer/assets/images/index4.jpg differ diff --git a/src/renderer/assets/images/inform1_icon.png b/src/renderer/assets/images/inform1_icon.png new file mode 100644 index 0000000..9c62ed7 Binary files /dev/null and b/src/renderer/assets/images/inform1_icon.png differ diff --git a/src/renderer/permission.js b/src/renderer/permission.js index 9e7ee2d..e7b3b79 100644 --- a/src/renderer/permission.js +++ b/src/renderer/permission.js @@ -7,23 +7,24 @@ import { Message } from 'element-ui' const whiteList = ['/login'] // 不重定向白名单 router.beforeEach((to, from, next) => { NProgress.start() - if (!store.getters.token) { + if (store.getters.token) { if (to.path === '/login') { next({ path: '/' }) NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it } else { - if (store.getters.roles.length === 0) { - store.dispatch('GetInfo').then(res => { // 拉取用户信息 - next() - }).catch((err) => { - store.dispatch('FedLogOut').then(() => { - Message.error(err || 'Verification failed, please login again') - next({ path: '/' }) - }) - }) - } else { - next() - } + next() + // if (store.getters.roles.length === 0) { + // store.dispatch('GetInfo').then(res => { // 拉取用户信息 + // next() + // }).catch((err) => { + // store.dispatch('FedLogOut').then(() => { + // Message.error(err || 'Verification failed, please login again') + // next({ path: '/' }) + // }) + // }) + // } else { + // next() + // } } } else { if (whiteList.indexOf(to.path) !== -1) { diff --git a/src/renderer/store/index.js b/src/renderer/store/index.js index 349a17f..0c9b6cf 100644 --- a/src/renderer/store/index.js +++ b/src/renderer/store/index.js @@ -13,7 +13,7 @@ export default new Vuex.Store({ getters, plugins: [ createPersistedState(), - createSharedMutations() + // createSharedMutations() ], strict: process.env.NODE_ENV !== 'production' }) diff --git a/src/renderer/store/modules/user.js b/src/renderer/store/modules/user.js index bfba809..1aca3c2 100644 --- a/src/renderer/store/modules/user.js +++ b/src/renderer/store/modules/user.js @@ -1,12 +1,13 @@ -import { login, logout, getInfo } from '@/api/login' +// import { login, logout, getInfo } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' const user = { state: { token: getToken(), - name: '', - avatar: '', - roles: [] + name: 'admin', + avatar: + 'https://image.baidu.com/search/detail?ct=503316480&z=&tn=baiduimagedetail&ipn=d&word=admin&step_word=&lid=8980923753406439282&ie=utf-8&in=&cl=2&lm=-1&st=-1&hd=&latest=©right=&cs=1902119677,258344230&os=3526618670,2431782315&simid=3426573763,123057590&pn=11&rn=1&di=7410818322373017601&ln=1928&fr=&fmq=1730735680169_R&ic=&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=2&ist=&jit=&bdtype=0&spn=0&pi=0&gsm=1e&objurl=https%3A%2F%2Fclearhub.tech%2Fwp-content%2Fuploads%2F2018%2F11%2F12.png&rpstart=0&rpnum=0&adpicid=0&nojc=undefined&dyTabStr=MCwzLDEsMiwxMyw3LDYsNSwxMiw5', + roles: ['admin'] }, mutations: { @@ -29,53 +30,59 @@ const user = { Login({ commit }, userInfo) { const username = userInfo.username.trim() return new Promise((resolve, reject) => { - login(username, userInfo.password).then(response => { - const data = response.data - setToken(data.token) - commit('SET_TOKEN', data.token) - resolve() - }).catch(error => { - reject(error) - }) + login(username, userInfo.password) + .then((response) => { + const data = response.data + setToken(data.token) + commit('SET_TOKEN', data.token) + }) + .catch((error) => { + reject(error) + }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { - getInfo(state.token).then(response => { - const data = response.data - if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 - commit('SET_ROLES', data.roles) - } else { - reject('getInfo: roles must be a non-null array !') - } - commit('SET_NAME', data.name) - commit('SET_AVATAR', data.avatar) - resolve(response) - }).catch(error => { - reject(error) - }) + getInfo(state.token) + .then((response) => { + const data = response.data + if (data.roles && data.roles.length > 0) { + // 验证返回的roles是否是一个非空数组 + commit('SET_ROLES', data.roles) + } else { + reject('getInfo: roles must be a non-null array !') + } + commit('SET_NAME', data.name) + commit('SET_AVATAR', data.avatar) + resolve(response) + }) + .catch((error) => { + reject(error) + }) }) }, // 登出 LogOut({ commit, state }) { return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - removeToken() - resolve() - }).catch(error => { - reject(error) - }) + logout(state.token) + .then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + removeToken() + resolve() + }) + .catch((error) => { + reject(error) + }) }) }, // 前端 登出 FedLogOut({ commit }) { - return new Promise(resolve => { + return new Promise((resolve) => { removeToken() commit('SET_TOKEN', '') resolve() diff --git a/src/renderer/styles/index.scss b/src/renderer/styles/index.scss index a5680b7..8cc1920 100644 --- a/src/renderer/styles/index.scss +++ b/src/renderer/styles/index.scss @@ -9,6 +9,7 @@ body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; + margin: 0; } html { diff --git a/src/renderer/views/dashboard/index.vue b/src/renderer/views/dashboard/index.vue index 68f5e4f..d45a698 100644 --- a/src/renderer/views/dashboard/index.vue +++ b/src/renderer/views/dashboard/index.vue @@ -1,637 +1,48 @@ @@ -641,22 +52,114 @@ import { mapGetters } from 'vuex' export default { name: 'dashboard', + data() { + return { + workStatus: true + } + }, computed: { ...mapGetters(['name', 'roles']) + }, + methods: { + goOut() { + this.$store.dispatch('FedLogOut').then(() => { + location.reload()// In order to re-instantiate the vue-router object to avoid bugs + }) + } } } diff --git a/src/renderer/views/login/index.vue b/src/renderer/views/login/index.vue index 7d20c2d..26ea4e4 100644 --- a/src/renderer/views/login/index.vue +++ b/src/renderer/views/login/index.vue @@ -34,6 +34,7 @@