Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
6a033d1d
Commit
6a033d1d
authored
Apr 02, 2021
by
zhujian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'fix'
parent
6a844944
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1209 additions
and
12 deletions
+1209
-12
report.20210401.105323.55612.0.001.json
+716
-0
src/common/js/permission.js
+30
-12
src/core/filter.less
+48
-0
src/core/global.less
+31
-0
src/modules/common/TeacherSelect.tsx
+84
-0
src/modules/course-manage/graphics-course/components/GraphicsCourseFilter.jsx
+3
-0
src/modules/root/Main.less
+1
-0
src/modules/teach-tool/examination-manager/Index.tsx
+276
-0
src/modules/teach-tool/examination-manager/index.less
+10
-0
src/routes/config/mainRoutes.tsx
+10
-0
No files found.
report.20210401.105323.55612.0.001.json
0 → 100644
View file @
6a033d1d
{
"header"
:
{
"reportVersion"
:
2
,
"event"
:
"Allocation failed - JavaScript heap out of memory"
,
"trigger"
:
"FatalError"
,
"filename"
:
"report.20210401.105323.55612.0.001.json"
,
"dumpEventTime"
:
"2021-04-01T10:53:23Z"
,
"dumpEventTimeStamp"
:
"1617245603487"
,
"processId"
:
55612
,
"threadId"
:
null
,
"cwd"
:
"C:
\\
Users
\\
admin
\\
xiaomai
\\
xiaomai-cloud-class-web"
,
"commandLine"
:
[
"node"
,
"scripts/start.js"
],
"nodejsVersion"
:
"v12.16.3"
,
"wordSize"
:
64
,
"arch"
:
"x64"
,
"platform"
:
"win32"
,
"componentVersions"
:
{
"node"
:
"12.16.3"
,
"v8"
:
"7.8.279.23-node.35"
,
"uv"
:
"1.34.2"
,
"zlib"
:
"1.2.11"
,
"brotli"
:
"1.0.7"
,
"ares"
:
"1.16.0"
,
"modules"
:
"72"
,
"nghttp2"
:
"1.40.0"
,
"napi"
:
"5"
,
"llhttp"
:
"2.0.4"
,
"http_parser"
:
"2.9.3"
,
"openssl"
:
"1.1.1g"
,
"cldr"
:
"36.0"
,
"icu"
:
"65.1"
,
"tz"
:
"2019c"
,
"unicode"
:
"12.1"
},
"release"
:
{
"name"
:
"node"
,
"lts"
:
"Erbium"
,
"headersUrl"
:
"https://nodejs.org/download/release/v12.16.3/node-v12.16.3-headers.tar.gz"
,
"sourceUrl"
:
"https://nodejs.org/download/release/v12.16.3/node-v12.16.3.tar.gz"
,
"libUrl"
:
"https://nodejs.org/download/release/v12.16.3/win-x64/node.lib"
},
"osName"
:
"Windows_NT"
,
"osRelease"
:
"10.0.18363"
,
"osVersion"
:
"Windows 10 Pro"
,
"osMachine"
:
"x86_64"
,
"cpus"
:
[
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
5435843
,
"nice"
:
0
,
"sys"
:
5018328
,
"idle"
:
215171078
,
"irq"
:
1418281
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
2509578
,
"nice"
:
0
,
"sys"
:
1841718
,
"idle"
:
221273656
,
"irq"
:
38343
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
8413968
,
"nice"
:
0
,
"sys"
:
5013765
,
"idle"
:
212197218
,
"irq"
:
93453
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
3652062
,
"nice"
:
0
,
"sys"
:
2196062
,
"idle"
:
219776828
,
"irq"
:
43203
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
4915125
,
"nice"
:
0
,
"sys"
:
2809156
,
"idle"
:
217900671
,
"irq"
:
78109
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
2340328
,
"nice"
:
0
,
"sys"
:
1177750
,
"idle"
:
222106875
,
"irq"
:
24656
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
4430078
,
"nice"
:
0
,
"sys"
:
2128781
,
"idle"
:
219066093
,
"irq"
:
51734
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
3844562
,
"nice"
:
0
,
"sys"
:
1357375
,
"idle"
:
220423015
,
"irq"
:
26500
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
11182953
,
"nice"
:
0
,
"sys"
:
2309000
,
"idle"
:
212132984
,
"irq"
:
76109
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
3822796
,
"nice"
:
0
,
"sys"
:
1150843
,
"idle"
:
220651296
,
"irq"
:
80671
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
5035984
,
"nice"
:
0
,
"sys"
:
8298203
,
"idle"
:
212290750
,
"irq"
:
63218
},
{
"model"
:
"Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz"
,
"speed"
:
3192
,
"user"
:
5453875
,
"nice"
:
0
,
"sys"
:
1530250
,
"idle"
:
218640812
,
"irq"
:
47968
}
],
"networkInterfaces"
:
[
{
"name"
:
"以太网"
,
"internal"
:
false
,
"mac"
:
"a8:5e:45:b4:05:40"
,
"address"
:
"fe80::c4af:8af2:8435:4f1"
,
"netmask"
:
"ffff:ffff:ffff:ffff::"
,
"family"
:
"IPv6"
,
"scopeid"
:
14
},
{
"name"
:
"以太网"
,
"internal"
:
false
,
"mac"
:
"a8:5e:45:b4:05:40"
,
"address"
:
"10.0.1.151"
,
"netmask"
:
"255.255.254.0"
,
"family"
:
"IPv4"
},
{
"name"
:
"Loopback Pseudo-Interface 1"
,
"internal"
:
true
,
"mac"
:
"00:00:00:00:00:00"
,
"address"
:
"::1"
,
"netmask"
:
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
,
"family"
:
"IPv6"
,
"scopeid"
:
0
},
{
"name"
:
"Loopback Pseudo-Interface 1"
,
"internal"
:
true
,
"mac"
:
"00:00:00:00:00:00"
,
"address"
:
"127.0.0.1"
,
"netmask"
:
"255.0.0.0"
,
"family"
:
"IPv4"
}
],
"host"
:
"DESKTOP-C38ISPA"
},
"javascriptStack"
:
{
"message"
:
"No stack."
,
"stack"
:
[
"Unavailable."
]
},
"nativeStack"
:
[
{
"pc"
:
"0x00007ff6d7722449"
,
"symbol"
:
"std::basic_ostream<char,std::char_traits<char> >::operator<<+11577"
},
{
"pc"
:
"0x00007ff6d77269a9"
,
"symbol"
:
"std::basic_ostream<char,std::char_traits<char> >::operator<<+29337"
},
{
"pc"
:
"0x00007ff6d7725828"
,
"symbol"
:
"std::basic_ostream<char,std::char_traits<char> >::operator<<+24856"
},
{
"pc"
:
"0x00007ff6d785d8c2"
,
"symbol"
:
"v8::base::CPU::has_sse+68658"
},
{
"pc"
:
"0x00007ff6d8079bbe"
,
"symbol"
:
"v8::Isolate::ReportExternalAllocationLimitReached+94"
},
{
"pc"
:
"0x00007ff6d8061c91"
,
"symbol"
:
"v8::SharedArrayBuffer::Externalize+833"
},
{
"pc"
:
"0x00007ff6d7f2e1ec"
,
"symbol"
:
"v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436"
},
{
"pc"
:
"0x00007ff6d7f39420"
,
"symbol"
:
"v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312"
},
{
"pc"
:
"0x00007ff6d7f35f44"
,
"symbol"
:
"v8::internal::Heap::PageFlagsAreConsistent+3204"
},
{
"pc"
:
"0x00007ff6d7f2b743"
,
"symbol"
:
"v8::internal::Heap::CollectGarbage+1283"
},
{
"pc"
:
"0x00007ff6d7f29db4"
,
"symbol"
:
"v8::internal::Heap::AddRetainedMap+2452"
},
{
"pc"
:
"0x00007ff6d7f4afbd"
,
"symbol"
:
"v8::internal::Factory::NewFillerObject+61"
},
{
"pc"
:
"0x00007ff6d7cb1871"
,
"symbol"
:
"v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+1665"
},
{
"pc"
:
"0x00007ff6d84c6c4d"
,
"symbol"
:
"v8::internal::SetupIsolateDelegate::SetupHeap+546637"
},
{
"pc"
:
"0x00007ff6d84c7b7d"
,
"symbol"
:
"v8::internal::SetupIsolateDelegate::SetupHeap+550525"
},
{
"pc"
:
"0x000001a4f68ed9d9"
,
"symbol"
:
""
}
],
"javascriptHeap"
:
{
"totalMemory"
:
2179272704
,
"totalCommittedMemory"
:
2179272704
,
"usedMemory"
:
2103855312
,
"availableMemory"
:
48911208
,
"memoryLimit"
:
2197815296
,
"heapSpaces"
:
{
"read_only_space"
:
{
"memorySize"
:
262144
,
"committedMemory"
:
262144
,
"capacity"
:
32808
,
"used"
:
32808
,
"available"
:
0
},
"new_space"
:
{
"memorySize"
:
33554432
,
"committedMemory"
:
33554432
,
"capacity"
:
16759296
,
"used"
:
3562272
,
"available"
:
13197024
},
"old_space"
:
{
"memorySize"
:
1969369088
,
"committedMemory"
:
1969369088
,
"capacity"
:
1928135560
,
"used"
:
1927723264
,
"available"
:
412296
},
"code_space"
:
{
"memorySize"
:
3837952
,
"committedMemory"
:
3837952
,
"capacity"
:
3253792
,
"used"
:
3253792
,
"available"
:
0
},
"map_space"
:
{
"memorySize"
:
7081984
,
"committedMemory"
:
7081984
,
"capacity"
:
4403680
,
"used"
:
4403680
,
"available"
:
0
},
"large_object_space"
:
{
"memorySize"
:
164544512
,
"committedMemory"
:
164544512
,
"capacity"
:
164335208
,
"used"
:
164335208
,
"available"
:
0
},
"code_large_object_space"
:
{
"memorySize"
:
622592
,
"committedMemory"
:
622592
,
"capacity"
:
544288
,
"used"
:
544288
,
"available"
:
0
},
"new_large_object_space"
:
{
"memorySize"
:
0
,
"committedMemory"
:
0
,
"capacity"
:
16759296
,
"used"
:
0
,
"available"
:
16759296
}
}
},
"resourceUsage"
:
{
"userCpuSeconds"
:
294.906
,
"kernelCpuSeconds"
:
222.421
,
"cpuConsumptionPercent"
:
269.441
,
"maxRss"
:
2946191360
,
"pageFaults"
:
{
"IORequired"
:
2303672
,
"IONotRequired"
:
0
},
"fsActivity"
:
{
"reads"
:
15688
,
"writes"
:
268
}
},
"libuv"
:
[
],
"workers"
:
[
],
"environmentVariables"
:
{
"=C:"
:
"C:
\\
Users
\\
admin
\\
xiaomai
\\
xiaomai-cloud-class-web"
,
"ALLUSERSPROFILE"
:
"C:
\\
ProgramData"
,
"APPDATA"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming"
,
"BABEL_ENV"
:
"development"
,
"ChocolateyInstall"
:
"C:
\\
ProgramData
\\
chocolatey"
,
"ChocolateyLastPathUpdate"
:
"132489353938825301"
,
"CommonProgramFiles"
:
"C:
\\
Program Files
\\
Common Files"
,
"CommonProgramFiles(x86)"
:
"C:
\\
Program Files (x86)
\\
Common Files"
,
"CommonProgramW6432"
:
"C:
\\
Program Files
\\
Common Files"
,
"COMPUTERNAME"
:
"DESKTOP-C38ISPA"
,
"ComSpec"
:
"C:
\\
Windows
\\
system32
\\
cmd.exe"
,
"DriverData"
:
"C:
\\
Windows
\\
System32
\\
Drivers
\\
DriverData"
,
"FPS_BROWSER_APP_PROFILE_STRING"
:
"Internet Explorer"
,
"FPS_BROWSER_USER_PROFILE_STRING"
:
"Default"
,
"HOME"
:
"C:
\\
Users
\\
admin"
,
"HOMEDRIVE"
:
"C:"
,
"HOMEPATH"
:
"
\\
Users
\\
admin"
,
"INIT_CWD"
:
"C:
\\
Users
\\
admin
\\
xiaomai
\\
xiaomai-cloud-class-web"
,
"JAVA_HOME"
:
"C:
\\
Program Files
\\
Java
\\
jdk1.8.0_281"
,
"LOCALAPPDATA"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Local"
,
"LOGONSERVER"
:
"
\\\\
DESKTOP-C38ISPA"
,
"NODE"
:
"C:
\\
Program Files
\\
nodejs
\\
node.exe"
,
"NODE_ENV"
:
"development"
,
"NODE_EXE"
:
"C:
\\
Program Files
\\
nodejs
\\\\
node.exe"
,
"NODE_PATH"
:
""
,
"NPM_CLI_JS"
:
"C:
\\
Program Files
\\
nodejs
\\\\
node_modules
\\
npm
\\
bin
\\
npm-cli.js"
,
"npm_config_access"
:
""
,
"npm_config_allow_same_version"
:
""
,
"npm_config_also"
:
""
,
"npm_config_always_auth"
:
""
,
"npm_config_argv"
:
"{
\"
remain
\"
:[],
\"
cooked
\"
:[
\"
run
\"
,
\"
start
\"
],
\"
original
\"
:[
\"
run
\"
,
\"
start
\"
]}"
,
"npm_config_audit"
:
"true"
,
"npm_config_audit_level"
:
"low"
,
"npm_config_auth_type"
:
"legacy"
,
"npm_config_before"
:
""
,
"npm_config_bin_links"
:
"true"
,
"npm_config_browser"
:
""
,
"npm_config_ca"
:
""
,
"npm_config_cache"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm-cache"
,
"npm_config_cache_lock_retries"
:
"10"
,
"npm_config_cache_lock_stale"
:
"60000"
,
"npm_config_cache_lock_wait"
:
"10000"
,
"npm_config_cache_max"
:
"Infinity"
,
"npm_config_cache_min"
:
"10"
,
"npm_config_cafile"
:
""
,
"npm_config_cert"
:
""
,
"npm_config_cidr"
:
""
,
"npm_config_color"
:
"true"
,
"npm_config_commit_hooks"
:
"true"
,
"npm_config_depth"
:
"Infinity"
,
"npm_config_description"
:
"true"
,
"npm_config_dev"
:
""
,
"npm_config_dry_run"
:
""
,
"npm_config_editor"
:
"notepad.exe"
,
"npm_config_engine_strict"
:
""
,
"npm_config_fetch_retries"
:
"2"
,
"npm_config_fetch_retry_factor"
:
"10"
,
"npm_config_fetch_retry_maxtimeout"
:
"60000"
,
"npm_config_fetch_retry_mintimeout"
:
"10000"
,
"npm_config_force"
:
""
,
"npm_config_format_package_lock"
:
"true"
,
"npm_config_fund"
:
"true"
,
"npm_config_git"
:
"git"
,
"npm_config_git_tag_version"
:
"true"
,
"npm_config_global"
:
""
,
"npm_config_globalconfig"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm
\\
etc
\\
npmrc"
,
"npm_config_globalignorefile"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm
\\
etc
\\
npmignore"
,
"npm_config_global_style"
:
""
,
"npm_config_group"
:
""
,
"npm_config_ham_it_up"
:
""
,
"npm_config_heading"
:
"npm"
,
"npm_config_https_proxy"
:
""
,
"npm_config_if_present"
:
""
,
"npm_config_ignore_prepublish"
:
""
,
"npm_config_ignore_scripts"
:
""
,
"npm_config_init_author_email"
:
""
,
"npm_config_init_author_name"
:
""
,
"npm_config_init_author_url"
:
""
,
"npm_config_init_license"
:
"ISC"
,
"npm_config_init_module"
:
"C:
\\
Users
\\
admin
\\
.npm-init.js"
,
"npm_config_init_version"
:
"1.0.0"
,
"npm_config_json"
:
""
,
"npm_config_key"
:
""
,
"npm_config_legacy_bundling"
:
""
,
"npm_config_link"
:
""
,
"npm_config_local_address"
:
""
,
"npm_config_loglevel"
:
"notice"
,
"npm_config_logs_max"
:
"10"
,
"npm_config_long"
:
""
,
"npm_config_maxsockets"
:
"50"
,
"npm_config_message"
:
"%s"
,
"npm_config_metrics_registry"
:
"https://registry.npmjs.org/"
,
"npm_config_node_gyp"
:
"C:
\\
Program Files
\\
nodejs
\\
node_modules
\\
npm
\\
node_modules
\\
node-gyp
\\
bin
\\
node-gyp.js"
,
"npm_config_node_options"
:
""
,
"npm_config_node_version"
:
"12.16.3"
,
"npm_config_noproxy"
:
""
,
"npm_config_offline"
:
""
,
"npm_config_onload_script"
:
""
,
"npm_config_only"
:
""
,
"npm_config_optional"
:
"true"
,
"npm_config_otp"
:
""
,
"npm_config_package_lock"
:
"true"
,
"npm_config_package_lock_only"
:
""
,
"npm_config_parseable"
:
""
,
"npm_config_prefer_offline"
:
""
,
"npm_config_prefer_online"
:
""
,
"npm_config_prefix"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm"
,
"npm_config_preid"
:
""
,
"npm_config_production"
:
""
,
"npm_config_progress"
:
"true"
,
"npm_config_proxy"
:
""
,
"npm_config_read_only"
:
""
,
"npm_config_rebuild_bundle"
:
"true"
,
"npm_config_registry"
:
"https://registry.npmjs.org/"
,
"npm_config_rollback"
:
"true"
,
"npm_config_save"
:
"true"
,
"npm_config_save_bundle"
:
""
,
"npm_config_save_dev"
:
""
,
"npm_config_save_exact"
:
""
,
"npm_config_save_optional"
:
""
,
"npm_config_save_prefix"
:
"^"
,
"npm_config_save_prod"
:
""
,
"npm_config_scope"
:
""
,
"npm_config_scripts_prepend_node_path"
:
"warn-only"
,
"npm_config_script_shell"
:
""
,
"npm_config_searchexclude"
:
""
,
"npm_config_searchlimit"
:
"20"
,
"npm_config_searchopts"
:
""
,
"npm_config_searchstaleness"
:
"900"
,
"npm_config_send_metrics"
:
""
,
"npm_config_shell"
:
"C:
\\
Windows
\\
system32
\\
cmd.exe"
,
"npm_config_shrinkwrap"
:
"true"
,
"npm_config_sign_git_commit"
:
""
,
"npm_config_sign_git_tag"
:
""
,
"npm_config_sso_poll_frequency"
:
"500"
,
"npm_config_sso_type"
:
"oauth"
,
"npm_config_strict_ssl"
:
"true"
,
"npm_config_tag"
:
"latest"
,
"npm_config_tag_version_prefix"
:
"v"
,
"npm_config_timing"
:
""
,
"npm_config_tmp"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
Temp"
,
"npm_config_umask"
:
"0000"
,
"npm_config_unicode"
:
""
,
"npm_config_unsafe_perm"
:
"true"
,
"npm_config_update_notifier"
:
"true"
,
"npm_config_usage"
:
""
,
"npm_config_user"
:
""
,
"npm_config_userconfig"
:
"C:
\\
Users
\\
admin
\\
.npmrc"
,
"npm_config_user_agent"
:
"npm/6.14.4 node/v12.16.3 win32 x64"
,
"npm_config_version"
:
""
,
"npm_config_versions"
:
""
,
"npm_config_viewer"
:
"browser"
,
"npm_execpath"
:
"C:
\\
Program Files
\\
nodejs
\\
node_modules
\\
npm
\\
bin
\\
npm-cli.js"
,
"npm_lifecycle_event"
:
"start"
,
"npm_lifecycle_script"
:
"node scripts/start.js"
,
"npm_node_execpath"
:
"C:
\\
Program Files
\\
nodejs
\\
node.exe"
,
"npm_package_babel_plugins_0"
:
"jsx-control-statements"
,
"npm_package_babel_presets_0"
:
"react-app"
,
"npm_package_browserslist_development_0"
:
"last 1 chrome version"
,
"npm_package_browserslist_development_1"
:
"last 1 firefox version"
,
"npm_package_browserslist_development_2"
:
"last 1 safari version"
,
"npm_package_browserslist_production_0"
:
">0.2%"
,
"npm_package_browserslist_production_1"
:
"not dead"
,
"npm_package_browserslist_production_2"
:
"not op_mini all"
,
"npm_package_dependencies_ali_oss"
:
"^6.12.0"
,
"npm_package_dependencies_antd"
:
"^4.9.4"
,
"npm_package_dependencies_array_move"
:
"^3.0.1"
,
"npm_package_dependencies_axios"
:
"^0.20.0"
,
"npm_package_dependencies_babel_eslint"
:
"10.1.0"
,
"npm_package_dependencies_babel_jest"
:
"^24.9.0"
,
"npm_package_dependencies_babel_loader"
:
"8.1.0"
,
"npm_package_dependencies_babel_plugin_jsx_control_statements"
:
"^4.1.0"
,
"npm_package_dependencies_babel_plugin_named_asset_import"
:
"^0.3.6"
,
"npm_package_dependencies_babel_preset_react_app"
:
"^9.1.2"
,
"npm_package_dependencies_bizcharts"
:
"^4.1.7"
,
"npm_package_dependencies_camelcase"
:
"^5.3.1"
,
"npm_package_dependencies_case_sensitive_paths_webpack_plugin"
:
"2.3.0"
,
"npm_package_dependencies_classnames"
:
"^2.2.6"
,
"npm_package_dependencies_cropper"
:
"^3.1.4"
,
"npm_package_dependencies_cross_env"
:
"^7.0.2"
,
"npm_package_dependencies_css_loader"
:
"3.4.2"
,
"npm_package_dependencies_dom_to_image"
:
"^2.6.0"
,
"npm_package_dependencies_dotenv"
:
"8.2.0"
,
"npm_package_dependencies_dotenv_expand"
:
"5.1.0"
,
"npm_package_dependencies_eslint"
:
"^6.6.0"
,
"npm_package_dependencies_eslint_config_react_app"
:
"^5.2.1"
,
"npm_package_dependencies_eslint_loader"
:
"3.0.3"
,
"npm_package_dependencies_eslint_plugin_flowtype"
:
"4.6.0"
,
"npm_package_dependencies_eslint_plugin_import"
:
"2.20.1"
,
"npm_package_dependencies_eslint_plugin_jsx_a11y"
:
"6.2.3"
,
"npm_package_dependencies_eslint_plugin_jsx_control_statements"
:
"^2.2.1"
,
"npm_package_dependencies_eslint_plugin_react"
:
"7.19.0"
,
"npm_package_dependencies_eslint_plugin_react_hooks"
:
"^1.6.1"
,
"npm_package_dependencies_file_loader"
:
"4.3.0"
,
"npm_package_dependencies_fs_extra"
:
"^8.1.0"
,
"npm_package_dependencies_html2canvas"
:
"^1.0.0-rc.7"
,
"npm_package_dependencies_html_webpack_plugin"
:
"4.0.0-beta.11"
,
"npm_package_dependencies_husky"
:
"^4.2.5"
,
"npm_package_dependencies_identity_obj_proxy"
:
"3.0.0"
,
"npm_package_dependencies_jest"
:
"24.9.0"
,
"npm_package_dependencies_jest_environment_jsdom_fourteen"
:
"1.0.1"
,
"npm_package_dependencies_jest_resolve"
:
"24.9.0"
,
"npm_package_dependencies_jest_watch_typeahead"
:
"0.4.2"
,
"npm_package_dependencies_jquery"
:
"^3.4.1"
,
"npm_package_dependencies_less"
:
"^3.12.2"
,
"npm_package_dependencies_less_loader"
:
"^6.2.0"
,
"npm_package_dependencies_lottie_web"
:
"^5.7.6"
,
"npm_package_dependencies_microevent"
:
"^1.0.0"
,
"npm_package_dependencies_mini_css_extract_plugin"
:
"0.9.0"
,
"npm_package_dependencies_moment"
:
"^2.27.0"
,
"npm_package_dependencies_optimize_css_assets_webpack_plugin"
:
"5.0.3"
,
"npm_package_dependencies_pnp_webpack_plugin"
:
"1.6.4"
,
"npm_package_dependencies_postcss_flexbugs_fixes"
:
"4.1.0"
,
"npm_package_dependencies_postcss_loader"
:
"3.0.0"
,
"npm_package_dependencies_postcss_normalize"
:
"8.0.1"
,
"npm_package_dependencies_postcss_preset_env"
:
"6.7.0"
,
"npm_package_dependencies_postcss_safe_parser"
:
"4.0.1"
,
"npm_package_dependencies_prop_types"
:
"^15.7.2"
,
"npm_package_dependencies_qs"
:
"^6.9.4"
,
"npm_package_dependencies_react"
:
"^16.13.1"
,
"npm_package_dependencies_react_app_polyfill"
:
"^1.0.6"
,
"npm_package_dependencies_react_async_component"
:
"^2.0.0"
,
"npm_package_dependencies_react_dev_utils"
:
"^10.2.1"
,
"npm_package_dependencies_react_dom"
:
"^16.13.1"
,
"npm_package_dependencies_react_infinite_scroller"
:
"^1.2.4"
,
"npm_package_dependencies_react_lottie"
:
"^1.2.3"
,
"npm_package_dependencies_react_router_dom"
:
"^5.2.0"
,
"npm_package_dependencies_react_sortable_hoc"
:
"^1.11.0"
,
"npm_package_dependencies_resolve"
:
"1.15.0"
,
"npm_package_dependencies_resolve_url_loader"
:
"3.1.1"
,
"npm_package_dependencies_semver"
:
"6.3.0"
,
"npm_package_dependencies_style_loader"
:
"0.23.1"
,
"npm_package_dependencies_terser_webpack_plugin"
:
"2.3.8"
,
"npm_package_dependencies_ts_pnp"
:
"1.1.6"
,
"npm_package_dependencies_typescript"
:
"^4.0.2"
,
"npm_package_dependencies_underscore"
:
"^1.10.2"
,
"npm_package_dependencies_url_loader"
:
"2.3.0"
,
"npm_package_dependencies_video_react"
:
"0.14.1"
,
"npm_package_dependencies_wangeditor"
:
"^4.6.9"
,
"npm_package_dependencies_webpack"
:
"4.42.0"
,
"npm_package_dependencies_webpack_dev_server"
:
"3.11.0"
,
"npm_package_dependencies_webpack_manifest_plugin"
:
"2.2.0"
,
"npm_package_dependencies_workbox_webpack_plugin"
:
"4.3.1"
,
"npm_package_dependencies_xiaomai_b_components"
:
"1.4.4"
,
"npm_package_dependencies__antv_data_set"
:
"^0.11.8"
,
"npm_package_dependencies__antv_g2"
:
"^3.5.13"
,
"npm_package_dependencies__babel_core"
:
"7.9.0"
,
"npm_package_dependencies__babel_plugin_transform_typescript"
:
"^7.11.0"
,
"npm_package_dependencies__babel_preset_typescript"
:
"^7.10.4"
,
"npm_package_dependencies__svgr_webpack"
:
"4.3.3"
,
"npm_package_dependencies__testing_library_jest_dom"
:
"^4.2.4"
,
"npm_package_dependencies__testing_library_react"
:
"^9.3.2"
,
"npm_package_dependencies__testing_library_user_event"
:
"^7.1.2"
,
"npm_package_dependencies__typescript_eslint_eslint_plugin"
:
"^2.10.0"
,
"npm_package_dependencies__typescript_eslint_parser"
:
"^2.10.0"
,
"npm_package_dependencies__types_ali_oss"
:
"^6.0.5"
,
"npm_package_dependencies__types_qs"
:
"^6.9.5"
,
"npm_package_dependencies__types_react"
:
"^16.9.46"
,
"npm_package_dependencies__types_react_dom"
:
"^16.9.8"
,
"npm_package_dependencies__types_react_router_dom"
:
"^5.1.5"
,
"npm_package_dependencies__types_underscore"
:
"^1.10.22"
,
"npm_package_description"
:
"This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app)."
,
"npm_package_devDependencies_ali_oss"
:
"^6.12.0"
,
"npm_package_devDependencies_react_sortable_hoc"
:
"^1.11.0"
,
"npm_package_devDependencies_vconsole_webpack_plugin"
:
"^1.5.2"
,
"npm_package_devDependencies__types_ali_oss"
:
"^6.0.5"
,
"npm_package_devDependencies__types_jquery"
:
"^3.5.4"
,
"npm_package_eslintConfig_extends"
:
"react-app"
,
"npm_package_gitHead"
:
"4898b7f545fa2037fac5e8ed81077e8e3806fb7c"
,
"npm_package_homepage"
:
"http://./"
,
"npm_package_name"
:
"cloudclass"
,
"npm_package_private"
:
"true"
,
"npm_package_readmeFilename"
:
"README.md"
,
"npm_package_scripts_build_dev"
:
"cross-env DEPLOY_ENV=dev node scripts/build.js"
,
"npm_package_scripts_build_dev1"
:
"cross-env DEPLOY_ENV=dev node scripts/build.js"
,
"npm_package_scripts_build_gray"
:
"cross-env DEPLOY_ENV=gray node scripts/build.js"
,
"npm_package_scripts_build_prod"
:
"cross-env DEPLOY_ENV=prod node scripts/build.js"
,
"npm_package_scripts_build_rc"
:
"cross-env DEPLOY_ENV=rc node scripts/build.js"
,
"npm_package_scripts_start"
:
"node scripts/start.js"
,
"npm_package_version"
:
"0.1.0"
,
"NPM_PREFIX_NPM_CLI_JS"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm
\\
node_modules
\\
npm
\\
bin
\\
npm-cli.js"
,
"NUMBER_OF_PROCESSORS"
:
"12"
,
"OneDrive"
:
"C:
\\
Users
\\
admin
\\
OneDrive"
,
"OS"
:
"Windows_NT"
,
"Path"
:
"C:
\\
Program Files
\\
nodejs
\\
node_modules
\\
npm
\\
node_modules
\\
npm-lifecycle
\\
node-gyp-bin;C:
\\
Users
\\
admin
\\
xiaomai
\\
xiaomai-cloud-class-web
\\
node_modules
\\
.bin;C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm;C:
\\
Program Files
\\
nodejs
\\
;C:
\\
Program Files (x86)
\\
Common Files
\\
Oracle
\\
Java
\\
javapath;C:
\\
Windows
\\
system32;C:
\\
Windows;C:
\\
Windows
\\
System32
\\
Wbem;C:
\\
Windows
\\
System32
\\
WindowsPowerShell
\\
v1.0
\\
;C:
\\
Windows
\\
System32
\\
OpenSSH
\\
;C:
\\
应用
\\
Git
\\
cmd;C:
\\
Program Files
\\
nodejs
\\
;C:
\\
ProgramData
\\
chocolatey
\\
bin;
\\
;C:
\\
Program Files (x86)
\\
Yozosoft
\\
Yozo_Office
\\
Lib
\\
xuggler
\\
bin;C:
\\
Program Files
\\
Java
\\
jdk1.8.0_281
\\
bin;C:
\\
Users
\\
admin
\\
.cargo
\\
bin;C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
Microsoft
\\
WindowsApps;C:
\\
Users
\\
admin
\\
AppData
\\
Roaming
\\
npm;C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
Programs
\\
Microsoft VS Code
\\
bin;C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
GitHubDesktop
\\
bin"
,
"PATHEXT"
:
".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
,
"PROCESSOR_ARCHITECTURE"
:
"AMD64"
,
"PROCESSOR_IDENTIFIER"
:
"Intel64 Family 6 Model 158 Stepping 10, GenuineIntel"
,
"PROCESSOR_LEVEL"
:
"6"
,
"PROCESSOR_REVISION"
:
"9e0a"
,
"ProgramData"
:
"C:
\\
ProgramData"
,
"ProgramFiles"
:
"C:
\\
Program Files"
,
"ProgramFiles(x86)"
:
"C:
\\
Program Files (x86)"
,
"ProgramW6432"
:
"C:
\\
Program Files"
,
"PROMPT"
:
"$P$G"
,
"PSModulePath"
:
"C:
\\
Program Files
\\
WindowsPowerShell
\\
Modules;C:
\\
Windows
\\
system32
\\
WindowsPowerShell
\\
v1.0
\\
Modules"
,
"PUBLIC"
:
"C:
\\
Users
\\
Public"
,
"SESSIONNAME"
:
"Console"
,
"SystemDrive"
:
"C:"
,
"SystemRoot"
:
"C:
\\
Windows"
,
"TEMP"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
Temp"
,
"TMP"
:
"C:
\\
Users
\\
admin
\\
AppData
\\
Local
\\
Temp"
,
"USERDOMAIN"
:
"DESKTOP-C38ISPA"
,
"USERDOMAIN_ROAMINGPROFILE"
:
"DESKTOP-C38ISPA"
,
"USERNAME"
:
"admin"
,
"USERPROFILE"
:
"C:
\\
Users
\\
admin"
,
"WEBPACK_DEV_SERVER"
:
"true"
,
"windir"
:
"C:
\\
Windows"
,
"WXDRIVE_START_ARGS"
:
"--wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess"
,
"YOZO_HOME"
:
"C:
\\
Program Files (x86)
\\
Yozosoft
\\
Yozo_Office"
,
"ZES_ENABLE_SYSMAN"
:
"1"
},
"sharedObjects"
:
[
"C:
\\
Program Files
\\
nodejs
\\
node.exe"
,
"C:
\\
Windows
\\
SYSTEM32
\\
ntdll.dll"
,
"C:
\\
Windows
\\
System32
\\
KERNEL32.DLL"
,
"C:
\\
Windows
\\
System32
\\
KERNELBASE.dll"
,
"C:
\\
Windows
\\
System32
\\
WS2_32.dll"
,
"C:
\\
Windows
\\
System32
\\
RPCRT4.dll"
,
"C:
\\
Windows
\\
System32
\\
PSAPI.DLL"
,
"C:
\\
Windows
\\
System32
\\
ADVAPI32.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
dbghelp.dll"
,
"C:
\\
Windows
\\
System32
\\
msvcrt.dll"
,
"C:
\\
Windows
\\
System32
\\
ucrtbase.dll"
,
"C:
\\
Windows
\\
System32
\\
sechost.dll"
,
"C:
\\
Windows
\\
System32
\\
USER32.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
IPHLPAPI.DLL"
,
"C:
\\
Windows
\\
SYSTEM32
\\
USERENV.dll"
,
"C:
\\
Windows
\\
System32
\\
win32u.dll"
,
"C:
\\
Windows
\\
System32
\\
GDI32.dll"
,
"C:
\\
Windows
\\
System32
\\
profapi.dll"
,
"C:
\\
Windows
\\
System32
\\
gdi32full.dll"
,
"C:
\\
Windows
\\
System32
\\
msvcp_win.dll"
,
"C:
\\
Windows
\\
System32
\\
CRYPT32.dll"
,
"C:
\\
Windows
\\
System32
\\
MSASN1.dll"
,
"C:
\\
Windows
\\
System32
\\
bcrypt.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
WINMM.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
winmmbase.dll"
,
"C:
\\
Windows
\\
System32
\\
cfgmgr32.dll"
,
"C:
\\
Windows
\\
System32
\\
bcryptPrimitives.dll"
,
"C:
\\
Windows
\\
System32
\\
IMM32.DLL"
,
"C:
\\
Windows
\\
System32
\\
powrprof.dll"
,
"C:
\\
Windows
\\
System32
\\
UMPDC.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
CRYPTBASE.DLL"
,
"C:
\\
Windows
\\
system32
\\
uxtheme.dll"
,
"C:
\\
Windows
\\
System32
\\
combase.dll"
,
"C:
\\
Windows
\\
system32
\\
mswsock.dll"
,
"C:
\\
Windows
\\
System32
\\
kernel.appcore.dll"
,
"C:
\\
Windows
\\
System32
\\
NSI.dll"
,
"C:
\\
Windows
\\
SYSTEM32
\\
dhcpcsvc6.DLL"
,
"C:
\\
Windows
\\
SYSTEM32
\\
dhcpcsvc.DLL"
,
"C:
\\
Windows
\\
SYSTEM32
\\
DNSAPI.dll"
,
"C:
\\
Windows
\\
system32
\\
napinsp.dll"
,
"C:
\\
Windows
\\
system32
\\
pnrpnsp.dll"
,
"C:
\\
Windows
\\
System32
\\
winrnr.dll"
,
"C:
\\
Windows
\\
system32
\\
NLAapi.dll"
,
"C:
\\
Windows
\\
system32
\\
wshbth.dll"
,
"C:
\\
Program Files
\\
Bonjour
\\
mdnsNSP.dll"
,
"C:
\\
Windows
\\
System32
\\
rasadhlp.dll"
,
"C:
\\
Windows
\\
System32
\\
fwpuclnt.dll"
]
}
\ No newline at end of file
src/common/js/permission.js
View file @
6a033d1d
...
@@ -7,15 +7,34 @@
...
@@ -7,15 +7,34 @@
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
class
Permission
{
class
Permission
{
constructor
(
permissionCodes
)
{
constructor
(
permissionCodes
)
{
this
.
permissionCodes
=
permissionCodes
;
this
.
permissionCodes
=
permissionCodes
;
}
// 添加、编辑、删除排课
ContentClass_Schedule
()
{
return
this
.
permissionCodes
.
includes
(
'ShopStaff'
);
}
}
}
export
default
Permission
;
// 添加、编辑、删除排课
\ No newline at end of file
ContentClass_Schedule
()
{
return
this
.
permissionCodes
.
includes
(
'ShopStaff'
);
}
CreateNewExam
()
{
return
this
.
permissionCodes
.
includes
(
'AddExam'
);
}
// AddExam() { //创建考试
// return this.permissionCodes.includes('AddExam');
// }
SeeExamData
()
{
// 查看考试数据
return
this
.
permissionCodes
.
includes
(
'SeeExamData'
);
}
DelExam
()
{
// 删除考试
return
this
.
permissionCodes
.
includes
(
'SeeExamData'
);
}
}
Permission
.
prototype
.
AddExam
=
function
()
{
//创建考试
return
this
.
permissionCodes
.
includes
(
'AddExam'
);
}
export
default
Permission
;
src/core/filter.less
0 → 100644
View file @
6a033d1d
.xm-search-filter {
position: relative;
.ant-input-search-button{
border-left:none;
}
.search-condition {
width: calc(100% - 80px);
display: flex;
align-items: center;
flex-wrap: wrap;
&__item {
width: 30%;
margin-right: 3%;
margin-bottom: 12px;
display: flex;
.search-name{
vertical-align: middle;
display:inline-block;
height:32px;
line-height:32px;
margin-right: 4px;
}
.search-input{
flex:1;
}
}
}
.reset-fold-area {
position: absolute;
right: 12px;
}
.resetBtn {
color: #999999;
font-size: 18px;
margin-right: 8px;
}
.fold-btn {
font-size: 14px;
color: #666666;
line-height: 20px;
.fold-icon {
font-size: 12px;
margin-left:4px;
}
}
}
\ No newline at end of file
src/core/global.less
View file @
6a033d1d
...
@@ -1665,3 +1665,34 @@ input:focus {
...
@@ -1665,3 +1665,34 @@ input:focus {
.row-dragging .drag-visible {
.row-dragging .drag-visible {
visibility: visible;
visibility: visible;
}
}
.oneLineText{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.table_operate {
display: flex;
align-items: center;
flex-wrap: wrap;
.operate-text {
color: #5289FA;
cursor: pointer;
}
.operate__item {
color: #5289FA;
cursor: pointer;
&.split {
margin: 0 8px;
color: #BFBFBF;
}
}
.more{
color: #5289FA;
cursor: pointer;
cursor: pointer;
}
}
src/modules/common/TeacherSelect.tsx
0 → 100644
View file @
6a033d1d
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
import
{
Select
}
from
'antd'
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
export
default
function
ExaminationManager
(
props
:
any
)
{
const
queryInit
:
any
=
{
planName
:
''
}
const
teacherQueryInit
:
any
=
{};
const
[
teacherQuery
,
setTeacherQuery
]
=
useState
({
current
:
1
,
size
:
10
});
const
[
teacherList
,
setTeacherList
]
=
useState
([]);
const
[
hasNext
,
setHasNext
]
=
useState
(
true
);
const
teacherQueryRef
=
useRef
({})
useEffect
(()
=>
{
teacherQueryRef
.
current
=
teacherQuery
;
getTeacherList
()
},
[
teacherQuery
])
function
getTeacherList
()
{
const
_query
:
any
=
{
...
teacherQueryRef
.
current
,
};
StoreService
.
getStoreUserBasicPage
(
_query
).
then
((
res
)
=>
{
const
{
result
=
{}
}
=
res
;
const
{
records
=
[],
total
=
0
,
hasNext
}
=
result
;
const
list
=
_query
.
current
>
1
?
teacherList
.
concat
(
records
)
:
records
;
setTeacherList
(
list
);
setHasNext
(
hasNext
)
});
}
// 滑动加载更多讲师列表
function
handleScrollTeacherList
(
e
:
any
)
{
const
container
=
e
.
target
;
const
scrollToBottom
=
container
&&
container
.
scrollHeight
<=
container
.
clientHeight
+
container
.
scrollTop
;
if
(
scrollToBottom
&&
hasNext
)
{
let
_teacherQuery
:
any
=
{
...
teacherQueryRef
.
current
};
_teacherQuery
.
current
=
_teacherQuery
.
current
+
1
;
setTeacherQuery
(
_teacherQuery
)
}
}
return
<
div
className=
"search-condition__item"
>
<
span
className=
"search-name"
>
创建人:
</
span
>
<
Select
placeholder=
"请选择创建人"
className=
'search-input'
showSearch
allowClear
onPopupScroll=
{
handleScrollTeacherList
}
suffixIcon=
{
<
span
className=
"icon iconfont"
style=
{
{
fontSize
:
'12px'
,
color
:
'#BFBFBF'
}
}
>

</
span
>
}
value=
{
props
.
val
||
null
}
onChange=
{
(
value
)
=>
{
props
.
onChange
(
value
)
}
}
onSearch=
{
(
value
)
=>
{
let
_teacherQuery
:
any
=
{
...
teacherQueryRef
.
current
};
_teacherQuery
.
nickName
=
value
;
setTeacherQuery
(
_teacherQuery
)
}
}
onClear=
{
()
=>
{
props
.
onChange
(
null
)
setTeacherQuery
({
current
:
1
,
size
:
10
})
}
}
>
{
teacherList
.
map
((
item
:
any
)
=>
{
return
(
<
Select
.
Option
value=
{
item
.
id
}
key=
{
item
.
id
}
>
{
item
.
nickName
}
</
Select
.
Option
>
);
})
}
</
Select
>
</
div
>
}
\ No newline at end of file
src/modules/course-manage/graphics-course/components/GraphicsCourseFilter.jsx
View file @
6a033d1d
...
@@ -33,9 +33,11 @@ class GraphicsCourseFilter extends React.Component {
...
@@ -33,9 +33,11 @@ class GraphicsCourseFilter extends React.Component {
expandFilter
:
false
expandFilter
:
false
}
}
}
}
componentDidMount
()
{
componentDidMount
()
{
this
.
getTeacherList
();
this
.
getTeacherList
();
}
}
getTeacherList
(
current
=
1
,
selectList
){
getTeacherList
(
current
=
1
,
selectList
){
const
{
teacherQuery
,
teacherList
}
=
this
.
state
;
const
{
teacherQuery
,
teacherList
}
=
this
.
state
;
const
_query
=
{
const
_query
=
{
...
@@ -53,6 +55,7 @@ class GraphicsCourseFilter extends React.Component {
...
@@ -53,6 +55,7 @@ class GraphicsCourseFilter extends React.Component {
})
})
});
});
}
}
// 滑动加载更多讲师列表
// 滑动加载更多讲师列表
handleScrollTeacherList
=
(
e
)
=>
{
handleScrollTeacherList
=
(
e
)
=>
{
const
{
hasNext
}
=
this
.
state
;
const
{
hasNext
}
=
this
.
state
;
...
...
src/modules/root/Main.less
View file @
6a033d1d
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
@import '../../core/page.less';
@import '../../core/page.less';
@import '../../core/table.less';
@import '../../core/table.less';
@import '../../core/global.less';
@import '../../core/global.less';
@import '../../core/filter.less';
@top-height: 50px;
@top-height: 50px;
...
...
src/modules/teach-tool/examination-manager/Index.tsx
0 → 100644
View file @
6a033d1d
import
React
,
{
useState
,
useRef
,
useEffect
,
useContext
}
from
'react'
import
{
Row
,
Input
,
Select
,
DatePicker
,
Tooltip
,
Button
,
Table
,
Dropdown
,
Menu
}
from
'antd'
;
import
TeacherSelect
from
'@/modules/common/TeacherSelect'
;
import
Service
from
"@/common/js/service"
;
import
moment
from
'moment'
;
import
{
PageControl
}
from
"@/components"
;
import
User
from
"@/common/js/user"
;
import
{
XMContext
}
from
"@/store/context"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
'./index.less'
const
{
RangePicker
}
=
DatePicker
;
const
{
Search
}
=
Input
;
const
{
Option
}
=
Select
;
export
default
function
ExaminationManager
()
{
const
queryInit
:
any
=
{
examName
:
''
,
current
:
1
,
size
:
10
,
order
:
'PASS_CNT_DESC'
}
const
examStatus
=
{
EXAM_INIT
:
'未开始'
,
EXAM_STARTED
:
'进行中'
,
EXAM_FINISHED
:
'已结束'
}
const
sortState
:
any
=
false
;
const
ctx
:
any
=
useContext
(
XMContext
);
console
.
log
(
ctx
)
const
[
query
,
setQuery
]
=
useState
(
queryInit
);
const
[
expandFilter
,
setExpandFilter
]
=
useState
(
false
);
const
[
total
,
setTotal
]
=
useState
(
0
);
const
[
list
,
setList
]
=
useState
([]);
const
[
questionCntSort
,
setQuestionCntSort
]
=
useState
(
sortState
)
const
queryRef
=
useRef
(
null
);
const
columns
=
[
{
title
:
"考试"
,
// fixed:'left',
// width:350,
dataIndex
:
"examName"
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
div
style=
{
{
width
:
330
}
}
>
<
div
className=
'oneLineText'
style=
{
{
width
:
330
}
}
>
{
text
}
</
div
>
<
div
>
{
moment
(
record
.
examStartTime
).
format
(
"YYYY-MM-DD HH:mm"
)
}
~
{
moment
(
record
.
examEndTime
).
format
(
"YYYY-MM-DD HH:mm"
)
}
<
div
className=
"status"
>
{
(
examStatus
as
any
)[
record
.
examState
]
}
</
div
></
div
>
<
div
>
创建人:
{
record
.
examCreator
}
</
div
>
</
div
>,
},
{
title
:
"考试时长"
,
dataIndex
:
"examDuration"
,
render
:
(
text
:
any
)
=>
<
span
>
{
text
||
0
}
分
</
span
>,
},
{
title
:
"及格分/总分"
,
dataIndex
:
"totalScore"
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
`${record.passScore || 0}/${record.totalScore || 0}`
}
</
span
>,
},
{
title
:
"题目数量"
,
dataIndex
:
"questionCnt"
,
},
{
title
:
"参与人数"
,
dataIndex
:
"userCnt"
,
sorter
:
true
,
// sortDirections: ['USER_CNT_DESC', 'USER_CNT_ASC'],
sortOrder
:
null
,
},
{
title
:
"及格数"
,
dataIndex
:
"userCnt"
,
},
{
title
:
"创建时间"
,
dataIndex
:
"examCreateTime"
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm"
)
}
</
span
>,
},
{
title
:
"操作"
,
dataIndex
:
"operate"
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
div
className=
"table_operate"
>
{
ctx
.
xmState
?.
userPermission
?.
SeeExamData
()
&&
[<
div
key=
"data"
className=
"operate__item"
onClick=
{
()
=>
{
}
}
>
数据
</
div
>,
<
span
className=
"operate__item split"
>
|
</
span
>]
}
<
div
key=
"share"
className=
"operate__item"
onClick=
{
()
=>
{
}
}
>
分享
</
div
>
{
(
ctx
.
xmState
?.
userPermission
?.
AddExam
()
||
ctx
.
xmState
?.
userPermission
?.
DelExam
())
&&
[<
span
className=
"operate__item split"
>
|
</
span
>,
<
Dropdown
overlay=
{
getOpe
(
record
)
}
>
<
span
className=
'more'
>
更多
</
span
>
</
Dropdown
>]
}
</
div
>,
},
];
function
getOpe
(
item
:
any
)
{
return
<
Menu
>
{
ctx
.
xmState
?.
userPermission
?.
AddExam
()
&&
<
Menu
.
Item
key=
"0"
>
<
span
onClick=
{
()
=>
{
}
}
>
编辑
</
span
>
</
Menu
.
Item
>
}
{
ctx
.
xmState
?.
userPermission
?.
DelExam
()
&&
<
Menu
.
Item
key=
"1"
>
<
span
onClick=
{
()
=>
{
}
}
>
删除
</
span
>
</
Menu
.
Item
>
}
</
Menu
>
}
function
getList
()
{
Service
.
Hades
(
"public/hades/queryExamPageList"
,
{
...
query
,
userId
:
User
.
getStoreUserId
(),
tenantId
:
User
.
getStoreId
(),
source
:
0
}).
then
((
res
)
=>
{
setList
(
res
.
result
?.
records
||
[])
})
}
useEffect
(()
=>
{
queryRef
.
current
=
query
;
getList
();
},
[
query
])
function
onShowSizeChange
(
current
:
any
,
size
:
any
)
{
setQuery
({
current
:
1
,
size
,
order
:
'PASS_CNT_DESC'
})
}
return
<
div
className=
"page examination-manager"
>
<
div
className=
"content-header"
>
考试
</
div
>
<
div
className=
"box content-body"
>
<
div
className=
"xm-search-filter"
>
<
div
style=
{
{
display
:
'flex'
}
}
>
<
div
className=
"search-condition"
>
<
div
className=
"search-condition__item"
>
<
span
className=
"search-name"
>
考试名称:
</
span
>
<
Search
value=
{
query
.
examName
}
className=
'search-input'
placeholder=
"搜索考试名称"
onChange=
{
(
e
)
=>
{
const
_query
=
{
...
query
}
_query
.
examName
=
e
.
target
.
value
setQuery
(
_query
);
}
}
onSearch=
{
()
=>
{
}
}
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
/>
</
div
>
<
TeacherSelect
val=
{
query
.
examCreator
}
onChange=
{
(
examCreator
:
any
)
=>
{
const
_query
=
{
...
query
}
_query
.
examCreator
=
examCreator
;
setQuery
(
_query
);
}
}
></
TeacherSelect
>
<
div
className=
"search-condition__item"
>
<
span
className=
"search-name"
>
考试时间:
</
span
>
<
RangePicker
className=
'search-input'
value=
{
[
query
.
examStartTime
?
moment
(
Number
(
query
.
examStartTime
))
:
null
,
query
.
examStartTime
?
moment
(
Number
(
query
.
examEndTime
))
:
null
]
}
onChange=
{
(
date
:
any
)
=>
{
const
_query
=
{
...
query
}
_query
.
examStartTime
=
date
&&
date
[
0
]?.
startOf
(
'day'
).
valueOf
();
_query
.
examEndTime
=
date
&&
date
[
0
]?.
endOf
(
'day'
).
valueOf
();
setQuery
(
_query
);
}
}
/>
</
div
>
<
div
className=
"search-condition__item"
>
<
span
className=
"search-name"
>
创建时间:
</
span
>
<
RangePicker
className=
'search-input'
value=
{
[
query
.
createStartTime
?
moment
(
Number
(
query
.
createStartTime
))
:
null
,
query
.
createStartTime
?
moment
(
Number
(
query
.
createEndTime
))
:
null
]
}
onChange=
{
(
date
:
any
)
=>
{
const
_query
=
{
...
query
}
_query
.
createStartTime
=
date
&&
date
[
0
]?.
startOf
(
'day'
).
valueOf
();
_query
.
createEndTime
=
date
&&
date
[
0
]?.
endOf
(
'day'
).
valueOf
();
setQuery
(
_query
);
}
}
/>
</
div
>
</
div
>
<
div
className=
"reset-fold-area"
>
<
Tooltip
title=
"清空筛选"
><
span
className=
"resetBtn iconfont icon"
onClick=
{
()
=>
{
setQuery
({
current
:
1
,
size
:
10
,
order
:
'PASS_CNT_DESC'
});
}
}
>

