diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js index 97cd6e2..0e94da6 100644 --- a/build/webpack.base.conf.js +++ b/build/webpack.base.conf.js @@ -50,6 +50,14 @@ module.exports = { loader: 'vue-loader', options: vueLoaderConfig }, + { + test: /\.svg$/, + loader: 'svg-sprite-loader', + include: [resolve('src/icons')], + options: { + symbolId: 'icon-[name]' + } + }, { test: /\.js$/, loader: 'babel-loader', @@ -58,6 +66,7 @@ module.exports = { { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url-loader', + exclude: [resolve('src/icons')], options: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') diff --git a/config/dev.env.js b/config/dev.env.js index 1e22973..02a5cb6 100644 --- a/config/dev.env.js +++ b/config/dev.env.js @@ -3,5 +3,6 @@ const merge = require('webpack-merge') const prodEnv = require('./prod.env') module.exports = merge(prodEnv, { - NODE_ENV: '"development"' + NODE_ENV: '"development"', + APP_BASE_API:'/linzi-kpi' }) diff --git a/config/index.js b/config/index.js index 926ab36..e0f02a4 100644 --- a/config/index.js +++ b/config/index.js @@ -10,7 +10,12 @@ module.exports = { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', - proxyTable: {}, + proxyTable: { + '/linzi-kpi': { + target: `http://tbaidu.com`, + changeOrigin: true + } + }, // Various Dev Server settings host: 'localhost', // can be overwritten by process.env.HOST diff --git a/config/prod.env.js b/config/prod.env.js index a6f9976..c5efc77 100644 --- a/config/prod.env.js +++ b/config/prod.env.js @@ -1,4 +1,5 @@ 'use strict' module.exports = { - NODE_ENV: '"production"' + NODE_ENV: '"production"', + APP_BASE_API:'/linzi-kpi' } diff --git a/package.json b/package.json index 004c4e5..3b8892b 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,11 @@ "build": "node build/build.js" }, "dependencies": { + "axios": "^0.20.0", "element-ui": "^2.13.2", "less": "3.9", "less-loader": "5.0.0", + "svg-sprite-loader": "^5.0.0", "vue": "^2.5.2", "vue-router": "^3.0.1" }, diff --git a/src/api/data.js b/src/api/data.js new file mode 100644 index 0000000..023ca98 --- /dev/null +++ b/src/api/data.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' +const baseUrl = process.env.APP_BASE_API +export function getCaseCollectorListPage (query) { + return request({ + url: baseUrl + '/caseCollector/caseCollectorListPage', + method: 'get', + params: query + }) +} + +export function apiCaseCenterExport (query) { + return request({ + url: '/market-api/marketCaseExport/exportMarketCaseDataList', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..b81f99d --- /dev/null +++ b/src/components/SvgIcon/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/layout/AppMain.vue b/src/components/kpi-layout/AppMain.vue similarity index 51% rename from src/components/layout/AppMain.vue rename to src/components/kpi-layout/AppMain.vue index 9dffdff..e6fcfd3 100644 --- a/src/components/layout/AppMain.vue +++ b/src/components/kpi-layout/AppMain.vue @@ -1,7 +1,9 @@ @@ -28,6 +30,20 @@ export default { background: transparent; flex: 1; box-sizing: border-box; - padding: 60px 40px 0; + padding: 60px 80px 0; +} + + + diff --git a/src/components/kpi-layout/NavBar.vue b/src/components/kpi-layout/NavBar.vue new file mode 100644 index 0000000..2d95b78 --- /dev/null +++ b/src/components/kpi-layout/NavBar.vue @@ -0,0 +1,163 @@ + + + + + + + + diff --git a/src/components/layout/index.vue b/src/components/kpi-layout/index.vue similarity index 100% rename from src/components/layout/index.vue rename to src/components/kpi-layout/index.vue diff --git a/src/components/layout/NavBar.vue b/src/components/layout/NavBar.vue deleted file mode 100644 index 5d8ed62..0000000 --- a/src/components/layout/NavBar.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - diff --git a/src/icons/index.js b/src/icons/index.js new file mode 100644 index 0000000..83cb13d --- /dev/null +++ b/src/icons/index.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import SvgIcon from '@/components/SvgIcon' // svg组件 + +// register globally +Vue.component('svg-icon', SvgIcon) + +const requireAll = requireContext => requireContext.keys().map(requireContext) +const req = require.context('./svg', false, /\.svg$/) +requireAll(req) +console.log('requireAll(req): ', requireAll(req)) diff --git a/src/icons/svg/analyze.svg b/src/icons/svg/analyze.svg new file mode 100644 index 0000000..d47e96d --- /dev/null +++ b/src/icons/svg/analyze.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svgo.yml b/src/icons/svgo.yml new file mode 100644 index 0000000..d11906a --- /dev/null +++ b/src/icons/svgo.yml @@ -0,0 +1,22 @@ +# replace default config + +# multipass: true +# full: true + +plugins: + + # - name + # + # or: + # - name: false + # - name: true + # + # or: + # - name: + # param1: 1 + # param2: 2 + +- removeAttrs: + attrs: + - 'fill' + - 'fill-rule' diff --git a/src/main.js b/src/main.js index ca83cce..4c01f12 100644 --- a/src/main.js +++ b/src/main.js @@ -3,13 +3,19 @@ import Vue from 'vue' import App from './App' import router from './router' -import { Menu, MenuItem, Submenu } from 'element-ui' +import { + Button, + MessageBox, + Message +} from 'element-ui' + import './style/public.css' +import '@/icons' -Vue.use(Menu) -Vue.use(MenuItem) -Vue.use(Submenu) - +Vue.use(Button) +Vue.prototype.$message = Message +Vue.prototype.$confirm = MessageBox.confirm +Vue.prototype.$alert = MessageBox.alert Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ diff --git a/src/router/kpi_route.js b/src/router/kpi_route.js index b35e7f2..101f773 100644 --- a/src/router/kpi_route.js +++ b/src/router/kpi_route.js @@ -2,7 +2,7 @@ export default [ { path: '/kpi', name: 'kpi', - component: (resolve) => require(['@/components/layout/index.vue'], resolve), + component: (resolve) => require(['@/components/kpi-layout/index.vue'], resolve), redirect: 'kpi/workbench', meta: { title: '智能绩效', @@ -13,36 +13,56 @@ export default [ name: 'workbench', component: (resolve) => require(['@/views/kpi/workbench/index.vue'], resolve), meta: { - title: '工作台' + title: '工作台', + isNav: true } }, { path: 'assessment', name: 'assessment', component: (resolve) => require(['@/views/kpi/assessment/index.vue'], resolve), meta: { - title: '考核管理' + title: '考核管理', + isNav: true } }, { path: 'okr', name: 'okr', component: (resolve) => require(['@/views/kpi/okr/index.vue'], resolve), meta: { - title: 'OKR' + title: 'OKR', + isNav: true } }, { path: 'report', name: 'report', component: (resolve) => require(['@/views/kpi/report/index.vue'], resolve), meta: { - title: '绩效报表' + title: '绩效报表', + isNav: true } }, { path: 'set', name: 'set', component: (resolve) => require(['@/views/kpi/set/index.vue'], resolve), meta: { - title: '设置' + title: '设置', + isNav: true } - }] + }, { + path: 'home', + name: 'home', + component: (resolve) => require(['@/views/kpi/home/index.vue'], resolve), + meta: { + title: '智能测试' + } + }, { + path: 'home1', + name: 'home1', + component: (resolve) => require(['@/views/kpi/home1/index.vue'], resolve), + meta: { + title: '智能测试带弹窗', + pop: true + } + } ] } ] diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..0e522b1 --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,86 @@ +import axios from 'axios' +import { Notification, MessageBox, Message } from 'element-ui' +import store from '@/store' +import { getToken } from '@/utils/auth' +import errorCode from '@/utils/errorCode' + +// axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' +// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded' + +// 创建axios实例 +const service = axios.create({ + // axios中请求配置有baseURL选项,表示请求URL公共部分 + // baseURL: process.env.VUE_APP_BASE_API, + // 超时 + timeout: 1500000 +}) +// request拦截器 +service.interceptors.request.use(config => { + // 是否需要设置 token + // const isToken = (config.headers || {}).isToken === false + // if (getToken() && !isToken) { + // config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + // } + return config +}, error => { + console.log(error) + Promise.reject(error) +}) + +// 响应拦截器 +service.interceptors.response.use(res => { + // 未设置状态码则默认成功状态 + const code = res.data.code || 200; + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + if (code === 401) { + // MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { + // confirmButtonText: '重新登录', + // cancelButtonText: '取消', + // type: 'warning' + // } + // ).then(() => { + // store.dispatch('LogOut').then(() => { + // location.href = '/market-ui/login'; + // }) + // }) + } else if (code === 500) { + Message({ + message: msg, + type: 'error' + }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + Notification.error({ + title: msg + }) + return Promise.reject('error') + } else { + if(res.config.responseType === 'blob'){ + return res + } + return res.data + } + }, + error => { + console.log('err' + error) + let { message } = error; + if (message == "Network Error") { + message = "后端接口连接异常"; + } + else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } + else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; + } + Message({ + message: message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) + +export default service diff --git a/src/views/kpi/assessment/index.vue b/src/views/kpi/assessment/index.vue index 59020c5..898ac7a 100644 --- a/src/views/kpi/assessment/index.vue +++ b/src/views/kpi/assessment/index.vue @@ -1,7 +1,9 @@ @@ -15,7 +17,11 @@ export default { computed: {}, beforeMount () {}, mounted () {}, - methods: {}, + methods: { + handleToHome (i) { + this.$router.push({name: i}) + } + }, watch: {} } diff --git a/src/views/kpi/home/index.vue b/src/views/kpi/home/index.vue new file mode 100644 index 0000000..f0ed25d --- /dev/null +++ b/src/views/kpi/home/index.vue @@ -0,0 +1,29 @@ + + + + + + diff --git a/src/views/kpi/home1/index.vue b/src/views/kpi/home1/index.vue new file mode 100644 index 0000000..cc32ab0 --- /dev/null +++ b/src/views/kpi/home1/index.vue @@ -0,0 +1,46 @@ + + + + + +