Forráskód Böngészése

提交修改API请求接口以及封装权限控制模块

TheLittlePrince 7 éve
szülő
commit
f584c980bb

+ 1 - 0
index.html

@@ -29,6 +29,7 @@
 </head>
 
 <body>
+    <script type='text/javascript' src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
   <script src="./static/ckeditor_4.10.0/ckeditor.js"></script>
   <div id="app"></div>
   <!-- built files will be auto injected -->

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "babel-polyfill": "^6.26.0",
     "echarts": "^3.8.5",
     "element-ui": "^2.2.2",
+    "js-cookie": "^2.2.0",
     "file-loader": "^1.1.11",
     "html2canvas": "^1.0.0-rc.0",
     "popper.js": "^1.14.7",

+ 14 - 0
src/api/index.js

@@ -0,0 +1,14 @@
+import { BASE_URL } from '@/config'
+
+const urlFn = v => BASE_URL + v
+
+// 登录
+const GET_TOKEN = urlFn('/api/kmt/correctSys/getMyInfo')
+
+// import fetch from './axios'
+// 获取讲师首页
+// export const GetHome = params => fetch({url: 'user/activeIndex', params})
+
+export {
+    GET_TOKEN,
+}

+ 89 - 0
src/axios/index.js

@@ -0,0 +1,89 @@
+import axios from 'axios'
+import qs from 'qs'
+import util from '@/js/util'
+import { TIME_OUT } from '@/config'
+
+// 网络请求前拦截器
+axios.interceptors.request.use(resquest => {
+    console.log(resquest)
+//   if(resquest && resquest.data && typeof (resquest.data) === 'object'){
+    // 若每个接口需要添加时间戳时
+    // resquest.data.currentDateTime = util.getFormatDate('yyyy-mm-dd hh:mm:ss')
+//   }
+  return resquest
+}, error => {
+    console.log(error)
+    return Promise.reject(error)
+})
+
+// 网络响应后拦截器
+axios.interceptors.response.use(response => {
+    // console.log(response)
+    return response
+}, error => {
+    console.log(error)
+    return Promise.resolve(error.response)
+})
+
+// 数据统一处理来自网络及服务器的错误
+function checkStatus (response) {
+    if (response && response.status === 200 || response && response.status === 304){
+        return response.data
+    } else {
+        return response && response.statusText || '网络错误'
+    }
+}
+
+// 处理来自程序的异常
+function checkCode (response) {
+    if (response.status && response.status !== 'ok'){
+        response.error = response.error || '出错了!'
+    }
+    return response
+}
+// let accessToken = sessionStorage.getItem("accessToken")
+let accessToken = sessionStorage.getItem("accessToken")
+
+// export default ({method = 'post', url = '', params = {}}) => {
+// 	return new Promise((resolve, reject) => {
+// 		axios[method.toLowerCase()](url, params).then(response => {
+// 			resolve(response)
+// 		}, err => {
+// 			reject(err)
+// 		}).catch(err => {
+// 			reject(err)
+// 		})
+// 	})
+// }
+export default {
+    post (url, data) {
+        if (!accessToken){
+            accessToken = sessionStorage.getItem("accessToken");
+        }
+        const params = {accessToken};
+        return axios({
+            method:'post',
+            // url,
+            url: `${url}?${qs.stringify("params")}`,
+            // timeout: TIME_OUT,
+            data,
+            // data: qs.stringify(data),
+            headers:{
+                'Content-Type': 'application/json',
+                // 'Content-Type':'application/x-www-form-urlencoded'
+            }
+        }).then(checkStatus).then(checkCode)
+    },
+    get (url, params){
+        return axios({
+            method: 'get',
+            url: `${url}?${qs.stringify(params)}`,
+            timeout: TIME_OUT,
+            data: params,
+            headers:{
+                'Content-Type':'text/plain'
+            }
+        }).then(checkStatus).then(checkCode)
+    },
+}
+

+ 0 - 128
src/common/baseDao.js

@@ -1,128 +0,0 @@
-// 接口
-import axios from 'axios'
-import CFG from './cfg'
-import qs from 'qs'
-import { Message } from 'element-ui'
-import router from '../router'
-// 获取会话id
-const getSIDVALUE = function () {
-  return "D4FA4AB96F7E402FAE406B59153BDEC7"
-}
-// 设置会话id
-const setSIDVALUE = function (value) {
-  if (value) {
-    instance.defaults.headers.common['Authorization'] = "Bearer" + value; //"Bearer"
-  } else {
-    delete instance.defaults.headers.common['Authorization']
-  }
-   value = "D4FA4AB96F7E402FAE406B59153BDEC7" 
-}
-// 会话id参数名 后台使用
-const SID_NAME = 'access_token'
-// 基础地址
-const BASEURL = `${CFG.BASEURL}`
-// axios实例
-const instance = axios.create({
-  baseURL: BASEURL,
-  dataType: 'json',
-  timeout: 60000,
-  // withCredentials: true,
-  transformRequest: [function (data) {
-    // 对象处理成参数
-    if (data) {
-      // 复制对象。以免修改传进来的参数对象
-      data = Object.assign({}, data)
-    } else {
-      data = {}
-    }
-    // cookie
-    // if (getSIDVALUE()) data[SID_NAME] = getSIDVALUE()
-    // else delete data[SID_NAME]
-    return qs.stringify(data)
-  }]
-})
-/**
- * 验证后台200返回的response并处理(返回首页或提示错误信息)
- * @param {Object} response
- * @returns {Object} response
- */
-const axiosThenCheck = function (response) {
-  // console.log('进入response处理过程', response)
-  if (!response.data) {
-    if (response.state === 300) {
-      messageMethod('warning', '错误信息:' + response.message)
-    } else if (response.state === 400) {
-      router.push('/')
-      messageMethod('warning', '未登录或者登录超时')
-    } else {
-      messageMethod('error', '出现未知错误!' + response.message)
-    }
-  } else if (axiosThenCheckDate(response.data)) {
-    return response
-  }
-  return response
-}
-/**
- * 验证后台200返回的数据并处理(返回首页或提示错误信息)
- * @param {Object}  response.data
- * @returns {boolean} 是否请求成功
- */
-const axiosThenCheckDate = function (data) {
-  if (data.success === true) {
-    return true
-  } else if (data.state === 300) {
-    messageMethod('warning', '错误信息:' + data.message)
-  } else if (data.state === 400 || ((typeof data) === 'string' && data.indexOf('<sxd>indexPage</sxd>') > 0)) {
-    // 返回首页
-    router.push('/')
-    messageMethod('warning', '未登录或者登录超时')
-  } else if ((typeof data) === 'string') {
-    if (data.indexOf('系统内部错误') > 0) {
-      messageMethod('error', '服务器内部错误!请联系管理员!')
-    }
-  } else {
-    messageMethod('warning', '请求数据没有正确的返回')
-  }
-  return false
-}
-instance.interceptors.response.use(axiosThenCheck, function (error) {
-  // 对响应错误做点什么
-  console.log('error=', error)
-  if (!error.response) {
-    let t1 = error.message
-    let text = 'timeout'
-    t1.indexOf(text) >= 0 && error.config.timeout === 100000 ? messageMethod('error', '请求超时,系统已将请求自动提交到后台执行,请稍后在执行日志中查看或下载执行结果!') : messageMethod('error', '请求服务器超时!')
-  } else if (error.response.state === 300) {
-    messageMethod('warning', '错误信息:' + error.response.data.message)
-  } else if (error.response.state === 400) {
-    router.push('/')
-    // localStorage.clear()
-    messageMethod('warning', '未登录或者登录超时')
-  } else if (error.response.state === 404) {
-    messageMethod('error', '服务器请求地址出错' + error.message)
-  } else {
-    messageMethod('error', '出现未知错误!' + error.message)
-  }
-  error.data = {}
-  return Promise.resolve(error)
-  // 停止抛出异常
-  // return Promise.reject(error)
-})
-/**
- * 刷新时重新设置auth头信息
- */
-// setSIDVALUE(getSIDVALUE())
-// instance.interceptors.response.use(axiosThenCheck, function (error) {
-//   errorCheck(error)
-//   return false
-// })
- // 所有提示框方法
- // type: 类型,info(消息) success(成功) warning(警告) error(错误)
- // text: 显示文字
-let messageMethod = (type, text) => {
-  Message({
-    type: type,
-    message: text
-  })
-}
-export default {axios, SID_NAME, BASEURL, instance, axiosThenCheckDate, getSIDVALUE, setSIDVALUE}