</
span
></
Tooltip
>
<
span
style=
{
{
cursor
:
'pointer'
}
}
className=
"fold-btn"
onClick=
{
()
=>
{
setExpandFilter
(
!
expandFilter
)
}
}
>
{
expandFilter
?
<
span
><
span
>
收起
</
span
><
span
className=
"iconfont icon fold-icon"
>

</
span
>
</
span
>
:
<
span
>
展开
<
span
className=
"iconfont icon fold-icon"
>

</
span
></
span
>
}
</
span
>
</
div
>
</
div
>
</
div
>
{
ctx
.
xmState
?.
userPermission
?.
AddExam
()
&&
<
Button
type=
'primary'
style=
{
{
margin
:
'12px 0'
}
}
>
新建考试
</
Button
>
}
<
div
className=
"content"
>
<
Table
bordered
size=
"small"
columns=
{
columns
}
dataSource=
{
list
}
onChange=
{
()
=>
{
}
}
scroll=
{
{
x
:
1100
}
}
pagination=
{
false
}
style=
{
{
margin
:
'16px 0'
}
}
>
</
Table
>
{
total
>
0
&&
<
PageControl
size=
"small"
current=
{
query
.
current
-
1
}
pageSize=
{
query
.
size
}
total=
{
total
}
onShowSizeChange=
{
onShowSizeChange
}
toPage=
{
(
page
:
any
)
=>
{
let
_query
:
any
=
{
...
query
.
current
};
_query
.
current
=
page
;
setQuery
(
_query
)
}
}
/>
}
</
div
>
</
div
>
</
div
>
}
\ No newline at end of file
src/modules/teach-tool/examination-manager/index.less
0 → 100644
View file @
6a033d1d
.examination-manager{
.status{
display: inline-block;
margin-left: 20px;
border: 1px solid #999;
padding: 2px 4px;
line-height: 16px;
}
}
\ No newline at end of file
src/routes/config/mainRoutes.tsx
View file @
6a033d1d
...
@@ -31,6 +31,8 @@ import AddNewQuestion from '@/modules/teach-tool/question-bank/AddNewQuestion';
...
@@ -31,6 +31,8 @@ import AddNewQuestion from '@/modules/teach-tool/question-bank/AddNewQuestion';
import
ExaminationPaperIndex
from
'@/modules/teach-tool/examination-paper/ExaminationPaperIndex'
;
import
ExaminationPaperIndex
from
'@/modules/teach-tool/examination-paper/ExaminationPaperIndex'
;
import
NewExaminationPaper
from
'@/modules/teach-tool/examination-paper/NewExaminationPaper'
;
import
NewExaminationPaper
from
'@/modules/teach-tool/examination-paper/NewExaminationPaper'
;
import
ExaminationManagerIndex
from
'@/modules/teach-tool/examination-manager/Index'
;
const
mainRoutes
=
[
const
mainRoutes
=
[
{
{
path
:
'/home'
,
path
:
'/home'
,
...
@@ -117,6 +119,14 @@ const mainRoutes = [
...
@@ -117,6 +119,14 @@ const mainRoutes = [
component
:
NewExaminationPaper
,
component
:
NewExaminationPaper
,
name
:
'新建试卷'
name
:
'新建试卷'
},
},
{
path
:
'/examination-manage-index'
,
component
:
ExaminationManagerIndex
,
name
:
'考试'
},
{
{
path
:
'/course-category-manage'
,
path
:
'/course-category-manage'
,
component
:
CourseCategoryManage
,
component
:
CourseCategoryManage
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment