Merge branch 'zcwy-learn' into zcwy_0716_learning

# Conflicts:
#	config/index.js
#	unpackage/dist/build/h5/index.html
This commit is contained in:
zhangsir
2024-07-18 09:01:47 +08:00
67 changed files with 4575 additions and 45 deletions

14
api/modules/growth.js Normal file
View File

@@ -0,0 +1,14 @@
import ajax from '@/api/manage/manageAjax.js';
export const getList = (params) => ajax.get(`/manageApi/stu/grow/getStuLearnInfo?userId=${params}`);
//获取路径图详情
export const taskList = (id) => ajax.get(`/manageApi/stu/grow/taskList?growId=${id}`);
// 获取岗位
export const getAllPosition = () => ajax.get(`/manageApi/stu/grow/getPositionOfPath`)
// 获取职级
export const getAllBandInfo = () => ajax.get(`/manageApi/admin/thirdApi/getAllBandInfo`)
//全岗位路径
export const getFullJobPath = (params) => ajax.get(`/manageApi/stu/grow/getFullJobPath?positionIdList=${params.positionIdList}&bandCodeList=${params.bandCodeList}`);
//外部考试
export const queryExternalExam = (params) => ajax.get(`/manageApi/external/exam/queryExternalExam?externalId=${params.externalId}&type=14`);
//外部考试点击调用
export const submitExternalExam = (params) => ajax.postJson(`/manageApi/stu/externalExam/submitExternalExam`,params);

View File

@@ -23,8 +23,9 @@
</view> </view>
<view class="currtime">{{currtime}}</view> <view class="currtime">{{currtime}}</view>
<view class='slider-container'> <view class='slider-container'>
<slider :disabled="!drag" @change.stop="sliderChange" @changing="sliderChanging" step="1" :value="sliderValue" backgroundColor="#9f9587" activeColor="#d6d2cc" block-color="#FFFFFF" block-size="12"/> <slider v-if="drag" @change.stop="sliderChange" @changing="sliderChanging" step="1" :value="sliderValue" backgroundColor="#9f9587" activeColor="#d6d2cc" block-color="#FFFFFF" block-size="12"/>
</view> <slider v-if="!drag" disabled="true" step="1" :value="sliderValue" backgroundColor="#9f9587" activeColor="#d6d2cc" block-color="#FFFFFF" block-size="12"/>
</view>
<view class="druationTime">{{druationTime}}</view> <view class="druationTime">{{druationTime}}</view>
<view class="druationTime"> <view class="druationTime">
<view id="myVideoSpeed" class="player-speed btn-speed"> <view id="myVideoSpeed" class="player-speed btn-speed">

247
hs_err_pid23704.log Normal file
View File

@@ -0,0 +1,247 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 266338304 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Zero Based Compressed Oops mode in which the Java heap is
# placed in the first 32GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 32GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3825), pid=23704, tid=7560
#
# JRE version: (17.0.9+7) (build )
# Java VM: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: git4idea.http.GitAskPassApp Username for 'http://10.251.129.121':
Host: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, 12 cores, 15G, Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
Time: Tue May 14 19:06:17 2024 Windows 11 , 64 bit Build 22621 (10.0.22621.3374) elapsed time: 0.011895 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x0000020375a5c2d0): JavaThread "Unknown thread" [_thread_in_vm, id=7560, stack(0x0000005082d00000,0x0000005082e00000)]
Stack: [0x0000005082d00000,0x0000005082e00000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x6886e9]
V [jvm.dll+0x841e4a]
V [jvm.dll+0x843a8e]
V [jvm.dll+0x8440f3]
V [jvm.dll+0x24c14f]
V [jvm.dll+0x685499]
V [jvm.dll+0x679c2a]
V [jvm.dll+0x30cf9b]
V [jvm.dll+0x314446]
V [jvm.dll+0x36425e]
V [jvm.dll+0x36448f]
V [jvm.dll+0x2e2d68]
V [jvm.dll+0x2e3cd4]
V [jvm.dll+0x8129f1]
V [jvm.dll+0x3720c1]
V [jvm.dll+0x7f152c]
V [jvm.dll+0x3f5d4f]
V [jvm.dll+0x3f7981]
C [jli.dll+0x528f]
C [ucrtbase.dll+0x29333]
C [KERNEL32.DLL+0x1257d]
C [ntdll.dll+0x5aa48]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x00007ffb18bcef18, length=0, elements={
}
Java Threads: ( => current thread )
Other Threads:
0x0000020375aca2f0 GCTaskThread "GC Thread#0" [stack: 0x0000005082e00000,0x0000005082f00000] [id=35172]
0x0000020375adb000 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000005082f00000,0x0000005083000000] [id=38588]
0x0000020375adba20 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000005083000000,0x0000005083100000] [id=39644]
[error occurred during error reporting (printing all threads), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb18383937]
VM state: not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x0000020375a56d20] Heap_lock - owner thread: 0x0000020375a5c2d0
Heap address: 0x0000000702400000, size: 4060 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000000000000-0x0000000000000000-0x0000000000000000), size 0, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 1.
Narrow klass base: 0x0000000000000000, Narrow klass shift: 0, Narrow klass range: 0x0
GC Precious Log:
<Empty>
Heap:
garbage-first heap total 0K, used 0K [0x0000000702400000, 0x0000000800000000)
region size 2048K, 0 young (0K), 0 survivors (0K)
Metaspace used 0K, committed 0K, reserved 0K
class space used 0K, committed 0K, reserved 0K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
Card table byte_map: [0x0000020379f20000,0x000002037a710000] _byte_map_base: 0x000002037670e000
Marking Bits (Prev, Next): (CMBitMap*) 0x0000020375aca910, (CMBitMap*) 0x0000020375aca950
Prev Bits: [0x000002037af00000, 0x000002037ee70000)
Next Bits: [0x000002030f000000, 0x0000020312f70000)
GC Heap History (0 events):
No events
Dll operation events (1 events):
Event: 0.008 Loaded shared library E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
Deoptimization events (0 events):
No events
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (0 events):
No events
VM Operations (0 events):
No events
Events (0 events):
No events
Dynamic libraries:
0x00007ff6b0a10000 - 0x00007ff6b0a1a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.exe
0x00007ffb942d0000 - 0x00007ffb944e6000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffb92b90000 - 0x00007ffb92c54000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffb917b0000 - 0x00007ffb91b57000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffb91c80000 - 0x00007ffb91d91000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb8a4d0000 - 0x00007ffb8a4e7000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jli.dll
0x00007ffb7b260000 - 0x00007ffb7b27b000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\VCRUNTIME140.dll
0x00007ffb92310000 - 0x00007ffb924be000 C:\WINDOWS\System32\USER32.dll
0x00007ffb915f0000 - 0x00007ffb91616000 C:\WINDOWS\System32\win32u.dll
0x00007ffb92a30000 - 0x00007ffb92a59000 C:\WINDOWS\System32\GDI32.dll
0x00007ffb907e0000 - 0x00007ffb90a73000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98\COMCTL32.dll
0x00007ffb91b60000 - 0x00007ffb91c79000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffb92a60000 - 0x00007ffb92b07000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffb91620000 - 0x00007ffb916ba000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb93520000 - 0x00007ffb93551000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffb8a5b0000 - 0x00007ffb8a5bc000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\vcruntime140_1.dll
0x00007ffb477d0000 - 0x00007ffb4785d000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\msvcp140.dll
0x00007ffb18090000 - 0x00007ffb18d13000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server\jvm.dll
0x00007ffb941d0000 - 0x00007ffb94282000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffb92ff0000 - 0x00007ffb93098000 C:\WINDOWS\System32\sechost.dll
0x00007ffb91780000 - 0x00007ffb917a8000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffb93560000 - 0x00007ffb93675000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffb90f10000 - 0x00007ffb90f5d000 C:\WINDOWS\SYSTEM32\POWRPROF.dll
0x00007ffb89be0000 - 0x00007ffb89c14000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffb90e70000 - 0x00007ffb90e79000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffb8a300000 - 0x00007ffb8a30a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffb92b10000 - 0x00007ffb92b81000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffb90af0000 - 0x00007ffb90b03000 C:\WINDOWS\SYSTEM32\UMPDC.dll
0x00007ffb8fd70000 - 0x00007ffb8fd88000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffb8da70000 - 0x00007ffb8da7a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jimage.dll
0x00007ffb90f60000 - 0x00007ffb91193000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffb92c60000 - 0x00007ffb92fe8000 C:\WINDOWS\System32\combase.dll
0x00007ffb93680000 - 0x00007ffb93757000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffb90de0000 - 0x00007ffb90e12000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffb91da0000 - 0x00007ffb91e19000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb8aae0000 - 0x00007ffb8ab05000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server
VM Arguments:
java_command: git4idea.http.GitAskPassApp Username for 'http://10.251.129.121':
java_class_path (initial): E:/app/webstorm/WebStorm 2023.2.5/plugins/vcs-git/lib/git4idea-rt.jar;E:/app/webstorm/WebStorm 2023.2.5/lib/externalProcess-rt.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 3 {product} {ergonomic}
uint G1ConcRefinementThreads = 10 {product} {ergonomic}
size_t G1HeapRegionSize = 2097152 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 4257218560 {product} {ergonomic}
size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
size_t SoftMaxHeapSize = 4257218560 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\bin;E:\git\Git\usr\bin;C:\Users\zhang\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;E:\app\weixinkaifa\΢<><CEA2>web<65><62><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>\dll;E:\nod;E:\git\Git\cmd;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\zhang\AppData\Local\Microsoft\WindowsApps;E:\vscode\Microsoft VS Code\bin;C:\Users\zhang\AppData\Roaming\npm;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs
USERNAME=zhang
DISPLAY=:0.0
LC_ALL=en_US.UTF-8
TERM=xterm-256color
TMPDIR=C:\Users\zhang\AppData\Local\Temp
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
TMP=C:\Users\zhang\AppData\Local\Temp
TEMP=C:\Users\zhang\AppData\Local\Temp
Periodic native trim disabled
JNI global refs:
JNI global refs: 0, weak refs: 0
JNI global refs memory usage: 0, weak refs: 0
OOME stack traces (most recent first):
Classloader memory used:
--------------- S Y S T E M ---------------
OS:
Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
OS uptime: 21 days 3:01 hours
CPU: total 12 (initial active 12) (6 cores per cpu, 2 threads per core) family 6 model 158 stepping 13 microcode 0xde, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt
Processor Information for all 12 processors :
Max Mhz: 2592, Current Mhz: 2592, Mhz Limit: 2592
Memory: 4k page, system-wide physical 16234M (458M free)
TotalPageFile size 53855M (AvailPageFile size 145M)
current process WorkingSet (physical memory assigned to process): 11M, peak: 11M
current process commit charge ("private bytes"): 64M, peak: 318M
vm_info: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46) for windows-amd64 JRE (17.0.9+7-b1000.46), built on 2023-10-27 by "builduser" with MS VC++ 16.10 / 16.11 (VS2019)
END.

247
hs_err_pid40096.log Normal file
View File

@@ -0,0 +1,247 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 266338304 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Zero Based Compressed Oops mode in which the Java heap is
# placed in the first 32GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 32GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3825), pid=40096, tid=33300
#
# JRE version: (17.0.9+7) (build )
# Java VM: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: git4idea.http.GitAskPassApp Username for 'http://10.251.129.121':
Host: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, 12 cores, 15G, Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
Time: Tue May 14 19:05:16 2024 Windows 11 , 64 bit Build 22621 (10.0.22621.3374) elapsed time: 0.092966 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x0000025d0145c540): JavaThread "Unknown thread" [_thread_in_vm, id=33300, stack(0x00000098f1f00000,0x00000098f2000000)]
Stack: [0x00000098f1f00000,0x00000098f2000000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x6886e9]
V [jvm.dll+0x841e4a]
V [jvm.dll+0x843a8e]
V [jvm.dll+0x8440f3]
V [jvm.dll+0x24c14f]
V [jvm.dll+0x685499]
V [jvm.dll+0x679c2a]
V [jvm.dll+0x30cf9b]
V [jvm.dll+0x314446]
V [jvm.dll+0x36425e]
V [jvm.dll+0x36448f]
V [jvm.dll+0x2e2d68]
V [jvm.dll+0x2e3cd4]
V [jvm.dll+0x8129f1]
V [jvm.dll+0x3720c1]
V [jvm.dll+0x7f152c]
V [jvm.dll+0x3f5d4f]
V [jvm.dll+0x3f7981]
C [jli.dll+0x528f]
C [ucrtbase.dll+0x29333]
C [KERNEL32.DLL+0x1257d]
C [ntdll.dll+0x5aa48]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x00007ffb18bcef18, length=0, elements={
}
Java Threads: ( => current thread )
Other Threads:
0x0000025d014c9850 GCTaskThread "GC Thread#0" [stack: 0x00000098f2000000,0x00000098f2100000] [id=41280]
0x0000025d014da560 ConcurrentGCThread "G1 Main Marker" [stack: 0x00000098f2100000,0x00000098f2200000] [id=14792]
0x0000025d014daf80 ConcurrentGCThread "G1 Conc#0" [stack: 0x00000098f2200000,0x00000098f2300000] [id=28168]
[error occurred during error reporting (printing all threads), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb18383937]
VM state: not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x0000025d01458b20] Heap_lock - owner thread: 0x0000025d0145c540
Heap address: 0x0000000702400000, size: 4060 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000000000000-0x0000000000000000-0x0000000000000000), size 0, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 1.
Narrow klass base: 0x0000000000000000, Narrow klass shift: 0, Narrow klass range: 0x0
GC Precious Log:
<Empty>
Heap:
garbage-first heap total 0K, used 0K [0x0000000702400000, 0x0000000800000000)
region size 2048K, 0 young (0K), 0 survivors (0K)
Metaspace used 0K, committed 0K, reserved 0K
class space used 0K, committed 0K, reserved 0K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
Card table byte_map: [0x0000025d14800000,0x0000025d14ff0000] _byte_map_base: 0x0000025d10fee000
Marking Bits (Prev, Next): (CMBitMap*) 0x0000025d014c9e70, (CMBitMap*) 0x0000025d014c9eb0
Prev Bits: [0x0000025d157e0000, 0x0000025d19750000)
Next Bits: [0x0000025d19750000, 0x0000025d1d6c0000)
GC Heap History (0 events):
No events
Dll operation events (1 events):
Event: 0.010 Loaded shared library E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
Deoptimization events (0 events):
No events
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (0 events):
No events
VM Operations (0 events):
No events
Events (0 events):
No events
Dynamic libraries:
0x00007ff6b0a10000 - 0x00007ff6b0a1a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.exe
0x00007ffb942d0000 - 0x00007ffb944e6000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffb92b90000 - 0x00007ffb92c54000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffb917b0000 - 0x00007ffb91b57000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffb91c80000 - 0x00007ffb91d91000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb8a4d0000 - 0x00007ffb8a4e7000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jli.dll
0x00007ffb7b260000 - 0x00007ffb7b27b000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\VCRUNTIME140.dll
0x00007ffb92310000 - 0x00007ffb924be000 C:\WINDOWS\System32\USER32.dll
0x00007ffb915f0000 - 0x00007ffb91616000 C:\WINDOWS\System32\win32u.dll
0x00007ffb92a30000 - 0x00007ffb92a59000 C:\WINDOWS\System32\GDI32.dll
0x00007ffb907e0000 - 0x00007ffb90a73000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98\COMCTL32.dll
0x00007ffb91b60000 - 0x00007ffb91c79000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffb92a60000 - 0x00007ffb92b07000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffb91620000 - 0x00007ffb916ba000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb93520000 - 0x00007ffb93551000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffb7df20000 - 0x00007ffb7df2c000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\vcruntime140_1.dll
0x00007ffb477d0000 - 0x00007ffb4785d000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\msvcp140.dll
0x00007ffb18090000 - 0x00007ffb18d13000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server\jvm.dll
0x00007ffb941d0000 - 0x00007ffb94282000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffb92ff0000 - 0x00007ffb93098000 C:\WINDOWS\System32\sechost.dll
0x00007ffb91780000 - 0x00007ffb917a8000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffb93560000 - 0x00007ffb93675000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffb90e70000 - 0x00007ffb90e79000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffb89be0000 - 0x00007ffb89c14000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffb92b10000 - 0x00007ffb92b81000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffb8a300000 - 0x00007ffb8a30a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffb90f10000 - 0x00007ffb90f5d000 C:\WINDOWS\SYSTEM32\POWRPROF.dll
0x00007ffb90af0000 - 0x00007ffb90b03000 C:\WINDOWS\SYSTEM32\UMPDC.dll
0x00007ffb8fd70000 - 0x00007ffb8fd88000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffb8da70000 - 0x00007ffb8da7a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jimage.dll
0x00007ffb90f60000 - 0x00007ffb91193000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffb92c60000 - 0x00007ffb92fe8000 C:\WINDOWS\System32\combase.dll
0x00007ffb93680000 - 0x00007ffb93757000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffb90de0000 - 0x00007ffb90e12000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffb91da0000 - 0x00007ffb91e19000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb8aae0000 - 0x00007ffb8ab05000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server
VM Arguments:
java_command: git4idea.http.GitAskPassApp Username for 'http://10.251.129.121':
java_class_path (initial): E:/app/webstorm/WebStorm 2023.2.5/plugins/vcs-git/lib/git4idea-rt.jar;E:/app/webstorm/WebStorm 2023.2.5/lib/externalProcess-rt.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 3 {product} {ergonomic}
uint G1ConcRefinementThreads = 10 {product} {ergonomic}
size_t G1HeapRegionSize = 2097152 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 4257218560 {product} {ergonomic}
size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
size_t SoftMaxHeapSize = 4257218560 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\bin;E:\git\Git\usr\bin;C:\Users\zhang\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;E:\app\weixinkaifa\΢<><CEA2>web<65><62><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>\dll;E:\nod;E:\git\Git\cmd;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\zhang\AppData\Local\Microsoft\WindowsApps;E:\vscode\Microsoft VS Code\bin;C:\Users\zhang\AppData\Roaming\npm;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs
USERNAME=zhang
DISPLAY=:0.0
LC_ALL=en_US.UTF-8
TERM=xterm-256color
TMPDIR=C:\Users\zhang\AppData\Local\Temp
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
TMP=C:\Users\zhang\AppData\Local\Temp
TEMP=C:\Users\zhang\AppData\Local\Temp
Periodic native trim disabled
JNI global refs:
JNI global refs: 0, weak refs: 0
JNI global refs memory usage: 0, weak refs: 0
OOME stack traces (most recent first):
Classloader memory used:
--------------- S Y S T E M ---------------
OS:
Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
OS uptime: 21 days 3:00 hours
CPU: total 12 (initial active 12) (6 cores per cpu, 2 threads per core) family 6 model 158 stepping 13 microcode 0xde, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt
Processor Information for all 12 processors :
Max Mhz: 2592, Current Mhz: 2592, Mhz Limit: 2592
Memory: 4k page, system-wide physical 16234M (490M free)
TotalPageFile size 53855M (AvailPageFile size 108M)
current process WorkingSet (physical memory assigned to process): 11M, peak: 11M
current process commit charge ("private bytes"): 64M, peak: 318M
vm_info: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46) for windows-amd64 JRE (17.0.9+7-b1000.46), built on 2023-10-27 by "builduser" with MS VC++ 16.10 / 16.11 (VS2019)
END.