+ 0 - 53
src/common/baseDaoTest.js

@@ -1,53 +0,0 @@
-// 接口
-import axios from 'axios'
-import CFG from './cfg'
-import { Message } from 'element-ui'
-import testData from './testData/data'
-// 获取会话id
-const getSIDVALUE = function () {
-  return sessionStorage.sssssid
-}
-// 设置会话id
-const setSIDVALUE = function (value) {
-  sessionStorage.sssssid = value
-}
-// 会话id参数名 后台使用
-const SID_NAME = 'access_token'
-// 基础地址
-const BASEURL = `${CFG.BASEURL}`
-const instance = {
-  get: function (key) {
-    return testData(key)
-  },
-  post: function (key, body) {
-    return testData(key)
-  }
-}
-const axiosThenCheckDate = function (data) {
-  if (data.success === true) {
-    return true
-  } else if (data.state === 300) {
-    messageMethod('warning', '错误信息:' + data.message)
-  } else if (data.state === 400 || ((typeof data) === 'string' && data.indexOf('<sxd>indexPage</sxd>') > 0)) {
-    // 返回首页
-    router.push('/')
-    messageMethod('warning', '未登录或者登录超时')
-  } else if ((typeof data) === 'string') {
-    if (data.indexOf('系统内部错误') > 0) {
-      messageMethod('error', '服务器内部错误!请联系管理员!')
-    }
-  } else {
-    messageMethod('warning', '请求数据没有正确的返回')
-  }
-  return false
-}
-// 所有提示框方法
-// type: 类型,info(消息) success(成功) warning(警告) error(错误)
-// text: 显示文字
-let messageMethod = (type, text) => {
-  Message({
-    type: type,
-    message: text
-  })
-}
-export default {axios, SID_NAME, BASEURL, instance, axiosThenCheckDate, getSIDVALUE, setSIDVALUE}

+ 0 - 40
src/common/cfg.js

@@ -1,40 +0,0 @@
-class CfgBase {
-  constructor(opt) {
-    this.msg = {
-      200: "ok",
-      401: "没有权限"
-    };
-    // 环境
-    this.dev = MYDEV;
-  }
-}
-
-class DevCfg extends CfgBase {
-  constructor(opt) {
-    super(opt);
-    this.DEV = true;
-    this.PRO = "http:";
-    this.IP = "192.168.3.26";
-    this.PORT = "8080";
-    this.URLPRE = "";
-  }
-}
-
-class ProCfg extends CfgBase {
-  constructor(opt) {
-    super(opt);
-    this.PRO = window.location.protocol;
-    this.IP = window.location.hostname;
-    this.PORT = window.location.port;
-    this.URLPRE = "";
-    this.DEV = false;
-  }
-}
-
-let CFG = MYDEV === "prod" ? new ProCfg() : new DevCfg(); // 开发 离线 本地
-CFG.BASEURL = `${CFG.PRO}//${CFG.IP}:${CFG.PORT}/${CFG.URLPRE}`;
-// 获取微信授权登陆
-CFG.appBaseUrl = `https://t.sharingschool.com/sz/api/kmt/login/`;
-// 作业批改
-CFG.VerificationBaseUrl = `https://xt.sharingschool.com/sz/api/common/`;
-export default CFG;

+ 0 - 75
src/common/dao.js

@@ -1,75 +0,0 @@
-// 接口
-import BASEDAO from './baseDao'
-import SysDao from './dao/SysDao'
-import AppDao from './dao/AppDao'
-import VerificationDao from './dao/VerificationDao'
-import ReconciliationDao from './dao/ReconciliationDao'
-import JobDao from './dao/JobDao'
-// 测试数据 登录用户信息
-import testData from './testData/data'
-class Dao {
-  constructor (data) {
-    this.axiosThenCheckDataOk = BASEDAO.axiosThenCheckDate
-    this.sysDao = SysDao(BASEDAO)
-    this.appDao = AppDao(BASEDAO)
-    this.verification = VerificationDao(BASEDAO)
-    this.reconciliation = ReconciliationDao(BASEDAO)
-    this.jobDao = JobDao(BASEDAO)
-  }
-  // 清理一些缓存的请求和会话id
-  clearCache () {
-    BASEDAO.setSIDVALUE('')
-    window.labelList = null
-    this.sysDao.clearCache()
-  }
-  // 下载文件
-  fileDownloadPost(url, body = {}) {
-    var form = $("<form></form>").attr("action", url).attr("method", "post");
-    for (let item in body) {
-      form.append($("<input></input>").attr("type", "hidden").attr("name", item).attr("value", body[item]));
-    }
-    form.appendTo('body').submit().remove();
-  }
-  apiGet (key, body) {
-    return BASEDAO.instance.get(key)
-  }
-  apiPost (key, body, opt = {}) {
-    if (opt.headers !== undefined) return BASEDAO.instance.post(key, body, opt)
-    return BASEDAO.instance.post(key, body)
-  }
-  login (body) { // 登录 参数 username:登录名  password:密码
-    this.clearCache()
-    let repsonse = this.apiPost('sys/auth/login', body)
-    // cookie
-    repsonse.then(res => {
-      if (res && res.data && res.data.success) {
-        BASEDAO.setSIDVALUE(res.data[BASEDAO.SID_NAME])
-      }
-    })
-    return repsonse
-  }
-  logout () { // 退出登陆 参数
-    let obj = this.apiGet(`sys/auth/logout?${BASEDAO.SID_NAME}=${BASEDAO.getSIDVALUE()}`, {})
-    return obj
-  }
-  loginTest (body) { // 登录 参数 username:登录名  password:密码
-    this.clearCache()
-    let repsonse = testData('sys/auth/login')
-    // cookie
-    repsonse.then(res => {
-      if (res && res.data && res.data.success) {
-        BASEDAO.setSIDVALUE(res.data[BASEDAO.SID_NAME])
-      }
-    })
-    return repsonse
-  }
-  logoutTest () { // 退出登陆 参数
-    return {}
-  }
-  // // 获取标签表数据上传路径
-  // getTableCreateUploadUrl () {
-  //   return BASEDAO.BASEURL + '/bsns/createTableAndImport/import'
-  // }
-}
-const crmDao = new Dao()
-export default crmDao

