Merge remote-tracking branch 'origin/dev_aliyun' into dev_aliyun

courseware
杨树明 5 years ago
commit 97cfd17d11

@ -3,4 +3,5 @@ json.course_groups @course_groups do |group|
json.name group.name
json.end_time @group_settings.select{|group_setting| group_setting.course_group_id == group.id}.first&.end_time
end
json.end_time @homework.end_time
json.end_time @homework.end_time
json.late_time @homework.late_time

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@ -3323,6 +3323,25 @@
"object-assign": "^4.1.1"
}
},
"create-react-context": {
"version": "0.3.0",
"resolved": "https://registry.npm.taobao.org/create-react-context/download/create-react-context-0.3.0.tgz",
"integrity": "sha1-VG3t6dxCLe8NP8L+A6/gvA9PfYw=",
"requires": {
"gud": "^1.0.0",
"warning": "^4.0.3"
},
"dependencies": {
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npm.taobao.org/warning/download/warning-4.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwarning%2Fdownload%2Fwarning-4.0.3.tgz",
"integrity": "sha1-Fungd+uKhtavfWSqHgX9hbRnjKM=",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
},
"cropperjs": {
"version": "0.7.2",
"resolved": "https://registry.npm.taobao.org/cropperjs/download/cropperjs-0.7.2.tgz",
@ -14559,6 +14578,73 @@
"object-assign": "^4.1.1"
}
},
"react-datepicker": {
"version": "2.14.0",
"resolved": "https://registry.npm.taobao.org/react-datepicker/download/react-datepicker-2.14.0.tgz",
"integrity": "sha1-zbLyNvEgp+bpc7YX9xNYtchheqw=",
"requires": {
"classnames": "^2.2.6",
"date-fns": "^2.0.1",
"prop-types": "^15.7.2",
"react-onclickoutside": "^6.9.0",
"react-popper": "^1.3.4"
},
"dependencies": {
"@babel/runtime": {
"version": "7.8.7",
"resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.8.7.tgz?cache=0&sync_timestamp=1583373718614&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.8.7.tgz",
"integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"date-fns": {
"version": "2.11.0",
"resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-2.11.0.tgz?cache=0&sync_timestamp=1584132572779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-2.11.0.tgz",
"integrity": "sha1-7CtEl3RludyzcAIdXmwBmxnzbQY="
},
"deep-equal": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz",
"integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
"requires": {
"is-arguments": "^1.0.4",
"is-date-object": "^1.0.1",
"is-regex": "^1.0.4",
"object-is": "^1.0.1",
"object-keys": "^1.1.1",
"regexp.prototype.flags": "^1.2.0"
}
},
"react-popper": {
"version": "1.3.7",
"resolved": "https://registry.npm.taobao.org/react-popper/download/react-popper-1.3.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-popper%2Fdownload%2Freact-popper-1.3.7.tgz",
"integrity": "sha1-9qNHE2LvHw0QpJY2c3id4brKIyQ=",
"requires": {
"@babel/runtime": "^7.1.2",
"create-react-context": "^0.3.0",
"deep-equal": "^1.1.1",
"popper.js": "^1.14.4",
"prop-types": "^15.6.1",
"typed-styles": "^0.0.7",
"warning": "^4.0.2"
}
},
"regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz?cache=0&sync_timestamp=1584052597708&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.5.tgz",
"integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc="
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npm.taobao.org/warning/download/warning-4.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwarning%2Fdownload%2Fwarning-4.0.3.tgz",
"integrity": "sha1-Fungd+uKhtavfWSqHgX9hbRnjKM=",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
},
"react-dev-utils": {
"version": "5.0.3",
"resolved": "http://registry.npm.taobao.org/react-dev-utils/download/react-dev-utils-5.0.3.tgz",
@ -14718,6 +14804,11 @@
}
}
},
"react-onclickoutside": {
"version": "6.9.0",
"resolved": "https://registry.npm.taobao.org/react-onclickoutside/download/react-onclickoutside-6.9.0.tgz",
"integrity": "sha1-pUvDF66M9hMaXXis6lWhEGfzeh8="
},
"react-player": {
"version": "1.15.2",
"resolved": "https://registry.npm.taobao.org/react-player/download/react-player-1.15.2.tgz",
@ -17482,6 +17573,11 @@
"mime-types": "~2.1.18"
}
},
"typed-styles": {
"version": "0.0.7",
"resolved": "https://registry.npm.taobao.org/typed-styles/download/typed-styles-0.0.7.tgz",
"integrity": "sha1-kzkqAIeUxFlRGf9i3eaAnbxAo9k="
},
"typedarray": {
"version": "0.0.6",
"resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",

@ -30,6 +30,18 @@
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe739;</span>
<div class="name">返回</div>
<div class="code-name">&amp;#xe739;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe738;</span>
<div class="name">统计</div>
<div class="code-name">&amp;#xe738;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe736;</span>
<div class="name">签到-02</div>
@ -2078,6 +2090,24 @@
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-fanhui"></span>
<div class="name">
返回
</div>
<div class="code-name">.icon-fanhui
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tongji1"></span>
<div class="name">
统计
</div>
<div class="code-name">.icon-tongji1
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-qiandao-1"></span>
<div class="name">
@ -5104,6 +5134,22 @@
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fanhui"></use>
</svg>
<div class="name">返回</div>
<div class="code-name">#icon-fanhui</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tongji1"></use>
</svg>
<div class="name">统计</div>
<div class="code-name">#icon-tongji1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-qiandao-1"></use>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -5,6 +5,20 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "13458315",
"name": "返回",
"font_class": "fanhui",
"unicode": "e739",
"unicode_decimal": 59193
},
{
"icon_id": "13458287",
"name": "统计",
"font_class": "tongji1",
"unicode": "e738",
"unicode_decimal": 59192
},
{
"icon_id": "13428689",
"name": "签到-02",

@ -20,6 +20,12 @@ Created by iconfont
/>
<missing-glyph />
<glyph glyph-name="fanhui" unicode="&#59193;" d="M590.769231-107.362462H315.076923c-31.507692 0-63.015385 23.630769-63.015385 63.015385s23.630769 63.015385 63.015385 63.015385h275.692308c259.938462 0 378.092308 7.876923 378.092307 252.061538s-118.153846 252.061538-378.092307 252.061539H315.076923c-31.507692 0-63.015385 23.630769-63.015385 63.015384s31.507692 55.138462 63.015385 55.138462h275.692308c228.430769 0 496.246154 0 496.246154-378.092308s-267.815385-370.215385-496.246154-370.215385zM47.261538 514.914462l259.938462-196.923077c39.384615-23.630769 86.646154-15.753846 110.276923 15.753846 7.876923 15.753846 15.753846 31.507692 15.753846 47.261538v393.846154c0 47.261538-31.507692 78.769231-78.769231 78.769231-15.753846 0-31.507692-7.876923-47.261538-15.753846l-259.938462-196.923077c-39.384615-31.507692-47.261538-78.769231-15.753846-110.276923 0-7.876923 7.876923-15.753846 15.753846-15.753846z" horiz-adv-x="1102" />
<glyph glyph-name="tongji1" unicode="&#59192;" d="M702.171429 52.419048c-78.019048 0-141.409524 63.390476-141.409524 141.409523V754.590476c0 78.019048 63.390476 141.409524 141.409524 141.409524 78.019048 0 141.409524-63.390476 141.409523-141.409524v-565.638095c-4.87619-73.142857-68.266667-136.533333-141.409523-136.533333z m0 746.057142c-24.380952 0-43.885714-19.504762-43.885715-43.885714v-565.638095c0-24.380952 19.504762-43.885714 43.885715-43.885714s43.885714 19.504762 43.885714 43.885714V754.590476c-4.87619 24.380952-24.380952 43.885714-43.885714 43.885714zM1067.885714 52.419048c-78.019048 0-141.409524 63.390476-141.409524 141.409523V447.390476c0 78.019048 63.390476 141.409524 141.409524 141.409524s141.409524-63.390476 141.409524-141.409524v-253.561905c0-78.019048-63.390476-141.409524-141.409524-141.409523z m0 433.980952c-24.380952 0-43.885714-19.504762-43.885714-43.885714v-253.561905c0-24.380952 19.504762-43.885714 43.885714-43.885714s43.885714 19.504762 43.885715 43.885714V447.390476c0 19.504762-19.504762 39.009524-43.885715 39.009524zM331.580952 52.419048C253.561905 52.419048 195.047619 115.809524 195.047619 193.828571V447.390476c0 78.019048 63.390476 141.409524 141.409524 141.409524 78.019048 0 141.409524-63.390476 141.409524-141.409524v-253.561905c-4.87619-78.019048-68.266667-141.409524-146.285715-141.409523z m0 433.980952c-19.504762 0-39.009524-19.504762-39.009523-39.009524v-253.561905c0-24.380952 19.504762-43.885714 43.885714-43.885714s43.885714 19.504762 43.885714 43.885714V447.390476c-4.87619 19.504762-24.380952 39.009524-48.761905 39.009524zM1297.066667-108.495238H48.761905c-29.257143 0-48.761905 19.504762-48.761905 48.761905v536.380952c0 29.257143 19.504762 48.761905 48.761905 48.761905s48.761905-19.504762 48.761905-48.761905v-487.619048h1199.542857c29.257143 0 48.761905-19.504762 48.761904-48.761904s-24.380952-48.761905-48.761904-48.761905z" horiz-adv-x="1365" />
<glyph glyph-name="qiandao-1" unicode="&#59190;" d="M881.509434-128h-724.528302a157.584906 157.584906 0 0 0-156.981132 156.981132v603.773585a157.584906 157.584906 0 0 0 156.981132 156.981132h724.528302a157.584906 157.584906 0 0 0 156.981132-156.981132v-603.773585a157.584906 157.584906 0 0 0-156.981132-156.981132z m-724.528302 845.283019a84.528302 84.528302 0 0 1-84.528302-84.528302v-603.773585a84.528302 84.528302 0 0 1 84.528302-84.528302h724.528302a84.528302 84.528302 0 0 1 84.528302 84.528302v603.773585a84.528302 84.528302 0 0 1-84.528302 84.528302zM277.735849 859.773585v-241.509434M277.735849 582.037736a36.226415 36.226415 0 0 0-36.226415 36.226415v241.509434a36.226415 36.226415 0 1 0 72.45283 0v-241.509434a36.226415 36.226415 0 0 0-36.226415-36.226415zM760.754717 859.773585v-241.509434M760.754717 582.037736a36.226415 36.226415 0 0 0-36.226415 36.226415v241.509434a36.226415 36.226415 0 0 0 72.45283 0v-241.509434a36.226415 36.226415 0 0 0-36.226415-36.226415zM486.641509 149.735849a37.433962 37.433962 0 0 0-27.773584 10.867925l-175.09434 181.132075a36.226415 36.226415 0 0 0 0 51.320755 36.830189 36.830189 0 0 0 51.320755 0l152.754717-158.792453 281.962264 221.584906a36.226415 36.226415 0 0 0 50.716981-6.037736 36.830189 36.830189 0 0 0-6.037736-51.320755l-307.320755-241.509434a38.037736 38.037736 0 0 0-20.528302-7.245283z" horiz-adv-x="1038" />

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 410 KiB

@ -0,0 +1,9 @@
import React from 'react'
import MiniPagination from './components/mini-pagination'
export default () => {
function onPageChange(page) {
console.log(page, '-----------')
}
return <MiniPagination onChange={onPageChange} current={1} total={100} pageSize={16} />
}

@ -0,0 +1,32 @@
import React, { useState } from 'react'
import './index.scss'
function noop() { }
export default ({ current, defaultCurrent, total, pageSize, onChange = noop }) => {
const maxPage = Math.ceil(total / pageSize)
const [page, setPage] = useState(current || defaultCurrent)
function next() {
if (page < maxPage) {
let value = page + 1
setPage(value)
onChange(value)
}
}
function prev() {
if (page > 1) {
let value = page - 1
setPage(value)
onChange(value)
}
}
return (
<div className="mini-pagination">
<a class={page === 1 ? 'disabled' : 'normal'} onClick={prev}>上一页</a>
<a class={page === maxPage ? 'disabled' : 'normal'} onClick={next} >下一页</a>
</div>
)
}

@ -0,0 +1,65 @@
.mini-pagination {
display: flex;
flex-flow: row nowrap;
justify-content: center;
align-items: center;
a {
display: block;
padding: 0 10px 0 22px;
border-width: 1px;
border-radius: 3px;
margin-right: 4px;
font-size: 12px;
line-height: 30px;
cursor: pointer;
border-style: solid;
outline: none;
border-color: #c4c6cf;
background: #fff;
color: #333;
position: relative;
&:hover {
background-color: #f2f3f7;
border-color: #a0a2ad;
text-decoration: none;
}
&:before {
position: absolute;
content: ' ';
width: 8px;
top: 10px;
left: 10px;
height: 8px;
transform: rotate(-45deg);
border-top: 1px solid #333;
border-left: 1px solid #333;
}
&:last-child {
padding: 0 22px 0 10px;
margin: 0 0 0 4px;
&:before {
left: auto;
right: 10px;
transform: rotate(135deg);
}
}
&.disabled {
cursor: not-allowed;
background-color: #f7f8fa;
border-color: #e6e7eb;
color: #e0e0e0;
&:before {
border-top: 1px solid #e0e0e0;
border-left: 1px solid #e0e0e0;
}
}
}
}

@ -0,0 +1,117 @@
import * as monaco from 'monaco-editor'
import { union } from 'lodash'
const ifelse = {
label: 'ifelse',
kind: monaco.languages.CompletionItemKind.Snippet,
insertText: [
'if (${1:condition}) {',
'\t$0',
'} else {',
'\t',
'}'
].join('\n'),
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
documentation: 'If-Else Statement'
}
function getWordsInString(string) {
return string.match(/[A-z]+/g)
}
const cArray = ['auto', 'break', 'case', 'char', 'const', 'continue', 'default', 'do', 'double', 'else', 'enum', 'extern',
'float', 'for', 'goto', 'if', 'int', 'long', 'register', 'return', 'short', 'signed', 'sizeof', 'static', 'struct',
'switch', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while', 'inline', 'restrict', '_Bool', '_Complex',
'_Imaginary', '_Alignas', '_Alignof', '_Atomic', '_Static_assert', '_Noreturn', '_Thread_local', '_Generic']
monaco.languages.registerCompletionItemProvider('cpp', {
provideCompletionItems: (model) => {
const currentFileWords = getWordsInString(model.getValue());
const all = union(cArray, currentFileWords)
var suggestions = all.map((item) => {
return {
label: item,
kind: monaco.languages.CompletionItemKind.Keyword,
insertText: item,
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
}
});
suggestions.push(ifelse)
return { suggestions: suggestions };
}
});
// https://www.programiz.com/python-programming/keyword-list
const pythonArray = ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif',
'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or',
'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
monaco.languages.registerCompletionItemProvider('python', {
provideCompletionItems: (model) => {
const currentFileWords = getWordsInString(model.getValue());
const all = union(pythonArray, currentFileWords)
var suggestions = all.map((item) => {
return {
label: item,
kind: monaco.languages.CompletionItemKind.Keyword,
insertText: item,
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
}
});
suggestions.push({
label: 'print',
kind: monaco.languages.CompletionItemKind.Snippet,
insertText: [
'print($0)',
].join('\n'),
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
documentation: 'print'
})
return { suggestions: suggestions };
}
});
const javaArray = ['abstract', 'assert', 'boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'const',
'continue', 'default', 'do', 'double', 'else', 'enum', 'extends', 'final', 'finally', 'float', 'for', 'goto', 'if',
'implements', 'import', 'instance of', 'int', 'interface', 'long', 'native',
'new', 'package', 'private', 'protected', 'public', 'return', 'strictfp', 'short', 'static', 'super', 'switch',
'synchronized', 'this', 'throw', 'throws', 'transient', 'try', 'void', 'volatile', 'while']
monaco.languages.registerCompletionItemProvider('java', {
provideCompletionItems: (model) => {
const currentFileWords = getWordsInString(model.getValue());
const all = _.union(javaArray, currentFileWords)
var suggestions = all.map((item) => {
return {
label: item,
kind: monaco.languages.CompletionItemKind.Keyword,
insertText: item,
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
}
});
suggestions.push(ifelse)
suggestions.push({
label: 'main',
kind: monaco.languages.CompletionItemKind.Snippet,
insertText: [
'public static void main(String[] args) {',
'\t$0',
'}',
].join('\n'),
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
documentation: 'main function'
})
suggestions.push({
label: 'System.out.print',
kind: monaco.languages.CompletionItemKind.Snippet,
insertText: [
'System.out.print($0)',
].join('\n'),
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
documentation: 'system print'
})
return { suggestions: suggestions };
}
});

@ -0,0 +1,438 @@
.monaco-editor .minimap-slider,
.monaco-editor .minimap-slider .minimap-slider-horizontal {
background: rgba(121, 121, 121, 0.2);
}
.monaco-editor .minimap-slider:hover,
.monaco-editor .minimap-slider:hover .minimap-slider-horizontal {
background: rgba(100, 100, 100, 0.35);
}
.monaco-editor .minimap-slider.active,
.monaco-editor .minimap-slider.active .minimap-slider-horizontal {
background: rgba(191, 191, 191, 0.2);
}
.monaco-editor .minimap-shadow-visible {
box-shadow: #000000 -6px 0 6px -6px inset;
}
.monaco-editor .scroll-decoration {
box-shadow: #000000 0 6px 6px -6px inset;
}
.monaco-editor .focused .selected-text {
background-color: #264f78;
}
.monaco-editor .selected-text {
background-color: #3a3d41;
}
.monaco-editor,
.monaco-editor-background,
.monaco-editor .inputarea.ime-input {
background-color: #1e1e1e;
}
.monaco-editor,
.monaco-editor .inputarea.ime-input {
color: #d4d4d4;
}
.monaco-editor .margin {
background-color: #1e1e1e;
}
.monaco-editor .rangeHighlight {
background-color: rgba(255, 255, 255, 0.04);
}
.vs-whitespace {
color: rgba(227, 228, 226, 0.16) !important;
}
.monaco-editor .view-overlays .current-line {
border: 2px solid #282828;
}
.monaco-editor .margin-view-overlays .current-line-margin {
border: 2px solid #282828;
}
.monaco-editor .lines-content .cigr {
box-shadow: 1px 0 0 0 #404040 inset;
}
.monaco-editor .lines-content .cigra {
box-shadow: 1px 0 0 0 #707070 inset;
}
.monaco-editor .line-numbers {
color: #858585;
}
.monaco-editor .current-line~.line-numbers {
color: #c6c6c6;
}
.monaco-editor .view-ruler {
box-shadow: 1px 0 0 0 #5a5a5a inset;
}
.monaco-editor .cursor {
background-color: #aeafad;
border-color: #aeafad;
color: #515052;
}
.monaco-editor .squiggly-error {
background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23ea4646'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
}
.monaco-editor .squiggly-warning {
background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%234d9e4d'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
}
.monaco-editor .squiggly-info {
background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23008000'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;
}
.monaco-editor .squiggly-hint {
background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%223%22%20width%3D%2212%22%3E%3Cg%20fill%3D%22rgba(238%2C%20238%2C%20238%2C%200.7)%22%3E%3Ccircle%20cx%3D%221%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%225%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%221%22%20r%3D%221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat bottom left;
}
.showUnused .monaco-editor .squiggly-inline-unnecessary {
opacity: 0.667;
}
.monaco-diff-editor .diff-review-line-number {
color: #858585;
}
.monaco-diff-editor .diff-review-shadow {
box-shadow: #000000 0 -6px 6px -6px inset;
}
.monaco-editor .line-insert,
.monaco-editor .char-insert {
background-color: rgba(155, 185, 85, 0.2);
}
.monaco-diff-editor .line-insert,
.monaco-diff-editor .char-insert {
background-color: rgba(155, 185, 85, 0.2);
}
.monaco-editor .inline-added-margin-view-zone {
background-color: rgba(155, 185, 85, 0.2);
}
.monaco-editor .line-delete,
.monaco-editor .char-delete {
background-color: rgba(255, 0, 0, 0.2);
}
.monaco-diff-editor .line-delete,
.monaco-diff-editor .char-delete {
background-color: rgba(255, 0, 0, 0.2);
}
.monaco-editor .inline-deleted-margin-view-zone {
background-color: rgba(255, 0, 0, 0.2);
}
.monaco-diff-editor.side-by-side .editor.modified {
box-shadow: -6px 0 5px -5px #000000;
}
.monaco-editor .bracket-match {
background-color: rgba(0, 100, 0, 0.1);
}
.monaco-editor .bracket-match {
border: 1px solid #888888;
}
.monaco-editor .codelens-decoration {
color: #999999;
}
.monaco-editor .codelens-decoration>a:hover {
color: #4e94ce !important;
}
.monaco-editor .findOptionsWidget {
background-color: #252526;
}
.monaco-editor .findOptionsWidget {
box-shadow: 0 2px 8px #000000;
}
.monaco-editor .findMatch {
background-color: rgba(234, 92, 0, 0.33);
}
.monaco-editor .currentFindMatch {
background-color: #515c6a;
}
.monaco-editor .findScope {
background-color: rgba(58, 61, 65, 0.4);
}
.monaco-editor .find-widget {
background-color: #252526;
}
.monaco-editor .find-widget {
box-shadow: 0 2px 8px #000000;
}
.monaco-editor .find-widget.no-results .matchesCount {
color: #f48771;
}
.monaco-editor .find-widget .monaco-sash {
background-color: #454545;
width: 3px !important;
margin-left: -4px;
}
.monaco-editor .find-widget .monaco-checkbox .checkbox:checked+.label {
border: 1px solid #007acc;
}
.monaco-editor.vs .valueSetReplacement {
outline: solid 2px #888888;
}
.monaco-editor .detected-link-active {
color: #4e94ce !important;
}
.monaco-editor .monaco-editor-overlaymessage .anchor {
border-top-color: #007acc;
}
.monaco-editor .monaco-editor-overlaymessage .message {
border: 1px solid #007acc;
}
.monaco-editor .monaco-editor-overlaymessage .message {
background-color: #063b49;
}
.monaco-editor .parameter-hints-widget {
border: 1px solid #454545;
}
.monaco-editor .parameter-hints-widget.multiple .body {
border-left: 1px solid rgba(69, 69, 69, 0.5);
}
.monaco-editor .parameter-hints-widget .signature.has-docs {
border-bottom: 1px solid rgba(69, 69, 69, 0.5);
}
.monaco-editor .parameter-hints-widget {
background-color: #252526;
}
.monaco-editor .parameter-hints-widget a {
color: #3794ff;
}
.monaco-editor .parameter-hints-widget code {
background-color: rgba(10, 10, 10, 0.4);
}
.monaco-editor .snippet-placeholder {
background-color: rgba(124, 124, 124, 0.3);
outline-color: transparent;
}
.monaco-editor .finish-snippet-placeholder {
background-color: transparent;
outline-color: #525252;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight {
color: #0097fb;
}
.monaco-editor .suggest-widget {
color: #d4d4d4;
}
.monaco-editor .suggest-widget a {
color: #3794ff;
}
.monaco-editor .suggest-widget code {
background-color: rgba(10, 10, 10, 0.4);
}
.monaco-editor .focused .selectionHighlight {
background-color: rgba(173, 214, 255, 0.15);
}
.monaco-editor .selectionHighlight {
background-color: rgba(173, 214, 255, 0.07);
}
.monaco-editor .wordHighlight {
background-color: rgba(87, 87, 87, 0.72);
}
.monaco-editor .wordHighlightStrong {
background-color: rgba(0, 73, 114, 0.72);
}
.monaco-editor .accessibilityHelpWidget {
background-color: #252526;
}
.monaco-editor .accessibilityHelpWidget {
box-shadow: 0 2px 8px #000000;
}
.monaco-editor .tokens-inspect-widget {
border: 1px solid #454545;
}
.monaco-editor .tokens-inspect-widget .tokens-inspect-separator {
background-color: #454545;
}
.monaco-editor .tokens-inspect-widget {
background-color: #252526;
}
.monaco-editor .reference-zone-widget .ref-tree .referenceMatch {
background-color: rgba(234, 92, 0, 0.3);
}
.monaco-editor .reference-zone-widget .preview .reference-decoration {
background-color: rgba(255, 143, 0, 0.6);
}
.monaco-editor .reference-zone-widget .ref-tree {
background-color: #252526;
}
.monaco-editor .reference-zone-widget .ref-tree {
color: #bbbbbb;
}
.monaco-editor .reference-zone-widget .ref-tree .reference-file {
color: #ffffff;
}
.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted) {
background-color: rgba(51, 153, 255, 0.2);
}
.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted) {
color: #ffffff !important;
}
.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,
.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {
background-color: #001f33;
}
.monaco-editor .reference-zone-widget .preview .monaco-editor .margin {
background-color: #001f33;
}
.monaco-editor .marker-widget a {
color: #3794ff;
}
.monaco-editor .hoverHighlight {
background-color: rgba(38, 79, 120, 0.25);
}
.monaco-editor .monaco-editor-hover {
background-color: #252526;
}
.monaco-editor .monaco-editor-hover {
border: 1px solid #454545;
}
.monaco-editor .monaco-editor-hover .hover-row:not(:first-child):not(:empty) {
border-top: 1px solid rgba(69, 69, 69, 0.5);
}
.monaco-editor .monaco-editor-hover hr {
border-top: 1px solid rgba(69, 69, 69, 0.5);
}
.monaco-editor .monaco-editor-hover hr {
border-bottom: 0px solid rgba(69, 69, 69, 0.5);
}
.monaco-editor .monaco-editor-hover a {
color: #3794ff;
}
.monaco-editor .monaco-editor-hover .hover-row .actions {
background-color: #2c2c2d;
}
.monaco-editor .monaco-editor-hover code {
background-color: rgba(10, 10, 10, 0.4);
}
.monaco-editor .goto-definition-link {
color: #4e94ce !important;
}
.mtki {
font-style: italic;
}
.mtkb {
font-weight: bold;
}
.mtku {
text-decoration: underline;
text-underline-position: under;
}
#extend-challenge-file-edit {
height: 100%;
}
/* context menu会有样式问题先给隐藏掉 */
.context-view {
display: none !important;
}
/* 去掉灰色边框 */
#extend-challenge-file-edit {
border: none !important;
}
/* 覆盖tpi样式 */
.monaco-tree .monaco-tree-rows>.monaco-tree-row>.content {
min-width: auto;
}
/* 选中行边框 */
.monaco-editor .view-overlays .current-line {
border-width: 1px !important;
}
#extend-challenge-file-edit {
width: '100%';
height: '100%';
border: '1px solid grey';
}

