From 1904d07014b328841594217aeec76982019ea7a9 Mon Sep 17 00:00:00 2001 From: Pengxiansen <2422914688@qq.com> Date: Fri, 14 Feb 2025 15:47:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 3 +- package-lock.json | 6 +- src/api/CONST.js | 1 + src/api/api.js | 14 +- src/api/growthRequest.js | 160 +++++ src/assets/image/growth/growth-icon1.png | Bin 0 -> 996 bytes src/assets/image/growth/growth-icon2.png | Bin 0 -> 678 bytes src/assets/image/growth/growth-icon3.png | Bin 0 -> 556 bytes src/assets/image/growth/growth-icon4.png | Bin 0 -> 1417 bytes src/assets/image/growth/rocket.png | Bin 0 -> 2771 bytes src/main.js | 10 +- src/store/index.js | 13 +- src/views/growth/growthDetails.vue | 764 +++++++++++++++++++++++ src/views/growth/growthPath.vue | 589 +++++++++++++++++ vite.config.js | 9 +- 15 files changed, 1557 insertions(+), 12 deletions(-) create mode 100644 src/api/growthRequest.js create mode 100644 src/assets/image/growth/growth-icon1.png create mode 100644 src/assets/image/growth/growth-icon2.png create mode 100644 src/assets/image/growth/growth-icon3.png create mode 100644 src/assets/image/growth/growth-icon4.png create mode 100644 src/assets/image/growth/rocket.png create mode 100644 src/views/growth/growthDetails.vue create mode 100644 src/views/growth/growthPath.vue diff --git a/.env b/.env index db809cc..4dbec28 100644 --- a/.env +++ b/.env @@ -2,7 +2,8 @@ VITE_BASE=/fe-student-h5 VITE_BASE_API= VITE_OUTPUT_DIR=./dist VITE_BASE_LOGIN_URL=//u-pre.boe.com/m/loginuser?returnUrl= -VITE_PROXY_URL=http://43.143.139.204/manageApi +# VITE_PROXY_URL=http://43.143.139.204/manageApi +VITE_PROXY_URL=https://u-pre.boe.com/manageApi # 在线 VITE_BOE_ONLINE_CLASS_URL=//u-pre.boe.com/mobile/pages/study/courseStudy?id= diff --git a/package-lock.json b/package-lock.json index a840f86..37ef660 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14860,7 +14860,6 @@ "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", "dev": true, "requires": { - "@babel/core": "^7.12.16", "@babel/helper-compilation-targets": "^7.12.16", "@babel/helper-module-imports": "^7.12.13", "@babel/plugin-proposal-class-properties": "^7.12.13", @@ -14873,7 +14872,6 @@ "@vue/babel-plugin-jsx": "^1.0.3", "@vue/babel-preset-jsx": "^1.1.2", "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.8.3", "core-js-compat": "^3.8.3", "semver": "^7.3.4" }, @@ -15733,9 +15731,7 @@ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "requires": { - "ajv": "^8.0.0" - } + "requires": {} }, "ansi-escapes": { "version": "3.2.0", diff --git a/src/api/CONST.js b/src/api/CONST.js index 80a15b5..56456dc 100644 --- a/src/api/CONST.js +++ b/src/api/CONST.js @@ -9,6 +9,7 @@ export const PROJECT = 1; export const ROUTER = 2; export const COURSE = 3; +export const GROWTH = 4 export const TASK_TYPES = { typeName: { 1: "在线", diff --git a/src/api/api.js b/src/api/api.js index 9898423..a37ae8a 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -94,4 +94,16 @@ export const QueryEvaluationTaskStatusOne = `/evaluation/queryEvaluationTaskStat export const EditVoteInvolvedAndBrowse = `/vote/editVoteInvolvedAndBrowse post` export const NO_COMMIT = `/voteSubmit/vote/nocommit post` //任务是否删除 -export const checkStudentExist = `/admin/taskmanage/checkStudentExist post` \ No newline at end of file +export const checkStudentExist = `/admin/taskmanage/checkStudentExist post` + + + +/**专业力必修模块 */ +let baseUrl = "/growth" +// let baseUrl = "" +//查询专业力必修详情 +export const PROFESSIONAL_STUDENT_DETAIL = id => `${baseUrl}/professional/student/studentGrowthDetail/${id}` +//查询专业力必修详情 +export const PROFESSIONAL_STUDENT_TASKLIST = `${baseUrl}/professional/student/studentTaskList` +//记录当前学习任务 +export const PROFESSIONAL_STUDENT_LEARN = `${baseUrl}/professional/student/learnCourse` \ No newline at end of file diff --git a/src/api/growthRequest.js b/src/api/growthRequest.js new file mode 100644 index 0000000..e823494 --- /dev/null +++ b/src/api/growthRequest.js @@ -0,0 +1,160 @@ +import router from "@/router"; +import {reactive, ref, toRefs, watch} from "vue"; +import axios from 'axios'; +import {getCookie} from "@/api/utils"; +import JSONBigInt from 'json-bigint'; +import {ElMessage} from "element-plus"; + +const JSONBigIntStr = JSONBigInt({storeAsString: true}); + +export function usePage(_url, param, callback) { + + const state = reactive({ + data: {}, + loading: false, + total: 0, + size: 10, + current: 1, + params: {pageNo: 1, pageSize: 10, ...param} + }) + + watch(param, () => { + state.params = {...state.params, ...param} + fetchData() + }) + + function fetchData() { + state.loading = true + request(_url, state.params).then(r => { + state.params.pageNo === 1 ? (state.data = (r.data.records || r.data.rows)) : (state.data = [...state.data, ...(r.data.records || r.data.rows)]) + state.size = r.data.size + state.total = r.data.total + state.current = r.data.current + state.loading = false + callback && callback(r) + }) + } + + fetchData() + return { + ...toRefs(state), + fetchData, + }; +} + +export function useRequest(_url, params = {}, callback) { + + const state = reactive({ + data: {}, + loading: false, + + }) + + watch(params, () => { + fetchData() + }) + + function fetchData() { + state.loading = true + request(_url, params).then(r => { + state.data = r.data + state.loading = false + callback&&callback(r) + }) + } + + fetchData() + return { + ...toRefs(state), + fetchData, + }; +} + +export async function growthRequest(_url, params) { + const s = _url.split(' ') + let url = s[0] + const method = s[1]?.toLowerCase() || 'get' + if (method === 'get') { + let paramsArray = []; + //拼接参数 + if (params) { + Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key])) + if (url.search(/\?/) === -1) { + url += '?' + paramsArray.join('&') + } else { + url += '&' + paramsArray.join('&') + } + } + } + const body = method !== 'get' ? params || {} : {} + return axios({ + url, + method, + headers: { + 'token': getCookie('token'), + ...method !== 'get' ? {'Content-Type': 'application/json'} : {} + }, + ...method !== 'get' ? {data: JSON.stringify(body)} : {} + }).then(resp => resp.data).then(response => { + if (response.code !== 200 && response.code !== 0) { + if (response.code === 1000) (import.meta.env.MODE === 'development' || import.meta.env.MODE === 'test') ? router.push({path: '/login'}) : window.open(window.location.protocol + import.meta.env.VITE_BASE_LOGIN_URL, '_top') + + else if (response.code === 2001) router.push({path: '/FaceTeachSignUp', query: {courseId: router.currentRoute.value.query.courseId,type:3}}) + + else if (response.code === 2002) router.push({path: '/FaceTeachNoCommon', query: {courseId: router.currentRoute.value.query.courseId,type:3}}) + else if (response.code === 9000) ElMessage.warning("该数据已经被删除或停用,请联系管理员"); + + // if (import.meta.env.DEV && response.code === 1000) { + // router.push({path: '/login'}) + // } else { + // window.open() + // response.showMsg && notification.open({ + // message: response.showMsg, + // duration: 2, + // }); + // } + } + return response + }) +} + +export async function boeRequest(_url, params) { + const s = _url.split(' ') + let url = s[0] + const method = s[1]?.toLowerCase() || 'get' + if (method === 'get') { + let paramsArray = []; + //拼接参数 + if (params) { + Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key])) + if (url.search(/\?/) === -1) { + url += '?' + paramsArray.join('&') + } else { + url += '&' + paramsArray.join('&') + } + } + } + const body = method !== 'get' ? params || {} : {} + return fetch(url, { + method, + headers: { + token: getCookie('token'), + ...method !== 'get' ? {'Content-Type': 'application/json'} : {} + }, + ...method !== 'get' ? {body: JSON.stringify(body)} : {} + }).then(res => { + return res.text() + }).then(res => { + return JSONBigIntStr.parse(res) + }) +} + +const httpupload = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, + timeout: 1000 * 15, + headers: { "Content-Type": "multipart/form-data" }, +}); + +export const fileUp = (data) => httpupload.post( import.meta.env.VITE_BASE_API+"/file/upload", data, { + headers: { "Content-Type": "multipart/form-data" }, +}); \ No newline at end of file diff --git a/src/assets/image/growth/growth-icon1.png b/src/assets/image/growth/growth-icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..44c8a8376f851e8968413700f0db02adc886466e GIT binary patch literal 996 zcmVPx&o=HSOR5(wSRcTCAXB0i(n@vGcz`-)1{-ENxF)FxWfziaJqEV1y6&)0KBCXb9 zYLf;l9TZy=ZPhXE0z;>9VXAZx6Y&oYAhKzqqX{l0HtHY)r4XSo%X_bRuW_QY82WzR zckj8|x#uJB@uk&#G3wc0FV;Ia=PC+hzMXM|@NP1Zw1)-PC?%50$)hKoH!M3e;2BOl z4GE^yE!~5C`=yjvu2#%LtXzfg067?rMdv?VXzj9~wxbCyj`uxwZKS zk_OSuslOMKrPZ3i7roZ@4HJ{Y@?*9St1{kch_S;u(22;P2`IXA3>W?|*&@a&BFRi+ z63wu#v*y+1erM*H<KZ8sxp-J?mB~@xg+=^rIg~O`O zY;8nA%g;C-zYo(xmF}4Bb$d|%s-=p|EMIQRQ)S6FDL;KLAO{YmZRI$8uNWs1i;&>4 zIDMNDM<0~h$kdCAnV%MXM}6|4S^(rY4v%`mUu!s_2Z|hN|h-TVx%C4|pS(#31tj&{a@yjz8+vEFvuwoXmQP8IEU&R^CSpsu62io{-CNjqE) zFWNX+7rwc@Uub3Ah!9k-Fd$Ge((fs%O=}?&%jo}z-D7P}k4g^P9s4e^8J0nQ^FgRW zl-MvS#cy>2v7eZ15h035VY;(_Tb0%C>@Pm8{?Y67_zm+)Bca4T0eN2L*6zj_+32jM zHKtPcx}uFs^%O^K`d{K;ZNiRQTCm{smbKNH@2E}A=^RPJ*k|V$j>*tOr670O#`ntC z$%h6Q9#`;{m!*a+puOblO+Rz4tjrv+4;~PU#9``iUSOl~L4X_-q3}u&*!#F?ZG?ky z*#g8PzrCAQRq9h<-!^KhcLlb+ew@xf0UXE8cCs!x|6f8x-GoAml*s%(0sjJhhIsj+ S4AB|@0000Px%U`a$lR5(wil}kueQ5=WAbDi;#4}8s_VJ#dD3dw8{_5xjm*+Xoimy~5r(Sw3$ zV~ao+k(+`RF3L2GFiJ+I9IJ6-3pI(LHYH?9k*LiK3Ys$0JWkA%uW2gnp5_0Z^WFP9 z_kX@42s30?K^)`#hrnHeQ1bD*l0kwdW(?`?gQ&+Ca$7`h=Tzu&5n7P#D^K8ZUP007 zNH2!e&9H0*NFPiOfwKojo&jDvk^0M`G=vZ}L4G!MlfVb6l zAs@#0*mzGN!>A58WP!dipOCFFKJr@>GD=kf+o12TU&yv3Cpk4KWS>(93`VYT3TaO2 zAZ^B!|E`esK`+H;KKI6$@?i>ZF#>_iy9(l#_K9 zR#*L9U+=EMhdNLqn@PE75{1X7fQW$UFFyr4`~;-OjyA4J zlsfK&73}0{!4gdfE M07*qoM6N<$f+TP^{Qv*} literal 0 HcmV?d00001 diff --git a/src/assets/image/growth/growth-icon3.png b/src/assets/image/growth/growth-icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..003c295ed583b6ceb019a03ea226fbec8f88e3c7 GIT binary patch literal 556 zcmV+{0@MA8P)Px$=1D|BR5(wqRZEW3KoG5Jr(;`oB!4usjyMAg&Hxg7kbs%N+<^^CB+kGvFvEfa zpy3WkVDS64Cb{2)-d=x&9p21$myoX`1FeA|6O7fwvH1rPj7BG))6_UGp*iD|#1(;m4~O zJs=Sclv1CG=!I#TVB2;Nv~E;u4fFXNmdhm|;#c4IUn63}dOcv0Bo~PI(sf-J4u_jE zaZOfL6%<9m@{2GGk9xo~O(Os}-3F{f??4U1h&<0b!|8PDNGX4trg`W%&b>TaS1QYr z!;kB_et?~Kp6A_|v%9QtPV+nm_L2cFrIb%bqtRXOZoQw)W>8htC1zO`Tb6aeRo!L% zt9r~Hwyx`n`&RZQqgwakil^W||-fqHFZk^^8*LSZnPx)LrFwIR7gv$mkCf+WfaGMcT9XN@>oXvBYH@7131OCT%8|rW7Sa z9YsdbF)0<1U~EB~kxDcjEfpLmm2$VmrZO2bQ9(dtm*w$5yv_G+&wH=$J;0`K=FOWq z-#O=h&v(9a&i|9>#FDcYxKee09#wb3F}Q`(ROf}MuA9Zw*=WYaSWR<7KHdTOc)RCF z3%_XW$gR|#f}9cQPjyuyO|@^+($uvhXO?{@msXsOS$GG&FD=d3|+u)Jx^a%#&r z(%P&<7CHh3M?l}f&?^+WDq_ryP<{h$T!O2olz*|h8qD+xUM(%pOS1=V11u*;Inj3e z5DgWREe0=)he-+G*S}K%Q+5q^I_kcw?;1jCHGu?+D55Tq4P<=<) z>k$O~UV-7Wz}a1|FH*2$9@JM_BA1dcMp_jf0m~c0mQhoZYKb)dTU*ex*^rkC&Gq(! zH*|-|2@tkWzb}qHeWnt*Pv}x<)rkzDU;&oXCi+o!yO371fj2X4kN5B<_SPJ2uY zL?-HW#j)>>6*s;Kci#|c&B<~FIB8fWja7>o5DqcB^hTGDz?X5hpx%Lstg6U%?~QaA zGF30%8LeD6&)y$NYtP0>@~2Z>C@ieC)M>&|=siF+Xf?ye(Mpc2tN&=2u^xH`DUym? zaBv-5JEQ6teIe;Iba_gZm0X3?2r#&{;5EoglD9_0Q1WM%rA`;;=)dx>v+#)~Xa3JA z`PVuW7Htn8Z5ososP^wJ|5`f=gekvPFB~ z>5=w<|Go%2=Bs-nX2YBh^t#sL_V6#3c;Make6+JE(@{9 z+6NXIDdV9+^HHKpMQv0%mRO=YiCcaByb97Y1XiE0pOQzw?H#o+6)ke_N?RwQWW=hw zYr8jhv(iEzUyqL3()e}=T~+|qx?;tW5^3T|5XmA$d3byV;J?26InJ30%VALsap z)v;*8Hy~7sKVGI1fo+iq6#uc+Ara8JJ(CTGk`>9MWiTPuF{r3>F+c<6J6lzlyPs+M#J9DJlg&N XO`QYQLdDFl00000NkvXXu0mjfX?dkE literal 0 HcmV?d00001 diff --git a/src/assets/image/growth/rocket.png b/src/assets/image/growth/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..5283172ff3c1e03796bb7ea80140eef1d181bc7a GIT binary patch literal 2771 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 { + content.commit("SET_GROWTH_INFO", res.data); + }) + }, getRouterInfo(content, { routerId, chapterId }) { request(ROUTER_PROCESS, { routerId, chapterId }).then(res => { content.commit('SET_ROUTER_INFO', res.data) diff --git a/src/views/growth/growthDetails.vue b/src/views/growth/growthDetails.vue new file mode 100644 index 0000000..3188fc7 --- /dev/null +++ b/src/views/growth/growthDetails.vue @@ -0,0 +1,764 @@ + + + + + diff --git a/src/views/growth/growthPath.vue b/src/views/growth/growthPath.vue new file mode 100644 index 0000000..564e5c2 --- /dev/null +++ b/src/views/growth/growthPath.vue @@ -0,0 +1,589 @@ + + + + + diff --git a/vite.config.js b/vite.config.js index 39f4c2d..956d935 100644 --- a/vite.config.js +++ b/vite.config.js @@ -17,7 +17,7 @@ const path = require("path"); export default defineConfig(({ command, mode }) => ({ - host: "192.158.3.51", + // host: "192.158.3.51", base: loadEnv(mode, process.cwd()).VITE_BASE, build: { outDir: loadEnv(mode, process.cwd()).VITE_OUTPUT_DIR, @@ -41,8 +41,13 @@ export default defineConfig(({ command, mode }) => ] }, server: { - host: "192.168.3.51", + // host: "192.168.3.51", proxy: { + "/professional": { + // target: 'http://192.168.237.141:32002', + target: 'http://192.168.150.97:32002', + changeOrigin: true, + }, "/file/upload": { target: loadEnv(mode, process.cwd()).VITE_PROXY_URL, changeOrigin: true,