247
hs_err_pid41712.log Normal file
View File

@@ -0,0 +1,247 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 266338304 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Zero Based Compressed Oops mode in which the Java heap is
# placed in the first 32GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 32GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3825), pid=41712, tid=20440
#
# JRE version: (17.0.9+7) (build )
# Java VM: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: git4idea.http.GitAskPassApp Username for 'https://codeup.aliyun.com':
Host: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, 12 cores, 15G, Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
Time: Tue May 14 19:06:17 2024 Windows 11 , 64 bit Build 22621 (10.0.22621.3374) elapsed time: 0.010056 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x000002479b3ead10): JavaThread "Unknown thread" [_thread_in_vm, id=20440, stack(0x000000b8ee600000,0x000000b8ee700000)]
Stack: [0x000000b8ee600000,0x000000b8ee700000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x6886e9]
V [jvm.dll+0x841e4a]
V [jvm.dll+0x843a8e]
V [jvm.dll+0x8440f3]
V [jvm.dll+0x24c14f]
V [jvm.dll+0x685499]
V [jvm.dll+0x679c2a]
V [jvm.dll+0x30cf9b]
V [jvm.dll+0x314446]
V [jvm.dll+0x36425e]
V [jvm.dll+0x36448f]
V [jvm.dll+0x2e2d68]
V [jvm.dll+0x2e3cd4]
V [jvm.dll+0x8129f1]
V [jvm.dll+0x3720c1]
V [jvm.dll+0x7f152c]
V [jvm.dll+0x3f5d4f]
V [jvm.dll+0x3f7981]
C [jli.dll+0x528f]
C [ucrtbase.dll+0x29333]
C [KERNEL32.DLL+0x1257d]
C [ntdll.dll+0x5aa48]
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x00007ffb18bcef18, length=0, elements={
}
Java Threads: ( => current thread )
Other Threads:
0x000002479b458e70 GCTaskThread "GC Thread#0" [stack: 0x000000b8ee700000,0x000000b8ee800000] [id=23880]
0x000002479b469b80 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000b8ee800000,0x000000b8ee900000] [id=25008]
0x000002479b46a5a0 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000b8ee900000,0x000000b8eea00000] [id=20088]
[error occurred during error reporting (printing all threads), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb18383937]
VM state: not at safepoint (not fully initialized)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x000002479b3e7410] Heap_lock - owner thread: 0x000002479b3ead10
Heap address: 0x0000000702400000, size: 4060 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000000000000-0x0000000000000000-0x0000000000000000), size 0, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 1.
Narrow klass base: 0x0000000000000000, Narrow klass shift: 0, Narrow klass range: 0x0
GC Precious Log:
<Empty>
Heap:
garbage-first heap total 0K, used 0K [0x0000000702400000, 0x0000000800000000)
region size 2048K, 0 young (0K), 0 survivors (0K)
Metaspace used 0K, committed 0K, reserved 0K
class space used 0K, committed 0K, reserved 0K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
Card table byte_map: [0x00000247ae8a0000,0x00000247af090000] _byte_map_base: 0x00000247ab08e000
Marking Bits (Prev, Next): (CMBitMap*) 0x000002479b459490, (CMBitMap*) 0x000002479b4594d0
Prev Bits: [0x00000247af880000, 0x00000247b37f0000)
Next Bits: [0x00000247b37f0000, 0x00000247b7760000)
GC Heap History (0 events):
No events
Dll operation events (1 events):
Event: 0.006 Loaded shared library E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
Deoptimization events (0 events):
No events
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (0 events):
No events
VM Operations (0 events):
No events
Events (0 events):
No events
Dynamic libraries:
0x00007ff6b0a10000 - 0x00007ff6b0a1a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.exe
0x00007ffb942d0000 - 0x00007ffb944e6000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffb92b90000 - 0x00007ffb92c54000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffb917b0000 - 0x00007ffb91b57000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffb91c80000 - 0x00007ffb91d91000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffb8a4d0000 - 0x00007ffb8a4e7000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jli.dll
0x00007ffb7b260000 - 0x00007ffb7b27b000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\VCRUNTIME140.dll
0x00007ffb92310000 - 0x00007ffb924be000 C:\WINDOWS\System32\USER32.dll
0x00007ffb915f0000 - 0x00007ffb91616000 C:\WINDOWS\System32\win32u.dll
0x00007ffb92a30000 - 0x00007ffb92a59000 C:\WINDOWS\System32\GDI32.dll
0x00007ffb907e0000 - 0x00007ffb90a73000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98\COMCTL32.dll
0x00007ffb91b60000 - 0x00007ffb91c79000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffb92a60000 - 0x00007ffb92b07000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffb91620000 - 0x00007ffb916ba000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffb93520000 - 0x00007ffb93551000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffb8a5b0000 - 0x00007ffb8a5bc000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\vcruntime140_1.dll
0x00007ffb477d0000 - 0x00007ffb4785d000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\msvcp140.dll
0x00007ffb18090000 - 0x00007ffb18d13000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server\jvm.dll
0x00007ffb941d0000 - 0x00007ffb94282000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffb92ff0000 - 0x00007ffb93098000 C:\WINDOWS\System32\sechost.dll
0x00007ffb91780000 - 0x00007ffb917a8000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffb93560000 - 0x00007ffb93675000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffb90e70000 - 0x00007ffb90e79000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffb92b10000 - 0x00007ffb92b81000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffb89be0000 - 0x00007ffb89c14000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffb8a300000 - 0x00007ffb8a30a000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffb90f10000 - 0x00007ffb90f5d000 C:\WINDOWS\SYSTEM32\POWRPROF.dll
0x00007ffb90af0000 - 0x00007ffb90b03000 C:\WINDOWS\SYSTEM32\UMPDC.dll
0x00007ffb8fd70000 - 0x00007ffb8fd88000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffb8da70000 - 0x00007ffb8da7a000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\jimage.dll
0x00007ffb90f60000 - 0x00007ffb91193000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffb92c60000 - 0x00007ffb92fe8000 C:\WINDOWS\System32\combase.dll
0x00007ffb93680000 - 0x00007ffb93757000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffb90de0000 - 0x00007ffb90e12000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffb91da0000 - 0x00007ffb91e19000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffb8aae0000 - 0x00007ffb8ab05000 E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\java.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3235_none_270f74e173860f98;E:\app\webstorm\WebStorm 2023.2.5\jbr\bin\server
VM Arguments:
java_command: git4idea.http.GitAskPassApp Username for 'https://codeup.aliyun.com':
java_class_path (initial): E:/app/webstorm/WebStorm 2023.2.5/plugins/vcs-git/lib/git4idea-rt.jar;E:/app/webstorm/WebStorm 2023.2.5/lib/externalProcess-rt.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 3 {product} {ergonomic}
uint G1ConcRefinementThreads = 10 {product} {ergonomic}
size_t G1HeapRegionSize = 2097152 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 4257218560 {product} {ergonomic}
size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5839372 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122909434 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
size_t SoftMaxHeapSize = 4257218560 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\libexec\git-core;E:\git\Git\mingw32\bin;E:\git\Git\usr\bin;C:\Users\zhang\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;E:\app\weixinkaifa\΢<><CEA2>web<65><62><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>\dll;E:\nod;E:\git\Git\cmd;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\zhang\AppData\Local\Microsoft\WindowsApps;E:\vscode\Microsoft VS Code\bin;C:\Users\zhang\AppData\Roaming\npm;C:\Users\zhang\AppData\Roaming\nvm;C:\Program Files\nodejs
USERNAME=zhang
DISPLAY=:0.0
LC_ALL=en_US.UTF-8
TERM=xterm-256color
TMPDIR=C:\Users\zhang\AppData\Local\Temp
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13, GenuineIntel
TMP=C:\Users\zhang\AppData\Local\Temp
TEMP=C:\Users\zhang\AppData\Local\Temp
Periodic native trim disabled
JNI global refs:
JNI global refs: 0, weak refs: 0
JNI global refs memory usage: 0, weak refs: 0
OOME stack traces (most recent first):
Classloader memory used:
--------------- S Y S T E M ---------------
OS:
Windows 11 , 64 bit Build 22621 (10.0.22621.3374)
OS uptime: 21 days 3:01 hours
CPU: total 12 (initial active 12) (6 cores per cpu, 2 threads per core) family 6 model 158 stepping 13 microcode 0xde, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt
Processor Information for all 12 processors :
Max Mhz: 2592, Current Mhz: 2592, Mhz Limit: 2592
Memory: 4k page, system-wide physical 16234M (454M free)
TotalPageFile size 53855M (AvailPageFile size 144M)
current process WorkingSet (physical memory assigned to process): 11M, peak: 11M
current process commit charge ("private bytes"): 64M, peak: 318M
vm_info: OpenJDK 64-Bit Server VM (17.0.9+7-b1000.46) for windows-amd64 JRE (17.0.9+7-b1000.46), built on 2023-10-27 by "builduser" with MS VC++ 16.10 / 16.11 (VS2019)
END.

7
package-lock.json generated
View File

@@ -1,6 +1,5 @@
{ {
"name": "trunk", "name": "mobile",
"lockfileVersion": 2, "version": "1.0.0",
"requires": true, "lockfileVersion": 1
"packages": {}
} }

View File

@@ -14,29 +14,25 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"uni-app": { "uni-app": {
"scripts": { "scripts": {
"h5:testing": { "h5:testing": {
"BROWSER": "Chrome", "BROWSER": "Chrome",
"title": "build:testing", "title": "build:testing",
"env": { "env": {
"UNI_PLATFORM": "h5", "UNI_PLATFORM": "h5",
"ENV_TYPE": "testing" "ENV_TYPE": "testing"
}, },
"define": { "define": {}
},
} "h5:preview": {
}, "BROWSER": "Chrome",
"h5:preview": { "title": "build:preview",
"BROWSER": "Chrome", "env": {
"title": "build:preview", "UNI_PLATFORM": "h5",
"env": { "ENV_TYPE": "preview"
"UNI_PLATFORM": "h5", },
"ENV_TYPE": "preview" "define": {}
}, }
"define": { }
}
}
}
}
}
} }

View File

