\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0389cb11&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0389cb11&prod&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\r\n * account模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst account = {\r\n // 判断用户名或者手机号是否重复\r\n existPhone (params) {\r\n return axios.post('/api/ManageAccount/existPhone', params)\r\n },\r\n // 登录\r\n login (params) {\r\n return axios.post('/api/token', params)\r\n // return axios.post('/token', JSON.stringify(params), { headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } })\r\n },\r\n // 注册\r\n register (params) {\r\n return axios.post('/api/ManageAccount/register', params)\r\n },\r\n // 找回密码\r\n resetPwd (params) {\r\n return axios.post('/api/ManageAccount/ResetPwd', params)\r\n },\r\n // 修改密码\r\n updatePwd (params) {\r\n return axios.post('/api/ManageAccount/UpdatePwd', params)\r\n },\r\n // 绑定微信\r\n bindWeChat (params) {\r\n return axios.post('/api/ManageAccount/BindWeChat', params)\r\n },\r\n // 获取微信access_token\r\n weChatAccessToken (params) {\r\n return axios.post('/api/ManageAccount/WeChatAccessToken', params)\r\n },\r\n // 注销账户\r\n cancelAccountByPhone (params) {\r\n return axios.post('/api/ManageAccount/CancelAccountByPhone', params)\r\n },\r\n // 绑定微信\r\n cancelAccountByWeChat (params) {\r\n return axios.post('/api/ManageAccount/CancelAccountByWeChat', params)\r\n }\r\n}\r\n\r\nexport default account\r\n","/**\r\n * userInfo模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst userInfo = {\r\n // 获取当前登录用户信息\r\n getCurrentUserInfo () {\r\n return axios.get('/api/userInfo/getCurrentUserInfo')\r\n },\r\n // 获取当前登录用户角色1、系统管理员 2、企业管理员 3、会议发起人 4、会议参与人\r\n getCurrentUserRole () {\r\n return axios.get('/api/userInfo/GetCurrentUserRole')\r\n },\r\n // 管理页面个人资料\r\n getManagerUserDetail () {\r\n return axios.get('/api/userInfo/GetManagerUserDetail')\r\n },\r\n editPersonalInfo (params) {\r\n return axios.post('/api/userInfo/editPersonalInfo', params)\r\n },\r\n // 管理页面用户列表\r\n getUserList (params) {\r\n return axios.get('/api/userInfo/GetUserList', { params })\r\n },\r\n // 获取用户信息(用户管理编辑)\r\n getUserInfo (params) {\r\n return axios.get('/api/userInfo/GetUserInfo', { params })\r\n },\r\n // 获取用户信息(用户管理编辑)\r\n editUserInfo (params) {\r\n return axios.post('/api/userInfo/EditUserInfo', params)\r\n },\r\n // 根据用户ID查询用户角色集合\r\n getUserRoleIds (params) {\r\n return axios.get('/api/userInfo/GetUserRoleIds', { params })\r\n },\r\n // 设置角色\r\n editUserRole (params) {\r\n return axios.post('/api/userInfo/EditUserRole', params)\r\n },\r\n // 重置用户密码\r\n resetUserPwd (params) {\r\n return axios.post('/api/userInfo/ResetUserPwd', params)\r\n },\r\n // 删除用户\r\n deleteUser (params) {\r\n return axios.delete('/api/userInfo/DeleteUser', { params })\r\n },\r\n // 删除用户(批量)\r\n batchDeleteUsers (params) {\r\n return axios.post('/api/userInfo/BatchDeleteUsers', params)\r\n }\r\n}\r\n\r\nexport default userInfo\r\n","/**\r\n * moneyUsering模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst moneyUsering = {\r\n // 扣减费用(次数)\r\n addMoneyUsering (params) {\r\n return axios.post('/api/moneyUsering/addMoneyUsering', params)\r\n },\r\n // 获取用户剩余费用信息\r\n getUserMoneyBalanceInfo () {\r\n return axios.get('/api/moneyUsering/getUserMoneyBalanceInfo')\r\n },\r\n // 购买纪录\r\n getGetMoneyOrders (params) {\r\n return axios.get('/api/moneyUsering/GetGetMoneyOrders', { params })\r\n },\r\n // 使用纪录\r\n getMoneyUseringList (params) {\r\n return axios.get('/api/moneyUsering/GetMoneyUseringList', { params })\r\n },\r\n // 判断用户余额表是否存在当前公司,如果没有初始化信息\r\n initializeMoney () {\r\n return axios.post('/api/moneyUsering/InitializeMoney')\r\n },\r\n // 获取出售产品信息\r\n getProductList () {\r\n return axios.get('/api/moneyUsering/GetProductList')\r\n },\r\n // 调用支付宝充值\r\n alipayPayment (params) {\r\n return axios.post('/api/moneyUsering/AlipayPayment', params)\r\n },\r\n // 管理员充值\r\n adminRecharge (params) {\r\n return axios.post('/api/moneyUsering/AdminRecharge', params)\r\n }\r\n}\r\n\r\nexport default moneyUsering\r\n","/**\r\n * dictionary模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst dictionary = {\r\n // 获取字典\r\n getDictionarys (params) {\r\n return axios.get('/api/dictionary/getDictionarys', { params })\r\n }\r\n}\r\n\r\nexport default dictionary\r\n","/**\r\n * role模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst role = {\r\n // 获取角色列表\r\n getRoles () {\r\n return axios.get('/api/Role/GetRoles')\r\n },\r\n // 获取角色列表\r\n getRolesByNoSystem () {\r\n return axios.get('/api/Role/GetRolesByNoSystem')\r\n },\r\n getIsCompanySystem () {\r\n return axios.get('/api/Role/GetIsCompanySystem')\r\n }\r\n}\r\n\r\nexport default role\r\n","/**\r\n * api接口的统一出口\r\n */\r\n\r\nimport account from './account' // 账户相关接口\r\nimport verificationCode from './verificationCode' // 验证码相关接口\r\nimport userInfo from './userInfo' // userInfo用户信息模块接口列表\r\nimport meetingManage from './meetingManage' // meetingManage会议管理模块接口列表\r\nimport moneyUsering from './moneyUsering' // moneyUsering费用管理模块接口列表\r\nimport dictionary from './dictionary' // dictionary接口列表\r\nimport role from './role' // role接口列表\r\n\r\n// 导出接口\r\nexport default {\r\n account,\r\n verificationCode,\r\n userInfo,\r\n meetingManage,\r\n moneyUsering,\r\n dictionary,\r\n role\r\n}\r\n","// 本地测试\r\n// const baseSite = 'http://192.168.81.145:81'\r\n// const host = '192.168.81.145:81'\r\n// const baseSite = 'https://szwx-miniapps.suizhi.com/cec/ms'\r\n// const host = 'szwx-miniapps.suizhi.com/cec/ms'\r\n// const wxloginRedirectUri = encodeURIComponent('https://szwx-miniapps.suizhi.com/cec/vw/#/login/signIn')\r\n// const wxBindRedirectUri = encodeURIComponent('https://szwx-miniapps.suizhi.com/cec/vw/#/personal')\r\n// 开发测试\r\n// const baseSite = 'http://localhost:54782'\r\n// const host = '192.168.81.145:54782'\r\n// const wxloginRedirectUri = encodeURIComponent('https://szwx-miniapps.suizhi.com/cec/vw/#/login/signIn')\r\n// const wxBindRedirectUri = encodeURIComponent('https://szwx-miniapps.suizhi.com/cec/vw/#/personal')\r\n// 生产环境\r\nconst baseSite = 'https://kaihui.suizhi.com/ms'\r\nconst host = 'kaihui.suizhi.com'\r\nconst wxloginRedirectUri = encodeURIComponent('https://kaihui.suizhi.com/v/#/login/signIn')\r\nconst wxBindRedirectUri = encodeURIComponent('https://kaihui.suizhi.com/v/#/personal')\r\nconst wxCancelAccountRedirectUri = encodeURIComponent('https://kaihui.suizhi.com/v/#/cancelAccount')\r\nconst wxAppId = 'wxf3075ddb72d28f9b'\r\nconst wxSnsapiLogin = 'snsapi_login'\r\nconst loadingText = '拼命加载中'\r\nconst loadingSpinner = 'el-icon-loading'\r\nconst loadingBackground = 'rgba(255, 255, 255, .8)'\r\nconst enableVote = true\r\nconst enableWJ = true\r\n\r\nexport default {\r\n baseSite,\r\n host,\r\n wxloginRedirectUri,\r\n wxBindRedirectUri,\r\n wxCancelAccountRedirectUri,\r\n wxAppId,\r\n wxSnsapiLogin,\r\n loadingText,\r\n loadingSpinner,\r\n loadingBackground,\r\n enableVote,\r\n enableWJ\r\n}\r\n","import Vue from 'vue'\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css'\r\nimport 'element-ui/lib/theme-chalk/display.css'\r\nimport CollapseTransition from 'element-ui/lib/transitions/collapse-transition'\r\n// import './assets/css/theme_default.less'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport api from './api'\r\nimport moment from 'moment'\r\nimport 'moment/locale/zh-cn'\r\nimport './assets/css/iconFont/iconfont.js'\r\nimport './assets/css/iconFont/icon.css'\r\nimport './assets/css/theme_light.less'\r\nimport './assets/css/iconFont/iconfont.css'\r\nimport config from '../public/js/config'\r\nimport VueClipboard from 'vue-clipboard2'\r\nimport Fragment from 'vue-fragment'\r\n\r\nVue.config.productionTip = false\r\nVue.use(ElementUI, { size: 'small', zIndex: 2000 })\r\nVue.component(CollapseTransition.name, CollapseTransition)\r\nmoment.locale('zh-cn') // 使用中文时间\r\nVue.prototype.$moment = moment\r\nVue.prototype.$api = api\r\nVue.prototype.$config = config\r\nVue.use(VueClipboard)\r\nVue.use(Fragment.Plugin)\r\n\r\nVue.filter('dateformat', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {\r\n return moment(dataStr).format(pattern)\r\n})\r\n\r\nVue.prototype.openLoading = function (message, target) {\r\n const loading = this.$loading({ // 声明一个loading对象\r\n lock: true, // 是否锁屏\r\n text: message || '拼命加载中', // 加载动画的文字\r\n spinner: 'el-icon-loading', // 引入的loading图标\r\n background: 'rgba(0, 0, 0, 0.6)', // 背景颜色\r\n body: true,\r\n target: target || document.body,\r\n customClass: 'el-loading-mask' // 遮罩层新增类名\r\n })\r\n return loading\r\n}\r\nVue.prototype.is_xs = window.innerWidth < 768\r\nVue.prototype.is_sm = window.innerWidth >= 768 && window.innerWidth < 992\r\nVue.prototype.is_md = window.innerWidth >= 992 && window.innerWidth < 1200\r\nVue.prototype.is_lg = window.innerWidth >= 1200 && window.innerWidth < 1920\r\nVue.prototype.is_xl = window.innerWidth >= 1920\r\n\r\n// router.beforeEach((to, from, next) => {\r\n// /* 路由发生变化修改页面title */\r\n// if (to.meta.title) {\r\n// document.title = to.meta.title\r\n// }\r\n// next()\r\n// })\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App)\r\n// mounted () {\r\n// // You'll need this for renderAfterDocumentEvent.\r\n// document.dispatchEvent(new window.Event('render-event'))\r\n// }\r\n}).$mount('#app')\r\n","// import Vue from 'vue'\r\nimport axios from 'axios'\r\nimport router from '../../router'\r\nimport store from '../../store/index'\r\n// import ElementUI from 'element-ui'\r\nimport { Message } from 'element-ui'\r\n// import 'element-ui/lib/theme-chalk/index.css'\r\n\r\n// Vue.use(ElementUI, { size: 'small', zIndex: 2000 })\r\n// Vue.prototype.$message = Message\r\n// 创建axios实例\r\nvar instance = axios.create({ timeout: 1000 * 60 * 3 })\r\n// axios.defaults.timeout = 10000 // 响应时间\r\n\r\n// 设置post请求头\r\n// instance.defaults.headers.post['Content-Type'] = 'application/json'\r\ninstance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' // 配置\r\n\r\n/**\r\n * 提示函数\r\n * 禁止点击蒙层、显示一秒后关闭\r\n */\r\n// const messageWarningTip = msg => {\r\n// Message.warning({ showClose: true, message: msg })\r\n// }\r\n\r\nconst messageErrorTip = msg => {\r\n Message.error({\r\n showClose: true,\r\n message: msg,\r\n dangerouslyUseHTMLString: true,\r\n customClass: 'custom_message'\r\n })\r\n}\r\n\r\nconst messageWarningTip = msg => {\r\n Message.warning({\r\n showClose: true,\r\n message: msg,\r\n dangerouslyUseHTMLString: true,\r\n customClass: 'custom_message'\r\n })\r\n}\r\n\r\n/**\r\n * 跳转登录页\r\n * 携带当前页面路由,以期在登录页面完成登录后返回当前页面\r\n */\r\nconst toLogin = () => {\r\n router.push({\r\n name: 'login', params: { loginType: 'signIn' }, query: { redirect: router.currentRoute.fullPath }\r\n })\r\n}\r\n\r\n// http request 请求拦截器\r\ninstance.interceptors.request.use((config) => {\r\n // let token = window.localStorage.getItem('token')\r\n const token = store.state.token\r\n // 在发送请求之前做些什么,加入token\r\n // 判断是否存在token,如果存在的话,则每个http header都加上token\r\n if (token) {\r\n // config.headers.Authorization = token\r\n config.headers.common.Authorization = 'Bearer ' + token\r\n // config.headers.common['Authorization'] = 'Bearer ' + token\r\n }\r\n return config\r\n}, function (error) {\r\n // 对请求错误做些什么\r\n return Promise.reject(error)\r\n})\r\n\r\n// http response 响应拦截器\r\ninstance.interceptors.response.use(response => {\r\n // return response\r\n // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据\r\n // 否则的话抛出错误\r\n if (response.status === 200 || response.status === 204) {\r\n return Promise.resolve(response.data)\r\n } else {\r\n return Promise.reject(response.data)\r\n }\r\n},\r\nerror => {\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case 401:\r\n // 401: 未登录\r\n // 未登录则清除token信息并跳转到登录页面,并携带当前页面的路径\r\n // 在登录成功后返回当前页面,返回需要在登录页操作\r\n messageErrorTip('检测到无授权访问,请先登录')\r\n // store.commit('REMOVE_ACCOUNT')\r\n toLogin()\r\n break\r\n\r\n case 403:\r\n messageErrorTip('服务器拒绝处理,请联系管理员')\r\n // 清除token\r\n // localStorage.removeItem('token')\r\n // store.commit('REMOVE_ACCOUNT')\r\n // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面\r\n // setTimeout(() => {\r\n // toLogin()\r\n // }, 1000)\r\n break\r\n\r\n // 404请求不存在\r\n case 404:\r\n messageErrorTip('请求的资源不存在')\r\n break\r\n // 601后台自定义信息\r\n case 601:\r\n messageWarningTip(error.response.data)\r\n break\r\n // 602后台验证信息\r\n case 602:\r\n messageWarningTip(error.response.data.Message)\r\n break\r\n default:\r\n if (error.response) {\r\n if (error.response.statusText === 'customError') {\r\n messageWarningTip(error.response.data)\r\n } else if (error.response.statusText === 'modelStateError') {\r\n messageWarningTip(error.response.data.Message)\r\n } else if (error.response.data) {\r\n if (error.response.data.error && error.response.data.error === 'invalid_grant') {\r\n messageErrorTip(error.response.data.error_description)\r\n } else {\r\n if (error.response.status === 400) {\r\n messageWarningTip(error.response.data.Message)\r\n } else {\r\n messageErrorTip('请求错误,请联系客服')\r\n }\r\n }\r\n } else {\r\n messageErrorTip('请求错误,请联系客服')\r\n }\r\n } else {\r\n messageErrorTip('请求错误,请联系客服')\r\n }\r\n }\r\n return Promise.reject(error.response) // 返回接口返回的错误信息\r\n } else {\r\n // 处理断网的情况\r\n // eg:请求超时或断网时,更新state的network状态\r\n // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏\r\n // 关于断网组件中的刷新重新获取数据,会在断网组件中说明\r\n // store.commit('changeNetwork', false);\r\n messageErrorTip('系统开小差了,请稍后再试')\r\n window.console.log(error)\r\n return Promise.reject(error.response)\r\n }\r\n})\r\n\r\nexport default instance\r\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport { Message } from 'element-ui'\r\n\r\nVue.use(VueRouter)\r\n\r\n// const messageErrorTip = msg => {\r\n// Message.error({\r\n// showClose: true,\r\n// message: msg,\r\n// dangerouslyUseHTMLString: true,\r\n// customClass: 'custom_message'\r\n// })\r\n// }\r\n\r\nconst messageWarningTip = msg => {\r\n Message.warning({\r\n showClose: true,\r\n message: msg,\r\n dangerouslyUseHTMLString: true,\r\n customClass: 'custom_message'\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/main',\r\n name: 'main',\r\n component: () => import('../views/Main.vue'),\r\n meta: { requiresAuth: true, title: '企业投票云服务', role: 'user' },\r\n children: [\r\n // 会议/活动\r\n {\r\n path: '/meetingList',\r\n name: 'meetingList',\r\n component: () => import('../views/main/meeting/Index.vue'),\r\n meta: { title: '会议/活动' }\r\n },\r\n // 个人资料\r\n {\r\n path: '/personal',\r\n name: 'personal',\r\n component: () => import('../views/main/personal/Index.vue'),\r\n meta: { title: '个人资料' },\r\n children: [\r\n {\r\n path: '/personal/moneyOrders',\r\n name: 'moneyOrders',\r\n component: () => import('../views/main/personal/MoneyOrders.vue'),\r\n meta: { title: '购买纪录' }\r\n },\r\n {\r\n path: '/personal/moneyUsering',\r\n name: 'moneyUsering',\r\n component: () => import('../views/main/personal/MoneyUsering.vue'),\r\n meta: { title: '使用纪录' }\r\n },\r\n {\r\n path: '/personal/userManage',\r\n name: 'userManage',\r\n component: () => import('../views/main/personal/UserManage.vue'),\r\n meta: { title: '用户管理' }\r\n },\r\n {\r\n path: '/personal/recharge',\r\n name: 'recharge',\r\n component: () => import('../views/main/personal/Recharge.vue'),\r\n meta: { title: '充值' }\r\n }\r\n ]\r\n },\r\n // 充值中心\r\n {\r\n path: '/financial',\r\n name: 'financial',\r\n component: () => import('../views/main/financial/Index.vue'),\r\n meta: { title: '充值中心' }\r\n },\r\n // 充值回调\r\n {\r\n path: '/alipayReturn',\r\n name: 'alipayReturn',\r\n component: () => import('../views/main/financial/AlipayReturn.vue'),\r\n meta: { title: '充值中心' }\r\n },\r\n // 用户管理\r\n {\r\n path: '/user',\r\n name: 'user',\r\n component: () => import('../views/main/user/Index.vue'),\r\n meta: { title: '用户管理' }\r\n },\r\n // 公司管理\r\n {\r\n path: '/company',\r\n name: 'company',\r\n component: () => import('../views/main/user/Company.vue'),\r\n meta: { title: '公司管理' }\r\n },\r\n // 人员职位查询\r\n {\r\n path: '/userPostQuery',\r\n name: 'userPostQuery',\r\n component: () => import('../views/main/user/UserPostQuery.vue'),\r\n meta: { title: '人员职位查询' }\r\n },\r\n // 公司用户管理\r\n {\r\n path: '/companyUser/:cid',\r\n name: 'companyUser',\r\n component: () => import('../views/main/user/CompanyUser.vue'),\r\n meta: { title: '公司用户管理' }\r\n },\r\n // 注销账户\r\n {\r\n path: '/cancelAccount',\r\n name: 'cancelAccount',\r\n component: () => import('../views/main/CancelAccount.vue'),\r\n meta: { title: '帐号注销' }\r\n }\r\n ]\r\n },\r\n // 投票明细\r\n {\r\n path: '/voteDetail1/:mid/:vid/:s/:m',\r\n name: 'voteDetail1',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteDetail.vue'),\r\n meta: { title: '投票明细' }\r\n },\r\n {\r\n path: '/m',\r\n name: 'meeting',\r\n component: () => import(/* webpackChunkName: \"MeetingHome\" */ '../views/MeetingHome.vue'),\r\n meta: { requiresAuth: true, title: '会议/活动', role: 'user' },\r\n children: [\r\n // 基本信息\r\n {\r\n path: '/m/basic/:mid',\r\n name: 'meetingBasic',\r\n component: () => import('../views/meetingHome/basicInfo/Index.vue'),\r\n meta: { title: '基本信息' }\r\n },\r\n // 报名管理\r\n {\r\n path: '/m/userApplyManager/:mid',\r\n name: 'userApplyManager',\r\n component: () => import('../views/meetingHome/userApply/Index.vue'),\r\n meta: { title: '报名管理' }\r\n },\r\n // 发票信息\r\n {\r\n path: '/m/invoiceManager/:mid',\r\n name: 'invoiceManager',\r\n component: () => import('../views/meetingHome/invoice/InvoiceManager.vue'),\r\n meta: { title: '发票信息' }\r\n },\r\n // 参会回执信息\r\n {\r\n path: '/m/meetingReceipt/:mid',\r\n name: 'meetingReceipt',\r\n component: () => import('../views/meetingHome/meetingReceipt/MeetingReceipt.vue'),\r\n meta: { title: '参会回执信息' }\r\n },\r\n // 投票人员分组\r\n {\r\n path: '/m/voteUserGroup/:mid/:vid',\r\n name: 'voteUserGroup',\r\n component: () => import('../views/meetingHome/voteUser/UserGroupManager.vue'),\r\n meta: { title: '投票人员' }\r\n },\r\n // 投票人员\r\n {\r\n path: '/m/voteUser/:mid/:gid/:vid',\r\n name: 'voteUser',\r\n component: () => import('../views/meetingHome/voteUser/UserManager.vue'),\r\n meta: { title: '投票人员' }\r\n },\r\n // 待评项目\r\n {\r\n path: '/m/voteProjectGroup/:mid/:vid',\r\n name: 'voteProjectGroup',\r\n component: () => import('../views/meetingHome/voteProject/ProjectGroupManager.vue'),\r\n meta: { title: '待评项目' }\r\n },\r\n // 待评项目\r\n {\r\n path: '/m/voteProject/:mid/:gid/:vid',\r\n name: 'voteProject',\r\n component: () => import('../views/meetingHome/voteProject/ProjectManager.vue'),\r\n meta: { title: '待评项目' }\r\n },\r\n // 投票规则\r\n {\r\n path: '/m/voteRule/:mid',\r\n name: 'voteRule',\r\n component: () => import('../views/meetingHome/voteRule/Index.vue'),\r\n meta: { title: '投票规则' }\r\n },\r\n // 投票管理\r\n {\r\n path: '/m/vote/:mid',\r\n name: 'meetingVote',\r\n component: () => import('../views/meetingHome/vote/Index.vue'),\r\n meta: { title: '投票管理' }\r\n },\r\n // 投票监控\r\n {\r\n path: '/m/watchVote/:mid/:vid/:votetype',\r\n name: 'watchVote',\r\n component: () => import('../views/meetingHome/vote/watchVote/WatchVote.vue'),\r\n meta: { title: '投票监控' },\r\n children: [\r\n // 投票明细\r\n {\r\n path: '/m/watchVote/voteDetail/:mid/:vid/:votetype',\r\n name: 'voteDetail',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteDetail.vue'),\r\n meta: { title: '投票明细' }\r\n },\r\n // 投票明细\r\n {\r\n path: '/m/watchVote/voteDetails/:mid/:vid/:votetype',\r\n name: 'voteDetails',\r\n component: () => import('../views/meetingHome/vote/watchVote/voteDetails.vue'),\r\n meta: { title: '投票明细' }\r\n },\r\n // 打分投票明细\r\n {\r\n path: '/m/watchVote/voteScoreDetails/:mid/:vid/:votetype',\r\n name: 'voteScoreDetails',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteScoreDetails.vue'),\r\n meta: { title: '打分投票明细' }\r\n },\r\n // 投票结果\r\n {\r\n path: '/m/watchVote/voteResult/:mid/:vid/:votetype',\r\n name: 'voteResult',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteResult.vue'),\r\n meta: { title: '投票结果' }\r\n },\r\n // 检查投票进度\r\n {\r\n path: '/m/watchVote/voteProgress/:mid/:vid/:votetype',\r\n name: 'voteProgress',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteProgress.vue'),\r\n meta: { title: '检查投票进度' }\r\n },\r\n {\r\n path: '/m/watchVote/voteScreenResult/:mid/:vid/:votetype',\r\n name: 'voteScreenResult',\r\n component: () => import('../views/meetingHome/vote/screenPC/ScreenResult.vue'),\r\n meta: { title: '投屏结果' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/m/wj/manage/watchQuestionnaire/:mid/:qid',\r\n name: 'voteWatchQuestionnaire',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Index.vue'),\r\n meta: { title: '问卷监控' },\r\n children: [\r\n // 明细\r\n {\r\n path: '/m/wj/manage/watchQuestionnaire/details/:mid/:qid',\r\n name: 'voteQuestionnaireDetails',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Details.vue'),\r\n meta: { title: '问卷明细' }\r\n },\r\n // 问卷结果\r\n {\r\n path: '/m/wj/manage/watchQuestionnaire/result/:mid/:qid',\r\n name: 'votQuestionnaireResult',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Result.vue'),\r\n meta: { title: '问卷结果' }\r\n },\r\n // 检查问卷进度\r\n {\r\n path: '/m/wj/manage/watchQuestionnaire/progress/:mid/:qid',\r\n name: 'voteQuestionnaireProgress',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Progress.vue'),\r\n meta: { title: '检查问卷进度' }\r\n }\r\n ]\r\n },\r\n // 投屏结果\r\n {\r\n path: '/m/voteSetting/:mid/:vid',\r\n name: 'voteSetting',\r\n component: () => import('../views/meetingHome/vote/EditVoteSetting.vue'),\r\n meta: { title: '投票配置信息' }\r\n },\r\n {\r\n path: '/m/voteResultsSummary/:mid',\r\n name: 'voteResultsSummary',\r\n component: () => import('../views/meetingHome/vote/watchVote/VoteResultsSummary.vue'),\r\n meta: { title: '投票结果汇总' }\r\n },\r\n {\r\n path: '/m/voteGuidePage/:mid/:vid/:votetype',\r\n name: 'voteGuidePage',\r\n component: () => import('../views/meetingHome/vote/VoteGuidePage.vue'),\r\n meta: { title: '投票引导' }\r\n },\r\n // 创建投票\r\n {\r\n path: '/m/createVote/:mid/:vid/:qid',\r\n name: 'createVote',\r\n component: () => import('../views/meetingHome/vote/EditVote.vue'),\r\n meta: { title: '创建投票' },\r\n children: [\r\n // 创建投票-基本信息\r\n {\r\n path: '/m/createVote/basic/:mid/:vid/:qid',\r\n name: 'createVoteBasic',\r\n component: () => import('../views/meetingHome/vote/EditVoteBasic.vue'),\r\n meta: { title: '创建投票-基本信息' }\r\n },\r\n // 创建投票-投票项目\r\n {\r\n path: '/m/createVote/project/:mid/:vid/:qid',\r\n name: 'createVoteProject',\r\n component: () => import('../views/meetingHome/vote/EditVoteProject.vue'),\r\n meta: { title: '创建投票-投票项目' }\r\n },\r\n // 创建投票-投票用户\r\n {\r\n path: '/m/createVote/user/:mid/:vid/:qid',\r\n name: 'createVoteUser',\r\n component: () => import('../views/meetingHome/vote/EditVoteUser.vue'),\r\n meta: { title: '创建投票-投票用户' }\r\n },\r\n // 创建投票-问卷项目\r\n {\r\n path: '/m/createVote/body/:mid/:vid/:qid',\r\n name: 'createVoteBody',\r\n component: () => import('../views/meetingHome/vote/EditQuestionnaireBody.vue'),\r\n meta: { title: '创建投票-投票项目' }\r\n },\r\n // 创建投票-投票用户\r\n {\r\n path: '/m/createVote/qauser/:mid/:vid/:qid',\r\n name: 'createVoteQAUser',\r\n component: () => import('../views/meetingHome/vote/EditQuestionnaireUser.vue'),\r\n meta: { title: '创建投票-投票用户' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/m/editVote/:mid/:vid/:qid',\r\n name: 'editVote',\r\n component: () => import('../views/meetingHome/vote/EditVote.vue'),\r\n meta: { title: '编辑投票' },\r\n children: [\r\n // 编辑投票-基本信息\r\n {\r\n path: '/m/editVote/basic/:mid/:vid/:qid',\r\n name: 'editVoteBasic',\r\n component: () => import('../views/meetingHome/vote/EditVoteBasic.vue'),\r\n meta: { title: '编辑投票-基本信息' }\r\n },\r\n // 编辑投票-投票项目\r\n {\r\n path: '/m/editVote/project/:mid/:vid/:qid',\r\n name: 'editVoteProject',\r\n component: () => import('../views/meetingHome/vote/EditVoteProject.vue'),\r\n meta: { title: '编辑投票-投票项目' }\r\n },\r\n // 编辑投票-投票用户\r\n {\r\n path: '/m/editVote/user/:mid/:vid/:qid',\r\n name: 'editVoteUser',\r\n component: () => import('../views/meetingHome/vote/EditVoteUser.vue'),\r\n meta: { title: '编辑投票-投票用户' }\r\n },\r\n // 编辑投票-问卷项目\r\n {\r\n path: '/m/editVote/body/:mid/:vid/:qid',\r\n name: 'editVoteBody',\r\n component: () => import('../views/meetingHome/vote/EditQuestionnaireBody.vue'),\r\n meta: { title: '编辑投票-投票项目' }\r\n },\r\n // 编辑投票-投票用户\r\n {\r\n path: '/m/editVote/qauser/:mid/:vid/:qid',\r\n name: 'editVoteQAUser',\r\n component: () => import('../views/meetingHome/vote/EditQuestionnaireUser.vue'),\r\n meta: { title: '编辑投票-投票用户' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/m/p/editVote/:mid/:vid',\r\n name: 'editPublicVote',\r\n component: () => import('../views/meetingHome/vote/public/EditVote.vue'),\r\n meta: { title: '编辑投票' },\r\n children: [\r\n // 编辑投票-基本信息\r\n {\r\n path: '/m/p/editVote/basic/:mid/:vid',\r\n name: 'editPublicVoteBasic',\r\n component: () => import('../views/meetingHome/vote/public/EditVoteBasic.vue'),\r\n meta: { title: '编辑投票-基本信息' }\r\n },\r\n // 编辑投票-投票项目\r\n {\r\n path: '/m/p/editVote/project/:mid/:vid',\r\n name: 'editPublicVoteProject',\r\n component: () => import('../views/meetingHome/vote/public/EditVoteProject.vue'),\r\n meta: { title: '编辑投票-投票项目' }\r\n },\r\n // 编辑投票-其它配置\r\n {\r\n path: '/m/p/editVote/setting/:mid/:vid',\r\n name: 'editPublicVoteSetting',\r\n component: () => import('../views/meetingHome/vote/public/EditVoteSetting.vue'),\r\n meta: { title: '编辑投票-其它配置' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/m/p/watchVote/voteDetails/:mid/:vid/:votetype',\r\n name: 'publicVoteDetails',\r\n component: () => import('../views/meetingHome/vote/public/watchVote/voteDetails.vue'),\r\n meta: { title: '投票明细' }\r\n },\r\n // 投票结果\r\n {\r\n path: '/m/p/watchVote/voteResult/:mid/:vid/:votetype',\r\n name: 'publicVoteResult',\r\n component: () => import('../views/meetingHome/vote/public/watchVote/VoteResult.vue'),\r\n meta: { title: '投票结果' }\r\n },\r\n {\r\n path: '/m/p/voteProjectGroup/:mid/:vid',\r\n name: 'publicVoteProjectGroup',\r\n component: () => import('../views/meetingHome/voteProject/ProjectGroupManager.vue'),\r\n meta: { title: '投票选项' }\r\n },\r\n // 投票选项\r\n {\r\n path: '/m/p/voteProject/:mid/:gid/:vid',\r\n name: 'publicVoteProject',\r\n component: () => import('../views/meetingHome/voteProject/ProjectManager.vue'),\r\n meta: { title: '投票选项' }\r\n },\r\n {\r\n path: '/m/editVote1/:mid/:vid',\r\n name: 'editVote1',\r\n component: () => import('../views/meetingHome/vote/EditVote1.vue'),\r\n meta: { title: '编辑投票' },\r\n children: [\r\n // 编辑投票-基本信息\r\n {\r\n path: '/m/editVote1/basic/:mid/:vid',\r\n name: 'editVoteBasic1',\r\n component: () => import('../views/meetingHome/vote/EditVoteBasic.vue'),\r\n meta: { title: '编辑投票-基本信息' }\r\n },\r\n // 编辑投票-投票项目\r\n {\r\n path: '/m/editVote1/project/:mid/:vid',\r\n name: 'editVoteProject1',\r\n component: () => import('../views/meetingHome/vote/EditVoteProject.vue'),\r\n meta: { title: '编辑投票-投票项目' }\r\n },\r\n // 编辑投票-投票用户\r\n {\r\n path: '/m/editVote1/user/:mid/:vid',\r\n name: 'editVoteUser1',\r\n component: () => import('../views/meetingHome/vote/EditVoteUser.vue'),\r\n meta: { title: '编辑投票-投票用户' }\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n path: '/userPrint/:mid/:gid/:vn/:tip',\r\n name: 'userPrint',\r\n component: () => import('../views/meetingHome/voteUser/UserPrint.vue'),\r\n meta: { requiresAuth: true, title: '账号打印', role: 'user' }\r\n },\r\n {\r\n path: '/',\r\n name: '/',\r\n component: () => import('../views/Login.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务-登录' }\r\n // children: [\r\n // // 产品推广--首页\r\n // {\r\n // path: '/home',\r\n // name: 'home',\r\n // component: () => import('../views/brand/Home.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务-专为投票场景打造,支持职称评定投票、项目评优、奖励申报、评先进、股东大会、党代表选举、政协会议表决、人事任免、干部考核、优秀员工评选' }\r\n // },\r\n // // 产品推广--场景介绍\r\n // {\r\n // path: '/scene',\r\n // name: 'scene',\r\n // component: () => import('../views/brand/Scene.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 场景介绍' }\r\n // },\r\n // // 产品推广--成功案例\r\n // {\r\n // path: '/case',\r\n // name: 'case',\r\n // component: () => import('../views/brand/Case.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 成功案例' }\r\n // },\r\n // // 产品推广--教程讲解\r\n // {\r\n // path: '/course',\r\n // name: 'course',\r\n // component: () => import('../views/brand/Course.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 教程讲解' }\r\n // },\r\n // // 产品推广--资费介绍\r\n // {\r\n // path: '/fee',\r\n // name: 'fee',\r\n // component: () => import('../views/brand/Fee.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 资费介绍' }\r\n // },\r\n // // 产品推广--关于我们\r\n // {\r\n // path: '/about',\r\n // name: 'about',\r\n // component: () => import('../views/brand/About.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 关于我们' }\r\n // },\r\n // // 登录\r\n // {\r\n // path: '/login/:loginType',\r\n // name: 'login',\r\n // component: () => import('../views/Login.vue'),\r\n // meta: { requiresAuth: false, title: '企业投票云服务 - 登录' }\r\n // },\r\n // {\r\n // path: '/style',\r\n // name: 'style',\r\n // component: () => import('../views/webStyle.vue'),\r\n // meta: { requiresAuth: false, title: '网站样式' }\r\n // },\r\n // // 绑定手机号\r\n // {\r\n // path: '/bind-mobile',\r\n // name: 'bind-mobile',\r\n // component: () => import('../views/BindMobile.vue'),\r\n // meta: { requiresAuth: false, title: '新用户注册 绑定手机号' }\r\n // }\r\n // ]\r\n },\r\n {\r\n path: '/home',\r\n name: 'home',\r\n component: () => import('../views/brand/Home.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务-专为投票场景打造,支持职称评定投票、项目评优、奖励申报、评先进、股东大会、党代表选举、政协会议表决、人事任免、干部考核、优秀员工评选' }\r\n },\r\n {\r\n path: '/scene',\r\n name: 'scene',\r\n component: () => import('../views/brand/Scene.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 场景介绍' }\r\n },\r\n {\r\n path: '/case',\r\n name: 'case',\r\n component: () => import('../views/brand/Case.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 成功案例' }\r\n },\r\n {\r\n path: '/course',\r\n name: 'course',\r\n component: () => import('../views/brand/Course.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 教程讲解' }\r\n },\r\n {\r\n path: '/fee',\r\n name: 'fee',\r\n component: () => import('../views/brand/Fee.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 资费介绍' }\r\n },\r\n {\r\n path: '/about',\r\n name: 'about',\r\n component: () => import('../views/brand/About.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 关于我们' }\r\n },\r\n {\r\n path: '/login/:loginType',\r\n name: 'login',\r\n component: () => import('../views/Login.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 登录' }\r\n },\r\n {\r\n path: '/wx_login',\r\n name: 'wxlogin',\r\n component: () => import('../views/WXLogin.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 登录' }\r\n },\r\n {\r\n path: '/qywx_login',\r\n name: 'qywxlogin',\r\n component: () => import('../views/QYWXLogin.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 登录' }\r\n },\r\n {\r\n path: '/cloud/login',\r\n name: 'cloudLogin',\r\n component: () => import('../views/CloudLogin.vue'),\r\n meta: { requiresAuth: false, title: '企业投票云服务 - 快捷登录' }\r\n },\r\n {\r\n path: '/style',\r\n name: 'style',\r\n component: () => import('../views/webStyle.vue'),\r\n meta: { requiresAuth: false, title: '网站样式' }\r\n },\r\n {\r\n path: '/bind-mobile',\r\n name: 'bind-mobile',\r\n component: () => import('../views/BindMobile.vue'),\r\n meta: { requiresAuth: false, title: '新用户注册 绑定手机号' }\r\n },\r\n {\r\n path: '/largeScreen/:vid',\r\n name: 'largeScreen',\r\n component: () => import('../views/meetingHome/vote/screenPC/LargeScreen.vue'),\r\n meta: { requiresAuth: false, title: '大屏幕' }\r\n },\r\n {\r\n path: '/shortlistedScreen/:vid',\r\n name: 'shortlistedScreen',\r\n component: () => import('../views/meetingHome/vote/screenPC/ShortlistedScreen.vue'),\r\n meta: { requiresAuth: false, title: '大屏幕' }\r\n },\r\n {\r\n path: '/mobileVote',\r\n name: 'mobileVote',\r\n component: () => import('../views/mobileVote/index.vue'),\r\n meta: { requiresAuth: false, title: '投票', role: 'voter' },\r\n children: [\r\n // 投票-问卷\r\n {\r\n path: '/mobileVote/wenjuan/:mid/:vid/:token',\r\n name: 'wenjuan',\r\n component: () => import('../views/mobileVote/VoteWenJuan.vue'),\r\n meta: { requiresAuth: false, title: ' 投票-问卷' }\r\n },\r\n // 投票-报名\r\n {\r\n path: '/mobileVote/voteUserApply/:mid/:cid',\r\n name: 'voteUserApply',\r\n component: () => import('../views/mobileVote/VoteUserApply.vue'),\r\n meta: { requiresAuth: false, title: ' 投票-报名' }\r\n },\r\n // 投票-投票登录\r\n {\r\n path: '/mobileVote/voteLogin/:mid/:cid',\r\n name: 'voteLogin',\r\n component: () => import('../views/mobileVote/voteLogin.vue'),\r\n meta: { requiresAuth: false, title: ' 投票-投票登录' }\r\n },\r\n // 投票-投票列表\r\n {\r\n path: '/mobileVote/voteList/:mid',\r\n name: 'voteList',\r\n component: () => import('../views/mobileVote/voteList.vue'),\r\n meta: { requiresAuth: true, title: '投票-投票列表' }\r\n },\r\n // 投票-主持人-投票项目\r\n {\r\n path: '/mobileVote/chairScreenProjects/:mid/:vid',\r\n name: 'chairScreenProjects',\r\n component: () => import('../views/mobileVote/screen/chairScreenProjects.vue'),\r\n meta: { requiresAuth: true, title: '投票-主持人-投票项目' }\r\n },\r\n // 投票-主持人-投票控制台\r\n {\r\n path: '/mobileVote/chairScreenControl/:mid/:vid/:gid/:pid',\r\n name: 'chairScreenControl',\r\n component: () => import('../views/mobileVote/screen/chairScreenControl.vue'),\r\n meta: { requiresAuth: true, title: '投票-主持人-投票控制台' }\r\n },\r\n // 投票-查看投票页面\r\n {\r\n path: '/mobileVote/mobileWatchScreenVote/:mid/:vid',\r\n name: 'mobileWatchScreenVote',\r\n component: () => import('../views/mobileVote/screen/watchVote.vue'),\r\n meta: { requiresAuth: true, title: '投票-查看投票页面' }\r\n },\r\n // 投票-投票人-投票页面\r\n {\r\n path: '/mobileVote/judgeVote/:mid/:vid',\r\n name: 'judgeVote',\r\n component: () => import('../views/mobileVote/screen/judgeVote.vue'),\r\n meta: { requiresAuth: true, title: '投票-投票人-投票页面' }\r\n },\r\n // 投票-入围投票\r\n {\r\n path: '/mobileVote/shortlist/:mid/:vid',\r\n name: 'shortlist',\r\n component: () => import('../views/mobileVote/Shortlist.vue'),\r\n meta: { requiresAuth: true, title: '投票-入围投票' }\r\n },\r\n // 投票-入围投票-主持人\r\n {\r\n path: '/mobileVote/chairShortlistedScreen/:mid/:vid',\r\n name: 'chairShortlistedScreen',\r\n component: () => import('../views/mobileVote/screen/chairShortlistedScreen.vue'),\r\n meta: { requiresAuth: true, title: '投票-入围投票' }\r\n },\r\n // 投票-颁奖典礼-主持人\r\n {\r\n path: '/mobileVote/chairAwardCeremonyList/:mid/:vid',\r\n name: 'chairAwardCeremonyList',\r\n component: () => import('../views/mobileVote/screen/awardCeremony.vue'),\r\n meta: { requiresAuth: true, title: '投票-颁奖典礼' }\r\n },\r\n // 投票-排序投票\r\n {\r\n path: '/mobileVote/sort/:mid/:vid',\r\n name: 'sort',\r\n component: () => import('../views/mobileVote/Sort.vue'),\r\n meta: { requiresAuth: true, title: '投票-排序投票' }\r\n },\r\n // 投票-打分投票\r\n {\r\n path: '/mobileVote/score/:mid/:vid',\r\n name: 'score',\r\n component: () => import('../views/mobileVote/Score.vue'),\r\n meta: { requiresAuth: true, title: '投票-打分投票' }\r\n },\r\n // 投票-打分投票\r\n {\r\n path: '/mobileVote/result/:mid/:vid/:voteType',\r\n name: 'result',\r\n component: () => import('../views/mobileVote/Result.vue'),\r\n meta: { requiresAuth: true, title: '投票-投票结果' }\r\n },\r\n // 投票-打分投票\r\n {\r\n path: '/mobileVote/mobileWatchVote/:mid/:vid',\r\n name: 'mobileWatchVote',\r\n component: () => import('../views/mobileVote/WatchVote.vue'),\r\n meta: { requiresAuth: true, title: '投票-打分投票' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/manua',\r\n name: 'manua',\r\n component: () => import('../views/Manua.vue'),\r\n meta: { requiresAuth: false, title: '用户手册' }\r\n },\r\n {\r\n path: '/wj/manage',\r\n name: 'wj_manage',\r\n component: () => import('../views/wj/manage/Index.vue'),\r\n meta: { requiresAuth: false, title: '考试问卷' },\r\n children: [\r\n // 基本信息\r\n {\r\n path: '/wj/manage/basic/:mid',\r\n name: 'wj_manageBasic',\r\n component: () => import('../views/wj/manage/basicInfo/Index.vue'),\r\n meta: { title: '基本信息' }\r\n },\r\n // 报名管理\r\n {\r\n path: '/wj/manage/userApplyManager/:mid',\r\n name: 'wjUserApplyManager',\r\n component: () => import('../views/wj/manage/userApply/Index.vue'),\r\n meta: { title: '报名管理' }\r\n },\r\n // 答卷人员分组\r\n {\r\n path: '/wj/manage/userGroup/:mid',\r\n name: 'wjUserGroup',\r\n component: () => import('../views/wj/manage/users/UserGroupManager.vue'),\r\n meta: { title: '投票人员' }\r\n },\r\n // 答卷人员\r\n {\r\n path: '/wj/manage/user/:mid/:gid',\r\n name: 'wjUser',\r\n component: () => import('../views/wj/manage/users/UserManager.vue'),\r\n meta: { title: '投票人员' }\r\n },\r\n // 题库\r\n {\r\n path: '/wj/manage/questionBank/:cid/:mid',\r\n name: 'questionBankManage',\r\n component: () => import('../views/wj/manage/questions/questionBankManage.vue'),\r\n meta: { title: '题库管理' }\r\n },\r\n // 题目管理\r\n {\r\n path: '/wj/manage/question/:cid/:mid/:gid',\r\n name: 'questionManage',\r\n component: () => import('../views/wj/manage/questions/questionManage.vue'),\r\n meta: { title: '题目管理' }\r\n },\r\n // 结果汇总\r\n {\r\n path: '/wj/manage/resultsSummary/:mid',\r\n name: 'questionnaireResultsSummary',\r\n component: () => import('../views/wj/manage/resultsSummary/Index.vue'),\r\n meta: { title: '结果汇总' }\r\n },\r\n // 问卷管理\r\n {\r\n path: '/wj/manage/questionnaire/:mid',\r\n name: 'questionnaireManage',\r\n component: () => import('../views/wj/manage/questionnaire/Index.vue'),\r\n meta: { title: '问卷管理' }\r\n },\r\n // 创建问卷\r\n {\r\n path: '/wj/manage/createQuestionnaire/:mid/:qid',\r\n name: 'createQuestionnaire',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaire.vue'),\r\n meta: { title: '创建问卷' },\r\n children: [\r\n // 创建问卷-基本信息\r\n {\r\n path: '/wj/manage/createQuestionnaire/basic/:mid/:qid',\r\n name: 'createQuestionnaireBasic',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireBasic.vue'),\r\n meta: { title: '创建问卷-基本信息' }\r\n },\r\n // 创建问卷-问卷项目\r\n {\r\n path: '/wj/manage/createQuestionnaire/body/:mid/:qid',\r\n name: 'createQuestionnaireBody',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireBody.vue'),\r\n meta: { title: '创建问卷-问卷项目' }\r\n },\r\n // 创建问卷-问卷用户\r\n {\r\n path: '/wj/manage/createQuestionnaire/user/:mid/:qid',\r\n name: 'createQuestionnaireUser',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireUser.vue'),\r\n meta: { title: '创建问卷-问卷用户' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/wj/manage/editQuestionnaire/:mid/:qid',\r\n name: 'editQuestionnaire',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaire.vue'),\r\n meta: { title: '编辑问卷' },\r\n children: [\r\n // 编辑问卷-基本信息\r\n {\r\n path: '/wj/manage/editQuestionnaire/basic/:mid/:qid',\r\n name: 'editQuestionnaireBasic',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireBasic.vue'),\r\n meta: { title: '编辑投票-基本信息' }\r\n },\r\n // 编辑问卷-问卷项目\r\n {\r\n path: '/wj/manage/editQuestionnaire/body/:mid/:qid',\r\n name: 'editQuestionnaireBody',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireBody.vue'),\r\n meta: { title: '编辑问卷-问卷项目' }\r\n },\r\n // 编辑问卷-问卷用户\r\n {\r\n path: '/wj/manage/editQuestionnaire/user/:mid/:qid',\r\n name: 'editQuestionnaireUser',\r\n component: () => import('../views/wj/manage/questionnaire/EditQuestionnaireUser.vue'),\r\n meta: { title: '编辑问卷-问卷用户' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/wj/manage/watchQuestionnaire/:mid/:qid',\r\n name: 'watchQuestionnaire',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Index.vue'),\r\n meta: { title: '问卷监控' },\r\n children: [\r\n // 明细\r\n {\r\n path: '/wj/manage/watchQuestionnaire/details/:mid/:qid',\r\n name: 'questionnaireDetails',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Details.vue'),\r\n meta: { title: '问卷明细' }\r\n },\r\n // 问卷结果\r\n {\r\n path: '/wj/manage/watchQuestionnaire/result/:mid/:qid',\r\n name: 'questionnaireResult',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Result.vue'),\r\n meta: { title: '问卷结果' }\r\n },\r\n // 检查问卷进度\r\n {\r\n path: '/wj/manage/watchQuestionnaire/progress/:mid/:qid',\r\n name: 'questionnaireProgress',\r\n component: () => import('../views/wj/manage/questionnaire/watch/Progress.vue'),\r\n meta: { title: '检查问卷进度' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/wj/manage/questionnaireGuidePage/:mid/:qid/:type',\r\n name: 'questionnaireGuidePage',\r\n component: () => import('../views/wj/manage/questionnaire/GuidePage.vue'),\r\n meta: { title: '投票引导' }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/wj/answer',\r\n name: 'wj_answer',\r\n component: () => import('../views/wj/answer/Index.vue'),\r\n meta: { requiresAuth: false, title: '答卷', role: 'wj_answer' },\r\n children: [\r\n // 问卷登录\r\n {\r\n path: '/wj/answer/login/:cid/:mid/:qid',\r\n name: 'answerLogin',\r\n component: () => import('../views/wj/answer/Login.vue'),\r\n meta: { requiresAuth: false, title: ' 问卷登录' }\r\n },\r\n // 问卷列表\r\n {\r\n path: '/wj/answer/questionnaireList/:mid',\r\n name: 'answerQuestionnaireList',\r\n component: () => import('../views/wj/answer/QuestionnaireList.vue'),\r\n meta: { requiresAuth: true, title: '问卷列表' }\r\n },\r\n // 填写问卷\r\n {\r\n path: '/wj/answer/answerPaper/:cid/:mid/:qid/:aid/:s',\r\n name: 'answerPaper',\r\n component: () => import('../views/wj/answer/AnswerPaper.vue'),\r\n meta: { requiresAuth: true, title: '填写问卷' }\r\n },\r\n // 问卷-已提交\r\n {\r\n path: '/wj/answer/completeAnswerPaper/:cid/:mid/:qid/:aid/:s',\r\n name: 'completeAnswerPaper',\r\n component: () => import('../views/wj/answer/CompleteAnswerPaper.vue'),\r\n meta: { requiresAuth: true, title: '问卷-已提交' }\r\n },\r\n // 答卷列表\r\n {\r\n path: '/wj/answer/markingAnswerPaperList/:cid/:mid/:qid/:s',\r\n name: 'markingAnswerPaperList',\r\n component: () => import('../views/wj/answer/MarkingAnswerPaperList.vue'),\r\n meta: { requiresAuth: true, title: '答卷列表' }\r\n }\r\n ]\r\n }\r\n]\r\n\r\nconst router = new VueRouter({\r\n // mode: 'history',\r\n // base: '/vw',\r\n routes\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n /* 路由发生变化修改页面title */\r\n if (to.meta.title) {\r\n document.title = to.meta.title\r\n }\r\n if (to.matched.some(record => record.meta.requiresAuth)) {\r\n const state = JSON.parse(window.localStorage.getItem('state'))\r\n if (!state || state === null) {\r\n messageWarningTip('无权访问,请先登录!')\r\n if (to.matched.some(record => record.meta.role === 'user')) {\r\n next({ name: 'login', params: { loginType: 'signIn' }, query: { redirect: to.fullPath } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'voter')) {\r\n next({ name: 'voteLogin', params: { mid: 'scan', cid: 0 } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'wj_answer')) {\r\n next({ name: 'answerLogin', params: { cid: to.params.cid, mid: to.params.mid, qid: to.params.qid } })\r\n }\r\n } else {\r\n if (state.isLogin) {\r\n if (state.token != null && state.issued != null && state.expires_in != null) {\r\n const date = new Date().getTime()\r\n if (date - new Date(state.issued).getTime() < state.expires_in * 1000) {\r\n if (to.matched.some(record => record.meta.role === state.role)) {\r\n if (from.query.site && !to.query.site) {\r\n const tempQuery = to.query\r\n tempQuery.site = from.query.site\r\n next({ name: to.name, params: to.params, query: tempQuery })\r\n } else {\r\n next()\r\n }\r\n } else {\r\n messageWarningTip('账户没有权限访问,请先登录!')\r\n if (to.matched.some(record => record.meta.role === 'user')) {\r\n next({ name: 'login', params: { loginType: 'signIn' }, query: { redirect: to.fullPath } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'voter')) {\r\n next({ name: 'voteLogin', params: { mid: 'scan', cid: 0 } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'wj_answer')) {\r\n next({ name: 'answerLogin', params: { cid: to.params.cid, mid: to.params.mid, qid: to.params.qid } })\r\n }\r\n }\r\n } else {\r\n messageWarningTip('登录已过有效期,请重新登录!')\r\n window.localStorage.removeItem('state')\r\n if (to.matched.some(record => record.meta.role === 'user')) {\r\n next({ name: 'login', params: { loginType: 'signIn' }, query: { redirect: to.fullPath } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'voter')) {\r\n next({ name: 'voteLogin', params: { mid: 'scan', cid: 0 } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'wj_answer')) {\r\n next({ name: 'answerLogin', params: { cid: to.params.cid, mid: to.params.mid, qid: to.params.qid } })\r\n }\r\n }\r\n } else {\r\n messageWarningTip('无权访问,请先登录!')\r\n window.localStorage.removeItem('state')\r\n if (to.matched.some(record => record.meta.role === 'user')) {\r\n next({ name: 'login', params: { loginType: 'signIn' }, query: { redirect: to.fullPath } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'voter')) {\r\n next({ name: 'voteLogin', params: { mid: 'scan', cid: 0 } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'wj_answer')) {\r\n next({ name: 'answerLogin', params: { cid: to.params.cid, mid: to.params.mid, qid: to.params.qid } })\r\n }\r\n }\r\n } else {\r\n messageWarningTip('无权访问,请先登录!')\r\n window.localStorage.removeItem('state')\r\n if (to.matched.some(record => record.meta.role === 'user')) {\r\n next({ name: 'login', params: { loginType: 'signIn' }, query: { redirect: to.fullPath } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'voter')) {\r\n next({ name: 'voteLogin', params: { mid: 'scan', cid: 0 } })\r\n }\r\n if (to.matched.some(record => record.meta.role === 'wj_answer')) {\r\n next({ name: 'answerLogin', params: { cid: to.params.cid, mid: to.params.mid, qid: to.params.qid } })\r\n }\r\n }\r\n }\r\n } else {\r\n next()\r\n }\r\n})\r\n\r\nconst routerMethods = ['push', 'replace']\r\nrouterMethods.forEach(method => {\r\n const originalCall = VueRouter.prototype[method]\r\n VueRouter.prototype[method] = function (location, onResolve, onReject) {\r\n if (onResolve || onReject) {\r\n return originalCall.call(this, location, onResolve, onReject)\r\n }\r\n return originalCall.call(this, location).catch(err => err)\r\n }\r\n})\r\n\r\nexport default router\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-4!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=0389cb11&prod&lang=less&\"","/**\r\n * verificationCode模块接口列表\r\n */\r\nimport axios from './utils/https' // 导入http中创建的axios实例\r\n\r\nconst verificationCode = {\r\n // 获取图片旋转验证码\r\n getImageRotateCode () {\r\n return axios.get('/api/verificationCode/GetImageRotateCode')\r\n },\r\n // 获取图形验证码\r\n getImageCode () {\r\n return axios.get('/api/verificationCode/GetImageCode')\r\n },\r\n // 校验验证码\r\n checkVerificationCode (params) {\r\n return axios.post('/api/verificationCode/checkVerificationCode', params)\r\n },\r\n // 获取手机验证码,发送短信\r\n sendPhoneCode (params) {\r\n return axios.post('/api/verificationCode/SendPhoneCode', params)\r\n },\r\n // 校验手机验证码\r\n checkPhoneCode (params) {\r\n return axios.post('/api/verificationCode/checkPhoneCode', params)\r\n }\r\n}\r\n\r\nexport default verificationCode\r\n"],"sourceRoot":""}