Compare commits
7 Commits
b4b03cf1cb
...
5a18eb5f7a
| Author | SHA1 | Date |
|---|---|---|
|
|
5a18eb5f7a | |
|
|
f9ef3ec776 | |
|
|
e73fb424a2 | |
|
|
a7df4d9fe8 | |
|
|
f228864bf6 | |
|
|
95ae5220a6 | |
|
|
e13d11a248 |
|
|
@ -0,0 +1,539 @@
|
|||
/* Logo 字体 */
|
||||
@font-face {
|
||||
font-family: "iconfont logo";
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-family: "iconfont logo";
|
||||
font-size: 160px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* tabs */
|
||||
.nav-tabs {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-more {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#tabs {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#tabs li {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
border-bottom: 2px solid transparent;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-bottom: -1px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
#tabs .active {
|
||||
border-bottom-color: #f00;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.tab-container .content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 页面布局 */
|
||||
.main {
|
||||
padding: 30px 100px;
|
||||
width: 960px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main .logo {
|
||||
color: #333;
|
||||
text-align: left;
|
||||
margin-bottom: 30px;
|
||||
line-height: 1;
|
||||
height: 110px;
|
||||
margin-top: -50px;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.main .logo a {
|
||||
font-size: 160px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.helps {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.helps pre {
|
||||
padding: 20px;
|
||||
margin: 10px 0;
|
||||
border: solid 1px #e7e1cd;
|
||||
background-color: #fffdef;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.icon_lists {
|
||||
width: 100% !important;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.icon_lists li {
|
||||
width: 100px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 20px;
|
||||
text-align: center;
|
||||
list-style: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.icon_lists li .code-name {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.icon_lists .icon {
|
||||
display: block;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
font-size: 42px;
|
||||
margin: 10px auto;
|
||||
color: #333;
|
||||
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
-moz-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
transition: font-size 0.25s linear, width 0.25s linear;
|
||||
}
|
||||
|
||||
.icon_lists .icon:hover {
|
||||
font-size: 100px;
|
||||
}
|
||||
|
||||
.icon_lists .svg-icon {
|
||||
/* 通过设置 font-size 来改变图标大小 */
|
||||
width: 1em;
|
||||
/* 图标和文字相邻时,垂直对齐 */
|
||||
vertical-align: -0.15em;
|
||||
/* 通过设置 color 来改变 SVG 的颜色/fill */
|
||||
fill: currentColor;
|
||||
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
|
||||
normalize.css 中也包含这行 */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.icon_lists li .name,
|
||||
.icon_lists li .code-name {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* markdown 样式 */
|
||||
.markdown {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
vertical-align: middle;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
color: #404040;
|
||||
font-weight: 500;
|
||||
line-height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown h2,
|
||||
.markdown h3,
|
||||
.markdown h4,
|
||||
.markdown h5,
|
||||
.markdown h6 {
|
||||
color: #404040;
|
||||
margin: 1.6em 0 0.6em 0;
|
||||
font-weight: 500;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.markdown h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
background: #e9e9e9;
|
||||
margin: 16px 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown>p,
|
||||
.markdown>blockquote,
|
||||
.markdown>.highlight,
|
||||
.markdown>ol,
|
||||
.markdown>ul {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.markdown ul>li {
|
||||
list-style: circle;
|
||||
}
|
||||
|
||||
.markdown>ul li,
|
||||
.markdown blockquote ul>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown>ul li p,
|
||||
.markdown>ol li p {
|
||||
margin: 0.6em 0;
|
||||
}
|
||||
|
||||
.markdown ol>li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.markdown>ol li,
|
||||
.markdown blockquote ol>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
margin: 0 3px;
|
||||
padding: 0 5px;
|
||||
background: #eee;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown strong,
|
||||
.markdown b {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
border: 1px solid #e9e9e9;
|
||||
width: 95%;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
white-space: nowrap;
|
||||
color: #333;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table th,
|
||||
.markdown>table td {
|
||||
border: 1px solid #e9e9e9;
|
||||
padding: 8px 16px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
font-size: 90%;
|
||||
color: #999;
|
||||
border-left: 4px solid #e9e9e9;
|
||||
padding-left: 0.8em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown .anchor {
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.markdown .waiting {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.markdown h1:hover .anchor,
|
||||
.markdown h2:hover .anchor,
|
||||
.markdown h3:hover .anchor,
|
||||
.markdown h4:hover .anchor,
|
||||
.markdown h5:hover .anchor,
|
||||
.markdown h6:hover .anchor {
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.markdown>br,
|
||||
.markdown>p>br {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
background: white;
|
||||
padding: 0.5em;
|
||||
color: #333333;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-meta {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-strong,
|
||||
.hljs-emphasis,
|
||||
.hljs-quote {
|
||||
color: #df5000;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-type {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.hljs-literal,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-attribute {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-name {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.hljs-tag {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.hljs-title,
|
||||
.hljs-attr,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.hljs-addition {
|
||||
color: #55a532;
|
||||
background-color: #eaffea;
|
||||
}
|
||||
|
||||
.hljs-deletion {
|
||||
color: #bd2c00;
|
||||
background-color: #ffecec;
|
||||
}
|
||||
|
||||
.hljs-link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 代码高亮 */
|
||||
/* PrismJS 1.15.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
background: none;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre)>code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre)>code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #9a6e3a;
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.class-name {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,243 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 3423846 */
|
||||
src: url('iconfont.woff2?t=1710142362036') format('woff2'),
|
||||
url('iconfont.woff?t=1710142362036') format('woff'),
|
||||
url('iconfont.ttf?t=1710142362036') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-Frame14:before {
|
||||
content: "\e63e";
|
||||
}
|
||||
|
||||
.icon-Frame13:before {
|
||||
content: "\e63d";
|
||||
}
|
||||
|
||||
.icon-Frame-113:before {
|
||||
content: "\e63a";
|
||||
}
|
||||
|
||||
.icon-Frame12:before {
|
||||
content: "\e63b";
|
||||
}
|
||||
|
||||
.icon-Frame-24:before {
|
||||
content: "\e63c";
|
||||
}
|
||||
|
||||
.icon-Frame10:before {
|
||||
content: "\e639";
|
||||
}
|
||||
|
||||
.icon-Frame9:before {
|
||||
content: "\e635";
|
||||
}
|
||||
|
||||
.icon-Frame-112:before {
|
||||
content: "\e636";
|
||||
}
|
||||
|
||||
.icon-Frame-33:before {
|
||||
content: "\e637";
|
||||
}
|
||||
|
||||
.icon-Frame-23:before {
|
||||
content: "\e638";
|
||||
}
|
||||
|
||||
.icon-Frame8:before {
|
||||
content: "\e634";
|
||||
}
|
||||
|
||||
.icon-Frame7:before {
|
||||
content: "\e632";
|
||||
}
|
||||
|
||||
.icon-Frame6:before {
|
||||
content: "\e631";
|
||||
}
|
||||
|
||||
.icon-yuejuanjilu:before {
|
||||
content: "\e630";
|
||||
}
|
||||
|
||||
.icon-Frame5:before {
|
||||
content: "\e62e";
|
||||
}
|
||||
|
||||
.icon-Frame11:before {
|
||||
content: "\e62f";
|
||||
}
|
||||
|
||||
.icon-a-1:before {
|
||||
content: "\e629";
|
||||
}
|
||||
|
||||
.icon-Frame4:before {
|
||||
content: "\e627";
|
||||
}
|
||||
|
||||
.icon-Frame-110:before {
|
||||
content: "\e628";
|
||||
}
|
||||
|
||||
.icon-Frame3:before {
|
||||
content: "\e625";
|
||||
}
|
||||
|
||||
.icon-Frame-19:before {
|
||||
content: "\e626";
|
||||
}
|
||||
|
||||
.icon-Frame2:before {
|
||||
content: "\e61b";
|
||||
}
|
||||
|
||||
.icon-Frame-18:before {
|
||||
content: "\e61c";
|
||||
}
|
||||
|
||||
.icon-Frame-22:before {
|
||||
content: "\e61d";
|
||||
}
|
||||
|
||||
.icon-Frame-32:before {
|
||||
content: "\e61e";
|
||||
}
|
||||
|
||||
.icon-Frame-42:before {
|
||||
content: "\e61f";
|
||||
}
|
||||
|
||||
.icon-Frame-51:before {
|
||||
content: "\e620";
|
||||
}
|
||||
|
||||
.icon-Frame-61:before {
|
||||
content: "\e621";
|
||||
}
|
||||
|
||||
.icon-Frame-71:before {
|
||||
content: "\e622";
|
||||
}
|
||||
|
||||
.icon-Frame-81:before {
|
||||
content: "\e623";
|
||||
}
|
||||
|
||||
.icon-Frame-91:before {
|
||||
content: "\e624";
|
||||
}
|
||||
|
||||
.icon-equal:before {
|
||||
content: "\e61a";
|
||||
}
|
||||
|
||||
.icon-warning:before {
|
||||
content: "\e601";
|
||||
}
|
||||
|
||||
.icon-error:before {
|
||||
content: "\e602";
|
||||
}
|
||||
|
||||
.icon-Frame-11:before {
|
||||
content: "\e608";
|
||||
}
|
||||
|
||||
.icon-Frame1:before {
|
||||
content: "\e609";
|
||||
}
|
||||
|
||||
.icon-Frame-21:before {
|
||||
content: "\e60a";
|
||||
}
|
||||
|
||||
.icon-Frame-31:before {
|
||||
content: "\e60b";
|
||||
}
|
||||
|
||||
.icon-Frame-41:before {
|
||||
content: "\e60c";
|
||||
}
|
||||
|
||||
.icon-Frame-9:before {
|
||||
content: "\e60d";
|
||||
}
|
||||
|
||||
.icon-Frame-8:before {
|
||||
content: "\e60e";
|
||||
}
|
||||
|
||||
.icon-Frame-13:before {
|
||||
content: "\e60f";
|
||||
}
|
||||
|
||||
.icon-Frame-12:before {
|
||||
content: "\e610";
|
||||
}
|
||||
|
||||
.icon-Frame-15:before {
|
||||
content: "\e611";
|
||||
}
|
||||
|
||||
.icon-Frame-17:before {
|
||||
content: "\e612";
|
||||
}
|
||||
|
||||
.icon-Frame-111:before {
|
||||
content: "\e613";
|
||||
}
|
||||
|
||||
.icon-Frame-16:before {
|
||||
content: "\e614";
|
||||
}
|
||||
|
||||
.icon-Frame-7:before {
|
||||
content: "\e615";
|
||||
}
|
||||
|
||||
.icon-Frame-14:before {
|
||||
content: "\e616";
|
||||
}
|
||||
|
||||
.icon-Frame-10:before {
|
||||
content: "\e617";
|
||||
}
|
||||
|
||||
.icon-Frame-5:before {
|
||||
content: "\e618";
|
||||
}
|
||||
|
||||
.icon-Frame-6:before {
|
||||
content: "\e619";
|
||||
}
|
||||
|
||||
.icon-Frame-2:before {
|
||||
content: "\e603";
|
||||
}
|
||||
|
||||
.icon-Frame-3:before {
|
||||
content: "\e604";
|
||||
}
|
||||
|
||||
.icon-Frame-1:before {
|
||||
content: "\e605";
|
||||
}
|
||||
|
||||
.icon-Frame:before {
|
||||
content: "\e606";
|
||||
}
|
||||
|
||||
.icon-Frame-4:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,408 @@
|
|||
{
|
||||
"id": "3423846",
|
||||
"name": "阅卷平台",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "39483566",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame14",
|
||||
"unicode": "e63e",
|
||||
"unicode_decimal": 58942
|
||||
},
|
||||
{
|
||||
"icon_id": "39175701",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame13",
|
||||
"unicode": "e63d",
|
||||
"unicode_decimal": 58941
|
||||
},
|
||||
{
|
||||
"icon_id": "39173378",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-113",
|
||||
"unicode": "e63a",
|
||||
"unicode_decimal": 58938
|
||||
},
|
||||
{
|
||||
"icon_id": "39173379",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame12",
|
||||
"unicode": "e63b",
|
||||
"unicode_decimal": 58939
|
||||
},
|
||||
{
|
||||
"icon_id": "39173377",
|
||||
"name": "Frame-2",
|
||||
"font_class": "Frame-24",
|
||||
"unicode": "e63c",
|
||||
"unicode_decimal": 58940
|
||||
},
|
||||
{
|
||||
"icon_id": "39036939",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame10",
|
||||
"unicode": "e639",
|
||||
"unicode_decimal": 58937
|
||||
},
|
||||
{
|
||||
"icon_id": "38951584",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame9",
|
||||
"unicode": "e635",
|
||||
"unicode_decimal": 58933
|
||||
},
|
||||
{
|
||||
"icon_id": "38951583",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-112",
|
||||
"unicode": "e636",
|
||||
"unicode_decimal": 58934
|
||||
},
|
||||
{
|
||||
"icon_id": "38951582",
|
||||
"name": "Frame-3",
|
||||
"font_class": "Frame-33",
|
||||
"unicode": "e637",
|
||||
"unicode_decimal": 58935
|
||||
},
|
||||
{
|
||||
"icon_id": "38951581",
|
||||
"name": "Frame-2",
|
||||
"font_class": "Frame-23",
|
||||
"unicode": "e638",
|
||||
"unicode_decimal": 58936
|
||||
},
|
||||
{
|
||||
"icon_id": "38561727",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame8",
|
||||
"unicode": "e634",
|
||||
"unicode_decimal": 58932
|
||||
},
|
||||
{
|
||||
"icon_id": "38318831",
|
||||
"name": "继续阅卷",
|
||||
"font_class": "Frame7",
|
||||
"unicode": "e632",
|
||||
"unicode_decimal": 58930
|
||||
},
|
||||
{
|
||||
"icon_id": "38307813",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame6",
|
||||
"unicode": "e631",
|
||||
"unicode_decimal": 58929
|
||||
},
|
||||
{
|
||||
"icon_id": "38304788",
|
||||
"name": "阅卷记录",
|
||||
"font_class": "yuejuanjilu",
|
||||
"unicode": "e630",
|
||||
"unicode_decimal": 58928
|
||||
},
|
||||
{
|
||||
"icon_id": "38108247",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame5",
|
||||
"unicode": "e62e",
|
||||
"unicode_decimal": 58926
|
||||
},
|
||||
{
|
||||
"icon_id": "38108264",
|
||||
"name": "Frame1",
|
||||
"font_class": "Frame11",
|
||||
"unicode": "e62f",
|
||||
"unicode_decimal": 58927
|
||||
},
|
||||
{
|
||||
"icon_id": "36030549",
|
||||
"name": "1",
|
||||
"font_class": "a-1",
|
||||
"unicode": "e629",
|
||||
"unicode_decimal": 58921
|
||||
},
|
||||
{
|
||||
"icon_id": "36025847",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame4",
|
||||
"unicode": "e627",
|
||||
"unicode_decimal": 58919
|
||||
},
|
||||
{
|
||||
"icon_id": "36025848",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-110",
|
||||
"unicode": "e628",
|
||||
"unicode_decimal": 58920
|
||||
},
|
||||
{
|
||||
"icon_id": "35726114",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame3",
|
||||
"unicode": "e625",
|
||||
"unicode_decimal": 58917
|
||||
},
|
||||
{
|
||||
"icon_id": "35726115",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-19",
|
||||
"unicode": "e626",
|
||||
"unicode_decimal": 58918
|
||||
},
|
||||
{
|
||||
"icon_id": "35408271",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame2",
|
||||
"unicode": "e61b",
|
||||
"unicode_decimal": 58907
|
||||
},
|
||||
{
|
||||
"icon_id": "35408272",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-18",
|
||||
"unicode": "e61c",
|
||||
"unicode_decimal": 58908
|
||||
},
|
||||
{
|
||||
"icon_id": "35408273",
|
||||
"name": "Frame-2",
|
||||
"font_class": "Frame-22",
|
||||
"unicode": "e61d",
|
||||
"unicode_decimal": 58909
|
||||
},
|
||||
{
|
||||
"icon_id": "35408283",
|
||||
"name": "Frame-3",
|
||||
"font_class": "Frame-32",
|
||||
"unicode": "e61e",
|
||||
"unicode_decimal": 58910
|
||||
},
|
||||
{
|
||||
"icon_id": "35408284",
|
||||
"name": "Frame-4",
|
||||
"font_class": "Frame-42",
|
||||
"unicode": "e61f",
|
||||
"unicode_decimal": 58911
|
||||
},
|
||||
{
|
||||
"icon_id": "35408288",
|
||||
"name": "Frame-5",
|
||||
"font_class": "Frame-51",
|
||||
"unicode": "e620",
|
||||
"unicode_decimal": 58912
|
||||
},
|
||||
{
|
||||
"icon_id": "35408289",
|
||||
"name": "Frame-6",
|
||||
"font_class": "Frame-61",
|
||||
"unicode": "e621",
|
||||
"unicode_decimal": 58913
|
||||
},
|
||||
{
|
||||
"icon_id": "35408298",
|
||||
"name": "Frame-7",
|
||||
"font_class": "Frame-71",
|
||||
"unicode": "e622",
|
||||
"unicode_decimal": 58914
|
||||
},
|
||||
{
|
||||
"icon_id": "35408300",
|
||||
"name": "Frame-8",
|
||||
"font_class": "Frame-81",
|
||||
"unicode": "e623",
|
||||
"unicode_decimal": 58915
|
||||
},
|
||||
{
|
||||
"icon_id": "35408317",
|
||||
"name": "Frame-9",
|
||||
"font_class": "Frame-91",
|
||||
"unicode": "e624",
|
||||
"unicode_decimal": 58916
|
||||
},
|
||||
{
|
||||
"icon_id": "30190804",
|
||||
"name": "equal",
|
||||
"font_class": "equal",
|
||||
"unicode": "e61a",
|
||||
"unicode_decimal": 58906
|
||||
},
|
||||
{
|
||||
"icon_id": "30183282",
|
||||
"name": "warning",
|
||||
"font_class": "warning",
|
||||
"unicode": "e601",
|
||||
"unicode_decimal": 58881
|
||||
},
|
||||
{
|
||||
"icon_id": "30183283",
|
||||
"name": "error",
|
||||
"font_class": "error",
|
||||
"unicode": "e602",
|
||||
"unicode_decimal": 58882
|
||||
},
|
||||
{
|
||||
"icon_id": "29930405",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-11",
|
||||
"unicode": "e608",
|
||||
"unicode_decimal": 58888
|
||||
},
|
||||
{
|
||||
"icon_id": "29930406",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame1",
|
||||
"unicode": "e609",
|
||||
"unicode_decimal": 58889
|
||||
},
|
||||
{
|
||||
"icon_id": "29930407",
|
||||
"name": "Frame-2",
|
||||
"font_class": "Frame-21",
|
||||
"unicode": "e60a",
|
||||
"unicode_decimal": 58890
|
||||
},
|
||||
{
|
||||
"icon_id": "29930408",
|
||||
"name": "Frame-3",
|
||||
"font_class": "Frame-31",
|
||||
"unicode": "e60b",
|
||||
"unicode_decimal": 58891
|
||||
},
|
||||
{
|
||||
"icon_id": "29930409",
|
||||
"name": "Frame-4",
|
||||
"font_class": "Frame-41",
|
||||
"unicode": "e60c",
|
||||
"unicode_decimal": 58892
|
||||
},
|
||||
{
|
||||
"icon_id": "29930410",
|
||||
"name": "Frame-9",
|
||||
"font_class": "Frame-9",
|
||||
"unicode": "e60d",
|
||||
"unicode_decimal": 58893
|
||||
},
|
||||
{
|
||||
"icon_id": "29930411",
|
||||
"name": "Frame-8",
|
||||
"font_class": "Frame-8",
|
||||
"unicode": "e60e",
|
||||
"unicode_decimal": 58894
|
||||
},
|
||||
{
|
||||
"icon_id": "29930412",
|
||||
"name": "Frame-13",
|
||||
"font_class": "Frame-13",
|
||||
"unicode": "e60f",
|
||||
"unicode_decimal": 58895
|
||||
},
|
||||
{
|
||||
"icon_id": "29930413",
|
||||
"name": "Frame-12",
|
||||
"font_class": "Frame-12",
|
||||
"unicode": "e610",
|
||||
"unicode_decimal": 58896
|
||||
},
|
||||
{
|
||||
"icon_id": "29930414",
|
||||
"name": "Frame-15",
|
||||
"font_class": "Frame-15",
|
||||
"unicode": "e611",
|
||||
"unicode_decimal": 58897
|
||||
},
|
||||
{
|
||||
"icon_id": "29930415",
|
||||
"name": "Frame-17",
|
||||
"font_class": "Frame-17",
|
||||
"unicode": "e612",
|
||||
"unicode_decimal": 58898
|
||||
},
|
||||
{
|
||||
"icon_id": "29930416",
|
||||
"name": "Frame-11",
|
||||
"font_class": "Frame-111",
|
||||
"unicode": "e613",
|
||||
"unicode_decimal": 58899
|
||||
},
|
||||
{
|
||||
"icon_id": "29930417",
|
||||
"name": "Frame-16",
|
||||
"font_class": "Frame-16",
|
||||
"unicode": "e614",
|
||||
"unicode_decimal": 58900
|
||||
},
|
||||
{
|
||||
"icon_id": "29930418",
|
||||
"name": "Frame-7",
|
||||
"font_class": "Frame-7",
|
||||
"unicode": "e615",
|
||||
"unicode_decimal": 58901
|
||||
},
|
||||
{
|
||||
"icon_id": "29930419",
|
||||
"name": "Frame-14",
|
||||
"font_class": "Frame-14",
|
||||
"unicode": "e616",
|
||||
"unicode_decimal": 58902
|
||||
},
|
||||
{
|
||||
"icon_id": "29930420",
|
||||
"name": "Frame-10",
|
||||
"font_class": "Frame-10",
|
||||
"unicode": "e617",
|
||||
"unicode_decimal": 58903
|
||||
},
|
||||
{
|
||||
"icon_id": "29930421",
|
||||
"name": "Frame-5",
|
||||
"font_class": "Frame-5",
|
||||
"unicode": "e618",
|
||||
"unicode_decimal": 58904
|
||||
},
|
||||
{
|
||||
"icon_id": "29930422",
|
||||
"name": "Frame-6",
|
||||
"font_class": "Frame-6",
|
||||
"unicode": "e619",
|
||||
"unicode_decimal": 58905
|
||||
},
|
||||
{
|
||||
"icon_id": "29929656",
|
||||
"name": "Frame-2",
|
||||
"font_class": "Frame-2",
|
||||
"unicode": "e603",
|
||||
"unicode_decimal": 58883
|
||||
},
|
||||
{
|
||||
"icon_id": "29929657",
|
||||
"name": "Frame-3",
|
||||
"font_class": "Frame-3",
|
||||
"unicode": "e604",
|
||||
"unicode_decimal": 58884
|
||||
},
|
||||
{
|
||||
"icon_id": "29929658",
|
||||
"name": "Frame-1",
|
||||
"font_class": "Frame-1",
|
||||
"unicode": "e605",
|
||||
"unicode_decimal": 58885
|
||||
},
|
||||
{
|
||||
"icon_id": "29929659",
|
||||
"name": "Frame",
|
||||
"font_class": "Frame",
|
||||
"unicode": "e606",
|
||||
"unicode_decimal": 58886
|
||||
},
|
||||
{
|
||||
"icon_id": "29929660",
|
||||
"name": "Frame-4",
|
||||
"font_class": "Frame-4",
|
||||
"unicode": "e607",
|
||||
"unicode_decimal": 58887
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:dio/dio.dart' hide Headers;
|
||||
import 'package:retrofit/retrofit.dart';
|
||||
import 'package:school_asignment_app/common/job/enum_subject.dart';
|
||||
import 'package:school_asignment_app/common/job/user_info_detail.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student_params.dart';
|
||||
|
|
@ -19,4 +20,7 @@ abstract class RetrofitClient {
|
|||
|
||||
@GET("/api/hms/Homework/GetList")
|
||||
Future<WorkStudent> getWorkList(@Queries() WorkStudentParams params);
|
||||
|
||||
@GET("/api/app/Common/GetEnumInfos")
|
||||
Future<Map<String,List<EnumSubject>>> getEnumSubjectList(@Query('enumNames') String enumNames);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'enum_subject.g.dart';
|
||||
|
||||
|
||||
@JsonSerializable()
|
||||
class EnumSubject extends Object {
|
||||
|
||||
@JsonKey(name: 'id')
|
||||
int id;
|
||||
|
||||
@JsonKey(name: 'name')
|
||||
String name;
|
||||
|
||||
EnumSubject(this.id,this.name,);
|
||||
|
||||
factory EnumSubject.fromJson(Map<String, dynamic> srcJson) => _$EnumSubjectFromJson(srcJson);
|
||||
|
||||
Map<String, dynamic> toJson() => _$EnumSubjectToJson(this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ class Items extends Object {
|
|||
int collectRate;
|
||||
|
||||
@JsonKey(name: 'annotateRate')
|
||||
int annotateRate;
|
||||
double annotateRate;
|
||||
|
||||
@JsonKey(name: 'classes')
|
||||
List<Classes> classes;
|
||||
|
|
@ -60,7 +60,11 @@ class Items extends Object {
|
|||
@JsonKey(name: 'creationTime')
|
||||
String creationTime;
|
||||
|
||||
Items(this.id,this.assessType,this.name,this.grade,this.subject,this.publishTime,this.state,this.collectRate,this.annotateRate,this.classes,this.creatorName,this.creationTime,);
|
||||
@JsonKey(name: 'classCount')
|
||||
int? classCount;
|
||||
|
||||
|
||||
Items(this.id,this.assessType,this.name,this.grade,this.subject,this.publishTime,this.state,this.collectRate,this.annotateRate,this.classes,this.creatorName,this.creationTime,this.classCount);
|
||||
|
||||
factory Items.fromJson(Map<String, dynamic> srcJson) => _$ItemsFromJson(srcJson);
|
||||
|
||||
|
|
@ -85,7 +89,7 @@ class Classes extends Object {
|
|||
String className;
|
||||
|
||||
@JsonKey(name: 'finishTime')
|
||||
String finishTime;
|
||||
String? finishTime;
|
||||
|
||||
Classes(this.schoolId,this.schoolName,this.classId,this.className,this.finishTime,);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ class RequestTool {
|
|||
|
||||
return RetrofitClient(dio, baseUrl: RequestConfig().baseUrl);
|
||||
}
|
||||
|
||||
final RetrofitClient _client;
|
||||
static RequestTool? _instance;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
import 'package:get/get.dart';
|
||||
import 'package:school_asignment_app/common/job/enum_subject.dart';
|
||||
import 'package:school_asignment_app/common/job/user_info.dart';
|
||||
import 'package:school_asignment_app/common/job/user_info_detail.dart';
|
||||
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
|
||||
import 'package:school_asignment_app/common/utils/storage.dart';
|
||||
import 'package:school_asignment_app/common/store/app_storage_key.dart';
|
||||
import 'package:school_asignment_app/routes/app_pages.dart';
|
||||
|
||||
class UserStore extends GetxController {
|
||||
class UserStore extends GetxController with RequestToolMixin{
|
||||
static UserStore get to => Get.find();
|
||||
|
||||
/// 是否登录
|
||||
|
|
@ -18,6 +20,8 @@ class UserStore extends GetxController {
|
|||
/// 用户详细信息
|
||||
Rx<UserInfoDetail?> userDetailInfo = Rx(null);
|
||||
|
||||
RxList<EnumSubject> subjectList = RxList();
|
||||
|
||||
UserStore init() {
|
||||
token = StorageService.to.read(AppStorageKey.token.value);
|
||||
xToken = StorageService.to.read(AppStorageKey.xToken.value);
|
||||
|
|
@ -65,4 +69,10 @@ class UserStore extends GetxController {
|
|||
token = null;
|
||||
xToken = null;
|
||||
}
|
||||
|
||||
//获取科目
|
||||
getSubjectList() async {
|
||||
var res = await getClient().getEnumSubjectList('EnumSubject');
|
||||
subjectList.value = res['EnumSubject']!;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class Utils{
|
||||
|
|
@ -14,4 +15,25 @@ class Utils{
|
|||
FocusManager.instance.primaryFocus?.unfocus();
|
||||
}
|
||||
}
|
||||
|
||||
// 是否是平板
|
||||
static bool isPad([double mobilePhoneScale = 1.2]) {
|
||||
return ScreenUtil().scaleWidth > mobilePhoneScale;
|
||||
}
|
||||
|
||||
static String getDoubleRemoveZero(double? val, [String? defaultVal]) {
|
||||
try {
|
||||
if (val == null) throw Exception('数据为空');
|
||||
List<String> _valArr = val.toString().split('.');
|
||||
if (_valArr.length >= 2) {
|
||||
if (int.parse(_valArr[1]) == 0) {
|
||||
return val.toInt().toString();
|
||||
}
|
||||
return val.toString();
|
||||
}
|
||||
return val.toInt().toString();
|
||||
} catch (e) {
|
||||
return defaultVal ?? '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -38,6 +38,7 @@ class MyApp extends StatelessWidget {
|
|||
theme: ThemeData(
|
||||
brightness: Brightness.light,
|
||||
primarySwatch: createMaterialColor(const Color.fromRGBO(46, 91, 255, 1)),
|
||||
primaryColor: const Color.fromRGBO(46, 91, 255, 1),
|
||||
// textTheme: Typography.englishLike2018.apply(fontSizeFactor: 1.sp,),
|
||||
primaryTextTheme: TextTheme(
|
||||
bodyLarge: TextStyle(fontSize: 14.sp, color: Colors.black87),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* @Descripttion:
|
||||
* @version:
|
||||
* @Author: wy
|
||||
* @Date: 2020-07-01 15:45:15
|
||||
* @LastEditors: wangyang 1147192855@qq.com
|
||||
* @LastEditTime: 2022-07-19 11:14:07
|
||||
*/
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
class MyEmptyWidget extends StatelessWidget {
|
||||
static const String defText = "抱歉,暂无内容";
|
||||
static const String defimg = "assets/images/not_data_bgm2.png";
|
||||
final String? textVal;
|
||||
final String? imgAssetPath;
|
||||
final AlignmentGeometry alignment;
|
||||
final EdgeInsets? padding;
|
||||
final double? imgWidth;
|
||||
final double? imgHeight;
|
||||
const MyEmptyWidget(
|
||||
{this.imgWidth,
|
||||
this.imgHeight,
|
||||
this.textVal,
|
||||
this.padding,
|
||||
this.imgAssetPath,
|
||||
this.alignment = Alignment.center,
|
||||
Key? key})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
padding: padding ?? EdgeInsets.only(bottom: 40.r),
|
||||
alignment: alignment,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
Opacity(
|
||||
opacity: 0.6,
|
||||
child: Image.asset(
|
||||
imgAssetPath ?? defimg,
|
||||
fit: BoxFit.cover,
|
||||
width: imgWidth ?? 150.w,
|
||||
height: imgHeight ?? 150.w,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 5.h),
|
||||
child: Text(
|
||||
textVal ?? defText,
|
||||
style: TextStyle(fontSize: 12.sp, color: const Color(0xB2898B8D)),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +1,142 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyrefresh/easy_refresh.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get_storage/get_storage.dart';
|
||||
import 'package:school_asignment_app/common/job/enum_subject.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student_params.dart';
|
||||
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
|
||||
import 'package:school_asignment_app/common/store/user_store.dart';
|
||||
import 'package:school_asignment_app/common/utils/toast_utils.dart';
|
||||
import 'package:school_asignment_app/page/global_widget/my_text.dart';
|
||||
|
||||
import 'home_state.dart';
|
||||
|
||||
class HomeLogic extends GetxController with RequestToolMixin,GetTickerProviderStateMixin{
|
||||
final HomeState state = HomeState();
|
||||
late TabController tabController;
|
||||
/* 待阅卷 */
|
||||
late final EasyRefreshController refreshController1;
|
||||
late final EasyRefreshController refreshController2;
|
||||
|
||||
@override
|
||||
void onInit(){
|
||||
super.onInit();
|
||||
state.userInfo = UserStore.to.userInfo;
|
||||
state.active = Get.arguments ?? 1;
|
||||
refreshController1 = EasyRefreshController();
|
||||
refreshController2 = EasyRefreshController();
|
||||
tabController = TabController(
|
||||
length: 2,
|
||||
vsync: this,
|
||||
);
|
||||
print('state.active=${state.active}');
|
||||
getList();
|
||||
}
|
||||
void getList() async{
|
||||
WorkStudentParams params = WorkStudentParams(assessType: 0,);
|
||||
WorkStudentParams params = WorkStudentParams(assessType: state.tabIndex.value,);
|
||||
WorkStudent data = await getClient().getWorkList(params);
|
||||
state.workList.value = data.items;
|
||||
refreshController1.finishRefresh();
|
||||
refreshController2.finishRefresh();
|
||||
print('state.workList.length=');
|
||||
print(state.workList.length);
|
||||
}
|
||||
/// 刷新方法
|
||||
Future<void> onMyRefresh(EasyRefreshController controller, int tab) async {
|
||||
/* params.page = RequestConfig.basePage.page;
|
||||
List<JobTaskItem> lists = await getData(controller, params, isReFresh: true);
|
||||
try {
|
||||
tab == 1 ? (markingDatas1 = lists) : (markingDatas2 = lists);
|
||||
} catch (e) {}
|
||||
toUpState(setState, () {}, mounted);*/
|
||||
getList();
|
||||
|
||||
}
|
||||
|
||||
/// 加载方法
|
||||
Future<void> onMyLoad(EasyRefreshController controller, int tab) async {
|
||||
/*params.page++;
|
||||
List<JobTaskItem> lists = await getData(controller, params);
|
||||
if (lists.isNotEmpty) {
|
||||
tab == 1 ? markingDatas1.addAll(lists) : markingDatas2.addAll(lists);
|
||||
toUpState(setState, () {}, mounted);
|
||||
}*/
|
||||
}
|
||||
String formatSubject(int id){
|
||||
if(UserStore.to.subjectList.isEmpty){
|
||||
return '';
|
||||
}
|
||||
EnumSubject item = UserStore.to.subjectList.firstWhere((element) => element.id == id);
|
||||
return item.name??'';
|
||||
}
|
||||
|
||||
/* Future<void> showStudents(
|
||||
BuildContext context, [
|
||||
bool? submitted = false,
|
||||
String? className,
|
||||
]) async {
|
||||
ToastUtils.showLoading();
|
||||
List<JobConcernedWithStudent> students = [];
|
||||
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
elevation: 10,
|
||||
backgroundColor: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(20.r),
|
||||
topRight: Radius.circular(20.r),
|
||||
),
|
||||
),
|
||||
builder: (BuildContext context) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 2.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(top: 14.h),
|
||||
child: quickText(
|
||||
'${className ?? ''}${submitted! ? '已提交' : '未提交'}作业学生',
|
||||
size: 18.sp,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Color.fromRGBO(60, 60, 60, 1),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 4.w),
|
||||
children: [
|
||||
Wrap(
|
||||
spacing: 6.0, // 主轴(水平)方向间距
|
||||
runSpacing: 4.0, // 纵轴(垂直)方向间距
|
||||
alignment: WrapAlignment.spaceAround, //沿主轴方向居中
|
||||
children: students.map((e) {
|
||||
return Chip(
|
||||
backgroundColor: Color.fromRGBO(239, 242, 255, 1),
|
||||
avatar: CircleAvatar(
|
||||
backgroundColor: Colors.white,
|
||||
child: quickText(e.studentName.substring(0, 1),
|
||||
size: 12.sp, color: Theme.of(context).primaryColor),
|
||||
),
|
||||
label: quickText(e.studentName, color: Color.fromRGBO(80, 94, 110, 1), size: 12.sp),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}*/
|
||||
|
||||
@override
|
||||
void dispose(){
|
||||
super.dispose();
|
||||
tabController.dispose();
|
||||
refreshController1.dispose();
|
||||
refreshController2.dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:school_asignment_app/common/job/enum_subject.dart';
|
||||
import 'package:school_asignment_app/common/job/user_info.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student.dart';
|
||||
import 'package:school_asignment_app/common/store/user_store.dart';
|
||||
|
||||
class HomeState {
|
||||
HomeState() {
|
||||
|
|
@ -9,7 +12,7 @@ class HomeState {
|
|||
|
||||
late Rx<UserInfo?> userInfo;
|
||||
int active = 1;
|
||||
late RxList workList = RxList();
|
||||
late RxList<Items> workList = RxList();
|
||||
late RxInt tabIndex = 0.obs;
|
||||
late bool completedToRefresh = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,18 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_easyrefresh/easy_refresh.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get_storage/get_storage.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student.dart';
|
||||
import 'package:school_asignment_app/common/store/app_storage_key.dart';
|
||||
import 'package:school_asignment_app/common/utils/storage.dart';
|
||||
import 'package:school_asignment_app/common/utils/utils.dart';
|
||||
import 'package:school_asignment_app/page/global_widget/MyEmptyWidget.dart';
|
||||
import 'package:school_asignment_app/page/global_widget/global_scaffold.dart';
|
||||
import 'package:school_asignment_app/page/global_widget/my_text.dart';
|
||||
import 'package:school_asignment_app/page/home_page/widget/task_list_item.dart';
|
||||
import 'package:school_asignment_app/page/home_page/widget/top_user_info.dart';
|
||||
import 'package:school_asignment_app/routes/app_pages.dart';
|
||||
|
||||
|
|
@ -54,7 +60,7 @@ class _HomePageState extends State<HomePage> {
|
|||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(flex: 1, child: SizedBox()),
|
||||
const Expanded(flex: 1, child: SizedBox()),
|
||||
Expanded(
|
||||
flex: 4,
|
||||
child: Container(
|
||||
|
|
@ -88,6 +94,7 @@ class _HomePageState extends State<HomePage> {
|
|||
// _refreshController2.callRefresh();
|
||||
state.completedToRefresh = false;
|
||||
}
|
||||
logic.getList();
|
||||
},
|
||||
tabs: <Widget>[
|
||||
Tab(
|
||||
|
|
@ -167,8 +174,9 @@ class _HomePageState extends State<HomePage> {
|
|||
transition: getTransition());*/
|
||||
},
|
||||
child: Icon(
|
||||
IconData(0xe63e, fontFamily: "AlibabaIcon"),
|
||||
color: Color.fromRGBO(44, 48, 63, 1),
|
||||
const IconData(
|
||||
0xe63e, fontFamily: "AlibabaIcon"),
|
||||
color: const Color.fromRGBO(44, 48, 63, 1),
|
||||
size: 24.sp),
|
||||
),
|
||||
),
|
||||
|
|
@ -202,31 +210,32 @@ class _HomePageState extends State<HomePage> {
|
|||
_refreshController2.callRefresh();
|
||||
},
|
||||
),*/
|
||||
/* Expanded(
|
||||
child: Obx(() {
|
||||
return IndexedStack(
|
||||
Expanded(
|
||||
child: IndexedStack(
|
||||
index: state.tabIndex.value,
|
||||
children: <Widget>[
|
||||
$EasyRefresh(
|
||||
controller: _refreshController1,
|
||||
params: params1,
|
||||
$easyRefresh(
|
||||
controller: logic.refreshController1,
|
||||
tab: 1,
|
||||
data: markingDatas1,
|
||||
onLoad: onMyLoad,
|
||||
onRefresh: onMyRefresh,
|
||||
type: state.active,
|
||||
data: state.workList,
|
||||
onLoad: logic.onMyLoad,
|
||||
onRefresh: logic.onMyRefresh,
|
||||
logic: logic
|
||||
),
|
||||
$EasyRefresh(
|
||||
controller: _refreshController2,
|
||||
params: params2,
|
||||
$easyRefresh(
|
||||
controller: logic.refreshController2,
|
||||
tab: 2,
|
||||
data: markingDatas2,
|
||||
onLoad: onMyLoad,
|
||||
onRefresh: onMyRefresh,
|
||||
type: state.active,
|
||||
data: state.workList,
|
||||
onLoad: logic.onMyLoad,
|
||||
onRefresh: logic.onMyRefresh,
|
||||
logic: logic
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
),*/
|
||||
)
|
||||
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
|
|
@ -241,4 +250,215 @@ class _HomePageState extends State<HomePage> {
|
|||
Get.delete<HomeLogic>();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// 已阅卷
|
||||
/// OnRefreshCallback? onRefresh
|
||||
///
|
||||
@swidget
|
||||
Widget $easyRefresh({
|
||||
required EasyRefreshController controller,
|
||||
required Future<
|
||||
void> Function(EasyRefreshController controller, int tab) onRefresh,
|
||||
required Future<
|
||||
void> Function(EasyRefreshController controller, int tab) onLoad,
|
||||
required List<Items> data,
|
||||
required int tab,
|
||||
required int type,
|
||||
required HomeLogic logic,
|
||||
}) {
|
||||
bool completed = tab == 2; // 是否是待批阅
|
||||
bool isPadFlag = Utils.isPad();
|
||||
return Obx(() {
|
||||
return EasyRefresh(
|
||||
firstRefresh: false,
|
||||
taskIndependence: true,
|
||||
/*enableControlFinishLoad: true,
|
||||
enableControlFinishRefresh: true,*/
|
||||
emptyWidget: data.isEmpty ? const MyEmptyWidget() : null,
|
||||
controller: controller,
|
||||
header: MaterialHeader(),
|
||||
footer: TaurusFooter(),
|
||||
child: completed && isPadFlag
|
||||
? GridView(
|
||||
padding: EdgeInsets.only(
|
||||
top: 11.h, bottom: 10.h, left: 12.w, right: 12.w),
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 2, //横轴三个子widget
|
||||
mainAxisSpacing: 10.h,
|
||||
crossAxisSpacing: 6.w,
|
||||
childAspectRatio: 1.81 //宽高比为1时,子widget
|
||||
),
|
||||
children: List.generate(data.length, (index) {
|
||||
Items item = data[index];
|
||||
String subjectName = logic.formatSubject(item.subject);
|
||||
return $reviewedItem(jobTaskItem: item,type: type,subjectName:subjectName);
|
||||
}),
|
||||
)
|
||||
: ListView.builder(
|
||||
padding: EdgeInsets.only(top: 11.h, bottom: 10.h, left: 12.w, right: 12.w),
|
||||
itemBuilder: (context, index) {
|
||||
Items item = data[index];
|
||||
return TaskListItem(completed:completed,jobTaskItem:item,type:type,logic: logic,);
|
||||
/*HomeworkTasksViewItem(
|
||||
completed: completed,
|
||||
jobTaskItem: data[index],
|
||||
call: () => controller.callRefresh(),
|
||||
);*/
|
||||
},
|
||||
itemCount: data.length,
|
||||
),
|
||||
onRefresh: () => onRefresh(controller, tab),
|
||||
onLoad: () => onLoad(controller, tab),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@swidget
|
||||
Widget $reviewedItem({ required Items jobTaskItem, required int type,required String subjectName}) {
|
||||
EdgeInsets padEdg = EdgeInsets.symmetric(horizontal: 10.w);
|
||||
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
/* String url =
|
||||
'${RouterManager.jobListParticipateInClassPath}?&jobId=${jobTaskItem.id}&genderName=${Uri.encodeComponent(jobTaskItem.genderName)}&jobName=${Uri.encodeComponent(jobTaskItem.title)}&completed=${true}';
|
||||
RouterManager.router.navigateTo(context, url, transition: getTransition());*/
|
||||
},
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: 10.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(6.r),
|
||||
color: Colors.white,
|
||||
boxShadow: const [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(210, 216, 241, 1),
|
||||
offset: Offset.zero, //阴影y轴偏移量
|
||||
blurRadius: 5.8, //阴影模糊程度
|
||||
spreadRadius: 0, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
// 顶部任务名称
|
||||
Padding(
|
||||
padding: padEdg,
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: 32.w,
|
||||
height: 18.h,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.only(left: 2.w),
|
||||
decoration: BoxDecoration(
|
||||
color: type == 1
|
||||
? const Color.fromRGBO(104, 136, 253, 1)
|
||||
: const Color.fromRGBO(255, 175, 56, 1),
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(14.r),
|
||||
topRight: Radius.circular(3.r),
|
||||
bottomLeft: Radius.circular(4.r),
|
||||
bottomRight: Radius.circular(4.r),
|
||||
),
|
||||
),
|
||||
margin: EdgeInsets.only(right: 4.w),
|
||||
child: quickText(type == 1 ? '作业' : '考试', color: Colors.white,
|
||||
size: 10.sp),
|
||||
),
|
||||
Expanded(
|
||||
child: quickText(jobTaskItem.name, size: 14.sp,
|
||||
color: const Color.fromRGBO(70, 70, 70, 1),
|
||||
maxLines: 2),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Padding(
|
||||
padding: padEdg,
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
quickText(
|
||||
jobTaskItem.publishTime.substring(0, 10),
|
||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||
size: 10.sp,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
quickText(' / ', color: const Color.fromRGBO(76, 199, 147, 1),
|
||||
size: 10.sp,
|
||||
fontWeight: FontWeight.w500),
|
||||
quickText(
|
||||
'参与班级:',
|
||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
||||
size: 9.sp,
|
||||
),
|
||||
quickText(
|
||||
'${jobTaskItem.classCount}',
|
||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
||||
size: 10.sp,
|
||||
),
|
||||
quickText(' / ', color: const Color.fromRGBO(116, 145, 253, 1),
|
||||
size: 10.sp,
|
||||
fontWeight: FontWeight.w500),
|
||||
quickText(
|
||||
'科目:$subjectName',
|
||||
color: const Color.fromRGBO(116, 145, 253, 1),
|
||||
size: 9.sp,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
/*Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.w),
|
||||
child: FavoriteButton(
|
||||
jobTaskItem.id,
|
||||
jobTaskItem.title,
|
||||
margin: EdgeInsets.only(top: 4.h, bottom: 6.h),
|
||||
),
|
||||
),*/
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
/* RouterManager.router.navigateTo(
|
||||
context,
|
||||
RouterManager.jobReportPagePath +
|
||||
'?title=${Uri.encodeComponent(jobTaskItem.title)}&id=${jobTaskItem.id}',
|
||||
transition: getTransition(),
|
||||
);*/
|
||||
},
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 6.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(6.r),
|
||||
bottomRight: Radius.circular(6.r)),
|
||||
color: Colors.white,
|
||||
boxShadow: const [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(0, 0, 0, 0.15),
|
||||
offset: Offset(0, -0.0001), //阴影y轴偏移量
|
||||
blurRadius: 4, //阴影模糊程度
|
||||
spreadRadius: 0, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Row(children: [
|
||||
Expanded(
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
child: quickText(
|
||||
'查看报告', color: const Color.fromRGBO(118, 118, 118, 1),
|
||||
size: 11.sp),
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
@ -0,0 +1,301 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:percent_indicator/percent_indicator.dart';
|
||||
import 'package:school_asignment_app/common/job/work_student.dart';
|
||||
import 'package:school_asignment_app/page/global_widget/my_text.dart';
|
||||
import 'package:school_asignment_app/page/home_page/home_logic.dart';
|
||||
import 'package:school_asignment_app/common/utils/utils.dart';
|
||||
|
||||
class TaskListItem extends StatefulWidget {
|
||||
final bool completed;
|
||||
final Items jobTaskItem;
|
||||
final int type;
|
||||
final HomeLogic logic;
|
||||
|
||||
const TaskListItem({Key? key,required this.completed,required this.jobTaskItem,required this.type,required this.logic}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<TaskListItem> createState() => _TaskListItemState();
|
||||
}
|
||||
|
||||
class _TaskListItemState extends State<TaskListItem> {
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return widget.completed
|
||||
? InkWell(
|
||||
onTap: () {
|
||||
/*String url =
|
||||
'${RouterManager.jobListParticipateInClassPath}?&jobId=${jobTaskItem.id}&genderName=${Uri.encodeComponent(jobTaskItem.genderName)}&jobName=${Uri.encodeComponent(jobTaskItem.title)}&completed=${true}';
|
||||
RouterManager.router.navigateTo(context, url, transition: getTransition());*/
|
||||
},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(top: 20.h),
|
||||
margin: EdgeInsets.only(bottom: 12.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(6.r),
|
||||
color: const Color.fromRGBO(255, 255, 255, 1),
|
||||
boxShadow: const [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(210, 216, 241, 1),
|
||||
offset: Offset.zero, //阴影y轴偏移量
|
||||
blurRadius: 5.8, //阴影模糊程度
|
||||
spreadRadius: 0, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
// 顶部任务名称
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.w),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: Utils.isPad() ? 32.w : 36.w,
|
||||
height: 18.h,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
||||
decoration: BoxDecoration(
|
||||
color: const Color.fromRGBO(104, 136, 253, 1),
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(14.r),
|
||||
topRight: Radius.circular(3.r),
|
||||
bottomLeft: Radius.circular(4.r),
|
||||
bottomRight: Radius.circular(4.r),
|
||||
),
|
||||
),
|
||||
margin: EdgeInsets.only(right: 4.w),
|
||||
child: quickText('作业', color: Colors.white, size: 10.sp),
|
||||
),
|
||||
Expanded(
|
||||
child: quickText(
|
||||
widget.jobTaskItem.name,
|
||||
maxLines: 2,
|
||||
size: 16.sp,
|
||||
color: const Color.fromRGBO(70, 70, 70, 1),
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(height: 12.h),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.w),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
quickText(
|
||||
widget.jobTaskItem.publishTime.substring(0, 10),
|
||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||
size: 12.sp,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
quickText(' / ', color: const Color.fromRGBO(76, 199, 147, 1), size: 12.sp, fontWeight: FontWeight.w500),
|
||||
quickText(
|
||||
'参与班级:${widget.jobTaskItem.classCount}',
|
||||
color: const Color.fromRGBO(76, 199, 147, 1),
|
||||
size: 12.sp,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
quickText(' / ', color: const Color.fromRGBO(116, 145, 253, 1), size: 12.sp, fontWeight: FontWeight.w500),
|
||||
quickText(
|
||||
'科目:${widget.logic.formatSubject(widget.jobTaskItem.subject)}' ,
|
||||
color: const Color.fromRGBO(116, 145, 253, 1),
|
||||
size: 12.sp,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
const Expanded(child: SizedBox()),
|
||||
/* FavoriteButton(
|
||||
jobTaskItem.id,
|
||||
jobTaskItem.title,
|
||||
margin: EdgeInsets.zero,
|
||||
isRow: false,
|
||||
),*/
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(height: 20.h),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 10.h),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(6.r), bottomRight: Radius.circular(6.r)),
|
||||
color: Colors.white,
|
||||
boxShadow: const [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(0, 0, 0, 0.15),
|
||||
offset: Offset(0, -0.0001), //阴影y轴偏移量
|
||||
blurRadius: 4, //阴影模糊程度
|
||||
spreadRadius: 0, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Row(children: [
|
||||
Expanded(
|
||||
child: InkWell(
|
||||
onTap: (){},
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
child: quickText('查看报告', color: const Color.fromRGBO(118, 118, 118, 1), size: 13.sp),
|
||||
),
|
||||
)),
|
||||
]),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
:
|
||||
InkWell(
|
||||
onTap: () {
|
||||
/*String url =
|
||||
'${RouterManager.jobListParticipateInClassPath}?&jobId=${jobTaskItem.id}&genderName=${Uri.encodeComponent(jobTaskItem.genderName)}&jobName=${Uri.encodeComponent(jobTaskItem.title)}';
|
||||
RouterManager.router.navigateTo(context, url, transition: getTransition()).then((value) {
|
||||
if (value != null && value == true) call();
|
||||
});*/
|
||||
},
|
||||
child: Stack(
|
||||
alignment: const FractionalOffset(0.95, 0),
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(bottom: 16.h),
|
||||
child: Column(
|
||||
children: [
|
||||
SizedBox(height: 30.h),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 10.w),
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(6.r),
|
||||
color: const Color.fromRGBO(255, 255, 255, 1),
|
||||
boxShadow: const [
|
||||
BoxShadow(
|
||||
color: Color.fromRGBO(210, 216, 241, 1),
|
||||
offset: Offset.zero, //阴影y轴偏移量
|
||||
blurRadius: 5.8, //阴影模糊程度
|
||||
spreadRadius: 0, //阴影扩散程度
|
||||
)
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: Utils.isPad() ? 32.w : 38.w,
|
||||
height: 18.h,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.only(left: Utils.isPad() ? 2.w : 3.w),
|
||||
decoration: BoxDecoration(
|
||||
color: widget.type == 1
|
||||
? const Color.fromRGBO(104, 136, 253, 1)
|
||||
: const Color.fromRGBO(255, 175, 56, 1),
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(14.r),
|
||||
topRight: Radius.circular(3.r),
|
||||
bottomLeft: Radius.circular(4.r),
|
||||
bottomRight: Radius.circular(4.r),
|
||||
),
|
||||
),
|
||||
margin: EdgeInsets.only(right: 4.w),
|
||||
child: quickText(widget.type == 1?'作业':'考试', color: Colors.white, size: 10.sp),
|
||||
),
|
||||
Expanded(
|
||||
child: quickText(
|
||||
widget.jobTaskItem.name,
|
||||
maxLines: 2,
|
||||
size: Utils.isPad() ? 14.sp : 16.sp,
|
||||
color: const Color.fromRGBO(70, 70, 70, 1),
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
SizedBox(height: 10.h),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
quickText(
|
||||
widget.logic.formatSubject(widget.jobTaskItem.subject),
|
||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||
size: 12.sp,
|
||||
),
|
||||
quickText(' / ',
|
||||
color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
||||
Container(
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
quickText('题量:', color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp),
|
||||
quickText(
|
||||
'10',
|
||||
color: const Color.fromRGBO(97, 97, 97, 1),
|
||||
size: 13.sp,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
quickText(' / ',
|
||||
color: const Color.fromRGBO(130, 130, 130, 1), size: 11.sp, fontWeight: FontWeight.w500),
|
||||
quickText(widget.jobTaskItem.publishTime.substring(0, 16),
|
||||
color: const Color.fromRGBO(97, 97, 97, 1), size: 12.sp),
|
||||
],
|
||||
),
|
||||
// FavoriteButton(jobTaskItem.id, jobTaskItem.title),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.all(9.r),
|
||||
decoration: const BoxDecoration(shape: BoxShape.circle, color: Colors.white),
|
||||
child: CircularPercentIndicator(
|
||||
radius: 40.r,
|
||||
lineWidth: 10.r,
|
||||
animation: true,
|
||||
percent: widget.jobTaskItem.annotateRate / 100,
|
||||
center: Text.rich(TextSpan(children: [
|
||||
TextSpan(
|
||||
text: Utils.getDoubleRemoveZero(widget.jobTaskItem.annotateRate, '0'),
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 16.sp,
|
||||
color: Theme.of(context).primaryColor,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: "%",
|
||||
style: TextStyle(color: const Color.fromRGBO(70, 70, 70, 1), fontSize: 12.sp, fontWeight: FontWeight.bold),
|
||||
),
|
||||
])),
|
||||
circularStrokeCap: CircularStrokeCap.round,
|
||||
// progressColor: Theme.of(context).primaryColor,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
tileMode: TileMode.clamp,
|
||||
stops: const [0.0, 1.0],
|
||||
colors: [
|
||||
Theme.of(context).primaryColor.withOpacity(0.1),
|
||||
Theme.of(context).primaryColor,
|
||||
],
|
||||
),
|
||||
backgroundColor: const Color.fromRGBO(244, 244, 244, 1),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
|||
throw Exception('用户信息获取失败');
|
||||
}
|
||||
UserStore.to.setUserDetailInfo(data);
|
||||
|
||||
UserStore.to.getSubjectList();
|
||||
EasyLoading.dismiss();
|
||||
Get.offAllNamed(Routes.home);
|
||||
// if (resultData.code != 200 || userData?.accessToken == null || userData?.accessToken == '') {
|
||||
|
|
|
|||
|
|
@ -608,6 +608,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
percent_indicator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: percent_indicator
|
||||
sha256: c37099ad833a883c9d71782321cb65c3a848c21b6939b6185f0ff6640d05814c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.3"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ dependencies:
|
|||
json_annotation: ^4.8.1
|
||||
retrofit: ^4.1.0
|
||||
# end retrofit请求封装
|
||||
# 进度条
|
||||
percent_indicator: ^4.2.3
|
||||
|
||||
|
||||
dev_dependencies:
|
||||
|
|
@ -112,7 +114,10 @@ flutter:
|
|||
# "family" key with the font family name, and a "fonts" key with a
|
||||
# list giving the asset and other descriptors for the font. For
|
||||
# example:
|
||||
# fonts:
|
||||
fonts:
|
||||
- family: AlibabaIcon
|
||||
fonts:
|
||||
- asset: assets/icons/iconfont.ttf
|
||||
# - family: Schyler
|
||||
# fonts:
|
||||
# - asset: fonts/Schyler-Regular.ttf
|
||||
|
|
|
|||
Loading…
Reference in New Issue