@ -0,0 +1,190 @@
import React, { useEffect, useRef, useState } from 'react'
import * as monaco from 'monaco-editor'
import './TPIMonacoConfig'
import './index.css'
function processSize(size) {
return !/^\d+$/.test(size) ? size : `${size}px`
}
function noop() { }
let __prevent_trigger_change_event = false
function debounce(func, wait, immediate) {
var timeout
return function () {
var context = this, args = arguments
var later = function () {
timeout = null
if (!immediate) func.apply(context, args)
};
var callNow = immediate && !timeout
clearTimeout(timeout)
timeout = setTimeout(later, wait)
if (callNow) func.apply(context, args)
}
}
const mirror2LanguageMap = {
'JFinal': 'java',
'Java': 'java',
'JavaWeb': 'java',
'Kotlin': 'java',
'Html': 'html',
'Css': 'css',
'Javascript': 'javascript',
'JavaScript': 'javascript',
'C/C++': 'cpp',
'MachineLearning': 'python',
'Python2.7': 'python',
'Python3.6': 'python',
'C#': 'csharp',
'R': 'r'
}
function getLanguageByMirrorName(mirror_name) {
let lang = 'javascript'
if (mirror_name && mirror_name.length) {
// htmlcsspythonhtmlcss
for (let i = mirror_name.length - 1; i >= 0; i--) {
let languageVal = mirror2LanguageMap[mirror_name[i]]
if (languageVal) {
lang = languageVal
break
}
}
}
return lang
}
export default ({
width = '100%',
height = '100%',
value,
language = 'javascript',
options = {},
overrideServices = {},
theme = 'vs-dark',
onChange = noop,
editorDidMount = noop
}) => {
const editorEl = useRef()
const editor = useRef({})
const [init, setInit] = useState(false)
function onLayout() {
if (window.ResizeObserver) {
const ro = new window.ResizeObserver(entries => {
for (let entry of entries) {
if (entry.target.offsetHeight > 0) {
editor.current.instance.layout()
}
}
})
ro.observe(editorEl.current.parentElement)
} else {
setTimeout(() => {
editor.current.instance.layout()
}, 100);
}
}
useEffect(() => {
editor.current.instance = monaco.editor.create(
editorEl.current, {
value,
language: getLanguageByMirrorName(language),
theme,
...options
},
overrideServices
)
editorDidMount(editor.current.instance, monaco)
editor.current.subscription = editor.current.instance.onDidChangeModelContent(event => {
if (!__prevent_trigger_change_event) {
onChange(editor.current.instance.getValue(), event);
}
})
setInit(true)
const resizeHandler = debounce(() => { editor.current.instance.layout() }, 100)
window.addEventListener('resize', resizeHandler)
onLayout()
return () => {
const el = editor.current.instance
el.dispose()
const model = el.getModel()
if (model) {
model.dispose()
}
if (editor.current.subscription) {
editor.current.subscription.dispose()
}
window.removeEventListener('resize', resizeHandler)
}
}, [editorEl.current])
useEffect(() => {
let instance = editor.current.instance
if (instance && init) {
__prevent_trigger_change_event = true
const model = instance.getModel()
instance.pushUndoStop()
model.pushEditOperations(
[],
[
{
range: model.getFullModelRange(),
text: value
}
]
)
instance.pushUndoStop();
__prevent_trigger_change_event = false;
}
}, [value, init])
useEffect(() => {
let instance = editor.current.instance
if (instance && init) {
monaco.editor.setModelLanguage(instance.getModel(), getLanguageByMirrorName(language))
}
}, [language, init])
useEffect(() => {
let instance = editor.current.instance
if (instance && init) {
monaco.editor.setTheme(theme)
}
}, [theme, init])
useEffect(() => {
let instance = editor.current.instance
if (instance && init) {
instance.updateOptions(options)
}
}, [options, init])
useEffect(() => {
let instance = editor.current.instance
if (instance && init) {
instance.layout()
}
}, [width, height, init])
const fixedWidth = processSize(width)
const fixedHeight = processSize(height)
const style = {
width: fixedWidth,
height: fixedHeight
}
return (
<div ref={editorEl} style={style} id="extend-challenge-file-edit" name="content" ></div>
)
}