+ 0 - 30
src/common/dao/AppDao.js

@@ -1,30 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-import DataSourceDao from "./Application/DataSourceDao";
-import ImpAppDao from "./Application/ImpAppDao";
-import channelDao from "./Application/channelDao";
-import _axiosInstance from "./_axiosInstance";
-import CFG from '@/common/cfg'
-
-class Dao {
-  constructor(OldBASEDAO) {
-    let BASEDAO = Object.assign({}, OldBASEDAO)
-    BASEDAO.BASEURL = CFG.appBaseUrl;
-    BASEDAO.instance = _axiosInstance(BASEDAO.BASEURL);
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance
-    this.BASEURL = BASEURL;
-    this.dataSource = DataSourceDao(BASEDAO);
-    this.channel = channelDao(BASEDAO);
-    this.impApp = ImpAppDao(BASEDAO);
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 24
src/common/dao/Application/DataSourceDao.js

@@ -1,24 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-
-class Dao {
-  constructor (BASEDAO) {
-    let {instance, BASEURL} = BASEDAO
-    this.instance = instance
-    this.BASEURL = BASEURL
-    // this.ActvMessageListDao = ActvMessageListDao(BASEDAO)
-  }
-  apiGet (key) {
-    return this.instance.get(key)
-  }
-  apiPost (key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt)
-    return this.instance.post(key, body)
-  }
-  // 发送code获取登陆token
-  getTokens (body) {
-    return this.apiPost('wxlogin/scanlogin', body)
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO)
-}

+ 0 - 20
src/common/dao/Application/ImpAppDao.js

@@ -1,20 +0,0 @@
-class Dao {
-  constructor(BASEDAO) {
-    let {
-      instance,
-      BASEURL
-    } = BASEDAO
-    this.instance = instance
-    this.BASEURL = BASEURL
-  }
-  apiGet(key) {
-    return this.instance.get(key)
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt)
-    return this.instance.post(key, body)
-  }
-}
-export default function (BASEDAO) {
-  return new Dao(BASEDAO)
-}

+ 0 - 20
src/common/dao/Application/channelDao.js

