diff --git a/.env b/.env new file mode 100644 index 00000000..75716181 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +VUE_APP_BASE=/manage +VUE_APP_BASE_API=/manageApi +VUE_APP_PROXY_URL=http://111.231.196.214:30001/ +VUE_APP_LOGIN_URL=https://u-pre.boe.com/web + + +VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc-release/iframe +VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc-release/loading diff --git a/.env.boe b/.env.boe new file mode 100644 index 00000000..6991e05f --- /dev/null +++ b/.env.boe @@ -0,0 +1,4 @@ +VUE_APP_BASE=/manage +VUE_APP_BASE_API=/manageApi + + diff --git a/.env.prod b/.env.prod new file mode 100644 index 00000000..2e9213ab --- /dev/null +++ b/.env.prod @@ -0,0 +1,2 @@ +VUE_APP_BASE=/manage +VUE_APP_BASE_API=/manageApi \ No newline at end of file diff --git a/.env.release b/.env.release new file mode 100644 index 00000000..4cd4f868 --- /dev/null +++ b/.env.release @@ -0,0 +1,7 @@ +VUE_APP_BASE=/manage-release +VUE_APP_BASE_API=/manageApi-release +VUE_APP_LOGIN_URL=https://u.boe.com/web + + +VUE_APP_IFRAME_URL=https://u-pre.boe.com/pc-release/iframe +VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc-release/loading \ No newline at end of file diff --git a/.env.test b/.env.test new file mode 100644 index 00000000..6991e05f --- /dev/null +++ b/.env.test @@ -0,0 +1,4 @@ +VUE_APP_BASE=/manage +VUE_APP_BASE_API=/manageApi + + diff --git a/.gitignore b/.gitignore index 5e297b87..92a8e40b 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ package-lock.json src/api/config.js src/api/config.js src/api/config.js +src/api/config.js diff --git a/package.json b/package.json index 935c5f5b..f694a453 100644 --- a/package.json +++ b/package.json @@ -1,68 +1,71 @@ { - "name": "fe_manage", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "@wangeditor/editor": "^5.1.23", - "@wangeditor/editor-for-vue": "^5.1.12", - "ant-design-vue": "^3.2.12", - "axios": "^1.1.3", - "core-js": "^3.8.3", - "dayjs": "^1.11.6", - "element-plus": "^2.2.17", - "element-resize-detector": "^1.2.4", - "html2canvas": "^1.4.1", - "jquery": "^3.6.1", - "mitt": "^3.0.0", - "moment": "^2.29.4", - "qrcode.vue": "^3.3.3", - "qs": "^6.11.0", - "sortablejs": "^1.15.0", - "vue": "^3.2.13", - "vue-router": "^4.0.3", - "vuedraggable": "^4.1.0", - "vuex": "^4.0.0" - }, - "devDependencies": { - "@babel/core": "^7.12.16", - "@babel/eslint-parser": "^7.12.16", - "@vue/cli-plugin-babel": "~5.0.0", - "@vue/cli-plugin-eslint": "~5.0.0", - "@vue/cli-plugin-router": "~5.0.0", - "@vue/cli-plugin-vuex": "~5.0.0", - "@vue/cli-service": "~5.0.0", - "eslint": "^7.32.0", - "eslint-plugin-vue": "^8.0.3", - "sass": "^1.32.7", - "sass-loader": "^12.0.0" - }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/vue3-essential", - "eslint:recommended" - ], - "parserOptions": { - "parser": "@babel/eslint-parser" - }, - "rules": { - "no-console": "off", - "no-debugger": "off", - "no-mixed-spaces-and-tabs": "off" - } - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead", - "not ie 11" - ] + "name": "fe_manage", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "build:boe": "vue-cli-service build --mode boe", + "build:release": "vue-cli-service build --mode release", + "build:prod": "vue-cli-service build --mode prod", + "build:test": "vue-cli-service build --mode test" + }, + "dependencies": { + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.12", + "ant-design-vue": "^3.2.12", + "axios": "^1.1.3", + "core-js": "^3.8.3", + "dayjs": "^1.11.6", + "element-plus": "^2.2.17", + "element-resize-detector": "^1.2.4", + "html2canvas": "^1.4.1", + "jquery": "^3.6.1", + "mitt": "^3.0.0", + "moment": "^2.29.4", + "qrcode.vue": "^3.3.3", + "qs": "^6.11.0", + "sortablejs": "^1.15.0", + "vue": "^3.2.13", + "vue-router": "^4.0.3", + "vuedraggable": "^4.1.0", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "sass": "^1.32.7", + "sass-loader": "^12.0.0" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/vue3-essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "@babel/eslint-parser" + }, + "rules": { + "no-console": "off", + "no-debugger": "off", + "no-mixed-spaces-and-tabs": "off" + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead", + "not ie 11" + ] } diff --git a/src/App.vue b/src/App.vue index 2354d8c4..5b29d867 100644 --- a/src/App.vue +++ b/src/App.vue @@ -44,15 +44,15 @@ export default defineComponent({ const store = useStore(); const isLogin = ref(false); // console.log("router", router.getRoutes(), route); - console.log("版本0.9.13------------"); + console.log("版本0.9.14------------"); const routes = computed(() => { return router.getRoutes().filter((e) => e.meta?.isLink); }); watch( - () => route.path, - () => { - route.path === "/login" && (isLogin.value = true); - } + () => route.path, + () => { + route.path === "/login" && (isLogin.value = true); + } ); const currentRouteName = computed(() => route.name); @@ -78,8 +78,8 @@ export default defineComponent({ return; } const memberInitInfo = await api1 - .getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 }) - .then((res) => res.data.data.rows); + .getMemberInfo({ keyWord: "", pageNo: 1, pageSize: 10 }) + .then((res) => res.data.data.rows); store.commit("SET_MEMBER_INFO", memberInitInfo); localStorage.setItem("memberInitInfo", JSON.stringify(memberInitInfo)); } @@ -104,13 +104,13 @@ export default defineComponent({ } const getDictList = (param) => - api1 - .getDict({ - pageNo: 1, - pageSize: 20, - setCode: param, - }) - .then((res) => res.data.data.rows); + api1 + .getDict({ + pageNo: 1, + pageSize: 20, + setCode: param, + }) + .then((res) => res.data.data.rows); //获取组织树 const getOrgTree = () => { const orgtreeList = localStorage.getItem("orgtreeList"); @@ -119,16 +119,16 @@ export default defineComponent({ return; } api - .getOrgInfo({ - keyWord: "", - id: -1, - pageNo: 1, - pageSize: 20, - }) - .then((res) => { - localStorage.setItem("orgtreeList", JSON.stringify(res.data.data)); - store.commit("getOrgtreeList", res.data.data); - }); + .getOrgInfo({ + keyWord: "", + id: -1, + pageNo: 1, + pageSize: 20, + }) + .then((res) => { + localStorage.setItem("orgtreeList", JSON.stringify(res.data.data)); + store.commit("getOrgtreeList", res.data.data); + }); }; init(); return { @@ -167,7 +167,7 @@ export default defineComponent({ // font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial, // sans-serif; font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, - Microsoft YaHei, Arial, sans-serif; + Microsoft YaHei, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #2c3e50; diff --git a/src/api/config.js b/src/api/config.js index 33869ee1..4e9b11ef 100644 --- a/src/api/config.js +++ b/src/api/config.js @@ -2,12 +2,13 @@ * @Author: lixg lixg@dongwu-inc.com * @Date: 2022-11-21 14:32:52 * @LastEditors: lixg lixg@dongwu-inc.com - * @LastEditTime: 2022-12-14 17:40:35 + * @LastEditTime: 2022-12-14 20:56:10 * @FilePath: /fe-manage/src/api/config.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import { message } from "ant-design-vue"; import axios from "axios"; +import router from "@/router"; // import { getCookie } from '../api/method' // const Qs = require("qs"); @@ -16,61 +17,60 @@ import axios from "axios"; axios.defaults.withCredentials = true; const http = axios.create({ - baseURL: "/manageApi", - timeout: 1000 * 15, - // headers: { "Content-Type": "multipart/form-data" }, - headers: { "Content-Type": "application/json" }, + baseURL: process.env.VUE_APP_BASE_API, + timeout: 1000 * 15, + // headers: { "Content-Type": "multipart/form-data" }, + headers: { "Content-Type": "application/json" }, }); http.interceptors.request.use( - (config) => { - // console.log("config", config); - // const token = localStorage.getItem("token"); - // // const token = getCookie('token') - // // console.log('token', token) - // if (token) { - // config.headers.token = token; //测试1111 - // } else { - // console.log("当前请求页面无token,请执行操作!!!"); + (config) => { + // console.log("config", config); + // const token = localStorage.getItem("token"); + // // const token = getCookie('token') + // // console.log('token', token) + // if (token) { + // config.headers.token = token; //测试1111 + // } else { + // console.log("当前请求页面无token,请执行操作!!!"); - // // 此处测试默认配置token - // config.headers.token = - // "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2NzAxNTMxMDMsImV4cCI6MTY3MDE2MDMwMywiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.c937b2d3a59cbab2136fdde55fd38f06bdff041212aab0fa6741bc4be41e28a7"; - // // } - return config; - }, - (err) => { - console.log("登陆前拦截", err); - return Promise.reject(err); - } + // // 此处测试默认配置token + // config.headers.token = + // "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2NzAxNTMxMDMsImV4cCI6MTY3MDE2MDMwMywiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.c937b2d3a59cbab2136fdde55fd38f06bdff041212aab0fa6741bc4be41e28a7"; + // // } + return config; + }, + (err) => { + console.log("登陆前拦截", err); + return Promise.reject(err); + } ); http.interceptors.response.use( - (response) => { - // console.log('response', response) - const { - data: { code, msg }, - } = response; - // console.log('code', code) - if (code === 0 || code === 200) { - return response; - } else { - if (code === 1000) { - window.open("https://u-pre.boe.com/web/", '_self'); - // window.open("http://111.231.196.214:12013/manage/login", '_self'); - } - console.log("api %o", msg); + (response) => { + // console.log('response', response) + const { + data: { code, msg }, + } = response; + // console.log('code', code) + if (code === 0 || code === 200) { + return response; + } else { + if (code === 1000) { + process.env.NODE_ENV === 'development' ? router.push({ path: 'login' }) : (window.location.href = process.env.VUE_APP_LOGIN_URL) + } + console.log("api %o", msg); + } + return response; + }, + function (error) { + if (error.message == "timeout of 1ms exceeded") { + message.destroy(); + message.error("请求超时"); + } + console.log("api error %o", error); + return Promise.reject(error); } - return response; - }, - function (error) { - if (error.message == "timeout of 1ms exceeded") { - message.destroy(); - message.error("请求超时"); - } - console.log("api error %o", error); - return Promise.reject(error); - } ); export default http; diff --git a/src/api/method.js b/src/api/method.js index 243ae474..98913705 100644 --- a/src/api/method.js +++ b/src/api/method.js @@ -276,7 +276,10 @@ const commonData = { const organizationalTree = [] //嵌套页面 -const iframeUrl = "https://u-pre.boe.com/pc-release/iframe" +const iframeUrl = process.env.VUE_APP_IFRAME_URL +//学员端路由 +const studentUrl = process.env.VUE_APP_IFRAME_STUDENT_URL + //二维码 const codeUrl = "https://u-pre.boe.com" export { @@ -292,5 +295,6 @@ export { commonData, organizationalTree, iframeUrl, + studentUrl, codeUrl, } \ No newline at end of file diff --git a/src/components/BreadCrumb.vue b/src/components/BreadCrumb.vue index 65dbfae8..b5e57c20 100644 --- a/src/components/BreadCrumb.vue +++ b/src/components/BreadCrumb.vue @@ -70,7 +70,7 @@ export default { href: "/leveladd", }, { - name: "管理", + name: "关卡", }, ]; } diff --git a/src/components/NavTop.vue b/src/components/NavTop.vue index c60640bd..b69ba583 100644 --- a/src/components/NavTop.vue +++ b/src/components/NavTop.vue @@ -61,7 +61,7 @@ import { reactive, toRefs } from "vue"; import DownLoad from "../components/drawers/DownLoad"; import * as api from "../api/index1"; - +import { studentUrl } from "../api/method"; export default { name: "NavTop", components: { @@ -76,12 +76,12 @@ export default { { id: 1, name: "管理员", - go: "/manage-release/learningpath", + go: "/learningpath", }, { id: 2, name: "学员", - go: "https://u.boe.com/pc-release/uc/study/courses", + go: studentUrl, }, ], diff --git a/src/components/drawers/ActiveAttendance.vue b/src/components/drawers/ActiveAttendance.vue index e41f7511..0c7a9b5f 100644 --- a/src/components/drawers/ActiveAttendance.vue +++ b/src/components/drawers/ActiveAttendance.vue @@ -513,14 +513,14 @@ export default { align: "center", className: "h", }, - { - title: "所在岗位", - dataIndex: "gang", - key: "gang", - width: 50, - align: "center", - className: "h", - }, + // { + // title: "所在岗位", + // dataIndex: "gang", + // key: "gang", + // width: 50, + // align: "center", + // className: "h", + // }, { title: "签到时间", dataIndex: "cur", diff --git a/src/components/drawers/AddDiscuss.vue b/src/components/drawers/AddDiscuss.vue index 5b39e01a..cb1616d1 100644 --- a/src/components/drawers/AddDiscuss.vue +++ b/src/components/drawers/AddDiscuss.vue @@ -191,11 +191,12 @@ export default { } }; const updateTask = async (res) => { - if(!props.isactive){ + + if (props.isLevel == 1) { + if(!props.isactive){ message.destroy(); return message.warning("请先选中关卡"); } - if (props.isLevel == 1) { await RouterEditTask({ chapterId: props.isactive, courseId: res.data.data.discussId, diff --git a/src/components/drawers/AddEval.vue b/src/components/drawers/AddEval.vue index 28c69f5a..b68eba22 100644 --- a/src/components/drawers/AddEval.vue +++ b/src/components/drawers/AddEval.vue @@ -177,11 +177,12 @@ export default { }; //向关卡或阶段渲染 const updateTask = async (value) => { - if(!props.isactive){ + + if (props.isLevel == 1) { + if(!props.isactive){ message.destroy(); return message.warning("请先选中关卡"); } - if (props.isLevel == 1) { await RouterEditTask({ chapterId: props.isactive, courseId: Number(value.evaluationId), diff --git a/src/components/drawers/AddFaceteach.vue b/src/components/drawers/AddFaceteach.vue index 5b642080..79f0c08c 100644 --- a/src/components/drawers/AddFaceteach.vue +++ b/src/components/drawers/AddFaceteach.vue @@ -702,11 +702,12 @@ export default { // 新增编辑或新增项目任务 const updateTask = async (res) => { console.log("props.isLevel=====", props.isLevel); - if(!props.isactive){ + + if (props.isLevel == 1) { + if(!props.isactive){ message.destroy(); return message.warning("请先选中关卡"); } - if (props.isLevel == 1) { let editObj1 = { chapterId: props.isactive, courseId: res.data.data.offcoursePlanId, diff --git a/src/components/drawers/AddGroupMembers.vue b/src/components/drawers/AddGroupMembers.vue index f953497b..7f71100d 100644 --- a/src/components/drawers/AddGroupMembers.vue +++ b/src/components/drawers/AddGroupMembers.vue @@ -155,14 +155,14 @@ export default { align: "center", className: "h", }, - { - title: "岗位", - dataIndex: "gangw", - key: "gangw", - width: 60, - align: "center", - className: "h", - }, + // { + // title: "岗位", + // dataIndex: "gangw", + // key: "gangw", + // width: 60, + // align: "center", + // className: "h", + // }, // { // title: "进度", // dataIndex: "progress", diff --git a/src/components/drawers/AddInvist.vue b/src/components/drawers/AddInvist.vue index 1ba2c07a..ddb7666f 100644 --- a/src/components/drawers/AddInvist.vue +++ b/src/components/drawers/AddInvist.vue @@ -10,7 +10,7 @@