@ -8,7 +8,7 @@ import Videos from './Video';
import Lives from './Live';
import LivesNew from './LiveNew';
import VideoLink from './VideoLink';
import Videostatistics from '../videostatistics/Videostatistics';
import './video.css';
import '../css/Courses.css';
import '../publicNav/nav.css';
@ -37,7 +37,8 @@ class VideoIndex extends Component{
liveId:undefined,
liveVisible:false
liveVisible:false,
statistics:false,
}
}
@ -101,7 +102,7 @@ class VideoIndex extends Component{
console.log(error);
})
}
// 获取视频列表
getList=(page)=>{
const { coursesId , videoId }=this.props.match.params;
@ -133,7 +134,7 @@ class VideoIndex extends Component{
page:1
})
this.checkType(e.key,1);
}
}
changePage=(page,type)=>{
this.setState({
@ -153,7 +154,7 @@ class VideoIndex extends Component{
this.setVisible(true);
}
uploadVideo=(upload)=>{
this.setState({
upload,
isSpining:true
@ -234,9 +235,15 @@ class VideoIndex extends Component{
this.getList(page);
}
}
//统计
statisticsy=(bool)=>{
this.setState({
statistics:bool
})
}
render(){
const { videos , upload , videoData , type , liveData , lives , page , liveVisible , isSpining , liveId , otherLinkVisible } = this.state;
const { admin , is_teacher , business } = this.props.user;
const { videos , upload , videoData , type , liveData , lives , page , liveVisible , isSpining , liveId , otherLinkVisible,statistics } = this.state;
const { is_teacher } = this.props.user;
const { coursesId , videoId }=this.props.match.params;
const {course_identity} = this.props.coursedata;
@ -252,11 +259,11 @@ class VideoIndex extends Component{
notification={this.props.showNotification}
setVisible={this.setLinkeVisible}
></VideoLink>
<LivesNew
visible={liveVisible}
<LivesNew
visible={liveVisible}
liveId={liveId}
setliveVisibel={this.setliveVisibel}
{...this.props}
setliveVisibel={this.setliveVisibel}
{...this.props}
{...this.state}
></LivesNew>
{
@ -278,67 +285,77 @@ class VideoIndex extends Component{
}
`}</style>
}
<div className="edu-back-white" style={{marginBottom:"1px"}}>
{
statistics===false?
<div className="edu-back-white" style={{marginBottom:"1px"}}>
<div className="clearfix pl30 pr30 menuDiv">
{
videoData && videoData.category_name && type === "video" ?
<span className="font-18 fl color-dark-21 mt20 mb20">{videoData.category_name}</span>
:
<div className="task_menu_ul fl mt2" style={{width:"400px"}}>
<Menu mode="horizontal" selectedKeys={[type]} onClick={this.changeType}>
<Menu.Item key="video">视频</Menu.Item>
<Menu.Item key="live">直播</Menu.Item>
</Menu>
</div>
}
<li className="fr mt20 mb20">
{
type === "video" ?
<React.Fragment>
{
newOperation ?
<span>
{
videoId ?
<WordsBtn style="blue" onClick={()=>this.editDir(videoData && videoData.category_name,videoId)} className={"ml30 font-16"}>目录重命名</WordsBtn>
:
<WordsBtn style="blue" className="ml30 font-16" onClick={this.addDir}>新建目录</WordsBtn>
}
<WordsBtn style="blue" className="ml30 font-16" onClick={()=>this.setLinkeVisible(true)}>增加外链</WordsBtn>
<div className="clearfix pl30 pr30 menuDiv">
{
videoData && videoData.category_name && type === "video" ?
<span className="font-18 fl color-dark-21 mt20 mb20">{videoData.category_name}</span>
:
<div className="task_menu_ul fl mt2" style={{width:"400px"}}>
<Menu mode="horizontal" selectedKeys={[type]} onClick={this.changeType}>
<Menu.Item key="video">视频</Menu.Item>
<Menu.Item key="live">直播</Menu.Item>
</Menu>
</div>
}
<li className="fr mt20 mb20">
{
type === "video" ?
<React.Fragment>
{
newOperation ?
<span>
<WordsBtn style="blue" className="ml30 font-16 tongjis"
onClick={()=>this.statisticsy(true)}
><i className="iconfont icon-tongji1 mr5"></i></WordsBtn>
{
videoId ?
<WordsBtn style="blue" onClick={()=>this.editDir(videoData && videoData.category_name,videoId)} className={"ml30 font-16"}>目录重命名</WordsBtn>
:
<WordsBtn style="blue" className="ml30 font-16" onClick={this.addDir}>新建目录</WordsBtn>
}
<WordsBtn style="blue" className="ml30 font-16" onClick={()=>this.setLinkeVisible(true)}>增加外链</WordsBtn>
</span>:""
}
{
new_upload ?
<span>
}
{
new_upload ?
<span>
{
upload ?
<WordsBtn style="grey" className="font-16 ml30" onClick={()=>this.uploadVideo(false)}>取消</WordsBtn>
:
<WordsBtn style="blue" className="font-16 ml30" onClick={this.toUpload}>上传视频</WordsBtn>
}
upload ?
<WordsBtn style="grey" className="font-16 ml30" onClick={()=>this.uploadVideo(false)}>取消</WordsBtn>
:
<WordsBtn style="blue" className="font-16 ml30" onClick={this.toUpload}>上传视频</WordsBtn>
}
</span>:""
}
</React.Fragment>
:
<WordsBtn style="blue" className="font-16 ml30" onClick={this.liveSetting}>添加直播</WordsBtn>
}
</li>
</div>
</div>
}
</React.Fragment>
:
<WordsBtn style="blue" className="font-16 ml30" onClick={this.liveSetting}>添加直播</WordsBtn>
}
</li>
</div>
</div>
:
<Videostatistics {...this.props} {...this.state} statisticsy={(b)=>this.statisticsy(b)}></Videostatistics>
}
{
statistics===false?
<Spin spinning={isSpining}>
{
type === "video" ?
<Videos
upload={upload}
videos={videos}
type === "video" ?
<Videos
upload={upload}
videos={videos}
page={page}
data={videoData}
pageSize={PAGE_SIZE}
uploadVideo={this.uploadVideo}
listFunc={this.getList}
changePage={this.changePage}
{...this.props}
{...this.props}
{...this.state}
></Videos>
:
@ -355,6 +372,9 @@ class VideoIndex extends Component{
></Lives>
}
</Spin>
:
""
}
</React.Fragment>
)
}

@ -176,4 +176,14 @@
}
.wei_meet_info{
margin:0px auto;
}
}
.tongjis{
border: 1px solid #4CACFF;
padding-left: 10px;
padding-right: 10px;
padding-top: 5px;
padding-bottom: 5px;
border-radius: 5px;
line-height: 1px;
}

@ -2,13 +2,13 @@ import React, { Component, Fragment } from 'react';
import { getImageUrl } from 'educoder';
import CoursesHomeCard from "./CoursesHomeCard.js"
import axios from 'axios';
import { Pagination } from 'antd';
import LoadingSpin from '../../../common/LoadingSpin';
import UpgradeModals from '../../modals/UpgradeModals';
import './css/CoursesHome.css';
import '../../tpm/shixuns/shixun-keyword-list.scss';
import btnNew from './btn-new.png'
import btnJoin from './btn-join.png'
import Pagination from '../../../components/mini-pagination'
class CoursesHome extends Component {
constructor(props) {

@ -182,7 +182,12 @@
padding-top: 20px;
padding-bottom: 20px;
}
.teacherentrydivs{
padding-left: 25px;
padding-right: 25px;
padding-top: 20px;
padding-bottom: 20px;
}
.teachedivp{
font-size:16px;
font-family:Microsoft YaHei;
@ -352,3 +357,15 @@
color:rgba(153,153,153,1);
}
.sptits{
font-size:20px;
font-family:MicrosoftYaHeiSemibold;
color:rgba(51,51,51,1);
}
.sptitss{
font-size:14px;
font-family:MicrosoftYaHei;
color:rgba(136,136,136,1);
line-height:40px;
}

@ -0,0 +1,54 @@
import React,{ Component } from "react";
import axios from 'axios';
import '../signin/css/signincdi.css';
import Videostatisticscom from './component/Videostatisticscom';
//在线学习
class Videostatistics extends Component{
constructor(props){
super(props);
}
componentDidMount() {
}
mygetdatas=()=>{
}
render(){
return(
<React.Fragment>
<div className="ws100s">
<div className="ws100s" style={{
position: "relative",
}}>
<div className="ws100s xaxisreverseorder" style={{
position: "absolute",
top: "-29px",
}}>
<p className="sortinxdirection xiaoshou" onClick={()=>this.props.statisticsy(false)}>
<i className="iconfont icon-zuojiantou posiivsiconmyss mr5"></i>
<p className="fh mr20"> 返回</p>
</p>
</div>
<Videostatisticscom {...this.state} {...this.props}></Videostatisticscom>
<div>
</div>
</div>
</div>
</React.Fragment>
)
}
}
export default Videostatistics;

@ -0,0 +1,76 @@
import React, {Component} from "react";
import '../../signin/css/signincdi.css';
import {Progress, message} from 'antd';
import {getImageUrl} from 'educoder';
import axios from 'axios';
//条目
class Videostatisticscom extends Component {
//条目组件
constructor(props) {
super(props);
this.state = {}
}
componentDidMount() {
}
componentDidUpdate = (prevProps) => {
}
render() {
return (
<React.Fragment>
<div className="ws100s edu-back-white sortinxdirection" style={{
position: "relative"
}}>
<div className="ws100s teacherentrydivs ">
<div className="ws100s sortinxdirection">
<div className="ws50s sptits">视频统计总览</div>
<div className="ws50s sptitss xaxisreverseorder">播放数据从2020-03-13 24:00开始统计</div>
</div>
<style>
{
`
.yslsprenshu{
background-image: url(${getImageUrl(`images/qiandao/sprenshu.png`)});
}
.yslspcishu{
background-image: url(${getImageUrl(`images/qiandao/spcishu.png`)});
}
.yslshipingshi{
background-image: url(${getImageUrl(`images/qiandao/shipingshi.png`)});
}
`
}
</style>
<div className="ws100s">
<div className="yslsprenshu"></div>
<div className="yslspcishu"></div>
<div className="yslshipingshi"></div>
</div>
</div>
</div>
</React.Fragment>
)
}
}
export default Videostatisticscom;

@ -4,11 +4,10 @@ import { Dropdown, Menu } from 'antd';
import { getImageUrl } from 'educoder';
import PathCard from "./ShixunPathCard";
import UpgradeModals from '../modals/UpgradeModals';
import Pagination from '@icedesign/base/lib/pagination';
import '@icedesign/base/lib/pagination/style.js';
import './ShixunPaths.css';
import KeywordList from '../tpm/shixuns/shixun-keyword-list';
import btnUrl from './btn-new.png';
import Pagination from '../../components/mini-pagination'
class ShixunPathSearch extends Component {
constructor(props) {

@ -1,7 +1,8 @@
import React from 'react';
import { getImageUrl, setImagesUrl, getUrl } from 'educoder';
import { Spin, Tooltip, Rate, Pagination } from 'antd';
import { Spin, Tooltip, Rate } from 'antd';
import './shixunCss/shixunCard.scss';
import Pagination from '../../../components/mini-pagination'
export default ({ middleshixundata, pagination, typepvisible, pages, totalcount, shixunsPage }) => {
function onPageChange(number) {

@ -30,6 +30,18 @@
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe739;</span>
<div class="name">返回</div>
<div class="code-name">&amp;#xe739;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe738;</span>
<div class="name">统计</div>
<div class="code-name">&amp;#xe738;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe736;</span>
<div class="name">签到-02</div>
@ -2078,6 +2090,24 @@
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-fanhui"></span>
<div class="name">
返回
</div>
<div class="code-name">.icon-fanhui
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tongji1"></span>
<div class="name">
统计
</div>
<div class="code-name">.icon-tongji1
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-qiandao-1"></span>
<div class="name">
@ -5104,6 +5134,22 @@
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-fanhui"></use>
</svg>
<div class="name">返回</div>
<div class="code-name">#icon-fanhui</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tongji1"></use>
</svg>
<div class="name">统计</div>
<div class="code-name">#icon-tongji1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-qiandao-1"></use>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -5,6 +5,20 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "13458315",
"name": "返回",
"font_class": "fanhui",
"unicode": "e739",
"unicode_decimal": 59193
},
{
"icon_id": "13458287",
"name": "统计",
"font_class": "tongji1",
"unicode": "e738",
"unicode_decimal": 59192
},
{
"icon_id": "13428689",
"name": "签到-02",

@ -20,6 +20,12 @@ Created by iconfont
/>
<missing-glyph />
<glyph glyph-name="fanhui" unicode="&#59193;" d="M590.769231-107.362462H315.076923c-31.507692 0-63.015385 23.630769-63.015385 63.015385s23.630769 63.015385 63.015385 63.015385h275.692308c259.938462 0 378.092308 7.876923 378.092307 252.061538s-118.153846 252.061538-378.092307 252.061539H315.076923c-31.507692 0-63.015385 23.630769-63.015385 63.015384s31.507692 55.138462 63.015385 55.138462h275.692308c228.430769 0 496.246154 0 496.246154-378.092308s-267.815385-370.215385-496.246154-370.215385zM47.261538 514.914462l259.938462-196.923077c39.384615-23.630769 86.646154-15.753846 110.276923 15.753846 7.876923 15.753846 15.753846 31.507692 15.753846 47.261538v393.846154c0 47.261538-31.507692 78.769231-78.769231 78.769231-15.753846 0-31.507692-7.876923-47.261538-15.753846l-259.938462-196.923077c-39.384615-31.507692-47.261538-78.769231-15.753846-110.276923 0-7.876923 7.876923-15.753846 15.753846-15.753846z" horiz-adv-x="1102" />
<glyph glyph-name="tongji1" unicode="&#59192;" d="M702.171429 52.419048c-78.019048 0-141.409524 63.390476-141.409524 141.409523V754.590476c0 78.019048 63.390476 141.409524 141.409524 141.409524 78.019048 0 141.409524-63.390476 141.409523-141.409524v-565.638095c-4.87619-73.142857-68.266667-136.533333-141.409523-136.533333z m0 746.057142c-24.380952 0-43.885714-19.504762-43.885715-43.885714v-565.638095c0-24.380952 19.504762-43.885714 43.885715-43.885714s43.885714 19.504762 43.885714 43.885714V754.590476c-4.87619 24.380952-24.380952 43.885714-43.885714 43.885714zM1067.885714 52.419048c-78.019048 0-141.409524 63.390476-141.409524 141.409523V447.390476c0 78.019048 63.390476 141.409524 141.409524 141.409524s141.409524-63.390476 141.409524-141.409524v-253.561905c0-78.019048-63.390476-141.409524-141.409524-141.409523z m0 433.980952c-24.380952 0-43.885714-19.504762-43.885714-43.885714v-253.561905c0-24.380952 19.504762-43.885714 43.885714-43.885714s43.885714 19.504762 43.885715 43.885714V447.390476c0 19.504762-19.504762 39.009524-43.885715 39.009524zM331.580952 52.419048C253.561905 52.419048 195.047619 115.809524 195.047619 193.828571V447.390476c0 78.019048 63.390476 141.409524 141.409524 141.409524 78.019048 0 141.409524-63.390476 141.409524-141.409524v-253.561905c-4.87619-78.019048-68.266667-141.409524-146.285715-141.409523z m0 433.980952c-19.504762 0-39.009524-19.504762-39.009523-39.009524v-253.561905c0-24.380952 19.504762-43.885714 43.885714-43.885714s43.885714 19.504762 43.885714 43.885714V447.390476c-4.87619 19.504762-24.380952 39.009524-48.761905 39.009524zM1297.066667-108.495238H48.761905c-29.257143 0-48.761905 19.504762-48.761905 48.761905v536.380952c0 29.257143 19.504762 48.761905 48.761905 48.761905s48.761905-19.504762 48.761905-48.761905v-487.619048h1199.542857c29.257143 0 48.761905-19.504762 48.761904-48.761904s-24.380952-48.761905-48.761904-48.761905z" horiz-adv-x="1365" />
<glyph glyph-name="qiandao-1" unicode="&#59190;" d="M881.509434-128h-724.528302a157.584906 157.584906 0 0 0-156.981132 156.981132v603.773585a157.584906 157.584906 0 0 0 156.981132 156.981132h724.528302a157.584906 157.584906 0 0 0 156.981132-156.981132v-603.773585a157.584906 157.584906 0 0 0-156.981132-156.981132z m-724.528302 845.283019a84.528302 84.528302 0 0 1-84.528302-84.528302v-603.773585a84.528302 84.528302 0 0 1 84.528302-84.528302h724.528302a84.528302 84.528302 0 0 1 84.528302 84.528302v603.773585a84.528302 84.528302 0 0 1-84.528302 84.528302zM277.735849 859.773585v-241.509434M277.735849 582.037736a36.226415 36.226415 0 0 0-36.226415 36.226415v241.509434a36.226415 36.226415 0 1 0 72.45283 0v-241.509434a36.226415 36.226415 0 0 0-36.226415-36.226415zM760.754717 859.773585v-241.509434M760.754717 582.037736a36.226415 36.226415 0 0 0-36.226415 36.226415v241.509434a36.226415 36.226415 0 0 0 72.45283 0v-241.509434a36.226415 36.226415 0 0 0-36.226415-36.226415zM486.641509 149.735849a37.433962 37.433962 0 0 0-27.773584 10.867925l-175.09434 181.132075a36.226415 36.226415 0 0 0 0 51.320755 36.830189 36.830189 0 0 0 51.320755 0l152.754717-158.792453 281.962264 221.584906a36.226415 36.226415 0 0 0 50.716981-6.037736 36.830189 36.830189 0 0 0-6.037736-51.320755l-307.320755-241.509434a38.037736 38.037736 0 0 0-20.528302-7.245283z" horiz-adv-x="1038" />

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 410 KiB

Loading…
Cancel
Save