Browse Source

新需求

zhangjie 2 years ago
parent
commit
da1c625ac4

+ 1351 - 1346
src/assets/styles/pages.scss

@@ -1,1346 +1,1351 @@
-.task-apply-steps {
-  min-height: 90px;
-  margin-bottom: 20px;
-  margin-top: -32px;
-  .el-step__title {
-    font-size: 14px;
-    line-height: 30px;
-  }
-}
-.task-exam-room {
-  background-color: #fff;
-  border-radius: $--border-radius;
-  margin-bottom: 10px;
-}
-// task-detail
-.task-detail {
-  .table {
-    border-radius: $--border-radius;
-    color: $--color-text-dark-1;
-    border: 1px solid $--color-border;
-    border-bottom: 0;
-    border-right: 0;
-    border-collapse: separate;
-    overflow: hidden;
-
-    th {
-      border-left: 0;
-      border-top: 0;
-      color: $--color-text-gray-2;
-      padding: 15px;
-    }
-    td {
-      border-left: 0;
-      border-top: 0;
-      padding: 10px 15px;
-
-      i {
-        display: inline-block;
-        vertical-align: middle;
-      }
-    }
-  }
-  .icon {
-    margin-right: 8px;
-  }
-
-  .task-action {
-    margin-top: 50px;
-    text-align: center;
-  }
-  .task-audit {
-    padding-top: 15px;
-    border-top: 2px dashed $--color-border;
-    margin-top: 20px;
-  }
-  // .task-audit-history {
-  // }
-
-  .image-item {
-    display: inline-block;
-    vertical-align: top;
-    width: 80px;
-    height: 80px;
-    margin: 0 10px 10px 0;
-    border: 1px solid $--color-text-gray-4;
-    position: relative;
-    border-radius: 5px;
-    overflow: hidden;
-
-    img {
-      position: absolute;
-      margin: auto;
-      max-width: 100%;
-      max-height: 100%;
-      top: 0;
-      left: 0;
-      right: 0;
-      bottom: 0;
-      z-index: auto;
-      cursor: pointer;
-    }
-
-    .image-delete {
-      display: none;
-      position: absolute;
-      z-index: 99;
-      width: 100%;
-      height: 30px;
-      line-height: 30px;
-      text-align: center;
-      font-size: 20px;
-      bottom: 0;
-      left: 0;
-      background-color: rgba($color: #000000, $alpha: 0.3);
-      color: $--color-danger;
-      cursor: pointer;
-    }
-
-    &:hover {
-      .image-delete {
-        display: block;
-      }
-    }
-  }
-  .image-add {
-    font-size: 40px;
-    line-height: 1;
-    padding: 19px;
-    text-align: center;
-    border-radius: 5px;
-    border-style: dashed;
-    overflow: hidden;
-    cursor: pointer;
-    color: $--color-text-gray-5;
-
-    &:hover {
-      color: $--color-text-gray-3;
-    }
-  }
-  .image-list-none {
-    color: $--color-text-gray-2;
-    margin-bottom: 10px;
-  }
-}
-// apply-audit-history
-.apply-audit-history {
-  .audit-result {
-    margin: 10px 0;
-  }
-}
-// task-list
-.task-head {
-  font-size: 16px;
-
-  i {
-    cursor: pointer;
-
-    &:hover {
-      color: $--color-primary;
-    }
-  }
-}
-.task-list {
-  .task-item {
-    margin-bottom: 15px;
-    padding: 15px;
-    border-radius: $--border-radius;
-    background-color: $--color-background;
-
-    p {
-      line-height: 1.5;
-      margin-bottom: 5px;
-      > span:first-child {
-        color: $--color-text-dark-1;
-      }
-    }
-  }
-  .task-action {
-    cursor: pointer;
-    &:hover {
-      color: $--color-primary;
-    }
-  }
-}
-// create-exam-and-print-task
-.create-exam-and-print-task {
-  .apply-body {
-    width: 1000px;
-    margin: 0 auto 30px;
-  }
-  .apply-part {
-    padding: 20px 30px;
-    border-radius: 20px;
-    border: 1px solid $--color-text-gray-5;
-    margin-bottom: 20px;
-
-    &-title {
-      font-weight: 600;
-      font-size: 18px;
-      line-height: 1;
-      margin-bottom: 30px;
-    }
-  }
-}
-// flow-timeline
-.flow-timeline {
-  margin-top: 10px;
-  padding: 15px;
-  border: 1px solid $--color-text-gray-6;
-  border-radius: 10px;
-  background-color: $--color-text-gray-7;
-  .el-timeline {
-    padding: 0 10px;
-    &-item__tail {
-      border-color: #ddd;
-    }
-  }
-  .timeline-item-stop {
-    .el-timeline-item__tail {
-      border-left-style: dashed;
-    }
-  }
-
-  .el-timeline-item__node--success {
-    background-color: $--color-success;
-  }
-
-  .flow-item {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-
-    &-time {
-      color: #909399;
-      line-height: 1;
-      font-size: 13px;
-      margin-bottom: 8px;
-      padding-top: 4px;
-    }
-    &-title {
-      font-size: 16px;
-      line-height: 1;
-      margin-bottom: 5px;
-    }
-    &-desc {
-      color: $--color-text-gray;
-
-      > span:not(:first-child) {
-        margin-left: 10px;
-      }
-    }
-
-    &-attachment {
-      .btn-primary {
-        &:hover {
-          font-weight: normal;
-        }
-
-        & + .btn-primary {
-          position: relative;
-          margin-left: 20px;
-
-          &::before {
-            content: "";
-            display: block;
-            position: absolute;
-            width: 0;
-            height: 14px;
-            border-left: 1px solid $--color-text-gray-4;
-            left: -10px;
-            top: 50%;
-            margin-top: -7px;
-          }
-        }
-      }
-    }
-
-    &-action {
-      text-align: center;
-    }
-
-    // action
-    .user-select {
-      width: 40px;
-      height: 40px;
-      padding: 10px;
-      font-size: 18px;
-      line-height: 1;
-    }
-  }
-}
-
-// wait-task
-.wait-task {
-  .wait-module {
-    height: 100%;
-  }
-}
-// card-title-rule-edit
-.card-title-rule-edit {
-  .field-item {
-    display: inline-block;
-    vertical-align: top;
-    margin: 0 10px 10px 0;
-    padding: 8px 10px;
-    border-radius: 4px;
-    line-height: 1;
-    background-color: $--color-background;
-    cursor: pointer;
-
-    &:hover {
-      color: $--color-primary;
-    }
-    &-act {
-      background-color: $--color-primary;
-      color: #fff !important;
-    }
-    &-disabled {
-      cursor: not-allowed;
-
-      &:hover {
-        color: $--color-text-dark;
-      }
-    }
-  }
-  .field-textarea {
-    border-radius: $--border-radius;
-    border: 1px solid $--color-text-gray-4;
-    min-height: 60px;
-    padding: 2px;
-    overflow: hidden;
-
-    &:focus {
-      border-color: $--color-primary;
-    }
-
-    span.var-field {
-      display: inline-block;
-      vertical-align: middle;
-      padding: 3px 5px;
-      background-color: $--color-primary;
-      color: $--color-white;
-      line-height: 1;
-      border-radius: 3px;
-    }
-  }
-}
-
-// page-preview
-.preview-frame {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  z-index: 99;
-}
-// label-edit
-.label-edit {
-  min-height: 60px;
-  .label-item {
-    display: inline-block;
-    vertical-align: top;
-    border: 1px solid $--color-text-gray-6;
-    border-radius: $--border-radius;
-    padding: 5px 40px 5px 10px;
-    position: relative;
-    margin: 0 10px 10px 0;
-    line-height: 21px;
-  }
-  .label-item-content {
-    margin: 0;
-    line-height: 21px;
-    vertical-align: middle;
-  }
-  .label-item-delete {
-    position: absolute;
-    right: 10px;
-    top: 50%;
-    transform: translateY(-50%);
-    z-index: 99;
-    font-size: 16px;
-    color: $--color-text-gray-5;
-    cursor: pointer;
-    &:hover {
-      color: $--color-danger;
-    }
-  }
-  .label-add {
-    display: inline-block;
-    vertical-align: top;
-    border: 1px solid $--color-text-gray-6;
-    border-radius: $--border-radius;
-    padding: 0 10px;
-    color: $--color-text-gray-2;
-    cursor: pointer;
-    &:hover {
-      border-color: $--color-primary;
-      color: $--color-primary;
-    }
-  }
-}
-
-// rule-exam
-
-// select-orgs
-.select-orgs {
-  position: relative;
-
-  &-disabled {
-    &::before {
-      content: "";
-      position: absolute;
-      top: 0;
-      left: 0;
-      right: 0;
-      bottom: 0;
-      z-index: 99;
-      background-color: #f5f7fa;
-      opacity: 0.3;
-      cursor: not-allowed;
-    }
-  }
-
-  .el-checkbox.is-disabled + span.el-tree-node__label {
-    color: $--color-text-gray-4;
-  }
-}
-// privilege-set
-.privilege-set {
-  overflow: auto;
-  .table {
-    td,
-    th {
-      padding: 8px 10px;
-    }
-
-    th:nth-of-type(4),
-    td:nth-of-type(4) {
-      text-align: center;
-    }
-  }
-  .cell-check-list {
-    text-align: left;
-  }
-}
-// organization-manage
-.organization-manage {
-  .org-tree-head {
-    height: 40px;
-    line-height: 40px;
-    color: $--color-text-gray-2;
-    border-bottom: 1px solid $--color-border;
-    padding: 0 8px;
-
-    > div {
-      float: right;
-      font-weight: 500;
-      &:first-child {
-        float: left;
-      }
-
-      &:nth-of-type(2) {
-        width: 200px;
-        text-align: right;
-      }
-      &:nth-of-type(3) {
-        width: 100px;
-      }
-      &:nth-of-type(4) {
-        width: 150px;
-      }
-    }
-  }
-  .el-tree-node__content {
-    height: auto;
-    padding: 4px 0;
-    border-bottom: 1px solid $--color-border;
-  }
-  .org-edit {
-    .org-code {
-      width: 150px;
-      display: inline-block;
-    }
-    .org-type {
-      width: 100px;
-      display: inline-block;
-    }
-    .org-actions {
-      width: 200px;
-      display: inline-block;
-      text-align: right;
-    }
-    .el-button--text:hover {
-      transform: scale(1.1);
-    }
-  }
-}
-// modify-print-plan
-.modify-print-plan {
-  .part-box {
-    margin-bottom: 40px;
-  }
-}
-
-// paper-track-preview-dialog
-.paper-track-preview-dialog {
-  .paper-preview {
-    overflow: auto;
-    canvas {
-      display: block;
-      margin: 0 auto;
-    }
-  }
-  .preview-loading {
-    position: absolute;
-    top: 100px;
-    width: 100%;
-    z-index: auto;
-    font-size: 100px;
-    text-align: center;
-    color: #aaa;
-  }
-  .el-dialog__body {
-    padding: 70px 20px 80px !important;
-  }
-  .el-dialog__footer {
-    position: fixed;
-    width: 100%;
-    left: 0;
-    bottom: 0;
-    z-index: 9;
-    padding: 15px 20px;
-    border-top: 1px solid #eff0f5;
-    background-color: #fff;
-    .el-button {
-      float: none;
-    }
-  }
-}
-
-// marker-login
-.marker-login {
-  .part-box {
-    padding: 100px 50px;
-    text-align: center;
-  }
-  .auth-item {
-    padding: 80px;
-    margin: 0 20px;
-    font-size: 40px;
-  }
-}
-
-// modify-exam
-.modify-exam {
-  .tips-info {
-    font-size: 14px;
-  }
-  .el-radio-v {
-    display: block;
-    margin-bottom: 8px;
-  }
-}
-// modify-exam-config
-
-// modify-flow-detail
-.modify-flow-detail {
-  .flow-box {
-    display: flex;
-    justify-content: space-between;
-    align-items: stretch;
-  }
-  .flow-property {
-    width: 300px;
-    min-height: 400px;
-    flex-grow: 0;
-    flex-shrink: 0;
-    border: 1px solid $--color-text-gray-5;
-    border-radius: 10px;
-    padding: 15px;
-    background-color: #fff;
-
-    &-title {
-      font-size: 16px;
-      line-height: 1;
-      padding-bottom: 10px;
-      margin-bottom: 10px;
-      border-bottom: 1px solid $--color-text-gray-5;
-    }
-  }
-  .property-part {
-    margin-bottom: 15px;
-    padding-bottom: 15px;
-    border-bottom: 1px solid $--color-text-gray-5;
-
-    &-title {
-      font-size: 14px;
-      line-height: 1;
-      margin-bottom: 10px;
-    }
-  }
-  .property-desc {
-    margin-bottom: 10px;
-  }
-  .flow-radio-v {
-    .el-radio {
-      display: block;
-      margin-bottom: 8px;
-    }
-  }
-  .flow-users {
-    margin-top: 10px;
-  }
-  .user-list {
-    margin-top: 10px;
-
-    .el-tag {
-      margin: 3px;
-    }
-  }
-  .user-clear {
-    padding: 5px 10px;
-    width: 68px;
-    margin: 3px;
-  }
-
-  .flow-content {
-    margin-right: 20px;
-    flex-grow: 1;
-    border: 1px solid $--color-text-gray-5;
-    border-radius: 10px;
-    padding: 10px;
-    position: relative;
-    background-color: #fff;
-  }
-  .flow-main {
-    width: 200px;
-    margin: 30px auto 0;
-  }
-  .flow-node {
-    position: relative;
-    box-shadow: 0 0 0 1px #ccc;
-    border-radius: 10px;
-    margin-bottom: 60px;
-    cursor: pointer;
-
-    &:hover {
-      opacity: 0.9;
-    }
-    &.is-active {
-      opacity: 1;
-      box-shadow: 0 0 0 2px $--color-blue;
-    }
-
-    &-title {
-      padding: 8px 10px;
-      border-bottom: 1px solid #ccc;
-      background-color: $--color-blue;
-      color: #fff;
-      border-top-left-radius: 10px;
-      border-top-right-radius: 10px;
-    }
-    &-content {
-      padding: 10px;
-      min-height: 40px;
-    }
-  }
-  .node-start {
-    cursor: default;
-    .flow-node-content {
-      background-color: mix(#fff, $--color-success, 20%);
-      text-align: center;
-      font-size: 18px;
-      border-radius: 10px;
-      color: #fff;
-    }
-  }
-  .node-end {
-    cursor: default;
-
-    .flow-node-content {
-      background-color: mix(#fff, $--color-danger, 20%);
-      text-align: center;
-      font-size: 18px;
-      border-radius: 10px;
-      color: #fff;
-    }
-  }
-  .flow-link {
-    position: absolute;
-    width: 30px;
-    left: 50%;
-    margin-left: -15px;
-    height: 52px;
-    bottom: -56px;
-
-    &::before {
-      content: "";
-      display: block;
-      position: absolute;
-      border-left: 2px solid $--color-text-gray-2;
-      top: 0;
-      bottom: 2px;
-      left: 50%;
-      margin-left: -1px;
-      z-index: 8;
-    }
-    &::after {
-      content: "";
-      display: block;
-      position: absolute;
-      width: 0;
-      height: 0;
-      border-width: 8px;
-      border-style: solid;
-      border-color: $--color-text-gray-2 transparent transparent transparent;
-      left: 50%;
-      margin-left: -8px;
-      bottom: -8px;
-      z-index: 9;
-    }
-
-    .node-add {
-      position: absolute;
-      width: 24px;
-      height: 24px;
-      top: 50%;
-      left: 50%;
-      transform: translate(-50%, -50%);
-      border-radius: 50%;
-      z-index: 99;
-      background-color: $--color-primary;
-      color: #fff;
-      font-size: 16px;
-      line-height: 25px;
-      text-align: center;
-      cursor: pointer;
-
-      &:hover {
-        background-color: mix(#000, $--color-primary, 10%);
-      }
-    }
-  }
-}
-.select-user-dialog {
-  .user-search {
-    margin-bottom: 5px;
-  }
-  .user-types {
-    font-size: 0;
-    margin-bottom: 5px;
-  }
-  .user-type {
-    display: inline-block;
-    vertical-align: top;
-    font-size: 14px;
-    height: 28px;
-    width: 50%;
-    padding: 0 10px;
-    line-height: 26px;
-    border: 1px solid #e0e0e0;
-    text-align: center;
-    cursor: pointer;
-    &:hover {
-      border-color: $--color-primary;
-      color: $--color-primary;
-    }
-
-    &.is-active {
-      background-color: $--color-primary;
-      border-color: $--color-primary;
-      color: #fff;
-    }
-  }
-  .user-tree {
-    padding: 5px;
-    border: 1px solid #e0e0e0;
-    height: 300px;
-    overflow: auto;
-  }
-  .user-part-title {
-    height: 28px;
-    line-height: 26px;
-    border-radius: 5px;
-    background-color: #f0f0f0;
-    border: 1px solid #e0e0e0;
-    text-align: center;
-    margin-bottom: 5px;
-  }
-  .user-list {
-    border: 1px solid #e0e0e0;
-    padding: 5px;
-    height: 333px;
-    overflow: auto;
-  }
-  .user-item {
-    margin: 3px 0;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    background-color: #f0f0f0;
-    border-radius: 3px;
-  }
-  .user-cont {
-    line-height: 20px;
-    padding: 4px 6px;
-  }
-  .user-delete {
-    padding: 0;
-    color: $--color-danger;
-
-    &:hover {
-      color: mix(#000, $--color-danger, 10%);
-    }
-  }
-}
-
-// card-manage
-.card-create-type {
-  .card-types {
-    font-size: 0;
-    text-align: center;
-  }
-  .card-type {
-    display: inline-block;
-    vertical-align: top;
-    font-size: 20px;
-    margin: 0 5px;
-    height: 70px;
-    width: 150px;
-    line-height: 1;
-    padding: 25px 0;
-    border-radius: $--border-radius;
-    color: #fff;
-    cursor: pointer;
-
-    &:hover {
-      opacity: 0.8;
-    }
-
-    &:nth-of-type(1) {
-      background-color: $--color-primary;
-    }
-    &:nth-of-type(2) {
-      background-color: $--color-success;
-    }
-    &:nth-of-type(3) {
-      background-color: $--color-cyan;
-    }
-  }
-}
-// modify-card
-.modify-card {
-  .el-dialog.is-fullscreen {
-    border: none;
-    .el-dialog__body {
-      border: none;
-      padding: 0;
-      position: absolute;
-      top: 0;
-      left: 0;
-      bottom: 0;
-      right: 0;
-      overflow: hidden;
-    }
-  }
-}
-// modify-mark-params
-.modify-mark-params {
-  .mark-body {
-    margin: 40px 0;
-  }
-  .structure-desc {
-    margin-bottom: 10px;
-  }
-  .expand-btn {
-    display: inline-block;
-    width: 20px;
-    height: 20px;
-    line-height: 19px;
-    font-size: 13px;
-    border: 1px solid #6f7482;
-    border-radius: 3px;
-    text-align: center;
-    cursor: pointer;
-
-    &:hover {
-      color: $--color-primary;
-      border-color: $--color-primary;
-    }
-
-    &-unexpand {
-      background-color: #ebeffc;
-    }
-  }
-  .total-info {
-    text-align: right;
-    padding-top: 10px;
-    > span {
-      color: $--color-danger;
-      font-weight: 600;
-      margin: 0 2px;
-    }
-  }
-  .row-unexpand-sub {
-    display: none;
-  }
-  .marker-header {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin-bottom: 10px;
-  }
-  .answer-column {
-    padding: 1px;
-    .el-form-item {
-      margin: 12px 0;
-    }
-
-    .el-form-item__error {
-      padding-top: 0px;
-    }
-    .el-form-item__content {
-      line-height: 32px;
-    }
-  }
-}
-// modify-marker-question
-.modify-marker-question {
-  .el-dialog {
-    &__header,
-    &__footer {
-      display: none;
-    }
-    &__body {
-      padding: 20px;
-    }
-  }
-
-  .marker-box {
-    height: 600px;
-    background-color: $--color-background;
-    border-radius: $--border-radius;
-    padding: 15px;
-    display: flex;
-    flex-direction: column;
-
-    &-uq {
-      display: block;
-      height: 100%;
-      overflow: auto;
-      background-color: #fff;
-      border: 1px solid $--color-background;
-
-      .el-tag {
-        margin: 3px;
-      }
-    }
-  }
-  .user-title {
-    margin-bottom: 10px;
-    flex-grow: 0;
-  }
-  .user-search {
-    margin-bottom: 10px;
-    flex-grow: 0;
-  }
-
-  .user-types {
-    font-size: 0;
-    margin-bottom: 10px;
-    flex-grow: 0;
-  }
-  .user-type {
-    display: inline-block;
-    vertical-align: top;
-    font-size: 14px;
-    height: 28px;
-    width: 50%;
-    padding: 0 10px;
-    line-height: 26px;
-    border: 1px solid #e0e0e0;
-    text-align: center;
-    background-color: #fff;
-    cursor: pointer;
-    &:hover {
-      border-color: $--color-primary;
-      color: $--color-primary;
-    }
-
-    &.is-active {
-      background-color: $--color-primary;
-      border-color: $--color-primary;
-      color: #fff;
-    }
-  }
-  .user-tree {
-    padding: 10px;
-    border-radius: 4px;
-    background-color: #fff;
-    overflow: auto;
-    flex-grow: 2;
-  }
-
-  .marker-footer {
-    margin-top: 15px;
-    text-align: center;
-  }
-}
-// modify-student-simple
-.modify-student-simple {
-  .tab-body {
-    min-height: 300px;
-  }
-}
-// modify-mark-area
-.modify-mark-area {
-  .el-dialog__body {
-    background-color: $--color-background;
-    position: relative;
-    z-index: 3;
-  }
-  .el-dialog__footer {
-    display: none;
-  }
-}
-.area-cropper {
-  position: relative;
-  border: 1px solid #e0e0e0;
-  background-color: #fff;
-  margin: 10px 0;
-
-  .cropper-img img {
-    display: block;
-    width: 100%;
-    height: auto;
-  }
-  .cropper-areas {
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    z-index: 9;
-  }
-
-  .area-selection {
-    position: absolute;
-    z-index: 999;
-    border: 1px solid $--color-blue;
-    background-color: rgba($color: #000000, $alpha: 0.2);
-  }
-
-  .element-item-body {
-    position: absolute;
-    background-color: rgba($color: #000000, $alpha: 0.2);
-  }
-  .element-delete {
-    position: absolute;
-    height: 20px;
-    width: 20px;
-    top: 0;
-    right: -20px;
-    line-height: 20px;
-    text-align: center;
-    font-size: 18px;
-    display: none;
-    z-index: 9;
-    color: $--color-danger;
-    cursor: pointer;
-    &:hover {
-      color: mix(#fff, $--color-danger, 20%);
-    }
-  }
-
-  .element-resize {
-    background-color: transparent;
-    > .resize-control {
-      > .control-point,
-      > .control-line {
-        display: none;
-      }
-    }
-
-    &:hover {
-      > .resize-control {
-        > .control-line {
-          display: block;
-        }
-      }
-    }
-
-    &-act {
-      > .resize-control {
-        > .control-point,
-        > .control-line {
-          display: block;
-        }
-      }
-      .element-delete {
-        display: block;
-      }
-    }
-  }
-  .element-resize-compact {
-    > .resize-control {
-      > .control-line {
-        display: block;
-      }
-    }
-
-    &:hover {
-      > .resize-control {
-        > .control-line {
-          border-color: $--color-primary;
-        }
-      }
-    }
-
-    &.element-resize-act {
-      > .resize-control {
-        > .control-line {
-          border-color: $--color-primary;
-          &-left,
-          &-right {
-            border-left-style: solid;
-          }
-          &-top,
-          &-bottom {
-            border-top-style: solid;
-          }
-        }
-      }
-    }
-  }
-}
-// answer-popover
-.answer-popover {
-  line-height: 24px;
-  padding: 15px;
-
-  .answer-divider {
-    margin: 10px 0;
-    height: 1px;
-    border-bottom: 1px dashed $--color-text-gray-5;
-  }
-  .el-checkbox__label,
-  .el-radio__label {
-    width: 24px;
-    text-align: center;
-  }
-  .el-radio__label {
-    display: inline-block;
-  }
-}
-
-// modify-base-config
-.modify-base-config {
-  &.el-dialog {
-    background-color: $--color-background;
-
-    .el-dialog__body {
-      padding-top: 70px;
-    }
-  }
-  .config-footer {
-    margin-top: 40px;
-    text-align: center;
-  }
-  .step-title {
-    color: $--color-text-gray-3;
-    border: none;
-    outline: none;
-
-    &:not(.is-disabled):hover,
-    &:not(.is-disabled).is-active {
-      color: $--color-success;
-    }
-  }
-}
-.proficiency-edit {
-  .el-form-item__content {
-    margin-bottom: 5px;
-  }
-}
-.rate-input {
-  .el-input-number {
-    width: 60px;
-    margin: 0 10px;
-
-    .el-input__inner {
-      padding-left: 10px;
-      padding-right: 20px;
-    }
-
-    .el-input::after {
-      content: "%";
-      display: block;
-      position: absolute;
-      right: 10px;
-      top: 50%;
-      margin-top: -8px;
-      font-size: 14px;
-      line-height: 1;
-      z-index: 9;
-    }
-  }
-  &-offset-left {
-    padding-left: 87px;
-  }
-}
-
-.analysis-report-view {
-  .auth-item {
-    padding: 80px;
-    margin: 0 20px;
-    font-size: 40px;
-  }
-}
-
-// modify-school
-.modify-school {
-  .logo-image {
-    background-color: $--color-background;
-    padding: 10px;
-    border-radius: 5px;
-    text-align: center;
-  }
-  .logo-view {
-    max-width: 160px;
-    max-height: 40px;
-  }
-}
-
-// .data-task-dialog
-.data-task-dialog {
-  .el-dialog__footer {
-    display: none;
-  }
-}
-// rule-field-edit
-.rule-field-edit {
-  display: flex;
-  align-items: stretch;
-  .field-part-source {
-    width: 200px;
-    border-radius: 10px;
-    border: 1px solid $--color-border-bold;
-    overflow: hidden;
-  }
-  .field-part-action {
-    width: 120px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-    .action-body {
-      width: 80px;
-      height: 100px;
-      line-height: 50px;
-      text-align: center;
-    }
-
-    .el-button {
-      margin: 0;
-    }
-  }
-  .field-title {
-    background-color: $--color-background;
-    padding: 10px 15px;
-    line-height: 20px;
-    border-bottom: 1px solid $--color-border-bold;
-  }
-  .field-body {
-    padding: 6px 15px;
-    overflow-x: hidden;
-    overflow-y: auto;
-    height: 246px;
-  }
-  .field-item {
-    position: relative;
-    padding: 5px 0;
-    line-height: 20px;
-
-    &.after-drop {
-      &::after {
-        content: "";
-        display: block;
-        position: absolute;
-        width: 100%;
-        border-bottom: 2px solid $--color-primary;
-        bottom: -2px;
-        left: 0;
-        z-index: 9;
-      }
-    }
-    &.before-drop {
-      &::before {
-        content: "";
-        display: block;
-        position: absolute;
-        width: 100%;
-        border-top: 2px solid $--color-primary;
-        top: -2px;
-        left: 0;
-        z-index: 9;
-      }
-    }
-  }
-}
-
-// .modify-exam-config-detail
-.modify-exam-config-detail {
-  .config-title {
-    margin-bottom: 15px;
-
-    > h4 {
-      display: inline-block;
-      vertical-align: middle;
-      width: 140px;
-      font-size: 16px;
-      line-height: 25px;
-      color: $--color-text-dark-1;
-      text-align: right;
-    }
-  }
-}
-// print-plan-batch-push-dialog
-.print-plan-batch-push-dialog {
-  .el-dialog {
-    margin-bottom: 0;
-    // height: 100%;
-    overflow: hidden;
-  }
-  .el-dialog__header {
-    position: absolute;
-    width: 100%;
-    top: 0;
-    z-index: 9;
-  }
-  .el-dialog__body {
-    height: 100%;
-    padding-top: 70px !important;
-    display: flex;
-    justify-content: space-between;
-    flex-direction: column;
-
-    .part-box-filter {
-      flex-grow: 0;
-      flex-shrink: 0;
-
-      &:last-child {
-        margin-bottom: 0;
-      }
-    }
-    .part-box-pad {
-      flex-grow: 2;
-      overflow-x: hidden;
-      overflow-y: auto;
-    }
-  }
-  .el-dialog__footer {
-    display: none;
-  }
-}
+.task-apply-steps {
+  min-height: 90px;
+  margin-bottom: 20px;
+  margin-top: -32px;
+  .el-step__title {
+    font-size: 14px;
+    line-height: 30px;
+  }
+}
+.task-exam-room {
+  background-color: #fff;
+  border-radius: $--border-radius;
+  margin-bottom: 10px;
+}
+// task-detail
+.task-detail {
+  .table {
+    border-radius: $--border-radius;
+    color: $--color-text-dark-1;
+    border: 1px solid $--color-border;
+    border-bottom: 0;
+    border-right: 0;
+    border-collapse: separate;
+    overflow: hidden;
+
+    th {
+      border-left: 0;
+      border-top: 0;
+      color: $--color-text-gray-2;
+      padding: 15px;
+    }
+    td {
+      border-left: 0;
+      border-top: 0;
+      padding: 10px 15px;
+
+      i {
+        display: inline-block;
+        vertical-align: middle;
+      }
+    }
+  }
+  .icon {
+    margin-right: 8px;
+  }
+
+  .task-action {
+    margin-top: 50px;
+    text-align: center;
+  }
+  .task-audit {
+    padding-top: 15px;
+    border-top: 2px dashed $--color-border;
+    margin-top: 20px;
+  }
+  // .task-audit-history {
+  // }
+
+  .image-item {
+    display: inline-block;
+    vertical-align: top;
+    width: 80px;
+    height: 80px;
+    margin: 0 10px 10px 0;
+    border: 1px solid $--color-text-gray-4;
+    position: relative;
+    border-radius: 5px;
+    overflow: hidden;
+
+    img {
+      position: absolute;
+      margin: auto;
+      max-width: 100%;
+      max-height: 100%;
+      top: 0;
+      left: 0;
+      right: 0;
+      bottom: 0;
+      z-index: auto;
+      cursor: pointer;
+    }
+
+    .image-delete {
+      display: none;
+      position: absolute;
+      z-index: 99;
+      width: 100%;
+      height: 30px;
+      line-height: 30px;
+      text-align: center;
+      font-size: 20px;
+      bottom: 0;
+      left: 0;
+      background-color: rgba($color: #000000, $alpha: 0.3);
+      color: $--color-danger;
+      cursor: pointer;
+    }
+
+    &:hover {
+      .image-delete {
+        display: block;
+      }
+    }
+  }
+  .image-add {
+    font-size: 40px;
+    line-height: 1;
+    padding: 19px;
+    text-align: center;
+    border-radius: 5px;
+    border-style: dashed;
+    overflow: hidden;
+    cursor: pointer;
+    color: $--color-text-gray-5;
+
+    &:hover {
+      color: $--color-text-gray-3;
+    }
+  }
+  .image-list-none {
+    color: $--color-text-gray-2;
+    margin-bottom: 10px;
+  }
+}
+// apply-audit-history
+.apply-audit-history {
+  .audit-result {
+    margin: 10px 0;
+  }
+}
+// task-list
+.task-head {
+  font-size: 16px;
+
+  i {
+    cursor: pointer;
+
+    &:hover {
+      color: $--color-primary;
+    }
+  }
+}
+.task-list {
+  .task-item {
+    margin-bottom: 15px;
+    padding: 15px;
+    border-radius: $--border-radius;
+    background-color: $--color-background;
+
+    p {
+      line-height: 1.5;
+      margin-bottom: 5px;
+      > span:first-child {
+        color: $--color-text-dark-1;
+      }
+    }
+  }
+  .task-action {
+    cursor: pointer;
+    &:hover {
+      color: $--color-primary;
+    }
+  }
+}
+// create-exam-and-print-task
+.create-exam-and-print-task {
+  .apply-body {
+    width: 1000px;
+    margin: 0 auto 30px;
+  }
+  .apply-part {
+    padding: 20px 30px;
+    border-radius: 20px;
+    border: 1px solid $--color-text-gray-5;
+    margin-bottom: 20px;
+
+    &-title {
+      font-weight: 600;
+      font-size: 18px;
+      line-height: 1;
+      margin-bottom: 30px;
+    }
+  }
+}
+// flow-timeline
+.flow-timeline {
+  margin-top: 10px;
+  padding: 15px;
+  border: 1px solid $--color-text-gray-6;
+  border-radius: 10px;
+  background-color: $--color-text-gray-7;
+  .el-timeline {
+    padding: 0 10px;
+    &-item__tail {
+      border-color: #ddd;
+    }
+  }
+  .timeline-item-stop {
+    .el-timeline-item__tail {
+      border-left-style: dashed;
+    }
+  }
+
+  .el-timeline-item__node--success {
+    background-color: $--color-success;
+  }
+
+  .flow-item {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    &-time {
+      color: #909399;
+      line-height: 1;
+      font-size: 13px;
+      margin-bottom: 8px;
+      padding-top: 4px;
+    }
+    &-title {
+      font-size: 16px;
+      line-height: 1;
+      margin-bottom: 5px;
+    }
+    &-desc {
+      color: $--color-text-gray;
+
+      > span:not(:first-child) {
+        margin-left: 10px;
+      }
+    }
+
+    &-attachment {
+      .btn-primary {
+        &:hover {
+          font-weight: normal;
+        }
+
+        & + .btn-primary {
+          position: relative;
+          margin-left: 20px;
+
+          &::before {
+            content: "";
+            display: block;
+            position: absolute;
+            width: 0;
+            height: 14px;
+            border-left: 1px solid $--color-text-gray-4;
+            left: -10px;
+            top: 50%;
+            margin-top: -7px;
+          }
+        }
+      }
+    }
+
+    &-action {
+      text-align: center;
+    }
+
+    // action
+    .user-select {
+      width: 40px;
+      height: 40px;
+      padding: 10px;
+      font-size: 18px;
+      line-height: 1;
+    }
+  }
+}
+
+// wait-task
+.wait-task {
+  .wait-module {
+    height: 100%;
+  }
+}
+// card-title-rule-edit
+.card-title-rule-edit {
+  .field-item {
+    display: inline-block;
+    vertical-align: top;
+    margin: 0 10px 10px 0;
+    padding: 8px 10px;
+    border-radius: 4px;
+    line-height: 1;
+    background-color: $--color-background;
+    cursor: pointer;
+
+    &:hover {
+      color: $--color-primary;
+    }
+    &-act {
+      background-color: $--color-primary;
+      color: #fff !important;
+    }
+    &-disabled {
+      cursor: not-allowed;
+
+      &:hover {
+        color: $--color-text-dark;
+      }
+    }
+  }
+  .field-textarea {
+    border-radius: $--border-radius;
+    border: 1px solid $--color-text-gray-4;
+    min-height: 60px;
+    padding: 2px;
+    overflow: hidden;
+
+    &:focus {
+      border-color: $--color-primary;
+    }
+
+    span.var-field {
+      display: inline-block;
+      vertical-align: middle;
+      padding: 3px 5px;
+      background-color: $--color-primary;
+      color: $--color-white;
+      line-height: 1;
+      border-radius: 3px;
+    }
+  }
+}
+
+// page-preview
+.preview-frame {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 99;
+}
+// label-edit
+.label-edit {
+  min-height: 60px;
+  .label-item {
+    display: inline-block;
+    vertical-align: top;
+    border: 1px solid $--color-text-gray-6;
+    border-radius: $--border-radius;
+    padding: 5px 40px 5px 10px;
+    position: relative;
+    margin: 0 10px 10px 0;
+    line-height: 21px;
+  }
+  .label-item-content {
+    margin: 0;
+    line-height: 21px;
+    vertical-align: middle;
+  }
+  .label-item-delete {
+    position: absolute;
+    right: 10px;
+    top: 50%;
+    transform: translateY(-50%);
+    z-index: 99;
+    font-size: 16px;
+    color: $--color-text-gray-5;
+    cursor: pointer;
+    &:hover {
+      color: $--color-danger;
+    }
+  }
+  .label-add {
+    display: inline-block;
+    vertical-align: top;
+    border: 1px solid $--color-text-gray-6;
+    border-radius: $--border-radius;
+    padding: 0 10px;
+    color: $--color-text-gray-2;
+    cursor: pointer;
+    &:hover {
+      border-color: $--color-primary;
+      color: $--color-primary;
+    }
+  }
+}
+
+// rule-exam
+
+// select-orgs
+.select-orgs {
+  position: relative;
+
+  &-disabled {
+    &::before {
+      content: "";
+      position: absolute;
+      top: 0;
+      left: 0;
+      right: 0;
+      bottom: 0;
+      z-index: 99;
+      background-color: #f5f7fa;
+      opacity: 0.3;
+      cursor: not-allowed;
+    }
+  }
+
+  .el-checkbox.is-disabled + span.el-tree-node__label {
+    color: $--color-text-gray-4;
+  }
+}
+// privilege-set
+.privilege-set {
+  overflow: auto;
+  .table {
+    td,
+    th {
+      padding: 8px 10px;
+    }
+
+    th:nth-of-type(4),
+    td:nth-of-type(4) {
+      text-align: center;
+    }
+  }
+  .cell-check-list {
+    text-align: left;
+  }
+}
+// organization-manage
+.organization-manage {
+  .org-tree-head {
+    height: 40px;
+    line-height: 40px;
+    color: $--color-text-gray-2;
+    border-bottom: 1px solid $--color-border;
+    padding: 0 8px;
+
+    > div {
+      float: right;
+      font-weight: 500;
+      &:first-child {
+        float: left;
+      }
+
+      &:nth-of-type(2) {
+        width: 200px;
+        text-align: right;
+      }
+      &:nth-of-type(3) {
+        width: 100px;
+      }
+      &:nth-of-type(4) {
+        width: 150px;
+      }
+    }
+  }
+  .el-tree-node__content {
+    height: auto;
+    padding: 4px 0;
+    border-bottom: 1px solid $--color-border;
+  }
+  .org-edit {
+    .org-code {
+      width: 150px;
+      display: inline-block;
+    }
+    .org-type {
+      width: 100px;
+      display: inline-block;
+    }
+    .org-actions {
+      width: 200px;
+      display: inline-block;
+      text-align: right;
+    }
+    .el-button--text:hover {
+      transform: scale(1.1);
+    }
+  }
+}
+// modify-print-plan
+.modify-print-plan {
+  .part-box {
+    margin-bottom: 40px;
+  }
+}
+
+// paper-track-preview-dialog
+.paper-track-preview-dialog {
+  .paper-preview {
+    overflow: auto;
+    canvas {
+      display: block;
+      margin: 0 auto;
+    }
+  }
+  .preview-loading {
+    position: absolute;
+    top: 100px;
+    width: 100%;
+    z-index: auto;
+    font-size: 100px;
+    text-align: center;
+    color: #aaa;
+  }
+  .el-dialog__body {
+    padding: 70px 20px 80px !important;
+  }
+  .el-dialog__footer {
+    position: fixed;
+    width: 100%;
+    left: 0;
+    bottom: 0;
+    z-index: 9;
+    padding: 15px 20px;
+    border-top: 1px solid #eff0f5;
+    background-color: #fff;
+    .el-button {
+      float: none;
+    }
+  }
+}
+
+// marker-login
+.marker-login {
+  .part-box {
+    padding: 100px 50px;
+    text-align: center;
+  }
+  .auth-item {
+    padding: 80px;
+    margin: 0 20px;
+    font-size: 40px;
+  }
+}
+
+// modify-exam
+.modify-exam {
+  .tips-info {
+    font-size: 14px;
+  }
+  .el-radio-v {
+    display: block;
+    margin-bottom: 8px;
+  }
+}
+// modify-exam-config
+
+// modify-flow-detail
+.modify-flow-detail {
+  .flow-box {
+    display: flex;
+    justify-content: space-between;
+    align-items: stretch;
+  }
+  .flow-property {
+    width: 300px;
+    min-height: 400px;
+    flex-grow: 0;
+    flex-shrink: 0;
+    border: 1px solid $--color-text-gray-5;
+    border-radius: 10px;
+    padding: 15px;
+    background-color: #fff;
+
+    &-title {
+      font-size: 16px;
+      line-height: 1;
+      padding-bottom: 10px;
+      margin-bottom: 10px;
+      border-bottom: 1px solid $--color-text-gray-5;
+    }
+  }
+  .property-part {
+    margin-bottom: 15px;
+    padding-bottom: 15px;
+    border-bottom: 1px solid $--color-text-gray-5;
+
+    &-title {
+      font-size: 14px;
+      line-height: 1;
+      margin-bottom: 10px;
+    }
+  }
+  .property-desc {
+    margin-bottom: 10px;
+  }
+  .flow-radio-v {
+    .el-radio {
+      display: block;
+      margin-bottom: 8px;
+    }
+  }
+  .flow-users {
+    margin-top: 10px;
+  }
+  .user-list {
+    margin-top: 10px;
+
+    .el-tag {
+      margin: 3px;
+    }
+  }
+  .user-clear {
+    padding: 5px 10px;
+    width: 68px;
+    margin: 3px;
+  }
+
+  .flow-content {
+    margin-right: 20px;
+    flex-grow: 1;
+    border: 1px solid $--color-text-gray-5;
+    border-radius: 10px;
+    padding: 10px;
+    position: relative;
+    background-color: #fff;
+  }
+  .flow-main {
+    width: 200px;
+    margin: 30px auto 0;
+  }
+  .flow-node {
+    position: relative;
+    box-shadow: 0 0 0 1px #ccc;
+    border-radius: 10px;
+    margin-bottom: 60px;
+    cursor: pointer;
+
+    &:hover {
+      opacity: 0.9;
+    }
+    &.is-active {
+      opacity: 1;
+      box-shadow: 0 0 0 2px $--color-blue;
+    }
+
+    &-title {
+      padding: 8px 10px;
+      border-bottom: 1px solid #ccc;
+      background-color: $--color-blue;
+      color: #fff;
+      border-top-left-radius: 10px;
+      border-top-right-radius: 10px;
+    }
+    &-content {
+      padding: 10px;
+      min-height: 40px;
+    }
+  }
+  .node-start {
+    cursor: default;
+    .flow-node-content {
+      background-color: mix(#fff, $--color-success, 20%);
+      text-align: center;
+      font-size: 18px;
+      border-radius: 10px;
+      color: #fff;
+    }
+  }
+  .node-end {
+    cursor: default;
+
+    .flow-node-content {
+      background-color: mix(#fff, $--color-danger, 20%);
+      text-align: center;
+      font-size: 18px;
+      border-radius: 10px;
+      color: #fff;
+    }
+  }
+  .flow-link {
+    position: absolute;
+    width: 30px;
+    left: 50%;
+    margin-left: -15px;
+    height: 52px;
+    bottom: -56px;
+
+    &::before {
+      content: "";
+      display: block;
+      position: absolute;
+      border-left: 2px solid $--color-text-gray-2;
+      top: 0;
+      bottom: 2px;
+      left: 50%;
+      margin-left: -1px;
+      z-index: 8;
+    }
+    &::after {
+      content: "";
+      display: block;
+      position: absolute;
+      width: 0;
+      height: 0;
+      border-width: 8px;
+      border-style: solid;
+      border-color: $--color-text-gray-2 transparent transparent transparent;
+      left: 50%;
+      margin-left: -8px;
+      bottom: -8px;
+      z-index: 9;
+    }
+
+    .node-add {
+      position: absolute;
+      width: 24px;
+      height: 24px;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      border-radius: 50%;
+      z-index: 99;
+      background-color: $--color-primary;
+      color: #fff;
+      font-size: 16px;
+      line-height: 25px;
+      text-align: center;
+      cursor: pointer;
+
+      &:hover {
+        background-color: mix(#000, $--color-primary, 10%);
+      }
+    }
+  }
+}
+.select-user-dialog {
+  .user-search {
+    margin-bottom: 5px;
+  }
+  .user-types {
+    font-size: 0;
+    margin-bottom: 5px;
+  }
+  .user-type {
+    display: inline-block;
+    vertical-align: top;
+    font-size: 14px;
+    height: 28px;
+    width: 50%;
+    padding: 0 10px;
+    line-height: 26px;
+    border: 1px solid #e0e0e0;
+    text-align: center;
+    cursor: pointer;
+    &:hover {
+      border-color: $--color-primary;
+      color: $--color-primary;
+    }
+
+    &.is-active {
+      background-color: $--color-primary;
+      border-color: $--color-primary;
+      color: #fff;
+    }
+  }
+  .user-tree {
+    padding: 5px;
+    border: 1px solid #e0e0e0;
+    height: 300px;
+    overflow: auto;
+    .el-tree-node__content {
+      align-items: baseline;
+    }
+    .el-tree-node__label {
+      white-space: normal;
+    }
+  }
+  .user-part-title {
+    height: 28px;
+    line-height: 26px;
+    border-radius: 5px;
+    background-color: #f0f0f0;
+    border: 1px solid #e0e0e0;
+    text-align: center;
+    margin-bottom: 5px;
+  }
+  .user-list {
+    border: 1px solid #e0e0e0;
+    padding: 5px;
+    height: 333px;
+    overflow: auto;
+  }
+  .user-item {
+    margin: 3px 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background-color: #f0f0f0;
+    border-radius: 3px;
+  }
+  .user-cont {
+    line-height: 20px;
+    padding: 4px 6px;
+  }
+  .user-delete {
+    padding: 0;
+    color: $--color-danger;
+
+    &:hover {
+      color: mix(#000, $--color-danger, 10%);
+    }
+  }
+}
+
+// card-manage
+.card-create-type {
+  .card-types {
+    font-size: 0;
+    text-align: center;
+  }
+  .card-type {
+    display: inline-block;
+    vertical-align: top;
+    font-size: 20px;
+    margin: 0 5px;
+    height: 70px;
+    width: 150px;
+    line-height: 1;
+    padding: 25px 0;
+    border-radius: $--border-radius;
+    color: #fff;
+    cursor: pointer;
+
+    &:hover {
+      opacity: 0.8;
+    }
+
+    &:nth-of-type(1) {
+      background-color: $--color-primary;
+    }
+    &:nth-of-type(2) {
+      background-color: $--color-success;
+    }
+    &:nth-of-type(3) {
+      background-color: $--color-cyan;
+    }
+  }
+}
+// modify-card
+.modify-card {
+  .el-dialog.is-fullscreen {
+    border: none;
+    .el-dialog__body {
+      border: none;
+      padding: 0;
+      position: absolute;
+      top: 0;
+      left: 0;
+      bottom: 0;
+      right: 0;
+      overflow: hidden;
+    }
+  }
+}
+// modify-mark-params
+.modify-mark-params {
+  .mark-body {
+    margin: 40px 0;
+  }
+  .structure-desc {
+    margin-bottom: 10px;
+  }
+  .expand-btn {
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    line-height: 19px;
+    font-size: 13px;
+    border: 1px solid #6f7482;
+    border-radius: 3px;
+    text-align: center;
+    cursor: pointer;
+
+    &:hover {
+      color: $--color-primary;
+      border-color: $--color-primary;
+    }
+
+    &-unexpand {
+      background-color: #ebeffc;
+    }
+  }
+  .total-info {
+    text-align: right;
+    padding-top: 10px;
+    > span {
+      color: $--color-danger;
+      font-weight: 600;
+      margin: 0 2px;
+    }
+  }
+  .row-unexpand-sub {
+    display: none;
+  }
+  .marker-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+  .answer-column {
+    padding: 1px;
+    .el-form-item {
+      margin: 12px 0;
+    }
+
+    .el-form-item__error {
+      padding-top: 0px;
+    }
+    .el-form-item__content {
+      line-height: 32px;
+    }
+  }
+}
+// modify-marker-question
+.modify-marker-question {
+  .el-dialog {
+    &__footer {
+      display: none;
+    }
+    &__body {
+      padding: 20px;
+    }
+  }
+
+  .marker-box {
+    height: 600px;
+    background-color: $--color-background;
+    border-radius: $--border-radius;
+    padding: 15px;
+    display: flex;
+    flex-direction: column;
+
+    &-uq {
+      display: block;
+      height: 100%;
+      overflow: auto;
+      background-color: #fff;
+      border: 1px solid $--color-background;
+
+      .el-tag {
+        margin: 3px;
+      }
+    }
+  }
+  .user-title {
+    margin-bottom: 10px;
+    flex-grow: 0;
+  }
+  .user-search {
+    margin-bottom: 10px;
+    flex-grow: 0;
+  }
+
+  .user-types {
+    font-size: 0;
+    margin-bottom: 10px;
+    flex-grow: 0;
+  }
+  .user-type {
+    display: inline-block;
+    vertical-align: top;
+    font-size: 14px;
+    height: 28px;
+    width: 50%;
+    padding: 0 10px;
+    line-height: 26px;
+    border: 1px solid #e0e0e0;
+    text-align: center;
+    background-color: #fff;
+    cursor: pointer;
+    &:hover {
+      border-color: $--color-primary;
+      color: $--color-primary;
+    }
+
+    &.is-active {
+      background-color: $--color-primary;
+      border-color: $--color-primary;
+      color: #fff;
+    }
+  }
+  .user-tree {
+    padding: 10px;
+    border-radius: 4px;
+    background-color: #fff;
+    overflow: auto;
+    flex-grow: 2;
+  }
+
+  .marker-footer {
+    margin-top: 15px;
+    text-align: center;
+  }
+}
+// modify-student-simple
+.modify-student-simple {
+  .tab-body {
+    min-height: 300px;
+  }
+}
+// modify-mark-area
+.modify-mark-area {
+  .el-dialog__body {
+    background-color: $--color-background;
+    position: relative;
+    z-index: 3;
+  }
+  .el-dialog__footer {
+    display: none;
+  }
+}
+.area-cropper {
+  position: relative;
+  border: 1px solid #e0e0e0;
+  background-color: #fff;
+  margin: 10px 0;
+
+  .cropper-img img {
+    display: block;
+    width: 100%;
+    height: auto;
+  }
+  .cropper-areas {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 9;
+  }
+
+  .area-selection {
+    position: absolute;
+    z-index: 999;
+    border: 1px solid $--color-blue;
+    background-color: rgba($color: #000000, $alpha: 0.2);
+  }
+
+  .element-item-body {
+    position: absolute;
+    background-color: rgba($color: #000000, $alpha: 0.2);
+  }
+  .element-delete {
+    position: absolute;
+    height: 20px;
+    width: 20px;
+    top: 0;
+    right: -20px;
+    line-height: 20px;
+    text-align: center;
+    font-size: 18px;
+    display: none;
+    z-index: 9;
+    color: $--color-danger;
+    cursor: pointer;
+    &:hover {
+      color: mix(#fff, $--color-danger, 20%);
+    }
+  }
+
+  .element-resize {
+    background-color: transparent;
+    > .resize-control {
+      > .control-point,
+      > .control-line {
+        display: none;
+      }
+    }
+
+    &:hover {
+      > .resize-control {
+        > .control-line {
+          display: block;
+        }
+      }
+    }
+
+    &-act {
+      > .resize-control {
+        > .control-point,
+        > .control-line {
+          display: block;
+        }
+      }
+      .element-delete {
+        display: block;
+      }
+    }
+  }
+  .element-resize-compact {
+    > .resize-control {
+      > .control-line {
+        display: block;
+      }
+    }
+
+    &:hover {
+      > .resize-control {
+        > .control-line {
+          border-color: $--color-primary;
+        }
+      }
+    }
+
+    &.element-resize-act {
+      > .resize-control {
+        > .control-line {
+          border-color: $--color-primary;
+          &-left,
+          &-right {
+            border-left-style: solid;
+          }
+          &-top,
+          &-bottom {
+            border-top-style: solid;
+          }
+        }
+      }
+    }
+  }
+}
+// answer-popover
+.answer-popover {
+  line-height: 24px;
+  padding: 15px;
+
+  .answer-divider {
+    margin: 10px 0;
+    height: 1px;
+    border-bottom: 1px dashed $--color-text-gray-5;
+  }
+  .el-checkbox__label,
+  .el-radio__label {
+    width: 24px;
+    text-align: center;
+  }
+  .el-radio__label {
+    display: inline-block;
+  }
+}
+
+// modify-base-config
+.modify-base-config {
+  &.el-dialog {
+    background-color: $--color-background;
+
+    .el-dialog__body {
+      padding-top: 70px;
+    }
+  }
+  .config-footer {
+    margin-top: 40px;
+    text-align: center;
+  }
+  .step-title {
+    color: $--color-text-gray-3;
+    border: none;
+    outline: none;
+
+    &:not(.is-disabled):hover,
+    &:not(.is-disabled).is-active {
+      color: $--color-success;
+    }
+  }
+}
+.proficiency-edit {
+  .el-form-item__content {
+    margin-bottom: 5px;
+  }
+}
+.rate-input {
+  .el-input-number {
+    width: 60px;
+    margin: 0 10px;
+
+    .el-input__inner {
+      padding-left: 10px;
+      padding-right: 20px;
+    }
+
+    .el-input::after {
+      content: "%";
+      display: block;
+      position: absolute;
+      right: 10px;
+      top: 50%;
+      margin-top: -8px;
+      font-size: 14px;
+      line-height: 1;
+      z-index: 9;
+    }
+  }
+  &-offset-left {
+    padding-left: 87px;
+  }
+}
+
+.analysis-report-view {
+  .auth-item {
+    padding: 80px;
+    margin: 0 20px;
+    font-size: 40px;
+  }
+}
+
+// modify-school
+.modify-school {
+  .logo-image {
+    background-color: $--color-background;
+    padding: 10px;
+    border-radius: 5px;
+    text-align: center;
+  }
+  .logo-view {
+    max-width: 160px;
+    max-height: 40px;
+  }
+}
+
+// .data-task-dialog
+.data-task-dialog {
+  .el-dialog__footer {
+    display: none;
+  }
+}
+// rule-field-edit
+.rule-field-edit {
+  display: flex;
+  align-items: stretch;
+  .field-part-source {
+    width: 200px;
+    border-radius: 10px;
+    border: 1px solid $--color-border-bold;
+    overflow: hidden;
+  }
+  .field-part-action {
+    width: 120px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .action-body {
+      width: 80px;
+      height: 100px;
+      line-height: 50px;
+      text-align: center;
+    }
+
+    .el-button {
+      margin: 0;
+    }
+  }
+  .field-title {
+    background-color: $--color-background;
+    padding: 10px 15px;
+    line-height: 20px;
+    border-bottom: 1px solid $--color-border-bold;
+  }
+  .field-body {
+    padding: 6px 15px;
+    overflow-x: hidden;
+    overflow-y: auto;
+    height: 246px;
+  }
+  .field-item {
+    position: relative;
+    padding: 5px 0;
+    line-height: 20px;
+
+    &.after-drop {
+      &::after {
+        content: "";
+        display: block;
+        position: absolute;
+        width: 100%;
+        border-bottom: 2px solid $--color-primary;
+        bottom: -2px;
+        left: 0;
+        z-index: 9;
+      }
+    }
+    &.before-drop {
+      &::before {
+        content: "";
+        display: block;
+        position: absolute;
+        width: 100%;
+        border-top: 2px solid $--color-primary;
+        top: -2px;
+        left: 0;
+        z-index: 9;
+      }
+    }
+  }
+}
+
+// .modify-exam-config-detail
+.modify-exam-config-detail {
+  .config-title {
+    margin-bottom: 15px;
+
+    > h4 {
+      display: inline-block;
+      vertical-align: middle;
+      width: 140px;
+      font-size: 16px;
+      line-height: 25px;
+      color: $--color-text-dark-1;
+      text-align: right;
+    }
+  }
+}
+// print-plan-batch-push-dialog
+.print-plan-batch-push-dialog {
+  .el-dialog {
+    margin-bottom: 0;
+    // height: 100%;
+    overflow: hidden;
+  }
+  .el-dialog__header {
+    position: absolute;
+    width: 100%;
+    top: 0;
+    z-index: 9;
+  }
+  .el-dialog__body {
+    height: 100%;
+    padding-top: 70px !important;
+    display: flex;
+    justify-content: space-between;
+    flex-direction: column;
+
+    .part-box-filter {
+      flex-grow: 0;
+      flex-shrink: 0;
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+    .part-box-pad {
+      flex-grow: 2;
+      overflow-x: hidden;
+      overflow-y: auto;
+    }
+  }
+  .el-dialog__footer {
+    display: none;
+  }
+}

+ 12 - 0
src/modules/analysis/views/AnalysisBatchManage.vue

@@ -121,6 +121,18 @@
               @click="toCalc(scope.row)"
               >开始计算</el-button
             >
+            <el-button
+              v-if="
+                checkPrivilege('link', 'StartCalc') &&
+                scope.row.status === 'FINISH_CALCULATE' &&
+                scope.row.result !== 'SUCCESS'
+              "
+              class="btn-primary"
+              type="text"
+              :disabled="loading"
+              @click="toCalc(scope.row)"
+              >重新计算</el-button
+            >
             <el-button
               v-if="
                 checkPrivilege('link', 'push') &&

+ 90 - 54
src/modules/base/components/ModifyCourse.vue

@@ -1,64 +1,87 @@
 <template>
-  <el-dialog
-    class="modify-course"
-    :visible.sync="modalIsShow"
-    :title="title"
-    top="10vh"
-    width="550px"
-    :close-on-click-modal="false"
-    :close-on-press-escape="false"
-    append-to-body
-    @open="visibleChange"
-  >
-    <el-form
-      ref="modalFormComp"
-      :model="modalForm"
-      :rules="rules"
-      :key="modalForm.id"
-      label-position="top"
+  <div>
+    <el-dialog
+      class="modify-course"
+      :visible.sync="modalIsShow"
+      :title="title"
+      top="10vh"
+      width="550px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+      @open="visibleChange"
     >
-      <el-form-item prop="courseName" label="课程名称:">
-        <el-input
-          v-model.trim="modalForm.courseName"
-          placeholder="请输入课程名称"
-          clearable
-        ></el-input>
-      </el-form-item>
-      <el-form-item prop="courseCode" label="课程编码:">
-        <el-input
-          v-model.trim="modalForm.courseCode"
-          placeholder="请输入课程编码"
-          clearable
-        ></el-input>
-      </el-form-item>
-      <el-form-item prop="teachingRoomId" label="开课部门:">
-        <org-select
-          v-model="modalForm.teachingRoomId"
-          style="width: 100%"
-          placeholder="开课部门"
-        ></org-select>
-      </el-form-item>
-      <el-form-item label="授课班级:">
-        <clazz-select
-          v-model="modalForm.clazzIdSet"
-          placeholder="请选择授课班级"
-          multiple
-          clearable
-          style="width: 100%"
-        ></clazz-select>
-      </el-form-item>
-    </el-form>
-    <div slot="footer">
-      <el-button type="primary" :disabled="isSubmit" @click="submit"
-        >确认</el-button
+      <el-form
+        ref="modalFormComp"
+        :model="modalForm"
+        :rules="rules"
+        :key="modalForm.id"
+        label-position="top"
       >
-      <el-button @click="cancel">取消</el-button>
-    </div>
-  </el-dialog>
+        <el-form-item prop="courseName" label="课程名称:">
+          <el-input
+            v-model.trim="modalForm.courseName"
+            placeholder="请输入课程名称"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="courseCode" label="课程编码:">
+          <el-input
+            v-model.trim="modalForm.courseCode"
+            placeholder="请输入课程编码"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="teachingRoomId" label="开课部门:">
+          <org-select
+            v-model="modalForm.teachingRoomId"
+            style="width: 100%"
+            placeholder="开课部门"
+          ></org-select>
+        </el-form-item>
+        <el-form-item label="授课班级:">
+          <clazz-select
+            v-model="modalForm.clazzIdSet"
+            placeholder="请选择授课班级"
+            multiple
+            clearable
+            style="width: 100%"
+          ></clazz-select>
+        </el-form-item>
+      </el-form>
+      <el-form>
+        <el-form-item label="授课老师:">
+          <el-button class="btn-primary" type="text" @click="toSelectTeacher"
+            >选择</el-button
+          >
+
+          <el-tag v-for="item in teachList" :key="item.id">
+            {{ item.name }}({{ item.orgName }})
+          </el-tag>
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button type="primary" :disabled="isSubmit" @click="submit"
+          >确认</el-button
+        >
+        <el-button @click="cancel">取消</el-button>
+      </div>
+    </el-dialog>
+
+    <SelectTypeUser
+      ref="SelectTypeUser"
+      special-privilege="TEACHER"
+      dialog-title="选择授课老师"
+      :user-ids="modalForm.teachIdSet"
+      :user-limit-count="0"
+      @confirm="userSelected"
+    />
+  </div>
 </template>
 
 <script>
 import { updateCourse, getCode } from "../api";
+import SelectTypeUser from "../../stmms/components/SelectTypeUser.vue";
 
 const initModalForm = {
   id: null,
@@ -66,10 +89,12 @@ const initModalForm = {
   courseCode: "",
   teachingRoomId: "",
   clazzIdSet: "",
+  teachIdSet: "",
 };
 
 export default {
   name: "modify-course",
+  components: { SelectTypeUser },
   props: {
     instance: {
       type: Object,
@@ -131,6 +156,7 @@ export default {
           },
         ],
       },
+      teachList: [],
     };
   },
   methods: {
@@ -138,8 +164,11 @@ export default {
       if (val.id) {
         this.modalForm = this.$objAssign(initModalForm, val);
         this.modalForm.clazzIdSet = val.clazzList.map((item) => item.id);
+        this.modalForm.teachIdSet = val.teachList.map((item) => item.id);
+        this.teachList = val.teachList;
       } else {
         this.modalForm = { ...initModalForm };
+        this.teachList = [];
         this.createCode();
       }
     },
@@ -155,6 +184,13 @@ export default {
     open() {
       this.modalIsShow = true;
     },
+    toSelectTeacher() {
+      this.$refs.SelectTypeUser.open();
+    },
+    userSelected(users) {
+      this.teachList = users;
+      this.modalForm.teachIdSet = users.map((item) => item.id);
+    },
     async submit() {
       const valid = await this.$refs.modalFormComp.validate().catch(() => {});
       if (!valid) return;

+ 4 - 0
src/modules/exam/components/PaperApproveTable.vue

@@ -63,12 +63,14 @@
               <th v-if="hasClassInfo">使用班级</th>
               <th style="width: 80px">人数</th>
               <th style="width: 100px">总印份数</th>
+              <th style="width: 100px">印刷室</th>
             </tr>
             <tr v-for="item in examRoomInfoList" :key="item.id" :id="item.id">
               <td style="width: 100px">{{ item.packageCode }}</td>
               <td v-if="hasClassInfo">{{ item.clazzNames }}</td>
               <td style="width: 80px">{{ item.studentCount }}</td>
               <td style="width: 100px">{{ item.printCount }}</td>
+              <td style="width: 100px">{{ item.printHouseName }}</td>
             </tr>
           </table>
 
@@ -138,12 +140,14 @@
                 <th v-if="hasClassInfo">使用班级</th>
                 <th style="width: 80px">人数</th>
                 <th style="width: 100px">总印份数</th>
+                <th style="width: 100px">印刷室</th>
               </tr>
               <tr v-for="item in examRoomInfoList" :key="item.id" :id="item.id">
                 <td style="width: 100px">{{ item.packageCode }}</td>
                 <td v-if="hasClassInfo">{{ item.clazzNames }}</td>
                 <td style="width: 80px">{{ item.studentCount }}</td>
                 <td style="width: 100px">{{ item.printCount }}</td>
+                <td style="width: 100px">{{ item.printHouseName }}</td>
               </tr>
             </table>
 

+ 1 - 0
src/modules/exam/components/WaitTaskStmms.vue

@@ -123,6 +123,7 @@
     <SelectTypeUser
       ref="SelectTypeUser"
       special-privilege="SUBJECT_HEADER"
+      dialog-title="选择科组长"
       :user-ids="curMarkLeaders"
       :user-limit-count="0"
       @confirm="headerBind"

+ 29 - 2
src/modules/exam/components/createExamAndPrintTask/ModifyExamStudent.vue

@@ -21,6 +21,16 @@
         >{{ val }}
       </el-button>
     </div>
+    <div class="user-search">
+      <el-input
+        v-model="filterLabel"
+        placeholder="请输入班级名称"
+        clearable
+        size="mini"
+        prefix-icon="el-icon-search"
+        @input="labelChange"
+      ></el-input>
+    </div>
 
     <el-row type="flex" :gutter="10">
       <el-col :span="12">
@@ -55,7 +65,7 @@
                 type="text"
                 icon="el-icon-remove"
                 class="color-danger"
-                @click="removeSelectStudent(node)"
+                @click.stop="removeSelectStudent(node)"
               >
               </el-button>
             </span>
@@ -107,6 +117,7 @@ export default {
       selectedExamObjectType: null,
       userTree: [],
       selectedUsers: [],
+      filterLabel: "",
       defaultProps: {
         children: "children",
         label: "label",
@@ -196,6 +207,10 @@ export default {
     removeSelectStudent(node) {
       // console.log("node remove");
       this.$refs.UserSelectedTree.remove(node);
+      this.setTreeSelectedKeys();
+      this.checkChange();
+    },
+    setTreeSelectedKeys() {
       let selectedUserIds = [];
       this.selectedUsers.forEach((item) => {
         item.children.forEach((elem) => {
@@ -203,7 +218,6 @@ export default {
         });
       });
       this.$refs.UserTree.setCheckedKeys(selectedUserIds);
-      this.checkChange();
     },
     async visibleChange() {
       if (this.basicCourseCode !== this.courseCode) {
@@ -213,6 +227,19 @@ export default {
 
       this.selectMenu(this.examObjectType);
     },
+    labelChange() {
+      if (this.filterLabel) {
+        const escapeRegexpString = (value = "") =>
+          String(value).replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
+        const reg = new RegExp(escapeRegexpString(this.filterLabel), "i");
+        this.userTree = this.dataTree[this.examObjectType].filter((item) =>
+          reg.test(item.label)
+        );
+      } else {
+        this.userTree = this.dataTree[this.examObjectType];
+      }
+      this.setTreeSelectedKeys();
+    },
     updateUserTreeDisableInfo(disabledIds) {
       const disabledStdIds = disabledIds.map((item) => item.split("_")[1]);
 

+ 10 - 4
src/modules/stmms/components/SelectTypeUser.vue

@@ -5,17 +5,15 @@
     append-to-body
     top="20px"
     width="900px"
+    :title="dialogTitle"
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     :show-close="false"
     @opened="visibleChange"
   >
-    <div slot="title"></div>
-
     <el-row type="flex" :gutter="10">
       <el-col :span="12">
         <div class="marker-box">
-          <div class="user-title">{{ roleName }}</div>
           <div class="user-search">
             <el-input
               v-model="filterLabel"
@@ -110,6 +108,10 @@ export default {
       type: Number,
       default: 5,
     },
+    dialogTitle: {
+      type: String,
+      default: "选择用户",
+    },
   },
   data() {
     const usersValidator = (rule, value, callback) => {
@@ -134,7 +136,11 @@ export default {
       selectedUsers: [],
       selectedUserIds: [],
       roleName: "",
-      rolesNames: { SUBJECT_HEADER: "科组长" },
+      rolesNames: {
+        SUBJECT_HEADER: "科组长",
+        MARKER: "评卷员",
+        TEACHER: "教师",
+      },
       defaultProps: {
         children: "children",
         label: "label",

+ 1 - 0
src/modules/stmms/views/UploadStructure.vue

@@ -168,6 +168,7 @@
     <SelectTypeUser
       ref="SelectTypeUser"
       special-privilege="SUBJECT_HEADER"
+      dialog-title="选择科组长"
       :user-ids="curMarkLeaders"
       :user-limit-count="0"
       @confirm="headerBind"