@@ -1,20 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-
-class Dao {
-  constructor(BASEDAO) {
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-    // this.ActvMessageListDao = ActvMessageListDao(BASEDAO)
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 29
src/common/dao/JobDao.js

@@ -1,29 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-import _axiosInstance from "./_axiosInstance";
-import CFG from '@/common/cfg'
-let AccessToken = sessionStorage.getItem("accessToken")
-class Dao {
-  constructor(OldBASEDAO) {
-    let BASEDAO = Object.assign({}, OldBASEDAO)
-    BASEDAO.BASEURL = CFG.ScheBaseUrl;
-    BASEDAO.instance = _axiosInstance(BASEDAO.BASEURL,true);
-    this.JobTaskAxios = _axiosInstance(CFG.JobTaskUrl, true);
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-  }
-  apiGet(key) {
-    return this.instance.get(key + '?accessToken=' + 'E2BD8845ACB341F8ACE7033BB75A3BCE');
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key + '?accessToken=' + 'E2BD8845ACB341F8ACE7033BB75A3BCE', body, opt);
-    return this.instance.post(key + '?accessToken=' + 'E2BD8845ACB341F8ACE7033BB75A3BCE', body);
-  }
-  //示例:作业信息列表  accessToken: "D4FA4AB96F7E402FAE406B59153BDEC7"
-  navhomeWorklist (body) {
-    return this.apiPost('homeworkCorrect/V1/homeworkList', body)
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 26
src/common/dao/ReconciliationDao.js

@@ -1,26 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-import _axiosInstance from "./_axiosInstance";
-import CFG from '@/common/cfg'
-import OnlineCheckDao from "./reconciliation/OnlineCheckDao";
-class Dao {
-  constructor(OldBASEDAO) {
-    let BASEDAO = Object.assign({}, OldBASEDAO)
-    BASEDAO.BASEURL = CFG.ReconBaseUrl;
-    BASEDAO.instance = _axiosInstance(BASEDAO.BASEURL);
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-    this.OnlineCheck = OnlineCheckDao(BASEDAO);
-    this.appStmCnlInstance = _axiosInstance(CFG.stmCnlBaseUrl);
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 41
src/common/dao/SysDao.js

@@ -1,41 +0,0 @@
-import axios from 'axios'
-import qs from 'qs'
-import CFG from '@/common/cfg'
-import testData from "../testData/data"
-const instance = axios.create({
-  baseURL: CFG.sysBASEURL,
-  dataType: 'json',
-  timeout: 30000,
-  // withCredentials: true,
-  transformRequest: [function (data) {
-    // 对象处理成参数
-    if (data) {
-      // 复制对象。以免修改传进来的参数对象
-      data = Object.assign({}, data)
-    } else {
-      data = {}
-    }
-    // cookie
-    // if (getSIDVALUE()) data[SID_NAME] = getSIDVALUE()
-    // else delete data[SID_NAME]
-    return qs.stringify(data)
-  }]
-})
-let BASEDAO
-class SysDao {
-  constructor(parmBASEDAO) {
-    BASEDAO = parmBASEDAO
-    this.instance = instance
-    this.BASEURL = BASEDAO.BASEURL
-  }
-  apiGet(key) {
-    return this.instance.get(key)
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt)
-    return this.instance.post(key, body)
-  }
-}
-export default function (BASEDAO) {
-  return new SysDao(BASEDAO)
-}

+ 0 - 32
src/common/dao/VerificationDao.js

@@ -1,32 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao
-import _axiosInstance from "./_axiosInstance";
-import VerificationRulesDao from "./verification/VerificationRulesDao";
-import verificationOlineDao from "./verification/verificationOlineDao";
-import CFG from '@/common/cfg'
-class Dao {
-  constructor(OldBASEDAO) {
-    let BASEDAO = Object.assign({}, OldBASEDAO)
-    BASEDAO.BASEURL = CFG.VerificationBaseUrl
-    BASEDAO.instance = _axiosInstance(BASEDAO.BASEURL);
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance
-    this.BASEURL = BASEURL;
-    this.rules = VerificationRulesDao(BASEDAO);
-    this.checkOline = verificationOlineDao(BASEDAO);
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-  // 作业批改
-  // 保存编辑
-  SaveDesign (body) {
-    return this.apiPost('common/uploadForm', body)
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 66
src/common/dao/_axiosInstance.js

@@ -1,66 +0,0 @@
-import axios from 'axios'
-import qs from 'qs'
-import { Message } from 'element-ui'
-let messageMethod = (type, text) => {
-  Message({
-    type: type,
-    message: text
-  })
-}
-export default function (baseURL, isJson = false) {
-  let instance
-  if (isJson) {
-    // 请求数据为json
-    instance = axios.create({
-      baseURL: baseURL,
-      headers: {'Content-Type': 'application/json;charset=UTF-8'},
-      dataType: 'json',
-      timeout: 120000,
-      transformRequest: [function (data) {
-        return JSON.stringify(data)
-      }]
-    })
-  } else {
-    // 请求数据为form-data
-    instance = axios.create({
-      baseURL: baseURL,
-      dataType: 'json',
-      timeout: 30000,
-      // withCredentials: true,
-      transformRequest: [function (data) {
-        // 对象处理成参数
-        if (data) {
-          // 复制对象。以免修改传进来的参数对象
-          data = Object.assign({}, data)
-        } else {
-          data = {}
-        }
-        // cookie
-        // if (getSIDVALUE()) data[SID_NAME] = getSIDVALUE()
-        // else delete data[SID_NAME]
-        return qs.stringify(data)
-      }]
-    })
-  }
-  instance.interceptors.response.use((res) => res, function (error) {
-    // 对响应错误做点什么
-    console.log('error=', error)
-    if (!error.response) {
-      messageMethod('warning', '错误信息:' + error.message)
-    } else if (error.response.state === 300) {
-      messageMethod('warning', '错误信息:' + error.response.data.message)
-    } else if (error.response.state === 400) {
-      // localStorage.clear()
-      messageMethod('warning', '未登录或者登录超时')
-    } else if (error.response.state === 404) {
-      messageMethod('error', '服务器请求地址出错' + error.message)
-    } else {
-      messageMethod('error', '出现未知错误!' + error.message)
-    }
-    error.data = {}
-    return Promise.resolve(error)
-    // 停止抛出异常
-    // return Promise.reject(error)
-  })
-  return instance
-}

+ 0 - 18
src/common/dao/reconciliation/OnlineCheckDao.js

@@ -1,18 +0,0 @@
-class Dao {
-  constructor(BASEDAO) {
-    let {instance, BASEURL} = BASEDAO
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-    // this.ActvMessageListDao = ActvMessageListDao(BASEDAO)
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 18
src/common/dao/verification/VerificationRulesDao.js

@@ -1,18 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-class Dao {
-  constructor(BASEDAO) {
-    let { instance, BASEURL } = BASEDAO;
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 23
src/common/dao/verification/verificationOlineDao.js

@@ -1,23 +0,0 @@
-// import BsnsChannelDao from './bsns/BsnsChannelDao'
-class Dao {
-  constructor(BASEDAO) {
-    let { BASEURL, instance } = BASEDAO;
-    this.instance = instance;
-    this.BASEURL = BASEURL;
-    // this.ActvMessageListDao = ActvMessageListDao(BASEDAO)
-  }
-  apiGet(key) {
-    return this.instance.get(key);
-  }
-  apiPost(key, body, opt = {}) {
-    if (opt.headers !== undefined) return instance.post(key, body, opt);
-    return this.instance.post(key, body);
-  }
-   // 保存编辑
-   SaveDesign (body) {
-    return this.apiPost('common/uploadForm', body)
-  }
-}
-export default function(BASEDAO) {
-  return new Dao(BASEDAO);
-}

+ 0 - 25
src/common/testData/data.js

@@ -1,25 +0,0 @@
-/* eslint-disable */
-import {sysLoginData,sysMenuListData} from './sysData'
-// 本地数据
-let success = {
-  state: 200,
-  data: {
-    success: true,
-    state: 200
-  }
-};
-let data = {
-  "sys/auth/login": sysLoginData,
-  "sys/menu/list": sysMenuListData
-};
-export default async key => {
-  if (key && data[key]) {
-    return {
-      state: 200,
-      data: data[key]
-    }
-  } else {
-    return success
-  }
-};
-/* eslint-disable */

+ 0 - 59
src/common/testData/sysData.js

@@ -1,59 +0,0 @@
-
-// 菜单列表信息
-let menuList = [
-  {
-    id: "1",
-    name: "桌面",
-    href: "desktop",
-    parentId: "0",
-    icon: "iconfont icon-07"
-  },
-  {
-    id: "2",
-    name: "应用",
-    href: "application",
-    parentId: "0",
-    icon: "iconfont icon-msnui-app"
-  },
-  {
-    id: "3",
-    name: "核查",
-    href: "verification",
-    parentId: "0",
-    icon: "iconfont icon-qiyehechabidui"
-  },
-  {
-    id: "4",
-    name: "作业",
-    href: "scheduling",
-    parentId: "0",
-    icon: "iconfont icon-zuoyebaobiao"
-  },
-  {
-    id: "5",
-    name: "对账",
-    href: "reconciliation",
-    parentId: "0",
-    icon: "iconfont icon-xiangmuduizhangdan"
-  }
-];
-// 当前登录用户信息
-let user = {
-  id: 1,
-  createDate: "2013-05-27 08:00:00", // 账号创建时间
-  updateDate: "2013-05-27 08:00:00", // 账号修改时间
-  loginName: "admin", // 账号
-  name: "zhanglin", // 账号名称
-  email: "thinkgem@163.com" // 账号邮箱
-};
-let sysLoginData = {
-  success: true,
-  state: 200,
-  user: user
-}
-let sysMenuListData = {
-  success: true,
-  state: 200,
-  menuList: menuList
-}
-export {sysLoginData, sysMenuListData}

+ 0 - 46
src/common/util.js

@@ -1,46 +0,0 @@
-import { Message } from 'element-ui'
-import router from '../router'
-
-// 常用方法
-class Util {
-  constructor() {
-    Message
-    router
-    this.data
-  }
-  setPage(pageInfo, page) {
-    pageInfo.pageNo = page.pageable.pageNumber
-    pageInfo.pageSize = page.pageable.pageSize
-    pageInfo.count = page.totalElements
-  }
-  // 所有提示框方法
-  // type: 类型,info(消息) success(成功) warning(警告) error(错误)
-  // text: 显示文字
-  messageMethod(type, text) {
-    Message({
-      duration: 5000,
-      type: type,
-      message: text
-    })
-  }
-  // 随机数
-  // 返回 数字字母组合val位
-  randomNumber(val) {
-    let randomFlag = true
-    let min = val
-    let max = val
-    let str = ''
-    let range = min
-    let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
-
-    if (randomFlag) {
-      range = Math.round(Math.random() * (max - min)) + min
-    }
-    for (var i = 0; i < range; i++) {
-      let pos = Math.round(Math.random() * (arr.length - 1))
-      str += arr[pos]
-    }
-    return str
-  }
-}
-export default new Util()

+ 14 - 0
src/config/index.js

@@ -0,0 +1,14 @@
+let BASE_URL = ''
+if (process.env.NODE_ENV === 'development') {
+    // BASE_URL = 'http://localhost:8080/sharingschool'
+    // BASE_URL = 'http://127.0.0.1:8080'
+    BASE_URL = 'https://xt.sharingschool.com/sz'
+} else {
+    BASE_URL = 'https://t.sharingschool.com/sz';
+}
+const TIME_OUT = 10000
+
+export {
+    BASE_URL,
+    TIME_OUT,
+}

+ 103 - 0
src/js/rules.js

@@ -0,0 +1,103 @@
+export default{
+    /**
+     * 手机号验证
+     */
+    checkPhone: (rule, value, callback) => {
+        if (!value) {
+            return callback(new Error('手机号不能为空'));
+        } else {
+            const reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/
+            if (reg.test(value)) {
+                callback();
+            } else {
+                return callback(new Error('请输入正确的手机号'));
+            }
+        }
+      },
+  
+      /**
+       * 验证码验证
+       */
+      checkCode:(rule, value, callback) => {
+        if (!value) {
+            return callback(new Error('验证码不能为空'));
+        } else {
+            const reg = /^\d{6}$/
+            if (reg.test(value)) {
+                callback();
+            } else {
+                return callback(new Error('请输入正确的验证码'));
+            }
+        }
+      },
+  
+      /**
+       * 登录密码
+       */
+      memberPassword:(rule, value, callback) => {
+        if (!value) {
+          return callback(new Error('密码不能为空'));
+        } else {
+            const reg = /^.{6,18}$/
+            if (reg.test(value)) {
+                callback();
+            } else {
+                return callback(new Error('密码是有6到20字符组成'));
+            }
+        }
+      },
+
+      /**
+       * 字段不为空
+       */
+      noEmpty:(rule, value, callback) => {
+        if (!value) {
+            return callback(new Error('不能为空'));
+        } else {
+            callback();
+        }
+      },
+
+      /**
+       * 图片不为空
+       */
+      noEmptytu:(rule, value, callback) => {
+        if (!value) {
+            return callback(new Error('图片不能为空'));
+        } else {
+            callback();
+        }
+      },
+
+      /**
+       * 身份证号码验证
+       */
+      memberCard:(rule, value, callback) => {
+        if (!value) {
+            return callback(new Error('不能为空'));
+        } else {
+            var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
+            if (regIdNo.test(value)) {
+                callback();
+            } else {
+                return callback(new Error('请输入正确的身份证号码'));
+            }
+        }
+      },
+
+      /**
+       *邮箱验证
+       */
+      emailRules:(rule, value, callback) => {
+        if (!value) {
+            callback();
+        } else {
+           var regIdNo = /(^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/;
+            if (regIdNo.test(value)) {
+                callback();
+            } else {
+                return callback(new Error('请输入正确的邮箱'));
+            }
+        }
+      }
+}

+ 65 - 0
src/js/util.js

@@ -0,0 +1,65 @@
+// import JSEncrypt from 'jsencrypt/bin/jsencrypt'
+export default{
+    /**
+     * 获取当前日期
+     * @param {string} formatType 格式化方式
+     * @returns {string} backDate 格式完成后的日期
+     */
+    getFormatDate: function (formatType = 'yyyymmdd', dateObj = new Date()) {
+      let date = dateObj
+      let yyyy = date.getFullYear() + ''
+      let mm = (date.getMonth() + 1) > 9 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)
+      let dd = date.getDate() > 9 ? date.getDate() : '0' + date.getDate()
+      let hh = date.getHours() > 9 ? date.getHours() : '0' + date.getHours()
+      let min = date.getMinutes() > 9 ? date.getMinutes() : '0' + date.getMinutes()
+      let sec = date.getSeconds() > 9 ? date.getSeconds() : '0' + date.getSeconds()
+      let backDate = ''
+      switch (formatType) {
+        case 'yyyymmdd':
+          backDate = yyyy + mm + dd
+          break
+        case 'yyyy-mm-dd':
+          backDate = `${yyyy}-${mm}-${dd}`
+          break
+        case 'yyyymmddhhmmss':
+          backDate = yyyy + mm + dd + hh + min + sec
+          break
+        case 'yyyy-mm-dd hh:mm:ss':
+          backDate = `${yyyy}-${mm}-${dd} ${hh}:${min}:${sec}`
+          break
+        default:
+          break
+      }
+      return backDate
+    },
+
+    getDay:function(num, str) {
+        var today = new Date();
+        var nowTime = today.getTime();
+        var ms = 24 * 3600 * 1000 * num;
+        today.setTime(parseInt(nowTime + ms));
+        var oYear = today.getFullYear();
+        var oMoth = (today.getMonth() + 1).toString();
+        if (oMoth.length <= 1) oMoth = '0' + oMoth;
+        var oDay = today.getDate().toString();
+        if (oDay.length <= 1) oDay = '0' + oDay;
+        return oYear + str + oMoth + str + oDay;
+    },
+    
+    formatDate: function (value) {
+      let date = new Date(value);
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? ('0' + MM) : MM;
+      let d = date.getDate();
+      d = d < 10 ? ('0' + d) : d;
+      let h = date.getHours();
+      h = h < 10 ? ('0' + h) : h;
+      let m = date.getMinutes();
+      m = m < 10 ? ('0' + m) : m;
+      let s = date.getSeconds();
+      s = s < 10 ? ('0' + s) : s;
+      return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
+    },
+  }
+  

+ 2 - 5
src/main.js

@@ -8,12 +8,11 @@ import {
 } from "vuex-router-sync";
 import zrender from 'zrender'; 
 import ElementUi from "element-ui";
-import dao from "./common/dao";
-import util from "./common/util";
+import axios from './axios'
 import Viewer from 'v-viewer'
 import 'viewerjs/dist/viewer.css'
 import Vuex from "vuex";
-import store from "./vuex/store";
+import store from './store'
 import jQuery from "jquery";
 import "./assets/js/jquery-ui.min.js";
 import * as filters from "./filters";
@@ -28,8 +27,6 @@ import '../node_modules/bootstrap/dist/js/bootstrap.min.js';
 import '@/permission' // permission control
 Vue.config.productionTip = false;
 // axios.defaults.withCredentials = true
-Vue.prototype.$dao = dao;
-Vue.prototype.$util = util;
 Vue.prototype.$zrender = zrender;
 Vue.use(Viewer);
 Viewer.setDefaults({

+ 1 - 1
src/pages/Home.vue

@@ -7,7 +7,7 @@
           <div class="main_header_user">
             <el-dropdown @command="handleCommand">
               <div class="el-dropdown-link" style="position: relative;cursor: pointer;">
-                <span style="margin-right:30px; font-size: .14rem;"> {{getUser.name}} </span>
+                <span style="margin-right:30px; font-size: .14rem;"> {{name}} </span>
                 <i class="el-icon-caret-right"></i>
                <span class="out">退出</span>
               </div>

+ 32 - 121
src/pages/Login.vue

@@ -5,12 +5,13 @@
     </div>
     <div class="log-container">
       <img class="log-icon" src="../assets/img/log.png">
-      <div class="log-text">欢迎登陆私塾家知识管理后台登陆页</div>
-      <div  @click="WxLogin" class="log-qrcode">
-        <img class="log-qrcode-image" src="../assets/img/ssj_qrcode.png">
+      <div class="log-text">欢迎登陆私塾家在线人员管理后台</div>
+      <div @click="WxLogin" class="log-qrcode">
+        <div id="login_container"></div>
+        <!-- <img class="log-qrcode-image" src="../assets/img/ssj_qrcode.png"> -->
         <div class="log-qrcode-text">请使用微信扫码登陆</div>
       </div>
-    </div> 
+    </div>
   </div>
 </template>
 
@@ -22,135 +23,40 @@
 export default {
   name: "login",
   data() {
-    return {
+    return {};
+  },
+   watch:{
+  },
+  created() {
+    // debugger
+  },
+  methods: {
+    WxLogin() {
+      // this.$util.messageMethod("success", "前去微信登陆扫码授权");
+       this.$router.push({path: '/aikmt/Redirect_uri', query: {code: "081nx4K50HDkED1WgLI50InQJ50nx4Kb",prince: "6666666666666"}});
+    }
+  },
+  mounted() {
+    var obj = new WxLogin({
+      self_redirect: false,
       id: "login_container",
       appid: "wx90d07ffb3ef03fc3",
       scope: "snsapi_login",
       redirect_uri: encodeURI(
-    // "https://t.sharingschool.com/aikmt/Redirect_uri"
-    "https://t.sharingschool.com/upload/ceshi/index.html"
-    // "https://t.sharingschool.com/upload/ceshi/index.html#/aikmt/redirect_uri"
+        "https://kmt.sharingschool.com/aijia/index.html#/aikmt/Redirect_uri"
+        // "https://t.sharingschool.com/upload/ceshi/index.html"
       ),
-      // redirect_uri: encodeURI("https://localhost:8080/kmt/login/wxlogin/scanlogin"),
       state: "",
       style: "width: 250px",
       href: ""
-    };
-  },
-  created() {
-      // this.wxlog()
-    // this.getTKByCode()
-    // debugger
-  },
-  methods: {
-    WxLogin(){
-       this.$util.messageMethod("success", "前去微信登陆扫码授权");
-        this.wxlog()
-      //  this.$router.push({path: '/aikmt/Redirect_uri', query: {code: "081nx4K50HDkED1WgLI50InQJ50nx4Kb",prince: "6666666666666"}});
-    },
-async getTKByCode(){
-     if (window.location.href.indexOf('code') >= 0) {
-        // 如果url中包含code,则保存到store中
-        let code = window.location.href.split("?")[1];
-        code = code.substring(5, code.indexOf('&'));
-        let WxCode = {code: code}
-          let res = await this.$dao.appDao.dataSource.getTokens(WxCode);
-        console.log(11235345647646)
-          let data = res.data;
-          console.log(code)
-        if (data.code === "000") {
-         this.$util.messageMethod("warning", data.msg);
-            localStorage.setItem("currentUser_token",data.data);
-              this.$router.push("/home/homeWork_approval");
-          this.$router.push("/");
-        }
-         if (data.code === "999") {
-         this.$util.messageMethod("success", data.msg);
-          this.$router.push("/home/homeWork_approval");
-          localStorage.setItem("currentUser_token",data.data);
-         }
-      }
-	},
-	wxlog() {
-      const appid = this.appid;
-      console.log(appid)
-      this.url =
-        "https://open.weixin.qq.com/connect/qrconnect?appid=" +
-        appid +
-        "&redirect_uri=" +
-        this.redirect_uri +
-        "&response_type=code&scope=snsapi_login#wechat_redirect";
-         window.location = this.url;
-      /*************************************************************/
-      // if (sessionStorage.getItem("currentUser_token")) {
-      //   this.login();
-      //   // 如果sessionStorage中有userid,执行login
-      // } else if (this.$store.state.code) {
-      //   // 如果只是有code
-      //   let _self = this;
-      //   console.log(_self);
-      //   // 发请求,用code换token
-      //   this.$axios({
-      //     method: "post",
-      //     url: this.baseURL + "/login",
-      //     data: {
-      //       code: this.$store.state.code
-      //     }
-      //   })
-      //     .then(function(response) {
-      //       // token和登录状态先保存在sessionStorage里
-      //       sessionStorage.setItem("token", response.data.token);
-      //       sessionStorage.setItem("userid", response.data.userid);
-      //     })
-      //     .catch(function(error) {
-      //       console.log(error);
-      //     });
-      // } else {
-      //   let self = this;
-      //   if (self && !self._isDestroyed) {
-      //     // 如果失败了还是弹二维码
-      //     window.location = self.url;
-      //   }
-      // }
-    }
-    //  账号管理、退出登录
-//    login() {
-//         let userid = {'userid': sessionStorage.getItem("userid")};
-//         //token放到header里,一定要加Bearer空格
-//         this.$axios.defaults.headers.common['Authorization'] = 'Bearer ' + sessionStorage.getItem("token");
-//         console.log('axios headers Authorization set!');
-//         let _self = this;
-//         //登录请求
-//         this.$axios({
-//           method: 'get',
-//           url: this.baseURL + "xxx",//向后端请求的地址
-//           data: {
-//             userid: sessionStorage.getItem("userid")
-//           }
-//         })
-//         .then(response => {
-//           if(response.status==200){
-//             _self.$store.state.user = response;
-//             _self.$router.push('/');
-//             beforeLoginUrl+_self.$store.state.adminNav);
-//           } else{
-//             if(sessionStorage.getItem("userid")){
-//               window.location = _self.url;
-//             }
-//           }
-//         })
-//         .catch(function(error){
-//           console.log(error);
-//           window.location = _self.url;
-//         })
-  },
-  mounted() {}
+    });
+  }
 };
 </script>
 
 <style scoped>
 body {
-  background-image: url(../assets/img/Land_bg.png);
+  /* background-image: url(../assets/img/Land_bg.png); */
   background-size: 100% auto;
 }
 .container {
@@ -201,7 +107,12 @@ body {
   margin: 5% 10%;
 }
 .log-qrcode-image {
-  width: 80%;
+  width: 100%;
+}
+*,
+::after,
+::before {
+  box-sizing: content-box;
 }
 .log-qrcode-text {
   margin-top: 1.5rem;

+ 4 - 63
src/pages/aikmt/Redirect_uri.vue

@@ -23,17 +23,6 @@ export default {
   name: "login",
   data() {
     return {
-      id: "login_container",
-      appid: "wx90d07ffb3ef03fc3",
-      scope: "snsapi_login",
-      redirect_uri: encodeURI(
-		"https://t.sharingschool.com/kmt/login/wxlogin/scanlogin"
-		// "http://localhost:8888"
-      ),
-      // redirect_uri: encodeURI("https://localhost:8080/kmt/login/wxlogin/scanlogin"),
-      state: "",
-      style: "width: 250px",
-      href: ""
     };
   },
   created() {
@@ -47,60 +36,12 @@ export default {
         let code = window.location.href.split("?")[1];
         code = code.substring(5, code.indexOf('&'));
         let WxCode = {code: code}
-          let res = await this.$dao.appDao.dataSource.getTokens(WxCode);
-        console.log(11235345647646)
-          let data = res.data;
-          console.log(code)
-        if (data.code === "000") {
-         this.$util.messageMethod("warning", data.msg);
-            localStorage.setItem("currentUser_token",data.data);
-              this.$router.push("/home/homeWork_approval");
-          // this.$router.push("/");
-        }
-         if (data.code === "999") {
-         this.$util.messageMethod("success", data.msg);
-          this.$router.push("/home/homeWork_approval");
-          localStorage.setItem("currentUser_token",data.data);
-         }
       }
-      //  let WXcode = {
-      //    code: "081nx4K50HDkED1WgLI50InQJ50nx4Kb"
-      // };
-        // else {
-        //      this.$util.messageMethod("error", "登陆异常");
-        // //   this.$router.push("/");
-        // }
+      debugger
+           this.$store.dispatch('GET_TOKEN', {
+             code: "081nx4K50HDkED1WgLI50InQJ50nx4Kb"
+        });
 	}
-    //  账号管理、退出登录
-//    login() {
-//         let userid = {'userid': sessionStorage.getItem("userid")};
-//         //token放到header里,一定要加Bearer空格
-//         this.$axios.defaults.headers.common['Authorization'] = 'Bearer ' + sessionStorage.getItem("token");
-//         console.log('axios headers Authorization set!');
-//         let _self = this;
-//         //登录请求
-//         this.$axios({
-//           method: 'get',
-//           url: this.baseURL + "xxx",//向后端请求的地址
-//           data: {
-//             userid: sessionStorage.getItem("userid")
-//           }
-//         })
-//         .then(response => {
-//           if(response.status==200){
-//             _self.$store.state.user = response;
-//             _self.$router.push('/');
-//             beforeLoginUrl+_self.$store.state.adminNav);
-//           } else{
-//             if(sessionStorage.getItem("userid")){
-//               window.location = _self.url;
-//             }
-//           }
-//         })
-//         .catch(function(error){
-//           console.log(error);
-//           window.location = _self.url;
-//         })
   },
   mounted() {}
 };

+ 7 - 3
src/router/index.js

@@ -39,17 +39,21 @@ export const constantRouterMap =
         {
           path: "SchoolManager",
           name: "SchoolManager",
-          component: SchoolManager
+          component: SchoolManager,
+          meta: { title: '校区管理员', roles: ['3'] }
         },
         {
           path: "TeacherApporval",
           name: "TeacherApporval",
-          component: TeacherApporval
+          component: TeacherApporval,
+          meta: { title: '教师审核', roles: ['1'] }
+
         },
          {
           path: "TeacherPay",
           name: "TeacherPay",
-          component: TeacherPay
+          component: TeacherPay,
+          meta: { title: '教师薪酬管理', roles: ['1'] }
         },
         {
           path: "*",

+ 10 - 0
src/store/getters.js

@@ -0,0 +1,10 @@
+const getters = {
+  language: state => state.app.language,
+  token: state => state.user.token,
+  name: state => state.user.name,
+  avatar: state => state.user.avatar,
+  routers: state => state.permission.routers,
+  addRouters: state => state.permission.addRouters,
+  roles: state => state.user.roles
+}
+export default getters

+ 20 - 0
src/store/index.js

@@ -0,0 +1,20 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+import axios from '@/axios'
+import app from './modules/app'
+import user from './modules/user'
+import getters from './getters'
+import permission from './modules/permission'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+  modules: {
+    app,
+    user,
+    permission
+  },
+  getters
+})
+
+export default store

+ 20 - 0
src/store/modules/app.js

@@ -0,0 +1,20 @@
+import Cookies from 'js-cookie'
+
+const app = {
+  state: {
+    language: Cookies.get('language') || 'en'
+  },
+  mutations: {
+    SET_LANGUAGE: (state, language) => {
+      state.language = language
+      Cookies.set('language', language)
+    }
+  },
+  actions: {
+    setLanguage({ commit }, language) {
+      commit('SET_LANGUAGE', language)
+    }
+  }
+}
+
+export default app

src/vuex/modules/permission.js → src/store/modules/permission.js


+ 94 - 0
src/store/modules/user.js

@@ -0,0 +1,94 @@
+import { LOGIN,GET_TOKEN } from '@/api'
+import { getToken, setToken, removeToken } from '@/utils/auth'
+import axios from '@/axios'
+const user = {
+  state: {
+    token: getToken(),
+    name: '',
+    avatar: '',
+    roles: []
+  },
+
+  mutations: {
+    SET_TOKEN: (state, token) => {
+      state.token = token
+    },
+    SET_NAME: (state, name) => {
+      state.name = name
+    },
+    SET_AVATAR: (state, avatar) => {
+      state.avatar = avatar
+    },
+    SET_ROLES: (state, roles) => {
+      state.roles = roles
+    }
+  },
+
+  actions: {
+    // 登录
+    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)
+        })
+      })
+    },
+       //获取TOKEN
+       GET_TOKEN({ state, commit }, data) {
+        console.log(data);
+        axios.post(GET_TOKEN, data).then(res => {
+          if (res && res.code == '999') {
+            commit('SET_TOKEN', data.data);
+          this.$router.push("/home");
+          } else {
+            this.$router.push("/");
+          }
+        })
+      },
+    // 获取用户信息
+    GetInfo({ commit, state }) {
+      return new Promise((resolve, reject) => {
+        getInfo(state.token).then(response => {
+          const data = response.data
+          commit('SET_ROLES', data.roles)
+          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)
+    //     })
+    //   })
+    // },
+
+    // 前端 登出
+    FedLogOut({ commit }) {
+      return new Promise(resolve => {
+        commit('SET_TOKEN', '')
+        removeToken()
+        resolve()
+      })
+    }
+  }
+}
+
+export default user

+ 0 - 35
src/vuex/actions.js

@@ -1,35 +0,0 @@
-// 存
-
-// 学生作业列表
-export const setSetStudentsList = ({commit}, data) => {
-  // debugger
-  commit('setStudentsListInfo', data)
-}
-export const setActSubjectIndex = ({commit}, data) => {
-  // debugger
-  commit('setActSubjectIndex', data)
-}
-export const setActImageIndex = ({commit}, data) => {
-  // debugger
-  commit('setActImageIndex', data)
-}
-export const setActVipIndex = ({commit}, data) => {
-  // debugger
-  commit('setActVipIndex', data)
-}
-export const SetSAlltudentsList = ({commit}, data) => {
-  // debugger
-  commit('setAllStudentsLists', data)
-}
-export const setUser = ({commit}, data) => {
-  commit('setUserInfo', data)
-}
-export const setPageIndex = ({commit}, data) => {
-  commit('setPageIndexInfo', data)
-}
-export const setFlowNavH = ({commit}, data) => {
-  commit('setFlowNavHInfo', data)
-}
-export const setActvLoading = ({commit}, data) => {
-  commit('setActvLoadingInfo', data)
-}

+ 0 - 13
src/vuex/getters.js

@@ -1,13 +0,0 @@
-const getters = {
-  getAllStudentsList: state => state.homeworks, 
-  getStudentsList: state => state.studentsList, //学生作业列表
-  getUser: state => state.user,
-  getPageIndex: state => state.pageIndex,
-  getDict: state => state.dict,
-  getPagePermissions: state => state.pagePermissions,
-  getName: state => state.app.name,
-  GetAllStudentsX: state => state.homeworks.actSubjectIndex,
-  GetAllStudentsY: state => state.homeworks.actVipIndex, 
-};
-
-export default getters;

+ 0 - 18
src/vuex/modules/app.js

@@ -1,18 +0,0 @@
-const app = {
-  state: { name: null },
-  mutations: {
-    SET_NAME: (state, data) => {
-      state.name = data;
-    }
-  },
-  actions: {
-    setName({ commit }, data) {
-      commit("SET_NAME", data);
-    },
-    async setNameSync({ commit }, data) {
-      await 2;
-      commit("SET_NAME", data);
-    }
-  }
-};
-export default app;

+ 0 - 62
src/vuex/modules/flow.js

@@ -1,62 +0,0 @@
-const folw = {
-  state: {
-    name: "",
-    show: "",
-    flows: [],
-    activeFlow: {},
-    studentsList: {}, //获取学生作业列表
-  },
-  mutations: {
-    // 初始化 state
-    INIT_STORE(state, data) {
-      state.flows = data.flows;
-      state.show = data.show;
-      state.activeFlow = data.activeFlow;
-      state.studentsList = data.studentsList;
-    },
-    // 新增活动
-    NEW_FLOW(state, data) {
-      var newFlow = {
-        id: +new Date(),
-        title: "",
-        content: "",
-        favorite: false
-      };
-      state.flows.push(newFlow);
-      state.activeFlow = newFlow;
-    },
-    // 修改活动
-    EDIT_FLOW(state, flow) {
-      state.activeFlow = flow;
-      // 修改原始数据
-      for (let i = 0; i < state.flows.length; i++) {
-        if (state.flows[i].id === flow.id) {
-          state.flows[i] = flow;
-          break;
-        }
-      }
-    },
-    // 删除活动
-    DELETE_FLOW(state) {
-      state.flows.$remove(state.activeFlow);
-      state.activeFlow = state.flows[0] || {};
-    },
-    // 设置当前激活的活动
-    SET_ACTIVE_FLOW(state, flow) {
-      state.activeFlow = flow;
-    },
-    SET_FLOWNAME: (state, data) => {
-      state.name = data;
-    }
-  },
-  actions: {
-    setFlowName({ commit }, data) {
-      commit("SET_FLOWNAME", data);
-    },
-    async setFlowNameSync({ commit }, data) {
-      await "异步请求等";
-      commit("SET_FLOWNAME", data);
-    }
-  }
-};
-export default folw;

+ 0 - 81
src/vuex/store.js

@@ -1,81 +0,0 @@
-import Vue from "vue";
-import Vuex from "vuex";
-import * as actions from "./actions";
-import getters from "./getters";
-import app from "./modules/app";
-import flow from "./modules/flow";
-import permission from './modules/permission'
-Vue.use(Vuex);
-
-// 应用初始状态
-const state = {
-  token:'',
-  homeworks: {
-    actSubjectIndex: 0,
-    actVipIndex: 0,
-    actImageIndex: 0,
-    list: []
-},
-  AllstudentmenuList:{},
-  studentsList: {},
-  pagePermissions: {}, // 页面权限
-  user: JSON.parse(sessionStorage.user || "{}"), // 用户信息
-  pageIndex: 0, // 活动当前页面index
-  dict: {} // 活动字典表
-}
-
-// const state = JSON.parse(JSON.stringify(stateObj));
-
-// 定义所需的 mutations
-const mutations = {
-  setUserInfo(state, data) {
-    state.user = data;
-    sessionStorage.user = JSON.stringify(data);
-  },
-  setKoken(state, data) {
-    state.token = data;
-    sessionStorage.token = data;
-  },
-  del_token(state) {
-    state.token = ''
-    sessionStorage.removeItem('token')
-    },
-  setPageIndexInfo(state, data) {
-    state.pageIndex = data;
-    sessionStorage.pageIndex = data;
-  },
-  setDictInfo(state, data) {
-    state.dict = data;
-  },
-  setPagePermissionsInfo(state, data) {
-    state.pagePermissions = data;
-  },
-  setAllStudentsLists(state, data) {
-    state.homeworks.list = data;
-  },
-  setActSubjectIndex(state, data) {
-    state.homeworks.actSubjectIndex = data;
-  },
-  setActVipIndex(state, data) {
-    state.homeworks.actVipIndex = data;
-  },
-  setActImageIndex(state, data) {
-    state.homeworks.actImageIndex = data;
-  },
-  setStudentsListInfo(state, data) {
-    state.studentsList = data;
-  }
-};
-
-// 创建 store 实例
-export default new Vuex.Store({
-  actions,
-  getters,
-  state,
-  mutations,
-  modules: {
-    app,
-    flow,
-    permission
-  }
-});