diff --git a/package.json b/package.json index 2cb8cea..265719f 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "license": "MIT", "scripts": { "dev": "vue-cli-service serve", + "local": "vue-cli-service serve --mode .env.local", "start": "vue-cli-service serve", "build:prod": "vue-cli-service build", "build:stage": "vue-cli-service build --mode staging", diff --git a/src/router/index.js b/src/router/index.js index 5125125..35614be 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -71,6 +71,18 @@ export const constantRoutes = [ component: () => import('@/views/index'), name: 'Index', meta: { title: '首页', icon: 'dashboard', affix: true } + }, + { + path: '', + meta: { title: '课程信息', icon: 'dashboard' }, + children: [ + { + path: '/edu/course', + component: () => import('@/views/school/course/index.vue'), + name: 'Index', + meta: { title: '课程信息', icon: 'dashboard' } + } + ] } ] }, diff --git a/src/utils/commonUtils.js b/src/utils/commonUtils.js new file mode 100644 index 0000000..82add56 --- /dev/null +++ b/src/utils/commonUtils.js @@ -0,0 +1,138 @@ +import request from '@/utils/request' + +// 表单重置 +export function resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields() + } +} +// 回显数据字典 +export function selectDictLabel(datas, value) { + var actions = [] + Object.keys(datas).map((key) => { + if (datas[key].dictValue === ('' + value)) { + actions.push(datas[key].dictLabel) + return false + } + }) + return actions.join('') +} + +// 日期格式化 +export function parseTime(time, pattern) { + if (time === undefined) { + return null + } + if (arguments.length === 0) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str +} + +/** + * 比较时间 + * @param time + * @return {null|boolean} + */ +export function afterNow(time) { + if (time === undefined) { + return null + } + if (arguments.length === 0) { + return null + } + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + return date.getTime() >= new Date().getTime() +} + +// 添加日期范围 +export function addDateRange(params, dateRange) { + var search = params + search.beginTime = '' + search.endTime = '' + if (dateRange != null && dateRange !== '') { + search.beginTime = dateRange[0] + search.endTime = dateRange[1] + } + return search +} + +// 通用下载方法 +export function downExportFile(fileName, logicName, notifyInstance) { + return request({ + url: '/system/file/downExportFile', + method: 'get', + params: { + fileName: fileName, + logicName: logicName + }, + timeout: 30000, + responseType: 'blob' + }).then(res => { + if (res) { + const content = res.data + if ('download' in document.createElement('a')) { + // 非IE下载 + const elink = document.createElement('a') + elink.download = logicName + elink.style.display = 'none' + elink.href = URL.createObjectURL(content) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 释放URL 对象 + document.body.removeChild(elink) + } else { + // IE10+下载 + navigator.msSaveBlob(content) + } + setTimeout(function() { + notifyInstance.close() + }, 2000) + } + }).catch(() => { + this.$message.error('下载附件失败,请联系管理员') + }) + // window.location.href = baseURL + '/system/file/downExportFile?fileName=' + encodeURI(fileName) + '&logicName=' + logicName + '&access_token=' + getToken() +} diff --git a/src/utils/validate.js b/src/utils/validate.js index adfa254..05086c8 100644 --- a/src/utils/validate.js +++ b/src/utils/validate.js @@ -81,3 +81,16 @@ export function isArray(arg) { } return Array.isArray(arg) } + +export function isPass(value) { + const pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{1,})(?=.*[a-z]{1,})(?=.*[!@#$%^&*?\(\)]).*$/ + return pattern.test(value) +} + +export function isSerialNumber(value) { + return /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(value) +} + +export function isUsername(rule, value, callback) { + return /^[a-zA-Z0-9_]{4,16}$/.test(value) +}