@@ -79,7 +79,53 @@
{"path" : "pages/study/audioTest","style" : {"navigationBarTitleText": "音频测试"}}, {"path" : "pages/study/audioTest","style" : {"navigationBarTitleText": "音频测试"}},
{"path" : "pages/study/videoTest","style" : {"navigationBarTitleText": "视频频测试"}}, {"path" : "pages/study/videoTest","style" : {"navigationBarTitleText": "视频频测试"}},
{"path" : "pages/lecturer/certification/list","style" : {"navigationBarTitleText": "讲师信息"}}, {"path" : "pages/lecturer/certification/list","style" : {"navigationBarTitleText": "讲师信息"}},
{"path" : "pages/lecturer/certification/info","style" : {"navigationBarTitleText": "讲师信息"}} {"path" : "pages/lecturer/certification/info","style" : {"navigationBarTitleText": "讲师信息"}},
{
"path" : "pages/learnPath/learnPath",
"style" :
{
"navigationBarTitleText": "成长路径图",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/learnPath/allPath",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/learnPath/pathSearch",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/learnPath/examScore",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/learnPath/growPage",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",

813
pages/learnPath/allPath.vue Normal file
View File

@@ -0,0 +1,813 @@
<template>
<view class="all_path">
<view class="headers">
<text>专业力必修图</text>
<view class="go_to" @click="goSearch">
<text class="text">筛选</text>
<image class="img" src="../../static/images/search2.png" mode=""></image>
</view>
</view>
<view class="path">
<view class="item">
<image style="width: 40rpx;height: 36rpx;" class="img" src="../../static/images/learnpath/thispath.png" mode=""></image>
<text class="text">当前任务</text>
</view>
<view class="item" style="margin-left: 80rpx;">
<image style="width: 40rpx;height: 36rpx;" class="img" src="../../static/images/learnpath/otherpath.png" mode=""></image>
<text class="text">其他任务</text>
</view>
<!-- <view class="item">
<image class="img" src="../../static/images/learnpath/notpath.png" mode=""></image>
<text class="text">其他任务(无权限)</text>
</view> -->
</view>
<view class="table">
<view class="table-container">
<table style="width: 100%;border-collapse: collapse;border: 2rpx solid #F0F6FC;">
<thead>
<tr style="background: #F0F6FC;display: flex;align-items: center;">
<th style="display: block;text-align: center;" class="first" align="center">
<view style="width: 212rpx;border-collapse: collapse;" class="text"></view>
</th>
<th style="width: 156rpx;
min-height: 100rpx;
text-align: center;
border: 2rpx solid #F0F6FC;
background: #F0F6FC;
font-weight: bold;
color: #387DF7;
font-weight: bold;
border-collapse: collapse;
display: flex;
justify-content: center;
align-items: center;" class="item1" v-for="item in titleList" align="center">{{ item.title }}</th>
</tr>
</thead>
<tbody>
<tr style="display: flex;align-items: center;border: 1rpx solid #F0F6FC;" v-for="item,index in preparedData" :key="index">
<td style="display: block;text-align: center;" class="first" align="center">
<view class="text" style="width: 212rpx;border-collapse: collapse;">
{{ item.isOtherPosition == 1 ? item.positionName + '(' + item.organizationName + ')' : item.positionName }}
</view>
</td>
<td style="width: 156rpx;
min-height: 120rpx;
text-align: center;
border: 2rpx solid #F0F6FC;
border-bottom: none;
background-color: #ffffff;
color: #333333;
font-weight: 400;
font-size: 28rpx;
border-collapse: collapse;
display: flex;
justify-content: center;
align-items: center;" :style="{width: 158 * t.number + 'rpx'}" class="item" align="center" v-for="t,i in item.bandCodes">
<image
v-if="(t && t.isMajorPosition) "
src="@/static/images/learnpath/thispath.png"
mode="aspectFit"
style="width: 40rpx;height: 36rpx;"
/>
<image
v-else-if="(t && t.permission)"
src="@/static/images/learnpath/otherpath.png"
mode="aspectFit"
@click="goOtherPath(t)"
style="width: 40rpx;height: 36rpx;"
/>
<!-- <image
v-else-if="!(t && t.permission)"
src="@/static/images/learnpath/notpath.png"
mode="aspectFit"
/> -->
<text v-else></text>
</td>
</tr>
</tbody>
</table>
</view>
</view>
<u-popup :show="showSearch" :duration="0" mode="top" >
<view class="searchs">
<view class="item">
<view class="title updown">
岗位
<view v-if="!isTrue" @click="listslice" class="up">
收起
<image class="img" src="../../static/images/learnpath/updown.png" mode=""></image>
</view>
</view>
<view class="check">
<view style="display: flex;flex-wrap: wrap;">
<view :style="{marginRight:index/2!=0||index==0?'12rpx':''}" :class="indexs.includes(index)?'items':'item'" @click="searchItem(item,index)" v-for="(item,index) in posiLists" :key="index" class="item">
{{item.positionName}}
</view>
<view v-if="startList.length > 9 && isTrue" class="item" @click="allList">
<text class="text">查看更多</text>
<image class="img" src="../../static/images/learnpath/uotdown.png" mode=""></image>
</view>
</view>
</view>
</view>
<view class="item" style='margin-bottom: 180rpx;'>
<view class="title">
职级
</view>
<view class="downlist">
<view class="title">
<view @click="downList" class="btn">
<text>{{bandFirst || '职级'}}</text>
<img class="img" src="../../static/images/learnpath/uotdown.png" alt="">
</view>
<text class="line"></text>
<view @click="downList" class="btn">
<text>{{bandEnd || '职级'}}</text>
<img class="img" src="../../static/images/learnpath/uotdown.png" alt="">
</view>
</view>
<view v-if="bandShow" class="body">
<view @click="isBand(item,index)" :class=" {'item2': bandIndexs.includes(index),'disabled-item': isDisabled(index)}" v-for="(item,index) in bandLists" :key="index" class="item">
{{item.bandCode}}
</view>
</view>
</view>
</view>
<view class="footers">
<view class="btn left" @click="reach">
重置
</view>
<view class="btn right" @click="goAllPath">
确定
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import { getFullJobPath,getAllPosition,getAllBandInfo } from "@/api/modules/growth.js"
export default {
data() {
return {
bandCodeList: '',
positionIdList: '',
posiLists: [],
startList: [],
isTrue: true,
indexs: [],
posiData: [],
bandLists: [],
bandShow: false,
bandIndexs: [],
bandItem: [],
bandFirst: '',
bandEnd: '',
showSearch: false,
gridData: [{
name: '市场企划岗',
marketStatus: 0,
saleStatus: 1,
productStatus: 2,
FAEStatusL: 0,
salesManagement: 1
}, {
name: '销售岗',
marketStatus: 1,
saleStatus: 2,
productStatus: 1,
FAEStatusL: 0,
salesManagement: 1
}, {
name: '产品企划岗',
marketStatus: 2,
saleStatus: 0,
productStatus: 0,
FAEStatusL: 0,
salesManagement: 1
}, {
name: 'FAE岗',
marketStatus: 0,
saleStatus: 1,
productStatus: 2,
FAEStatusL: 0,
salesManagement: 1
}, {
name: '销售管理岗位',
marketStatus: 1,
saleStatus: 2,
productStatus: 0,
FAEStatusL: 0,
salesManagement: 1
}],
pathData: [],
titleList: [],
preparedData: [],
}
},
onShow: function(options) {
// const bandCodeList = uni.getStorageSync('bandCodeList');
// const positionIdList = uni.getStorageSync('positionIdList');
// getFullJobPath({
// positionIdList: positionIdList || '',
// bandCodeList: bandCodeList || ''
// }).then(res=>{
// if(res.code == 200){
// this.pathData = res.data
// this.titleList = this.pathData.allBandCodeList
// this.preparedData = this.integrateTableData(this.pathData);
// this.titleList = this.titleList.map(item=>({
// title: item,
// }))
// // this.titleList.unshift({
// // title: ''
// // })
// console.log(this.titleList,'titleList')
// }
// })
this.getPosiList()
this.getFullJobPaths()
},
onLoad() {
},
methods: {
getFullJobPaths(){
getFullJobPath({
positionIdList: this.positionIdList || '',
bandCodeList: this.bandCodeList || ''
}).then(res=>{
if(res.code == 200){
this.pathData = res.data
this.titleList = this.pathData.allBandCodeList
this.preparedData = this.integrateTableData(this.pathData);
this.titleList = this.titleList.map(item=>({
title: item,
}))
// this.titleList.unshift({
// title: ''
// })
console.log(this.titleList,'titleList')
}
})
},
goOtherPath(item){
console.log(item,'item')
uni.navigateTo({
url: '/pages/learnPath/learnPath?growId='+item.growId+'&name='+item.growName + '&isAllPath=' + false
});
},
integrateTableData(data) {
const { growFullPositionPathBoItemList, allBandCodeList } = data;
const bandCodeIndexMap = new Map(allBandCodeList.map((code, index) => [code, index]));
const integratedDataMap = new Map();
growFullPositionPathBoItemList.flat().forEach(item => {
const key = `${item.positionName}-${item.organizationName}-${item.isOtherPosition}`;
if (!integratedDataMap.has(key)) {
integratedDataMap.set(key, {
positionName: item.positionName,
organizationName: item.organizationName,
isOtherPosition: item.isOtherPosition,
bandCodes: new Array(allBandCodeList.length).fill(null),
});
}
item.bandCodes.split(',').forEach(code => {
const codeTrimmed = code.trim();
const index = bandCodeIndexMap.get(codeTrimmed);
if (index !== undefined) {
integratedDataMap.get(key).bandCodes[index] = { growId: item.growId, permission: item.permission ,isMajorPosition:item.isMajorPosition,growName:item.growName };
}
});
});
const integratedDataArray = Array.from(integratedDataMap.values());
const mergeById = (array) => {
const result = [];
let currentGroup = null;
array.forEach(item => {
if (item === null) {
if (currentGroup && currentGroup.growId !== null) {
result.push(currentGroup);
currentGroup = null;
}
if (!currentGroup) {
currentGroup = { growId: null, number: 1, ...item };
} else {
currentGroup.number++;
}
} else {
if (!currentGroup || currentGroup.growId !== item.growId) {
if (currentGroup) {
result.push(currentGroup);
}
currentGroup = { growId: item.growId, number: 1, ...item };
} else {
currentGroup.number++;
}
}
});
if (currentGroup) {
result.push(currentGroup);
}
return result;
};
integratedDataArray.forEach(item => {
item.bandCodes = mergeById(item.bandCodes);
});
console.log(integratedDataArray,'integratedDataArray')
return integratedDataArray;
},
goSearch(){
// let positionId = this.preparedData.map(item => item.positionName).join(',')
// uni.navigateTo({
// url: `/pages/learnPath/pathSearch`
// })
this.showSearch = true
},
reach(){
this.bandIndexs = []
this.bandItem = []
this.indexs = []
this.posiData = []
this.bandFirst = ''
this.bandEnd = ''
this.bandCodeList = ''
this.positionIdList = ''
},
goAllPath(){
this.bandCodeList = this.bandItem.map(item => item.bandCode).join(',')
this.positionIdList = this.posiData.map(item => item.positionId).join(',')
// uni.setStorageSync('bandCodeList', bandCodeList);
// uni.setStorageSync('positionIdList', positionIdList);
// uni.navigateBack({
// delta: 1
// });
this.showSearch = false
this.getFullJobPaths()
},
getPosiList(){
getAllPosition().then(res=>{
this.startList = res.data
if(res.code == 200 ){
const majorItem = res.data.find(item => item.isMajor === 1);
if (majorItem) {
const index = res.data.indexOf(majorItem);
res.data.splice(index, 1);
res.data.unshift(majorItem);
}
this.posiLists = res.data
// const positionName = this.preparedData.map(item => item.positionName).join(',')
// const positionNames = positionName.split(',');
// const matchedItemsWithIndexes = positionNames.flatMap((item, index) => {
// // 先找到匹配的项
// const matches = this.posiLists
// .map((listItem, listItemIndex) => listItem.positionName === item ? { listItem, listItemIndex } : null)
// .filter(match => match !== null);
// return matches.map(match => ({
// matchedItem: match.listItem,
// indexInPosiLists: match.listItemIndex
// }));
// });
// this.posiData = matchedItemsWithIndexes.map(item=> item.matchedItem)
// this.indexs = matchedItemsWithIndexes.map(item=> item.indexInPosiLists)
if(this.posiLists.length > 9){
this.posiLists = this.posiLists.slice(0, 9)
}
}
})
getAllBandInfo().then(res=>{
if(res.code == 200){
this.bandLists = res.data
}
})
},
allList(){
this.posiLists = this.startList
this.isTrue = false
},
listslice(){
this.posiLists = this.startList.slice(0, 9)
this.isTrue = true
},
searchItem(item,index){
const indexToRemove = this.indexs.indexOf(index);
if (indexToRemove !== -1) {
this.indexs.splice(indexToRemove, 1);
} else {
this.indexs.push(index);
}
console.log(this.indexs,'this.indexs')
this.posiData = this.indexs.map(index => this.startList[index]);
},
downList(){
this.bandShow = !this.bandShow
},
isDisabled(index) {
if (this.bandIndexs.length == 1) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
return index < firstClickIndex - 2 || index > allowedRangeEnd;
}
if (this.bandIndexs.length == 2) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
return index < firstClickIndex - 1 || index > allowedRangeEnd;
}
if (this.bandIndexs.length == 3) {
const firstClickIndex = Math.min(...this.bandIndexs);
const allowedRangeEnd = Math.max(...this.bandIndexs);
return index < firstClickIndex || index > allowedRangeEnd;
}
return false;
},
isBand(item,index){
console.log(this.bandIndexs.length)
if (this.bandIndexs.length == 1) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
if (index < firstClickIndex - 2 || index > allowedRangeEnd) {
return;
}
}
if (this.bandIndexs.length == 2) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
if (index < firstClickIndex - 1 || index > allowedRangeEnd) {
return;
}
}
if (this.bandIndexs.length == 3) {
const firstClickIndex = Math.min(...this.bandIndexs);
const allowedRangeEnd = Math.max(...this.bandIndexs);
if (index < firstClickIndex || index > allowedRangeEnd) {
return;
}
}
this.bandIndexs.sort((a, b) => a - b);
if (this.bandIndexs.length === 3 && this.bandIndexs.includes(index) && this.bandIndexs.indexOf(index) == 1) {
// 删除最后一个元素
this.bandIndexs.sort((a, b) => a - b);
this.bandIndexs.pop();
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
if(this.bandItem && this.bandItem.length > 1){
this.bandEnd = this.bandItem[this.bandItem.length - 1].bandCode
}
return;
}
let currentIndex = index;
let firstClickIndex = this.bandIndexs[0];
if (this.bandIndexs.length === 0) {
this.bandIndexs.push(currentIndex);
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
return;
}
const indexToRemove = this.bandIndexs.findIndex(index => index === currentIndex);
if (indexToRemove !== -1) {
this.bandIndexs.splice(indexToRemove, 1);
} else {
// 如果索引不存在于数组中,则需要检查是否需要填充连续索引
const start = Math.min(firstClickIndex, currentIndex);
const end = Math.max(firstClickIndex, currentIndex);
console.log(start,end,'end')
for (let i = start; i <= end; i++) {
if (!this.bandIndexs.includes(i)) {
this.bandIndexs.push(i);
}
}
}
if(this.bandIndexs.length == 0){
this.bandFirst = ''
this.bandItem = []
return
}
if(this.bandIndexs.length == 1){
this.bandEnd = ''
}
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
if(this.bandItem && this.bandItem.length > 1){
this.bandEnd = this.bandItem[this.bandItem.length - 1].bandCode
}
},
}
}
</script>
<style>
.all_path{
padding: 0 30rpx;
padding-top: 38rpx;
background: #fff;
height: 100vh;
.table {
.table-container {
/* width: 100%; */
overflow-x: auto;
}
/* table {
width: 100%;
border-collapse: collapse;
border: 2rpx solid #F0F6FC;
} */
/* th {
padding: 12px 20px;
text-align: center;
border: 2rpx solid #F0F6FC;
background: #F0F6FC;
} */
/* td{
padding: 12px 16px;
text-align: center;
border: 2rpx solid #F0F6FC;
color: #333333;
font-weight: 400;
font-size: 28rpx;
} */
/* th {
font-weight: bold;
color: #387DF7;
} */
/* .first{
display: block;
text-align: center;
.text{
width: 212rpx;
border-collapse: collapse;
}
} */
/* .item1{
width: 156rpx;
min-height: 100rpx;
text-align: center;
border: 2rpx solid #F0F6FC;
background: #F0F6FC;
font-weight: bold;
color: #387DF7;
font-weight: bold;
border-collapse: collapse;
display: flex;
justify-content: center;
align-items: center;
} */
/* .item{
width: 156rpx;
min-height: 120rpx;
text-align: center;
border: 2rpx solid #F0F6FC;
border-bottom: none;
background-color: #ffffff;
color: #333333;
font-weight: 400;
font-size: 28rpx;
border-collapse: collapse;
display: flex;
justify-content: center;
align-items: center;
} */
/* tbody tr:nth-child(odd) {
background-color: #ffffff;
} */
/* tbody tr:hover {
background-color: rgba(0, 0, 0, .05);
} */
/* image {
width: 40rpx;
height: 36rpx;
vertical-align: middle;
} */
}
.headers{
/* margin-top: 38rpx; */
position: relative;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 40rpx;
font-weight: 500;
font-size: 36rpx;
color: #333333;
.go_to{
display: flex;
align-items: center;
position: absolute;
right: 0;
top: 0;
.text{
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
text-align: left;
margin-right: 16rpx;
}
.img{
width: 24rpx;
height: 24rpx;
}
}
}
.path{
display: flex;
/* justify-content: space-between; */
align-items: center;
margin-bottom: 30rpx;
.item{
display: flex;
align-items: center;
.img{
width: 40rpx;
height: 36rpx;
margin-right: 8rpx;
}
.text{
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
}
}
}
}
.searchs{
background: #fff;
min-height: 100vh;
overflow: auto;
padding: 56rpx 56rpx 0 38rpx;
.item{
.downlist{
margin: 0 auto;
.body{
display: flex;
flex-wrap: wrap;
.item{
margin-right: 18rpx;
width: 190rpx;
margin-bottom: 28rpx;
height: 60rpx;
background: #F7F7F7;
border-radius: 34rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
text-align: center;
line-height: 60rpx;
}
.item2{
background: #EAF2FF;
border: 2rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
}
.disabled-item {
background-color: #ccc;
}
}
.title{
display: flex;
justify-content: center;
align-items: center;
.line{
width: 16rpx;
border: 2rpx solid #979797;
margin-left: 6rpx;
margin-right: 6rpx;
}
.btn{
width: 316rpx;
height: 60rpx;
background: #F7F7F7;
border-radius: 34rpx;
padding: 0 32rpx 0 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.img{
width: 20rpx;
height: 10rpx;
}
}
}
}
.updown{
display: flex;
justify-content: space-between;
.up{
margin-right: 18rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.img{
width: 24rpx;
height: 16rpx;
margin-left: 10rpx;
}
}
}
.title{
font-weight: 500;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
text-align: left;
margin-bottom: 34rpx;
}
.check{
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-bottom: 34rpx;
.item{
margin-bottom: 28rpx;
width: 240rpx;
height: 60rpx;
padding: 0 30rpx 0 34rpx;
border-radius: 34rpx;
background: #F7F7F7;
line-height: 60rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.text{
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
}
.img{
width: 24rpx;
height: 16rpx;
margin-left: 14rpx;
}
}
.items{
width: 240rpx;
height: 60rpx;
background: #EAF2FF;
border-radius: 34rpx;
border: 1rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
}
}
}
.footers{
width: 100%;
height: 120rpx;
position: fixed;
bottom: 0;
left: 50%;
transform: translate(-50%, 0%);
display: flex;
justify-content: center;
/* align-items: center; */
background: #fff;
.btn{
width: 284rpx;
height: 96rpx;
line-height: 96rpx;
border-radius: 48rpx;
text-align: center;
}
.left{
border: 2rpx solid #387DF7;
font-weight: 500;
font-size: 28rpx;
color: #387DF7;
margin-right: 36rpx;
}
.right{
background: linear-gradient( 112deg, #5491FD 0%, #2A58FA 100%);
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
}
}
}
</style>

View File

@@ -0,0 +1,142 @@
<template>
<view class="externalexam">
<view class="title">
<view class="text">考试详情</view>
<img @click="$router.back(-1);" class="img" src="../../static/images/learnpath/return.png" alt="">
</view>
<view class="notice">
<view class="noticebox">
<view class="main">
<view class="e_title">
考试{{ datainfo.examinationName }}
</view>
<view class="et_detail">
数据来源
<view class="et_time">
{{ datainfo.source ? datainfo.source : "-" }}
</view>
</view>
</view>
</view>
<view class="noticebox">
<view class="btnbox">考试说明</view>
<view class="e_form">
{{
datainfo.examinationExplain
? datainfo.examinationExplain
: "暂无考试说明"
}}
</view>
</view>
</view>
</view>
</template>
<script>
import { queryExternalExam } from "@/api/modules/growth.js"
export default {
data() {
return {
datainfo: {},
}
},
onLoad() {
queryExternalExam({
externalId: this.$route.query.courseId
}).then(res=>{
if(res.code == 6){
this.$router.push({
path: '/pages/forward?to=/student-h5/notpath'
})
} else if (res.code == 7) {
this.$router.push({
path: "/pages/forward?to=/student-h5/loseefficacy",
});
}else{
this.datainfo = res.data
}
})
},
methods: {
}
}
</script>
<style lang="scss">
.externalexam {
width: 100%;
background-color: #f2f5f7;
.title{
display: flex;
height: 88rpx;
justify-content: center;
align-items: center;
background: #fff;
position: relative;
.text{
font-size: 18px;
font-weight: 600;
color: #323233;
}
.img{
position: absolute;
left: 2.5%;
width: 20rpx;
}
}
.notice {
width: 100%;
margin-top: 10px;
font-size: 14px;
}
.noticebox {
width: 100%;
background: #fff;
margin-bottom: 11.5px;
.main {
width: 90%;
margin: 0 auto;
padding-top: 18px;
padding-bottom: 18px;
}
}
.e_title {
margin-bottom: 14.5px;
font-weight: 600;
}
.et_detail {
display: flex;
margin-bottom: 11.5px;
align-items: center;
.et_time {
color: #6e7b84;
}
}
.btnbox {
width: 90%;
height: 50px;
border-bottom: 1px solid #f1f2f3;
display: flex;
align-items: center;
font-size: 16px;
font-weight: bold;
color: #0d233a;
line-height: 24px;
padding-left: 5%;
}
.e_form {
width: 90%;
min-height: 40px;
display: flex;
flex-direction: column;
font-size: 12px;
color: #6e7b84;
margin-left: 5%;
line-height: 30px;
margin-top: 20px;
}
}
</style>

View File

@@ -0,0 +1,592 @@
<template>
<view>
<view class="learn" v-if="Object.keys(detailData).length">
<view class="learn_header">
<view class="learn_left">
<text class="text">我的专业力必修</text>
<image @click="contentOn" src="../../static/images/learnpath/why.png" class="image"></image>
<view class="up_content" v-show="upContent">
<view class="text">根据您的归属组织您所在岗位职级已为您自动匹配{{detailData.growName || ''}}抓紧时间学习吧</view>
<image @click="contentOut" class="down" src="../../static/images/learnpath/down.png" mode=""></image>
</view>
</view>
<view class="learn_right">
<text class="text">什么是专业力必修</text>
<image @click="onLearnModal" class="image" src="../../static/images/learnpath/whyWhite.png" mode=""></image>
</view>
</view>
<view class="line"></view>
<view class="learn_body">
<view class="body_job">
<view class="name">{{detailData.growName || ''}}</view>
<view class="job">
<view class="text_name">{{detailData.organizationName || ''}}</view>
<text> 学习状态<text :style="{color: ['#FFD500','#9FFF84','#FFFFFF '][detailData.studyStatus]}">{{detailData.studyStatus==0?'未开始':detailData.studyStatus==1?'已完成':'进行中'}}</text></text>
</view>
<!-- <view class="plan_item">
<image class="image" src="../../static/images/learnpath/file.png" mode=""></image>
<text class="text" @click="planDown = true">共享文档</text>
<view class="plan_down" v-show="planDown">
<image @click="planDown = false" class="down" src="../../static/images/learnpath/down.png" mode=""></image>
<view class="header">
共享文档
</view>
<view class="body">
<view class="left">
<image class="img" src="" mode=""></image>
<text class="text">人工智能启蒙讲解讲义.pptx</text>
</view>
<view class="right">
下载
</view>
</view>
</view>
</view> -->
</view>
<view class="body_item" v-if="detailData.remark">
<view class="body_top">
<image class="img" src="../../static/images/learnpath/explain.png" mode=""></image>
<text class="text">说明</text>
</view>
<view class="body_down">
<view class="text_ele">
{{detailData.remark || ''}}
</view>
</view>
</view>
<view class="body_item">
<view class="body_top">
<image class="img" src="../../static/images/learnpath/plan.png" mode=""></image>
<text class="text">学习进度</text>
</view>
<view class="body_plan">
<view class="plan_left">
<view class="left">
<view style="margin-bottom: 24rpx;">总任务</view>
<view>当前任务</view>
</view>
<view class="right">
<view class="text" style="margin-bottom: 24rpx;">{{detailData.taskNum}}</view>
<view class="text">{{detailData.currentTaskName}}</view>
</view>
</view>
<view class="plan_right">
<!-- <view>总进度</view>
<view>{{Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))}}%</view>
<view class="line">
<u-line-progress :percentage="Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))" activeColor="#387DF7"></u-line-progress>
</view> -->
<view class="semi-circle-progress">
<view class="progress-bar">
<view class="item">
<view class="pro">{{Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))}}%</view>
<view class="text">总进度</view>
</view>
</view>
<view class="pro_line" :style="{ '--progress': (100-Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))) + '%' }"></view>
</view>
</view>
</view>
</view>
<view class="go_learn" @click="goLearn(detailData)">
{{detailData.overallCompletionRate==0?'开始学习':detailData.overallCompletionRate==1?'回顾':'继续学习'}}
</view>
</view>
</view>
<view class="learn" v-else>
<u-empty
mode="data"
icon="http://cdn.uviewui.com/uview/empty/data.png"
style="height: 75vh;"
>
</u-empty>
</view>
<u-modal :show="learnModal" :showConfirmButton="false" width="200px">
<view class="item_modal">
<view class="item_title">
专业力必修说明
</view>
<view class="item_text">
本功能针对学员所在组织岗位职级自动匹配专业力必修任务完成专业力必修任务方可晋升
</view>
<view class="item_btn" @click="learnModal = false">
我已阅读
</view>
<view class="item_check">
<u-checkbox-group>
<u-checkbox v-model="checked" :checked="isChecked" shape="square" label="下次进入不在弹窗" @change="checkedBox"></u-checkbox>
</u-checkbox-group>
</view>
</view>
</u-modal>
</view>
</template>
<script>
import { mapGetters } from 'vuex'
import { getList } from "@/api/modules/growth.js"
export default {
computed: {
...mapGetters(['userInfo'])
},
data() {
return {
detailData: {},
planDown: false,
upContent: false,
checked: null,
isChecked: false,
learnModal: false,
}
},
watch: {
checked(){
this.outLearnModal()
}
},
onShow() {
getList(this.userInfo.aid).then(res=>{
if(res.code == 200 ){
this.detailData = res.data
if(Object.keys(this.detailData).length&&localStorage.getItem("checkedTrue")!=null){
this.learnModal = localStorage.getItem("checkedTrue") === "true"
this.isChecked = localStorage.getItem("checkedTrue") === "false"
console.log(this.learnModal,this.isChecked)
}else{
this.learnModal = true
}
}
})
},
methods: {
goLearn() {
uni.navigateTo({
url: '/pages/learnPath/learnPath?growId='+this.detailData.growId+'&name='+this.detailData.growName + '&isAllPath=' + true
});
},
contentOn() {
this.upContent = true
},
contentOut() {
this.upContent = false
},
onLearnModal() {
this.learnModal = true
this.isChecked = localStorage.getItem("checkedTrue") === "false"
},
checkedBox(value){
this.checked = value
},
outLearnModal() {
// this.learnModal = false
localStorage.setItem("checkedTrue",!this.checked)
},
}
}
</script>
<style lang="scss" scoped>
/deep/ .u-modal{
width: 288px !important;
border-radius: 28upx;
}
/deep/ .u-modal__content{
text-align: center;
font-size: 36upx;
font-weight: 600;
color: #333333;
padding: 33px 25px 33px 25px;
background: linear-gradient( 180deg, #E8ECFF 0%, #FFFFFF 100%);
}
.item_modal{
.item_title{
margin: 0 auto;
margin-top: -22rpx;
height: 50rpx;
font-weight: 500;
font-size: 36rpx;
color: #333333;
line-height: 50rpx;
margin-bottom: 38rpx;
}
.item_text{
height: 124rpx;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 48rpx;
margin-bottom: 40rpx;
text-align: left;
}
.item_btn{
width: 220rpx;
height: 68rpx;
background: linear-gradient( 90deg, #5390FD 0%, #3162FA 100%);
border-radius: 8rpx;
margin: 0 auto;
text-align: center;
line-height: 68rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
margin-bottom: 56rpx;
}
.item_check{
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 28rpx;
margin-bottom: -14rpx;
}
}
.learn{
height: 80vh;
.line{
width: 100%;
height: 20rpx;
background: #F9F9F9;
}
.learn_header{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
margin-bottom: 30rpx;
.learn_left{
position: relative;
margin-left: 36rpx;
.text{
width: 192rpx;
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
text-align: left;
margin-right: 14rpx;
vertical-align: middle;
}
.image{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
}
.up_content{
width: 712rpx;
height: 264rpx;
background: url("../../static/images/learnpath/downImg.png") no-repeat;
background-size: 100%;
position: absolute;
top: 20rpx;
left: -50rpx;
z-index: 600;
.text{
width: 488rpx;
height: 120rpx;
font-weight: 400;
font-size: 24rpx;
color: #333333;
line-height: 40rpx;
margin: 74rpx 152rpx 70rpx 72rpx;
overflow: hidden;
word-break:break-all;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 3;
}
.down{
width: 42rpx;
height: 42rpx;
position: absolute;
right: 52rpx;
top: 64rpx;
}
}
}
.learn_right{
width: 300rpx;
height: 54rpx;
background: #387DF7;
box-shadow: 2rpx 4rpx 16rpx 0rpx rgba(56,125,247,0.34);
border-radius: 40rpx;
margin-right: 20rpx;
display: flex;
justify-content: center;
align-items: center;
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
margin-right: 14rpx;
vertical-align: middle;
}
.image{
width: 40rpx;
height: 40rpx;
vertical-align: middle;
}
}
}
.learn_body{
.body_job{
background: linear-gradient( 180deg, #3161FA 0%, #5195FF 100%);
border-radius: 8rpx;
border: 2rpx solid #E4EDFE;
margin: 24rpx 28rpx 40rpx 30rpx;
padding: 40rpx 28rpx 32rpx 40rpx;
position: relative;
.name{
// height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #FFFFFF;
line-height: 44rpx;
margin-bottom: 20rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.job{
// height: 40rpx;
flex-wrap: wrap;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
display: flex;
justify-content: space-between;
.text_name{
width: 360rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.plan_item{
position: absolute;
top: 216rpx;
right: 0;
.image{
width: 42rpx;
height: 36rpx;
margin-right: 20rpx;
vertical-align: middle;
}
.text{
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #409EFF;
line-height: 44rpx;
vertical-align: middle;
}
.plan_down{
position: absolute;
z-index: 900;
right: -44rpx;
top: 26rpx;
width: 780rpx;
max-height: 756rpx;
background: url("../../static/images/learnpath/downppt.png") no-repeat;
background-size: 100%;
margin-bottom: 36rpx;
padding-bottom: 36rpx;
.down{
width: 52rpx;
height: 52rpx;
position: absolute;
top: 60rpx;
right: 66rpx;
}
.header{
margin: 0 auto;
margin-top: 80rpx;
width: 144rpx;
height: 56rpx;
font-weight: 600;
font-size: 36rpx;
color: #202020;
line-height: 56rpx;
margin-bottom: 22rpx;
}
.body{
display: flex;
justify-content: space-between;
.left{
margin-left: 80rpx;
.img{
width: 40rpx;
height: 40rpx;
margin-right: 24rpx;
}
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
}
}
.right{
text-align: center;
width: 140rpx;
height: 56rpx;
line-height: 56rpx;
border-radius: 8rpx;
border: 2rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
margin-right: 80rpx;
}
}
}
}
}
}
.body_item{
margin-bottom: 30rpx;
margin-left: 34rpx;
.body_top{
.img{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
margin-right: 20rpx;
}
.text{
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
vertical-align: middle;
}
}
.body_down{
margin: 24rpx 30rpx 30rpx 28rpx;
padding: 22rpx 38rpx 26rpx 40rpx;
max-height: 328rpx;
background: #F7F7F7;
border-radius: 8rpx;
font-weight: 400;
font-size: 28rpx;
text-align: left;
.text_ele{
overflow: hidden;
word-break:break-all;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 6;
}
}
.body_plan{
margin: 32rpx 30rpx 30rpx 28rpx;
height: 228rpx;
background: linear-gradient( 186deg, #E5EDFB 0%, #F7F9FC 100%);
border-radius: 8rpx;
display: flex;
.plan_left{
margin: 62rpx 70rpx 60rpx 48rpx;
display: flex;
.left{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #848593;
line-height: 40rpx;
margin-right: 12rpx;
}
.right{
height: 42rpx;
font-weight: 600;
font-size: 30rpx;
color: #3B3C4A;
line-height: 42rpx;
.text{
width: 122rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
.plan_right{
margin-right: -50px;
.semi-circle-progress {
width: 340rpx;
height: 120rpx;
position: relative;
overflow: hidden;
}
.progress-bar{
width: 50%;
height: 150%;
border-radius: 50%;
border: 24rpx solid #DFDFE4 ;
display: flex;
justify-content: center;
.item{
margin-top: 16rpx;
text-align: center;
.pro{
font-weight: 600;
font-size: 36rpx;
color: #2E72F2;
}
.text{
font-weight: 400;
font-size: 28rpx;
color: #A7ACBA;
}
}
}
.pro_line{
width: 50%;
height: 150%;
border-radius: 50%;
border: 24rpx solid #2E72F2;
position: absolute;
top: 0;
clip-path: inset(0 0 0 var(--progress));
// clip-path: inset(0 0 0 50%);
transform: rotate(180deg);
}
// display: flex;
// justify-content: center;
// align-items: center;
margin-top: 46rpx;
.line{
width: 184rpx;
height: 1rpx;
}
}
}
}
.go_learn{
width: 472rpx;
height: 96rpx;
background: linear-gradient( 112deg, #5491FD 0%, #2A58FA 100%);
border-radius: 48rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
margin: 0 auto;
line-height: 96rpx;
text-align: center;
margin-bottom: 22rpx;
}
}
</style>

View File

@@ -0,0 +1,937 @@
<template>
<view class="learn_path">
<view class="path_header">
<view class="text">{{$route.query.name}}</view>
</view>
<view class="path_body" :style="{height:dataList.length<=7?'93vh':''}">
<view class="body_header">
<view class="left" v-if="isAllPath" @click="goAllPath">专业力必修</view>
<view v-else></view>
<view class="right">
<u-switch size="14" v-model="openDown"></u-switch>
<text class="text">高亮显示未完成</text>
</view>
</view>
<view class="body_check">
<!-- <view class="left_check">
<view class="left"></view>
<view class="text">必修</view>
</view>
<view class="right_check">
<view class="right"></view>
<view class="text">选修</view>
</view> -->
</view>
<view class="end_learn">您的学习之旅已结束</view>
<view :class="dataList.length<=7?'learn':'learn14'">
<view v-for="(item,index) in dataList" :key="index">
<view @click="showPopup(index)" class="learn_item" :style="{
backgroundColor: getColor(item.flag, (notColor.length>0?
(notColor.includes(item.id)?4:item.id == istabId?flagToggle:0):item.id == istabId?flagToggle:0)),
left: getPosition(item.name, index).left + 'rpx',
top: getPosition(item.name, index).top + 'rpx'
}">
<view class="icon">
<view v-if="item.currentRatio!=100" class="icon-content" :style="{ background: getColor(item.flag, (notColor.length>0?
(notColor.includes(item.id)?4:item.id == istabId?flagToggleTwo:1):item.id == istabId?flagToggleTwo:1)) }">
{{item.currentRatio || 0}}%
</view>
<view v-else class="icon-content" :style="{background: getColor(item.flag,1)}">
<svg style="width: 15px;height: 15px;" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -583 -2082 )">
<path d="M 6.163343558282208 9.152636718750001 L 15.538803680981593 0.0888671875 L 17.948926380368096 2.536132812499999 L 6.189570552147239 13.903613281250001 L 0.022776073619630802 8.07119140625 L 2.406671779141104 5.599316406250001 L 6.163343558282208 9.152636718750001 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 583 2082 )" />
</g>
</svg>
</view>
</view>
</view>
<view @click="showPopup(index)" class="learn_text" :style="{
left: getPositionText(item.name, index).left + 'rpx',
top: getPositionText(item.name, index).top + 'rpx'
}">
{{item.title}}
</view>
</view>
<view v-if="dataList.length<=7" class="text_start">开启您的学习之旅</view>
</view>
</view>
<u-popup mode="center" v-if="currentItem !== null" :show="currentItem.show" @close="closePopup">
<view class="popup_item">
<view class="item_name">{{ currentItem.title }}</view>
<view class="tabs">
<view :class="currentItem.flag == 0 ?'flag':'flag2'">
{{currentItem.flag == 0 ? '选修' : '必修'}}
</view>
<view class="type">{{currentItem.type==5?'考试':currentItem.type==1?'在线':''}}</view>
</view>
<view class="pregress">
<view class="text">学习进度</view>
<view class="prp">
<u-line-progress style="width:100%;" :percentage="currentItem.currentRatio" :showText="false" height="5" activeColor="#387DF7 ">
</u-line-progress>
<view class="text">{{currentItem.currentRatio || 0}}%</view>
</view>
</view>
<view v-if="currentItem.type==1" class="tea_text">
<view>课程讲师: {{currentItem.teacherName?currentItem.teacherName.split(',').length > 3
? currentItem.teacherName.split(',').slice(0, 3).join(',') + '...'
: currentItem.teacherName:''}}</view>
<view class="text_tea">课程简介: {{currentItem.introduce}}</view>
</view>
<view class="btn" @click="goStudy(currentItem)">
<view class="text">学习中</view>
<image class="go" src="@/static/images/go.png" mode=""></image>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import { taskList,submitExternalExam } from "@/api/modules/growth.js"
export default {
onLoad(options) {
this.growId = options.growId
this.titleName = options.name
this.isAllPath = options.isAllPath == 'true'
},
data() {
return {
isAllPath: true,
istabId: '',
notColor: [],
flagToggle: 0,
flagToggleTwo: 1,
growId: '',
titleName: '',
openDown: false,
show: false,
colorAttrValue: {
0: ['#FFD04B', "#FBA944",'#FFD04B', "#FBA944","#EE423D"],
1: ["#b8e3b8", "#8ac84a","#b8e3b8","#8ac84a","#EE423D"],
2: ['#FFD04B', '#FBA944']
},
iconAttrs: {
'路径图背景1':{
positions: [
{left: -8,top: 378},
]
},
'路径图背景2':{
positions: [
{left: 380,top: 660},
{left: 46,top: 238},
]
},
'路径图背景3':{
positions: [
{left: 416,top: 684},
{left: -18,top: 412},
{left: 114,top: 138},
]
},
'路径图背景4':{
positions: [
{left: 484,top: 734},
{left: 14,top: 534},
{left: 6,top: 332},
{left: 118,top: 132},
]
},
'路径图背景5':{
positions: [
{left: 484,top: 734},
{left: 14,top: 544},
{left: 6,top: 354},
{left: 98,top: 162},
{left: 344,top: -28},
]
},
'路径图背景6':{
positions: [
{left: 504,top: 762},
{left: 138,top: 602},
{left: -14,top: 440},
{left: 26,top: 280},
{left: 130,top: 118},
{left: 344,top: -28},
]
},
'路径图背景7':{
positions: [
{left: 524,top: 782},
{left: 138,top: 644},
{left: -2,top: 506},
{left: -8,top: 370},
{left: 54,top: 232},
{left: 162,top: 84},
{left: 344,top: -28},
]
},
'路径图背景8':{
positions: [
{left: 58,top: 2240},
{left: 78,top: 1864},
{left: 580,top: 1488},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 42,top: 546},
{left: 194,top: 170},
{left: 440,top: -18},
]
},
'路径图背景9':{
positions: [
{left: 58,top: 2240},
{left: -14,top: 2052},
{left: 78,top: 1864},
{left: 580,top: 1488},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 38,top: 734},
{left: 102,top: 358},
{left: 440,top: -18},
]
},
'路径图背景10':{
positions: [
{left: 204,top: 2428},
{left: 58,top: 2240},
{left: 78,top: 1864},
{left: 398,top: 1676},
{left: 606,top: 1300},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 42,top: 546},
{left: 102,top: 358},
{left: 440,top: -18},
]
},
'路径图背景11':{
positions: [
{left: 204,top: 2428},
{left: 58,top: 2240},
{left: -14,top: 2052},
{left: 78,top: 1864},
{left: 398,top: 1676},
{left: 606,top: 1300},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 42,top: 546},
{left: 102,top: 358},
{left: 440,top: -18},
]
},
'路径图背景12':{
positions: [
{left: 204,top: 2428},
{left: 58,top: 2240},
{left: -14,top: 2052},
{left: 78,top: 1864},
{left: 398,top: 1676},
{left: 606,top: 1300},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 38,top: 734},
{left: 42,top: 546},
{left: 102,top: 358},
{left: 440,top: -18},
]
},
'路径图背景13':{
positions: [
{left: 204,top: 2428},
{left: 58,top: 2240},
{left: -14,top: 2052},
{left: 78,top: 1864},
{left: 398,top: 1676},
{left: 580,top: 1488},
{left: 606,top: 1300},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 38,top: 734},
{left: 42,top: 546},
{left: 102,top: 358},
{left: 440,top: -18},
]
},
'路径图背景14':{
positions: [
{left: 204,top: 2428},
{left: 58,top: 2240},
{left: -14,top: 2052},
{left: 78,top: 1864},
{left: 398,top: 1676},
{left: 580,top: 1488},
{left: 606,top: 1300},
{left: 524,top: 1110},
{left: 306,top: 922},
{left: 38,top: 734},
{left: 42,top: 546},
{left: 102,top: 358},
{left: 194,top: 170},
{left: 440,top: -18},
]
},
},
iconAttrsText: {
'路径图背景1':{
positions: [
{left: 80,top: 386},
]
},
'路径图背景2':{
positions: [
{left: 86,top: 668},
{left: 134,top: 246},
]
},
'路径图背景3':{
positions: [
{left: 116,top: 692},
{left: 70,top: 420},
{left: 202,top: 146},
]
},
'路径图背景4':{
positions: [
{left: 198,top: 742},
{left: 102,top: 542},
{left: 94,top: 340},
{left: 206,top: 140},
]
},
'路径图背景5':{
positions: [
{left: 188,top: 742},
{left: 102,top: 552},
{left: 94,top: 362},
{left: 186,top: 170},
{left: 46,top: -20},
]
},
'路径图背景6':{
positions: [
{left: 210,top: 770},
{left: 226,top: 610},
{left: 74,top: 448},
{left: 114,top: 288},
{left: 218,top: 126},
{left: 46,top: -20},
]
},
'路径图背景7':{
positions: [
{left: 226,top: 790},
{left: 226,top: 652},
{left: 86,top: 514},
{left: 80,top: 378},
{left: 142,top: 240},
{left: 250,top: 92},
{left: 44,top: -20},
]
},
'路径图背景8':{
positions: [
{left: 146,top: 2248},
{left: 166,top: 1872},
{left: 276,top: 1496},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 130,top: 554},
{left: 282,top: 178},
{left: 140,top: -10},
]
},
'路径图背景9':{
positions: [
{left: 146,top: 2248},
{left: 74,top: 2060},
{left: 166,top: 1872},
{left: 276,top: 1496},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 126,top: 742},
{left: 190,top: 366},
{left: 140,top: -10},
]
},
'路径图背景10':{
positions: [
{left: 292,top: 2436},
{left: 146,top: 2248},
{left: 166,top: 1872},
{left: 100,top: 1684},
{left: 308,top: 1308},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 130,top: 554},
{left: 190,top: 366},
{left: 140,top: -10},
]
},
'路径图背景11':{
positions: [
{left: 292,top: 2436},
{left: 146,top: 2248},
{left: 74,top: 2060},
{left: 166,top: 1872},
{left: 100,top: 1684},
{left: 308,top: 1308},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 130,top: 554},
{left: 190,top: 366},
{left: 140,top: -10},
]
},
'路径图背景12':{
positions: [
{left: 292,top: 2436},
{left: 146,top: 2248},
{left: 74,top: 2060},
{left: 166,top: 1872},
{left: 100,top: 1684},
{left: 308,top: 1308},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 126,top: 742},
{left: 130,top: 554},
{left: 190,top: 366},
{left: 140,top: -10},
]
},
'路径图背景13':{
positions: [
{left: 292,top: 2436},
{left: 146,top: 2248},
{left: 74,top: 2060},
{left: 166,top: 1872},
{left: 100,top: 1684},
{left: 276,top: 1496},
{left: 308,top: 1308},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 126,top: 742},
{left: 130,top: 554},
{left: 190,top: 366},
{left: 140,top: -10},
]
},
'路径图背景14':{
positions: [
{left: 292,top: 2436},
{left: 146,top: 2248},
{left: 74,top: 2060},
{left: 166,top: 1872},
{left: 100,top: 1684},
{left: 276,top: 1496},
{left: 308,top: 1308},
{left: 222,top: 1118},
{left: 10,top: 930},
{left: 126,top: 742},
{left: 130,top: 554},
{left: 190,top: 366},
{left: 282,top: 178},
{left: 140,top: -10},
]
},
},
dataList: [],
currentItem: null,
}
},
mounted() {
taskList(this.growId).then(res=>{
if(res.code == 200 ){
this.dataList = res.data.map(item=>({
title:item.name,
...item,
name: '路径图背景' + res.data.length,
}))
const foundItemIndex = this.dataList.findIndex(item => item.currentRatio !== 100);
if (foundItemIndex !== -1) {
const scrollTop = this.iconAttrs[this.dataList[0].name].positions[foundItemIndex]
// 滚动到指定位置
this.performScroll(scrollTop.top);
//判断显示提示弹窗
this.istabId = this.dataList[foundItemIndex].id
}
}
})
},
methods: {
toggleFlag() {
this.flagToggle = this.flagToggle === 2 ? 3 : 2;
this.flagToggleTwo = this.flagToggleTwo === 2 ? 3 : 2;
},
startToggleInterval() {
this.intervalId = setInterval(this.toggleFlag, 500);
},
async performScroll(scrollTop) {
await this.$nextTick();
window.scrollTo({ top: scrollTop, behavior: 'smooth' });
this.startToggleInterval();
setTimeout(() => {
this.explainBody = false
clearInterval(this.intervalId);
this.flagToggle = 0
this.flagToggleTwo = 1
}, 10000);
},
goAllPath(){
uni.setStorageSync('bandCodeList', '');
uni.setStorageSync('positionIdList', '');
uni.navigateTo({url:'/pages/learnPath/allPath'})
},
goStudy(item){
if(item.type == 1){
console.log(item,'在线')
uni.navigateTo({url:"/pages/study/courseStudy?id=" + item.targetId});
}else if (item.type == 5) {
if(item.examType != 1){
submitExternalExam({
"type": 14,
"externalId": item.courseId,
"externalName": item.title,
"targetId": this.$route.query.growId,
"studentNo": item.studentNo
}).then(res=>{
console.log(res,'res')
})
this.$router.push({
path: '/pages/learnPath/examScore',
query: {
id: item.id,
type: 14,
pName: item.title,
courseId: item.courseId,
studentNo: item.studentNo
}
})
return
}
console.log(item,'考试')
uni.navigateTo({url:"/pages/exam/exam?id=" + item.targetId});
}else{
console.log(item,'其他')
}
},
showPopup(index) {
// 设置当前选中的数组元素
this.currentItem = this.dataList[index];
// 显示选中元素对应的弹出层
this.currentItem.show = true;
},
closePopup() {
// 关闭当前弹出层时重置状态
if (this.currentItem !== null) {
this.currentItem.show = false;
this.currentItem = null;
}
},
getColor(status, index) {
return this.colorAttrValue[status][index]
},
getPosition(name, index) {
return this.iconAttrs[name].positions[index]
},
getPositionText(name, index) {
return this.iconAttrsText[name].positions[index]
},
},
watch: {
openDown(val){
if(val){
const notList = []
this.dataList.forEach(item => {
if(item.currentRatio != 100){
notList.push(item)
}
});
this.notColor = notList.map(item => item.id)
}else{
this.notColor = []
}
}
},
}
</script>
<style scoped>
.learn_path{
background: #387DF7;
.popup_item{
width: 90vw;
.item_name{
font-weight: 600;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
text-align: left;
font-style: normal;
margin: 50rpx 0 38rpx 76rpx;
}
.tabs{
display: flex;
.flag{
width: 156rpx;
height: 60rpx;
background: #FFF2E8;
border-radius: 8rpx;
border: 2rpx solid #FE9C4A;
margin: 0 24rpx 40rpx 78rpx;
text-align: center;
line-height: 60rpx;
color: #FE9C4A;
}
.flag2{
width: 156rpx;
height: 60rpx;
background: #F7FFF5;
border-radius: 8rpx;
border: 2rpx solid #31AF0D;
margin: 0 24rpx 40rpx 78rpx;
text-align: center;
line-height: 60rpx;
color: #31AF0D;
}
.type{
width: 156rpx;
height: 60rpx;
background: #E6EFFF;
border-radius: 8rpx;
border: 2rpx solid #387DF7;
text-align: center;
line-height: 60rpx;
color: #387DF7;
}
}
.pregress{
margin: 0 0 24rpx 78rpx;
width: 70%;
.text{
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-bottom: 12rpx;
}
.prp{
display: flex;
position: relative;
width: 444rpx;
.text{
position: absolute;
right: -78rpx;
top: -14rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-left: 24rpx;
}
}
}
.tea_text{
margin: 0 0 26rpx 80rpx;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 60rpx;
text-align: left;
font-style: normal;
.text_tea{
margin-right:80rpx;
overflow: hidden;
word-break:break-all;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 3;
}
}
.btn{
width: 85%;
height: 80rpx;
background: #387DF7;
border-radius: 12rpx;
margin: 0 0 44rpx 50rpx;
display: flex;
justify-content: center;
align-items: center;
position: relative;
.text{
font-family: PingFangSC, PingFang SC;
font-weight: 600;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
.go{
position: absolute;
top: 20rpx;
right: 20rpx;
width: 40rpx;
height: 40rpx;
}
}
}
.path_header{
display: flex;
justify-content: center;
margin-bottom: 38rpx;
.text{
max-width: 80%;
margin-top: 26rpx;
height: 60rpx;
font-weight: 600;
font-size: 44rpx;
color: #FFFFFF;
line-height: 60rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.path_body{
background: #FFFFFF;
border-radius: 40rpx 40rpx 0rpx 0rpx;
/* height: 100vh; */
.body_header{
display: flex;
justify-content: space-between;
align-items: center;
.left{
width: 204rpx;
height: 52rpx;
line-height: 52rpx;
text-align: center;
background: #387DF7;
border-radius: 26rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
margin-left: 30rpx;
margin-top: 26rpx;
}
.right{
display: flex;
align-items: center;
margin-top: 32rpx;
margin-right: 34rpx;
.text{
height: 40rpx;
font-weight: 500;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
margin-left: 10rpx;
}
}
}
.body_check{
display: flex;
justify-content: center;
margin-top: 34rpx;
.left_check{
display: flex;
align-items: center;
.left{
width: 32rpx;
height: 32rpx;
background: #34CA2B;
border-radius: 4rpx;
}
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
margin-left: 18rpx;
}
}
.right_check{
display: flex;
align-items: center;
margin-left: 102rpx;
.right{
width: 32rpx;
height: 32rpx;
background: #FE9C4A;
border-radius: 4rpx;
}
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
margin-left: 18rpx;
}
}
}
}
.end_learn{
text-align: right;
margin-top: 30rpx;
margin-right: 24rpx;
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
line-height: 40rpx;
margin-bottom: 30rpx;
}
.learn{
width: 616rpx;
height: 952rpx;
background: url("../../static/images/learnpath/7learn.png") no-repeat;
background-size: 100%;
margin-left: 88rpx;
position: relative;
&::after {
content: '';
position: absolute;
top: -16rpx;
right: 48rpx;
background: url("../../static/images/learnpath/plane.png");
width: 64rpx;
height: 68rpx;
background-repeat: no-repeat;
background-size: 100%;
z-index: 1000;
}
&::before {
content: '';
position: absolute;
bottom: -6rpx;
right: -12rpx;
background: url("../../static/images/learnpath/plane.png");
transform: rotateY(180deg);
width: 64rpx;
height: 68rpx;
background-repeat: no-repeat;
background-size: 100%;
z-index: 1000;
}
.text_start{
position: absolute;
right: 64rpx;
bottom: 4rpx;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
line-height: 40rpx;
text-align: left;
font-style: normal;
}
}
.learn14{
width: 680rpx;
height: 2676rpx;
background: url("../../static/images/learnpath/14learn.png") no-repeat;
background-size: 100%;
margin-left: 40rpx;
position: relative;
&::before {
content: '';
position: absolute;
bottom: 38rpx;
left: 340rpx;
background-image: url('../../static/images/learnpath/begin.png');
background-repeat: no-repeat;
background-size: 100%;
width: 300rpx;
height: 90rpx;
z-index: 1000;
}
&::after {
content: '';
position: absolute;
top: -16rpx;
right: 62rpx;
background: url("../../static/images/learnpath/plane.png");
width: 66rpx;
height: 68rpx;
background-repeat: no-repeat;
background-size: 100%;
z-index: 1000;
}
}
.learn_item{
width: 64rpx;
height: 64rpx;
position: absolute;
border-radius: 50%;
&:before {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 32px;
height: 32px;
clip: rect(16px 64px 32px 16px);
background: inherit;
transform: rotate(45deg);
}
.icon {
position: absolute;
top: 50%;
left: 50%;
width: 50rpx;
height: 50rpx;
background-color: #fff;
border-radius: 50%;
transform: translate(-50%, -50%);
cursor: pointer;
.icon-content {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
top: 50%;
left: 50%;
font-size: 10px;
color: #fff;
text-align: center;
transform: translate(-50%, -50%);
width: 44rpx;
height: 44rpx;
line-height: 44rpx;
background-color: #8bc94b;
border-radius: 50%;
}
}
}
.learn_text{
width: 240rpx;
height: 56rpx;
font-size: 24rpx;
line-height: 56rpx;
text-align: center;
background: linear-gradient( 301deg, #0071FF 0%, #8FC1FF 99%, #3D73ED 100%);
border-radius: 160rpx 160rpx 160rpx 16rpx;
position: absolute;
padding: 0 12rpx 0 20rpx;
font-weight: 400;
color: #FFFFFF;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
</style>

View File

@@ -0,0 +1,458 @@
<template>
<view class="searchs">
<view class="item">
<view class="title updown">
岗位
<view v-if="!isTrue" @click="listslice" class="up">
收起
<image class="img" src="../../static/images/learnpath/updown.png" mode=""></image>
</view>
</view>
<view class="check">
<view style="display: flex;flex-wrap: wrap;">
<view :style="{marginRight:index/2!=0||index==0?'12rpx':''}" :class="indexs.includes(index)?'items':'item'" @click="searchItem(item,index)" v-for="(item,index) in posiLists" :key="index" class="item">
{{item.positionName}}
</view>
<view v-if="startList.length > 9 && isTrue" class="item" @click="allList">
<text class="text">查看更多</text>
<image class="img" src="../../static/images/learnpath/uotdown.png" mode=""></image>
</view>
</view>
</view>
</view>
<view class="item" style='margin-bottom: 180rpx;'>
<view class="title">
职级
</view>
<view class="downlist">
<view class="title">
<view @click="downList" class="btn">
<text>{{bandFirst || '职级'}}</text>
<img class="img" src="../../static/images/learnpath/uotdown.png" alt="">
</view>
<text class="line"></text>
<view @click="downList" class="btn">
<text>{{bandEnd || '职级'}}</text>
<img class="img" src="../../static/images/learnpath/uotdown.png" alt="">
</view>
</view>
<view v-if="bandShow" class="body">
<view @click="isBand(item,index)" :class=" {'item2': bandIndexs.includes(index),'disabled-item': isDisabled(index)}" v-for="(item,index) in bandLists" :key="index" class="item">
{{item.bandCode}}
</view>
</view>
</view>
</view>
<view class="footers">
<view class="btn left" @click="reach">
重置
</view>
<view class="btn right" @click="goAllPath">
确定
</view>
</view>
</view>
</template>
<script>
import { getAllPosition,getAllBandInfo } from "@/api/modules/growth.js"
export default {
data() {
return {
posiLists: [],
startList: [],
isTrue: true,
indexs: [],
posiData: [],
bandLists: [],
bandShow: false,
bandIndexs: [],
bandItem: [],
bandFirst: '',
bandEnd: '',
}
},
onLoad() {
this.getPosiList()
},
methods: {
reach(){
this.bandIndexs = []
this.bandItem = []
this.indexs = []
this.posiData = []
this.bandFirst = ''
this.bandEnd = ''
},
goAllPath(){
let bandCodeList = this.bandItem.map(item => item.bandCode).join(',')
let positionIdList = this.posiData.map(item => item.positionId).join(',')
// uni.navigateTo({
// url: `/pages/learnPath/allPath?bandCodeList=${bandCodeList}&positionIdList=${positionIdList}`,
// })
uni.setStorageSync('bandCodeList', bandCodeList);
uni.setStorageSync('positionIdList', positionIdList);
uni.navigateBack({
delta: 1
});
},
getPosiList(){
getAllPosition().then(res=>{
this.startList = res.data
if(res.code == 200 ){
const majorItem = res.data.find(item => item.isMajor === 1);
if (majorItem) {
const index = res.data.indexOf(majorItem);
res.data.splice(index, 1);
res.data.unshift(majorItem);
}
this.posiLists = res.data
const positionName = this.$route.query.positionId
const positionNames = positionName.split(',');
const matchedItemsWithIndexes = positionNames.flatMap((item, index) => {
// 先找到匹配的项
const matches = this.posiLists
.map((listItem, listItemIndex) => listItem.positionName === item ? { listItem, listItemIndex } : null)
.filter(match => match !== null);
return matches.map(match => ({
matchedItem: match.listItem,
indexInPosiLists: match.listItemIndex
}));
});
this.posiData = matchedItemsWithIndexes.map(item=> item.matchedItem)
this.indexs = matchedItemsWithIndexes.map(item=> item.indexInPosiLists)
if(this.$route.query.positionId == ''){
this.posiData.push(this.posiLists[0])
this.indexs.push(0)
}
if(this.posiLists.length > 9){
this.posiLists = this.posiLists.slice(0, 9)
}
}
})
getAllBandInfo().then(res=>{
if(res.code == 200){
this.bandLists = res.data
}
})
},
allList(){
this.posiLists = this.startList
this.isTrue = false
},
listslice(){
this.posiLists = this.startList.slice(0, 9)
this.isTrue = true
},
searchItem(item,index){
// if(index == 0){
// return
// }
const indexToRemove = this.indexs.indexOf(index);
if (indexToRemove !== -1) {
this.indexs.splice(indexToRemove, 1);
} else {
this.indexs.push(index);
}
console.log(this.indexs,'this.indexs')
this.posiData = this.indexs.map(index => this.startList[index]);
},
downList(){
this.bandShow = !this.bandShow
},
isDisabled(index) {
if (this.bandIndexs.length == 1) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
return index < firstClickIndex - 2 || index > allowedRangeEnd;
}
if (this.bandIndexs.length == 2) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
return index < firstClickIndex - 1 || index > allowedRangeEnd;
}
if (this.bandIndexs.length == 3) {
const firstClickIndex = Math.min(...this.bandIndexs);
const allowedRangeEnd = Math.max(...this.bandIndexs);
return index < firstClickIndex || index > allowedRangeEnd;
}
return false;
},
isBand(item,index){
console.log(this.bandIndexs.length)
if (this.bandIndexs.length == 1) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
if (index < firstClickIndex - 2 || index > allowedRangeEnd) {
return;
}
}
if (this.bandIndexs.length == 2) {
const firstClickIndex = this.bandIndexs[0];
const allowedRangeEnd = firstClickIndex + 2;
if (index < firstClickIndex - 1 || index > allowedRangeEnd) {
return;
}
}
if (this.bandIndexs.length == 3) {
const firstClickIndex = Math.min(...this.bandIndexs);
const allowedRangeEnd = Math.max(...this.bandIndexs);
if (index < firstClickIndex || index > allowedRangeEnd) {
return;
}
}
this.bandIndexs.sort((a, b) => a - b);
if (this.bandIndexs.length === 3 && this.bandIndexs.includes(index) && this.bandIndexs.indexOf(index) == 1) {
// 删除最后一个元素
this.bandIndexs.sort((a, b) => a - b);
this.bandIndexs.pop();
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
if(this.bandItem && this.bandItem.length > 1){
this.bandEnd = this.bandItem[this.bandItem.length - 1].bandCode
}
return;
}
let currentIndex = index;
let firstClickIndex = this.bandIndexs[0];
if (this.bandIndexs.length === 0) {
this.bandIndexs.push(currentIndex);
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
return;
}
// 确保currentIndex和firstClickIndex按顺序排列
// if (currentIndex < firstClickIndex) {
// [currentIndex, firstClickIndex] = [firstClickIndex, currentIndex];
// }
// 检查是否有连续的未选择项,并自动填充
// for (let i = firstClickIndex + 1; i < currentIndex; i++) {
// if (!this.bandIndexs.includes(i)) {
// this.bandIndexs.splice(this.bandIndexs.indexOf(i - 1) + 1, 0, i);
// }
// }
// const start = Math.min(firstClickIndex, currentIndex);
// const end = Math.max(firstClickIndex, currentIndex);
// this.bandIndexs = this.bandIndexs.filter(index => index < start || index > end);
// for (let i = start; i <= end; i++) {
// if (!this.bandIndexs.includes(i)) {
// this.bandIndexs.push(i);
// }
// }
// 添加或移除当前点击的index
// const indexToRemove = this.bandIndexs.indexOf(currentIndex);
// if (indexToRemove !== -1) {
// this.bandIndexs.splice(indexToRemove, 1);
// } else {
// this.bandIndexs.push(currentIndex);
// }
const indexToRemove = this.bandIndexs.findIndex(index => index === currentIndex);
if (indexToRemove !== -1) {
this.bandIndexs.splice(indexToRemove, 1);
} else {
// 如果索引不存在于数组中,则需要检查是否需要填充连续索引
const start = Math.min(firstClickIndex, currentIndex);
const end = Math.max(firstClickIndex, currentIndex);
console.log(start,end,'end')
for (let i = start; i <= end; i++) {
if (!this.bandIndexs.includes(i)) {
this.bandIndexs.push(i);
}
}
}
if(this.bandIndexs.length == 0){
this.bandFirst = ''
this.bandItem = []
return
}
if(this.bandIndexs.length == 1){
this.bandEnd = ''
}
this.bandItem = this.bandIndexs.map(index => this.bandLists[index])
this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10));
this.bandFirst = this.bandItem[0].bandCode
if(this.bandItem && this.bandItem.length > 1){
this.bandEnd = this.bandItem[this.bandItem.length - 1].bandCode
}
},
}
}
</script>
<style>
.searchs{
background: #fff;
min-height: 100vh;
overflow: auto;
padding: 56rpx 56rpx 0 38rpx;
.item{
.downlist{
margin: 0 auto;
.body{
display: flex;
flex-wrap: wrap;
.item{
margin-right: 18rpx;
width: 190rpx;
margin-bottom: 28rpx;
height: 60rpx;
background: #F7F7F7;
border-radius: 34rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
text-align: center;
line-height: 60rpx;
}
.item2{
background: #EAF2FF;
border: 2rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
}
.disabled-item {
background-color: #ccc;
}
}
.title{
display: flex;
justify-content: center;
align-items: center;
.line{
width: 16rpx;
border: 2rpx solid #979797;
margin-left: 6rpx;
margin-right: 6rpx;
}
.btn{
width: 316rpx;
height: 60rpx;
background: #F7F7F7;
border-radius: 34rpx;
padding: 0 32rpx 0 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.img{
width: 20rpx;
height: 10rpx;
}
}
}
}
.updown{
display: flex;
justify-content: space-between;
.up{
margin-right: 18rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.img{
width: 24rpx;
height: 16rpx;
margin-left: 10rpx;
}
}
}
.title{
font-weight: 500;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
text-align: left;
margin-bottom: 34rpx;
}
.check{
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-bottom: 34rpx;
.item{
margin-bottom: 28rpx;
width: 240rpx;
height: 60rpx;
padding: 0 30rpx 0 34rpx;
border-radius: 34rpx;
background: #F7F7F7;
line-height: 60rpx;
text-align: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: 400;
font-size: 28rpx;
color: #666666;
.text{
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
}
.img{
width: 24rpx;
height: 16rpx;
margin-left: 14rpx;
}
}
.items{
width: 240rpx;
height: 60rpx;
background: #EAF2FF;
border-radius: 34rpx;
border: 1rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
}
}
}
.footers{
width: 100%;
height: 120rpx;
position: fixed;
bottom: 0;
left: 50%;
transform: translate(-50%, 0%);
display: flex;
justify-content: center;
/* align-items: center; */
background: #fff;
.btn{
width: 284rpx;
height: 96rpx;
line-height: 96rpx;
border-radius: 48rpx;
text-align: center;
}
.left{
border: 2rpx solid #387DF7;
font-weight: 500;
font-size: 28rpx;
color: #387DF7;
margin-right: 36rpx;
}
.right{
background: linear-gradient( 112deg, #5491FD 0%, #2A58FA 100%);
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
}
}
}
</style>

View File

@@ -2,10 +2,15 @@
<view style="background-color: #fff;"> <view style="background-color: #fff;">
<view class="listbox-top" style="background-color: #fff;"> <view class="listbox-top" style="background-color: #fff;">
<view class="searchView" v-show="tabIndex===0"> <view class="searchView" style="margin-right: 200rpx;" v-show="tabIndex===0">
<u-search :clearabled="true" @search="loadBoeData(true)" @clear="loadBoeData(true)" <u-search :clearabled="true" @search="loadBoeData(true)" @clear="loadBoeData(true)"
placeholder="搜索关键字" v-model="loadkeyword" :showAction="false" shape="square" bgColor="##F2F5F7"> placeholder="搜索关键字" v-model="loadkeyword" :showAction="false" shape="square" bgColor="##F2F5F7">
</u-search> </u-search>
<!-- firstType = 0;endType = 0;boeStatus = '';typeListData='' -->
<view class="textbtns" @click="()=>{showSearch = true;}">
<text>筛选</text>
<image style="width: 26rpx;height: 26rpx;margin-left: 10rpx;" src="../../static/images/search.png"></image>
</view>
</view> </view>
<view class="searchView" v-show="tabIndex===1"> <view class="searchView" v-show="tabIndex===1">
<u-search :clearabled="true" @search="searchData()" @clear="searchData()" <u-search :clearabled="true" @search="searchData()" @clear="searchData()"
@@ -14,16 +19,19 @@
</view> </view>
</view> </view>
<view class="tabbar" style="position: relative;padding-bottom: 20upx;"> <view class="tabbar" style="position: relative;padding-bottom: 20upx;">
<view class="tabbar-item" style="text-align: right;margin-right: 26upx;" @click="clicktab(0)" :class="{'active':tabIndex===0}"> <view class="tabbar-item" style="text-align: right;margin-right: 26upx;margin-left: 42upx;" @click="clicktab(0)" :class="{'active':tabIndex===0}">
<u-badge :type="type" max="99" :value="value" class="tabber-co"></u-badge>学习任务 <u-badge :type="type" max="99" :value="value" class="tabber-co"></u-badge>我的必修
<view class="border-bottom-one"></view> <view class="border-bottom-one"></view>
</view> </view>
<view class="tabbar-item" style="text-align: left;margin-left: 26upx;" @click="clicktab(1)" :class="{'active':tabIndex===1}"> <view class="tabbar-item" style="text-align: left;margin-left: 26upx;" @click="clicktab(1)" :class="{'active':tabIndex===1}">
报名<view class="border-bottom-two"></view> 我的选修<view class="border-bottom-two"></view>
</view> </view>
<!-- <view class="tabbar-item" style="text-align: left;margin-left: 52upx;" @click="clicktab(2)" :class="{'active':tabIndex===2}">
成长路径<view class="border-bottom-two"></view>
</view> -->
</view> </view>
<!-- 筛选状态 --> <!-- 筛选状态 -->
<view class="addition" v-show="tabIndex===0"> <!-- <view class="addition" v-show="tabIndex===0">
<view class="textbtn" style="color:#666;font-size: 28upx;" @click="statusSelectShow = !statusSelectShow"> <view class="textbtn" style="color:#666;font-size: 28upx;" @click="statusSelectShow = !statusSelectShow">
<text>筛选</text> <text>筛选</text>
<u-icon style="margin-left: 18upx;" name="arrow-down"></u-icon> <u-icon style="margin-left: 18upx;" name="arrow-down"></u-icon>
@@ -33,7 +41,7 @@
{{status.name}} {{status.name}}
</view> </view>
</view> </view>
</view> </view> -->
<view class="addition" v-show="tabIndex===1"> <view class="addition" v-show="tabIndex===1">
<view class="textbtn" style="color:#666;font-size: 28upx;" @click="statusSelectShow = !statusSelectShow"> <view class="textbtn" style="color:#666;font-size: 28upx;" @click="statusSelectShow = !statusSelectShow">
<text>筛选</text> <text>筛选</text>
@@ -57,6 +65,7 @@
<view class="course-info"> <view class="course-info">
<view class="course-info-left"> <view class="course-info-left">
<course-image :course="task" width="256upx" height="148upx"></course-image> <course-image :course="task" width="256upx" height="148upx"></course-image>
<view class="text">{{task.cmtask_type != 4 ?task.cmtask_type == 5?'专业力必修':'定制化学习':'领导力必修'}}</view>
<view class="course-text"> <view class="course-text">
<view class="course-title one-line-ellipsis" style="margin-bottom: auto"><text <view class="course-title one-line-ellipsis" style="margin-bottom: auto"><text
style="font-size: 32upx; font-weight: 500;" v-html="task.cmtask_name"></text> style="font-size: 32upx; font-weight: 500;" v-html="task.cmtask_name"></text>
@@ -123,6 +132,107 @@
<uni-load-more :status="studyLoadStatus"></uni-load-more> <uni-load-more :status="studyLoadStatus"></uni-load-more>
</view> </view>
</view> </view>
<!-- <view class="learn" v-show="tabIndex===2" v-if="Object.keys(detailData).length">
<view class="learn_header">
<view class="learn_left">
<text class="text">我的成长路径</text>
<image @click="contentOn" src="../../static/images/learnpath/why.png" class="image"></image>
<view class="up_content" v-show="upContent">
<view class="text">根据您的归属组织您所在岗位职级已为您自动匹配{{detailData.growName || ''}}抓紧时间学习吧</view>
<image @click="contentOut" class="down" src="../../static/images/learnpath/down.png" mode=""></image>
</view>
</view>
<view class="learn_right">
<text class="text">什么是成长路径</text>
<image @click="onLearnModal" class="image" src="../../static/images/learnpath/whyWhite.png" mode=""></image>
</view>
</view>
<view class="line"></view>
<view class="learn_body">
<view class="body_job">
<view class="name">{{detailData.growName || ''}}</view>
<view class="job">
<view class="text_name">{{detailData.organizationName || ''}}</view>
<text> 学习状态<text :style="{color: ['#FFD500','#9FFF84','#FFFFFF '][detailData.studyStatus]}">{{detailData.studyStatus==0?'未开始':detailData.studyStatus==1?'已完成':'进行中'}}</text></text>
</view>
<view class="plan_item">
<image class="image" src="../../static/images/learnpath/file.png" mode=""></image>
<text class="text" @click="planDown = true">共享文档</text>
<view class="plan_down" v-show="planDown">
<image @click="planDown = false" class="down" src="../../static/images/learnpath/down.png" mode=""></image>
<view class="header">
共享文档
</view>
<view class="body">
<view class="left">
<image class="img" src="" mode=""></image>
<text class="text">人工智能启蒙讲解讲义.pptx</text>
</view>
<view class="right">
下载
</view>
</view>
</view>
</view>
</view>
<view class="body_item" v-if="detailData.remark">
<view class="body_top">
<image class="img" src="../../static/images/learnpath/explain.png" mode=""></image>
<text class="text">说明</text>
</view>
<view class="body_down">
<view class="text_ele">
{{detailData.remark || ''}}
</view>
</view>
</view>
<view class="body_item">
<view class="body_top">
<image class="img" src="../../static/images/learnpath/plan.png" mode=""></image>
<text class="text">学习进度</text>
</view>
<view class="body_plan">
<view class="plan_left">
<view class="left">
<view style="margin-bottom: 24rpx;">总任务</view>
<view>当前任务</view>
</view>
<view class="right">
<view class="text" style="margin-bottom: 24rpx;">{{detailData.taskNum}}</view>
<view class="text">{{detailData.currentTaskName}}</view>
</view>
</view>
<view class="plan_right">
<view>总进度</view>
<view>{{Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))}}%</view>
<view class="line">
<u-line-progress :percentage="Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))" activeColor="#387DF7"></u-line-progress>
</view>
<view class="semi-circle-progress">
<view class="progress-bar">
<view class="item">
<view class="pro">{{Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))}}%</view>
<view class="text">总进度</view>
</view>
</view>
<view class="pro_line" :style="{ '--progress': (100-Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))) + '%' }"></view>
</view>
</view>
</view>
</view>
<view class="go_learn" @click="goLearn(detailData)">
{{detailData.overallCompletionRate==0?'开始学习':detailData.overallCompletionRate==1?'回顾':'继续学习'}}
</view>
</view>
</view> -->
<!-- <view class="learn" v-show="tabIndex===2" v-else>
<u-empty
mode="data"
icon="http://cdn.uviewui.com/uview/empty/data.png"
style="height: 75vh;"
>
</u-empty>
</view> -->
<u-modal :show="studyResetShow" :showCancelButton="true" @cancel="cancelResetStudy" @confirm="resetStudy" ref="uModal" :asyncClose="true"> <u-modal :show="studyResetShow" :showCancelButton="true" @cancel="cancelResetStudy" @confirm="resetStudy" ref="uModal" :asyncClose="true">
您确定要重新学习吗 您确定要重新学习吗
</u-modal> </u-modal>
@@ -172,6 +282,58 @@
</view> </view>
</view> </view>
</u-overlay> --> </u-overlay> -->
<u-modal :show="learnModal" :showConfirmButton="false" width="200px">
<view class="item_modal">
<view class="item_title">
成长路径说明
</view>
<view class="item_text">
本功能针对学员所在组织岗位职级自动匹配成长路径完成本路径方可晋升
</view>
<view class="item_btn" @click="learnModal = false">
我已阅读
</view>
<view class="item_check">
<u-checkbox-group>
<u-checkbox v-model="checked" :checked="isChecked" shape="square" label="下次进入不在弹窗" @change="checkedBox"></u-checkbox>
</u-checkbox-group>
</view>
</view>
</u-modal>
<u-popup :show="showSearch" mode="top">
<view class="popup_item">
<u-icon @click="showSearch = false" style="width: 30rpx;height: 30rpx;position: absolute;left: 20rpx;top: 40rpx;" name="arrow-left"></u-icon>
<view class="searchView" style="margin-left: 70rpx;" v-show="tabIndex===0">
<u-search :clearabled="true" @search="loadBoeData(true)" @clear="loadBoeData(true)"
placeholder="搜索关键字" v-model="loadkeyword" :showAction="false" shape="square" bgColor="##F2F5F7">
</u-search>
</view>
<view class="item">
<view class="title">类型</view>
<view class="list">
<view :class="firstType == index? 'active_btn': ''" @click="activeItem(item)" class="btn" v-for="(item,index) in typeData" :key="index">
{{item.name}}
</view>
</view>
</view>
<view class="item">
<view class="title">状态</view>
<view class="list">
<view :class="endType == index? 'active_btn': ''" @click="activeItemTwo(item)" class="btn" v-for="(item,index) in statusData" :key="index">
{{item.name}}
</view>
</view>
</view>
<view class="footer">
<view class="btn left" @click="showSearch = false">
取消
</view>
<view class="btn right" @click="loadBoeData(true)">
确定
</view>
</view>
</view>
</u-popup>
</view> </view>
</template> </template>
<script> <script>
@@ -182,12 +344,36 @@
import { formatDate } from '@/utils/tools.js'; import { formatDate } from '@/utils/tools.js';
import apiUser from '@/api/system/user.js' import apiUser from '@/api/system/user.js'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { getList } from "@/api/modules/growth.js"
export default { export default {
computed: { computed: {
...mapGetters(['userInfo', 'isOneStady']) ...mapGetters(['userInfo', 'isOneStady'])
}, },
data() { data() {
return { return {
firstType: 0,
endType: 0,
typeListData: '',
typeData: [
{name: '全部',value: 1,data:''},
{name: '领导力必修',value: 2,data:0},
{name: '专业力必修',value: 3,data:2},
{name: '定制化学习',value: 4,data:1},
// {name: '通用力学习',value: 5},
],
statusData: [
{name: '全部',value: 1},
{name: '未开始',value: 2},
{name: '进行中',value: 3},
{name: '已完成',value: 4},
],
showSearch: false,
detailData: {},
planDown: false,
upContent: false,
checked: false,
isChecked: false,
learnModal: false,
Applistatus:'', Applistatus:'',
autonomyStatusShow: false, autonomyStatusShow: false,
delData: {}, delData: {},
@@ -291,6 +477,20 @@
} }
} }
}); });
// getList(this.userInfo.aid).then(res=>{
// if(res.code == 200 ){
// this.detailData = res.data
// if(Object.keys(this.detailData).length){
// if(res.data.studyStatus == 1){
// this.detailData.studyStatus = 2
// }else if(res.data.studyStatus == 2){
// this.detailData.studyStatus = 1
// }
// this.detailData.cmtask_name = this.detailData.growName
// this.detailData.cmtask_user_status = this.detailData.studyStatus
// }
// }
// })
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.onReachBottom(); this.onReachBottom();
@@ -315,7 +515,43 @@
$this.loadStatus = 'noMore'; $this.loadStatus = 'noMore';
}, 500); }, 500);
}, },
watch: {
checked(){
this.outLearnModal()
}
},
methods: { methods: {
activeItem(item){
this.firstType = item.value - 1
this.typeListData = item.data
},
activeItemTwo(item){
this.endType = item.value - 1
this.boeStatus = item.value - 2
},
goLearn() {
uni.navigateTo({
url: '/pages/learnPath/learnPath?growId='+this.detailData.growId+'&name='+this.detailData.growName + '&isAllPath=' + true
});
},
contentOn() {
this.upContent = true
},
contentOut() {
this.upContent = false
},
onLearnModal() {
this.learnModal = true
this.isChecked = localStorage.getItem("checkedTrue") === "false"
},
checkedBox(value){
this.checked = value
},
outLearnModal() {
// this.learnModal = false
localStorage.setItem("checkedTrue",!this.checked)
},
reSetList() { reSetList() {
this.studyList.forEach(item=>{ this.studyList.forEach(item=>{
item.delcour = false; item.delcour = false;
@@ -488,6 +724,12 @@
}, },
// 学习任务跳转详情 // 学习任务跳转详情
loaddetail(task) { loaddetail(task) {
// if('growId' in task){
// uni.navigateTo({
// url:'/pages/learnPath/growPage'
// })
// return
// }
// uni.navigateTo({ // uni.navigateTo({
// url: '/pages/study/loaddetail?id=' + task.cmtask_id // url: '/pages/study/loaddetail?id=' + task.cmtask_id
// }); // });
@@ -509,6 +751,15 @@
} }
}else if(task.cmtask_type==3){ }else if(task.cmtask_type==3){
taskUrl='/pages/study/loaddetail?id=' + task.cmtask_id taskUrl='/pages/study/loaddetail?id=' + task.cmtask_id
}else if(task.cmtask_type==4){
let params=encodeURIComponent('projectId='+task.cmtask_id);
if(this.$config.context=='/mobile-release'){
taskUrl='/pages/forward?to=/student-h5-release/projectdetails&params='+params;
}else{
taskUrl='/pages/forward?to=/student-h5/projectdetails&params='+params;
}
}else if(task.cmtask_type==5){
taskUrl='/pages/learnPath/growPage'
} }
uni.navigateTo({ uni.navigateTo({
url: taskUrl url: taskUrl
@@ -516,6 +767,10 @@
}, },
loadBoeData(flag) { loadBoeData(flag) {
if(this.boeStatus == -1){
this.boeStatus = ''
}
this.showSearch = false
if (flag) { if (flag) {
this.taskPageIndex = 1; //回到首页 this.taskPageIndex = 1; //回到首页
this.couresList = []; this.couresList = [];
@@ -526,22 +781,36 @@
pageSize: this.taskPageSize, pageSize: this.taskPageSize,
cmtask_user_status: this.boeStatus, cmtask_user_status: this.boeStatus,
cmtask_name: this.loadkeyword, cmtask_name: this.loadkeyword,
type: this.typeListData
} }
if (this.cmtask_name) { if (this.cmtask_name) {
params.cmtask_name = this.keyWord; params.cmtask_name = this.keyWord;
} }
// if(this.typeListData == 2){
// if(Object.keys(this.detailData).length){
// if(this.boeStatus === '' || this.boeStatus == this.detailData.studyStatus){
// this.couresList.push(this.detailData)
// }
// }
// this.taskHasMore = true;
// this.loadStatus='noMore';
// return
// }
apiManage.userTaskList(params).then(res => { apiManage.userTaskList(params).then(res => {
if(res.code==200){ if(res.code==200){
res.data.records.forEach(r=>{ res.data.records.forEach(r=>{
//r.cmtask_imgurl='/upload/static/images/course/courseDefault.png'; //r.cmtask_imgurl='/upload/static/images/course/courseDefault.png';
if(r.cmtask_imgurl.startsWith('/upload')){ if (r.cmtask_imgurl && r.cmtask_imgurl.startsWith('/upload')) {
r.cmtask_imgurl=this.$config.fileUrl+r.cmtask_imgurl.substring(7); r.cmtask_imgurl = this.$config.fileUrl + r.cmtask_imgurl.substring(7);
} }
//console.log('aaa='+r.cmtask_imgurl); // console.log('aaa='+r.cmtask_imgurl);
}) })
this.taskCount = parseInt(res.data.total); this.taskCount = parseInt(res.data.total);
this.couresList.push(...res.data.records); this.couresList.push(...res.data.records);
// if(Object.keys(this.detailData).length&&this.detailData.growName.includes(this.loadkeyword)&&(this.boeStatus===''||this.detailData.studyStatus==this.boeStatus)){
// this.couresList.unshift(this.detailData)
// }
if (this.taskCount > this.taskPageIndex * this.taskPageSize) { if (this.taskCount > this.taskPageIndex * this.taskPageSize) {
this.taskHasMore = true; this.taskHasMore = true;
this.loadStatus='more'; this.loadStatus='more';
@@ -563,6 +832,8 @@
title: '获取任务失败', title: '获取任务失败',
icon: 'none' icon: 'none'
}); });
this.taskHasMore = false;
this.loadStatus='noMore';
} }
@@ -612,6 +883,17 @@
if (this.tabIndex == 1 && this.studyList.length == 0) { if (this.tabIndex == 1 && this.studyList.length == 0) {
this.getLearning() this.getLearning()
} else if (this.tabIndex == 2) { } else if (this.tabIndex == 2) {
getList(this.userInfo.aid).then(res=>{
if(res.code == 200 ){
this.detailData = res.data
if(Object.keys(this.detailData).length&&localStorage.getItem("checkedTrue")!=null){
this.learnModal = localStorage.getItem("checkedTrue") === "true"
this.isChecked = localStorage.getItem("checkedTrue") === "false"
}else{
this.learnModal = true
}
}
})
//this.history() //this.history()
} else if (this.tabIndex == 0 && this.couresList.length == 0) { } else if (this.tabIndex == 0 && this.couresList.length == 0) {
this.loadBoeData() this.loadBoeData()
@@ -758,6 +1040,447 @@
font-weight: 600; font-weight: 600;
color: #333333; color: #333333;
padding: 33px 25px 33px 25px; padding: 33px 25px 33px 25px;
background: linear-gradient( 180deg, #E8ECFF 0%, #FFFFFF 100%);
}
.popup_item{
padding-top: 20rpx;
.item{
margin-top: 60rpx;
.title{
margin-bottom: 30rpx;
margin-left: 30rpx;
}
.list{
display: flex;
margin: 0 20rpx 0 20rpx ;
justify-content: space-between;
align-items: center;
.btn{
width: 130rpx;
height: 60rpx;
font-size: 10px;
text-align: center;
line-height: 60rpx;
border-radius: 5px;
background-color: #F9F9F9;
color: #A7ACBA;
}
.active_btn{
background-color: #3162FA;
color: #ffffff;
}
}
}
.footer{
width: 100%;
margin-top: 100rpx;
display: flex;
.btn{
width: 50%;
height: 60rpx;
line-height: 60rpx;
text-align: center;
}
.left{
color: #000000;
background-color: #fff;
border-top: 1px solid #A7ACBA;
}
.right{
color: #ffffff;
background-color: #3161FA;
border-top: 1px solid #3161FA;
}
}
}
.item_modal{
.item_title{
margin: 0 auto;
margin-top: -22rpx;
height: 50rpx;
font-weight: 500;
font-size: 36rpx;
color: #333333;
line-height: 50rpx;
margin-bottom: 38rpx;
}
.item_text{
height: 96rpx;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 48rpx;
margin-bottom: 40rpx;
}
.item_btn{
width: 220rpx;
height: 68rpx;
background: linear-gradient( 90deg, #5390FD 0%, #3162FA 100%);
border-radius: 8rpx;
margin: 0 auto;
text-align: center;
line-height: 68rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
margin-bottom: 56rpx;
}
.item_check{
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 28rpx;
margin-bottom: -14rpx;
}
}
.learn{
height: 80vh;
.line{
width: 100%;
height: 20rpx;
background: #F9F9F9;
}
.learn_header{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
margin-bottom: 30rpx;
.learn_left{
position: relative;
margin-left: 36rpx;
.text{
width: 192rpx;
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
text-align: left;
margin-right: 14rpx;
vertical-align: middle;
}
.image{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
}
.up_content{
width: 712rpx;
height: 264rpx;
background: url("../../static/images/learnpath/downImg.png") no-repeat;
background-size: 100%;
position: absolute;
top: 20rpx;
left: -50rpx;
z-index: 600;
.text{
width: 488rpx;
height: 120rpx;
font-weight: 400;
font-size: 24rpx;
color: #333333;
line-height: 40rpx;
margin: 74rpx 152rpx 70rpx 72rpx;
overflow: hidden;
word-break:break-all;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 3;
}
.down{
width: 42rpx;
height: 42rpx;
position: absolute;
right: 52rpx;
top: 64rpx;
}
}
}
.learn_right{
width: 300rpx;
height: 54rpx;
background: #387DF7;
box-shadow: 2rpx 4rpx 16rpx 0rpx rgba(56,125,247,0.34);
border-radius: 40rpx;
margin-right: 20rpx;
display: flex;
justify-content: center;
align-items: center;
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
margin-right: 14rpx;
vertical-align: middle;
}
.image{
width: 40rpx;
height: 40rpx;
vertical-align: middle;
}
}
}
.learn_body{
.body_job{
background: linear-gradient( 180deg, #3161FA 0%, #5195FF 100%);
border-radius: 8rpx;
border: 2rpx solid #E4EDFE;
margin: 24rpx 28rpx 40rpx 30rpx;
padding: 40rpx 28rpx 32rpx 40rpx;
position: relative;
.name{
// height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #FFFFFF;
line-height: 44rpx;
margin-bottom: 20rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.job{
// height: 40rpx;
flex-wrap: wrap;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
display: flex;
justify-content: space-between;
.text_name{
width: 360rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.plan_item{
position: absolute;
top: 216rpx;
right: 0;
.image{
width: 42rpx;
height: 36rpx;
margin-right: 20rpx;
vertical-align: middle;
}
.text{
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #409EFF;
line-height: 44rpx;
vertical-align: middle;
}
.plan_down{
position: absolute;
z-index: 900;
right: -44rpx;
top: 26rpx;
width: 780rpx;
max-height: 756rpx;
background: url("../../static/images/learnpath/downppt.png") no-repeat;
background-size: 100%;
margin-bottom: 36rpx;
padding-bottom: 36rpx;
.down{
width: 52rpx;
height: 52rpx;
position: absolute;
top: 60rpx;
right: 66rpx;
}
.header{
margin: 0 auto;
margin-top: 80rpx;
width: 144rpx;
height: 56rpx;
font-weight: 600;
font-size: 36rpx;
color: #202020;
line-height: 56rpx;
margin-bottom: 22rpx;
}
.body{
display: flex;
justify-content: space-between;
.left{
margin-left: 80rpx;
.img{
width: 40rpx;
height: 40rpx;
margin-right: 24rpx;
}
.text{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #666666;
line-height: 40rpx;
}
}
.right{
text-align: center;
width: 140rpx;
height: 56rpx;
line-height: 56rpx;
border-radius: 8rpx;
border: 2rpx solid #387DF7;
font-weight: 400;
font-size: 28rpx;
color: #387DF7;
margin-right: 80rpx;
}
}
}
}
}
}
.body_item{
margin-bottom: 30rpx;
margin-left: 34rpx;
.body_top{
.img{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
margin-right: 20rpx;
}
.text{
height: 44rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
vertical-align: middle;
}
}
.body_down{
margin: 24rpx 30rpx 30rpx 28rpx;
padding: 22rpx 38rpx 26rpx 40rpx;
max-height: 328rpx;
background: #F7F7F7;
border-radius: 8rpx;
font-weight: 400;
font-size: 28rpx;
text-align: left;
.text_ele{
overflow: hidden;
word-break:break-all;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 6;
}
}
.body_plan{
margin: 32rpx 30rpx 30rpx 28rpx;
height: 228rpx;
background: linear-gradient( 186deg, #E5EDFB 0%, #F7F9FC 100%);
border-radius: 8rpx;
display: flex;
.plan_left{
margin: 62rpx 70rpx 60rpx 48rpx;
display: flex;
.left{
height: 40rpx;
font-weight: 400;
font-size: 28rpx;
color: #848593;
line-height: 40rpx;
margin-right: 12rpx;
}
.right{
height: 42rpx;
font-weight: 600;
font-size: 30rpx;
color: #3B3C4A;
line-height: 42rpx;
.text{
width: 122rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
.plan_right{
margin-right: -50px;
.semi-circle-progress {
width: 340rpx;
height: 120rpx;
position: relative;
overflow: hidden;
}
.progress-bar{
width: 50%;
height: 150%;
border-radius: 50%;
border: 24rpx solid #DFDFE4 ;
display: flex;
justify-content: center;
.item{
margin-top: 16rpx;
text-align: center;
.pro{
font-weight: 600;
font-size: 36rpx;
color: #2E72F2;
}
.text{
font-weight: 400;
font-size: 28rpx;
color: #A7ACBA;
}
}
}
.pro_line{
width: 50%;
height: 150%;
border-radius: 50%;
border: 24rpx solid #2E72F2;
position: absolute;
top: 0;
clip-path: inset(0 0 0 var(--progress));
// clip-path: inset(0 0 0 50%);
transform: rotate(180deg);
}
// display: flex;
// justify-content: center;
// align-items: center;
margin-top: 46rpx;
.line{
width: 184rpx;
height: 1rpx;
}
}
}
}
.go_learn{
width: 472rpx;
height: 96rpx;
background: linear-gradient( 112deg, #5491FD 0%, #2A58FA 100%);
border-radius: 48rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
margin: 0 auto;
line-height: 96rpx;
text-align: center;
margin-bottom: 22rpx;
}
} }
.delcoures{ .delcoures{
position: absolute; position: absolute;
@@ -817,6 +1540,7 @@
} }
} }
.searchView { .searchView {
position: relative;
margin-left: 32upx; margin-left: 32upx;
line-height: 62upx; line-height: 62upx;
height: 72upx; height: 72upx;
@@ -828,6 +1552,17 @@
width: 195px; width: 195px;
border-radius: 76upx !important; border-radius: 76upx !important;
} }
.textbtns{
width: 146rpx;
position: absolute;
right: -172rpx;
top: 4rpx;
color: #ffffff;
background-color: #3162FA;
display: flex;
justify-content: center;
align-items: center;
}
} }
.course-aut{ .course-aut{
font-size: 24upx; font-size: 24upx;
@@ -1124,10 +1859,11 @@
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
display: flex; display: flex;
justify-content: center;
color: #666; color: #666;
font-size: 32upx; font-size: 32upx;
.tabbar-item { .tabbar-item {
flex: 1; // flex: 1;
position: relative; position: relative;
.border-bottom-one{ .border-bottom-one{
width: 120upx; width: 120upx;
@@ -1238,11 +1974,25 @@
/deep/ .course-info-left { /deep/ .course-info-left {
position: relative;
display: flex; display: flex;
// line-height: 40upx; // line-height: 40upx;
margin-top: 5px; margin-top: 5px;
align-items: center; align-items: center;
.text{
position: absolute;
bottom: 10px;
left: 0;
text-align: center;
line-height: 15px;
background-color: #7f7f7f;
font-size: 10px;
opacity: 0.7;
color: #FFFFFF;
z-index: 88;
padding: 1px 5px;
border-radius: 0px 10px 10px 0px;
}
uni-image { uni-image {
// width: 152upx; // width: 152upx;
// height: 88upx; // height: 88upx;

29
project.config.json Normal file
View File

@@ -0,0 +1,29 @@
{
"appid": "wxa5b4dd61b812ce01",
"compileType": "miniprogram",
"libVersion": "3.4.5",
"packOptions": {
"ignore": [],
"include": []
},
"setting": {
"coverView": true,
"es6": true,
"postcss": true,
"minified": true,
"enhance": true,
"showShadowRootInWxmlPanel": true,
"packNpmRelationList": [],
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"condition": false
},
"condition": {},
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "learning-system-mobile",
"setting": {
"compileHotReLoad": true
}
}

BIN
static/images/go.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
static/images/search.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
static/images/search2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long