| | |
| | | } |
| | | |
| | | #loader-wrapper .load_title { |
| | | font-family: 'Open Sans'; |
| | | font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif; |
| | | color: #FFF; |
| | | font-size: 19px; |
| | | width: 100%; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // ============================================================ |
| | | // ç»ä»¶é»è®¤å¤è§ï¼éæä»¤çå±ï¼ |
| | | // ------------------------------------------------------------ |
| | | // ç®çï¼ä¸æ¹ä»»ä½ä¸å¡é¡µé¢æ¨¡æ¿ï¼ç¨å
¨å±æ ·å¼æ Element çé»è®¤è§æ |
| | | // ç»ä¸æ"ç´§åãæ¸
ç½ãä¸ä¸"çä¸å¥ã |
| | | // éç¹ï¼è¡¨æ ¼ï¼æé©¬çº¹/å»ç«çº¿/表头åºè²ï¼ã表åãæé®ãå¼¹çªãæ ç¾ã |
| | | // 顺åºï¼å¿
é¡»æäº element-ui ä¸ ruoyi.scssï¼è§ main.jsï¼ã |
| | | // ============================================================ |
| | | |
| | | // ---------- å
¨å±æç ---------- |
| | | body { |
| | | font-family: var(--opo-font-family-base); |
| | | font-size: var(--opo-font-size-base); |
| | | color: var(--opo-text-primary); |
| | | background-color: var(--opo-bg-page); |
| | | } |
| | | |
| | | // è¦ç index.scss éç label { font-weight: 700 } |
| | | label { |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .app-container { |
| | | // 2026-10-22ï¼ç»ä¸æ¶ç´§ä¸º 8/12/12ï¼å 12/16ï¼ï¼å
¨ç«å表页ä¸è´ |
| | | padding: 8px 12px 12px; |
| | | } |
| | | |
| | | // æ°åç±»åæ®µï¼éé¢/ç¼å·/身份è¯ï¼å¯ç¨æ¤ç±»è·å¾ç宽æ°å |
| | | .opo-number { |
| | | font-family: var(--opo-font-family-number); |
| | | font-variant-numeric: tabular-nums; |
| | | } |
| | | |
| | | // ---------- è¡¨æ ¼ ---------- |
| | | // 2026-10-22ï¼æ°æ®è¡åå·ä¸è¡¨å¤´ç»ä¸ï¼14px / 常è§åéï¼ |
| | | // 注æï¼å
¨å± size=small ä¼è®©æ¯ä¸ªè¡¨æ ¼å¸¦ä¸ .el-table--smallï¼ |
| | | // Element ç¨å®æåå·åå 12pxãåå
æ ¼ padding åå 8pxï¼ |
| | | // æä»¥è¿éå¿
须忶æé«éæ©å¨ç¹å¼æ§ï¼å¦åä¼è¢«ååå»ã |
| | | .el-table, |
| | | .el-table.el-table--small, |
| | | .el-table.el-table--medium, |
| | | .el-table.el-table--mini, |
| | | .el-table.el-table--large { |
| | | color: var(--opo-text-primary); |
| | | font-size: var(--opo-font-size-sm); |
| | | } |
| | | |
| | | .el-table { |
| | | th, |
| | | th.el-table__cell { |
| | | background-color: var(--opo-bg-thead) !important; |
| | | color: var(--opo-text-primary); |
| | | // 表头ä¸å ç²ï¼2026-10-22 åé¦ï¼ |
| | | font-weight: 400; |
| | | font-size: var(--opo-font-size-sm); |
| | | height: 40px; |
| | | padding: 0; |
| | | } |
| | | |
| | | td, |
| | | td.el-table__cell, |
| | | &.el-table--small td.el-table__cell, |
| | | &.el-table--medium td.el-table__cell, |
| | | &.el-table--mini td.el-table__cell { |
| | | padding: 9px 0; |
| | | // è¡åé线ï¼2026-10-22 åå æ·±ä¸æ¡£ï¼ |
| | | border-bottom: 1px solid var(--opo-table-border, #c8cfd8); |
| | | } |
| | | |
| | | // è¡¨æ ¼åºé¨é£æ¡çº¿ |
| | | &::before { |
| | | background-color: var(--opo-table-border, #c8cfd8); |
| | | } |
| | | |
| | | // 带边æ¡çè¡¨æ ¼ï¼å¤æ¡çº¿ |
| | | &.el-table--border { |
| | | border-color: var(--opo-table-border, #c8cfd8); |
| | | } |
| | | |
| | | .cell { |
| | | line-height: 23px; |
| | | } |
| | | |
| | | // 表头ä¸å
容åºçåéçº¿ï¼æ¯è¡çº¿åæ·±ä¸ç¹ï¼ä½ä¸ºåçï¼ |
| | | .el-table__header-wrapper th { |
| | | border-bottom: 1px solid var(--opo-table-border-strong, #b7c0cc); |
| | | } |
| | | |
| | | // æé©¬çº¹ï¼ç¨ CSS å®ç°ï¼æ éç» 162 ä¸ªè¡¨æ ¼é个å stripe 屿§ |
| | | .el-table__body tr:nth-child(2n) > td, |
| | | .el-table__body tr:nth-child(2n) > td.el-table__cell { |
| | | background-color: var(--opo-bg-stripe); |
| | | } |
| | | |
| | | // é¼ æ è¡é«äº®ï¼è¦çæé©¬çº¹ï¼Element é»è®¤ hover è²åç°ï¼ |
| | | .el-table__body tr:hover > td, |
| | | .el-table__body tr:hover > td.el-table__cell { |
| | | background-color: var(--opo-primary-light-95, #f5f9fd); |
| | | } |
| | | |
| | | // 廿ç«çº¿ï¼border 屿§ä»ä¿ç卿¨¡æ¿éï¼è¿éåªè®©å®å¨è§è§ä¸æ¶å¤± |
| | | &.el-table--border td, |
| | | &.el-table--border th, |
| | | &.el-table--border th.el-table__cell, |
| | | &.el-table--border td.el-table__cell { |
| | | border-right: none; |
| | | } |
| | | |
| | | &.el-table--border::after, |
| | | &.el-table--group::after { |
| | | display: none; |
| | | } |
| | | |
| | | .el-table__empty-text { |
| | | color: var(--opo-text-placeholder); |
| | | font-size: var(--opo-font-size-sm); |
| | | } |
| | | } |
| | | |
| | | // éè¦"å¼ºç½æ ¼çº¿"çæç»å½å
¥è¡¨ï¼æ¨¡æ¿ä¸å class="table-bordered" å³å¯æ¢å¤ |
| | | .el-table.table-bordered { |
| | | border: 1px solid var(--opo-table-border, #c8cfd8); |
| | | |
| | | td, |
| | | th, |
| | | td.el-table__cell, |
| | | th.el-table__cell { |
| | | border-right: 1px solid var(--opo-table-border, #c8cfd8); |
| | | } |
| | | } |
| | | |
| | | // è¡¨æ ¼å
æé®æ´ç´§åï¼é¿å
æè¡æé« |
| | | .el-table .el-button--mini, |
| | | .el-table .el-button--small { |
| | | padding: 5px 8px; |
| | | } |
| | | |
| | | // ---------- 表å ---------- |
| | | // æ¥è¯¢æ¡ä»¶/è¡¨åæ´ä½æ¶ç´§ï¼Element é»è®¤ margin-bottom 22pxï¼è¡è·ææ¾å大 |
| | | .el-form-item { |
| | | margin-bottom: 12px; |
| | | |
| | | &__label { |
| | | font-weight: 400; |
| | | color: var(--opo-text-regular); |
| | | // æ ç¾ä¿æ 14pxï¼æ¥è¯¢åºå¤§éä½¿ç¨ label-width="68px"/"70px"ï¼ |
| | | // æ ç¾è¥éæ£æåå° 16pxï¼4 个åï¼å¦"æç®æ¡ä¾"ï¼å°±ä¼æ¢è¡ãè¡é«ç¿»å |
| | | font-size: var(--opo-font-size-sm); |
| | | padding-right: 8px; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | &__content { |
| | | line-height: 32px; |
| | | min-height: 32px; |
| | | } |
| | | |
| | | &.is-required:not(.is-no-asterisk) > .el-form-item__label:before { |
| | | color: var(--opo-danger); |
| | | } |
| | | |
| | | &__error { |
| | | font-size: var(--opo-font-size-xs); |
| | | line-height: 1.4; |
| | | padding-top: 2px; |
| | | } |
| | | } |
| | | |
| | | // 横åæåçæ¥è¯¢æ¡ä»¶åç´§å䏿¡£ |
| | | .el-form--inline .el-form-item { |
| | | margin-right: 12px; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | // ---------- ç´§åæ¥è¯¢åºï¼opt-inï¼ ---------- |
| | | // ç¨æ³ï¼ç»æ¥è¯¢ç¨ç el-form å class="opo-query-form"ï¼å表页ç»ä¸çº¦å®ï¼ |
| | | // è¡è· 8â4pxãæ ç¾ä¸æ§ä»¶å¯¹é½ãæåä¸è¡ï¼æç´¢/éç½®ï¼å»æä¸è¾¹è· |
| | | .opo-query-form { |
| | | // æ¥è¯¢æ¡ä»¶ä¸ä¸æ¹"æ°å¢/导åº"å·¥å
·æ ï¼å¯¹è¡¨æ ¼çæä½ï¼ä¹é´çåºé´è· |
| | | margin-bottom: 12px; |
| | | |
| | | .el-form-item { |
| | | margin-right: 8px; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .el-form-item__label { |
| | | line-height: 32px; |
| | | padding-right: 6px; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | line-height: 32px; |
| | | min-height: 32px; |
| | | } |
| | | |
| | | // æåä¸è¡é常æ¯"æç´¢/éç½®"ï¼ä¸åé¢å¤çç½ |
| | | > .el-row:last-child .el-form-item { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | |
| | | // ç´§è·æ¥è¯¢åºä¹åçå·¥å
·æ è¡ï¼æ°å¢/导åºï¼ï¼è´´è¿è¡¨æ ¼ï¼ä¸æ¥è¯¢åºç± margin-bottom éå¼ |
| | | .opo-query-form + .el-row.mb8 { |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | // 页é¢éçæ¥è¯¢åºå¸¸å
å¨å¡çæ el-row ä¸ï¼å»æå¤ä½çå¤å±çç½ |
| | | .el-card__body > .el-form:first-child, |
| | | .el-card__body > .el-row:first-child .el-form { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .el-input__inner, |
| | | .el-textarea__inner { |
| | | border-radius: var(--opo-radius-base); |
| | | color: var(--opo-text-primary); |
| | | |
| | | &::placeholder { |
| | | color: var(--opo-text-placeholder); |
| | | } |
| | | } |
| | | |
| | | // ---------- æé® ---------- |
| | | .el-button { |
| | | border-radius: var(--opo-radius-base); |
| | | font-weight: 400; |
| | | |
| | | [class*='el-icon-'] + span { |
| | | margin-left: 4px; |
| | | } |
| | | } |
| | | |
| | | // å°/è¿·ä½ æé®çåå·å¨ Element éæ¯ç¡¬ç¼ç 12pxï¼éæ£æä¸èµ·ä¸è°ï¼2026-10-22 å大ä¸å· â 16pxï¼ |
| | | .el-button--small, |
| | | .el-button--mini { |
| | | font-size: var(--opo-font-size-base); |
| | | } |
| | | |
| | | // ---------- å¼¹çª ---------- |
| | | .el-dialog { |
| | | border-radius: var(--opo-radius-lg); |
| | | box-shadow: var(--opo-shadow-lg); |
| | | overflow: hidden; |
| | | |
| | | &__header { |
| | | padding: 16px 20px 12px; |
| | | border-bottom: 1px solid var(--opo-border-light); |
| | | } |
| | | |
| | | &__title { |
| | | font-size: var(--opo-font-size-lg); |
| | | font-weight: 600; |
| | | color: var(--opo-text-primary); |
| | | } |
| | | |
| | | &__body { |
| | | padding: 16px 20px; |
| | | color: var(--opo-text-regular); |
| | | } |
| | | |
| | | &__footer { |
| | | padding: 12px 20px 16px; |
| | | border-top: 1px solid var(--opo-border-light); |
| | | } |
| | | } |
| | | |
| | | .el-drawer__header { |
| | | padding: 16px 20px; |
| | | margin-bottom: 0; |
| | | border-bottom: 1px solid var(--opo-border-light); |
| | | color: var(--opo-text-primary); |
| | | font-weight: 600; |
| | | } |
| | | |
| | | // ---------- æ ç¾ ---------- |
| | | .el-tag { |
| | | border-radius: var(--opo-radius-sm); |
| | | font-size: var(--opo-font-size-xs); |
| | | } |
| | | |
| | | // ---------- å¡ç ---------- |
| | | .el-card { |
| | | border-radius: var(--opo-radius-lg); |
| | | border-color: var(--opo-border-light); |
| | | box-shadow: var(--opo-shadow-sm) !important; |
| | | |
| | | &__header { |
| | | padding: 14px 16px 10px; |
| | | border-bottom: 1px solid var(--opo-border-light); |
| | | font-weight: 600; |
| | | color: var(--opo-text-primary); |
| | | } |
| | | |
| | | &__body { |
| | | padding: 12px 16px; |
| | | } |
| | | } |
| | | |
| | | // ---------- å页 ---------- |
| | | // Element æå页æååæ» 13pxãåé 700ï¼å 16px çè¡¨æ ¼æ£æä¸æ â ç»ä¸ 14px/å¸¸è§ |
| | | .el-pagination { |
| | | font-weight: 400; |
| | | color: var(--opo-text-regular); |
| | | font-size: var(--opo-font-size-sm); |
| | | |
| | | button, |
| | | span:not([class*='suffix']) { |
| | | font-size: var(--opo-font-size-sm); |
| | | } |
| | | |
| | | .el-pager li { |
| | | font-size: var(--opo-font-size-sm); |
| | | } |
| | | } |
| | | |
| | | .pagination-container { |
| | | margin-top: 12px; |
| | | height: auto; |
| | | padding: 8px 16px !important; |
| | | } |
| | | |
| | | // ---------- é¢å
å± / é¡µç¾ ---------- |
| | | .el-breadcrumb { |
| | | font-size: var(--opo-font-size-sm); |
| | | |
| | | &__inner, |
| | | &__inner a { |
| | | font-weight: 400 !important; |
| | | color: var(--opo-text-secondary); |
| | | } |
| | | |
| | | &__item:last-child .el-breadcrumb__inner { |
| | | color: var(--opo-text-primary); |
| | | } |
| | | } |
| | | |
| | | // ---------- æç¤º / æ¶æ¯ ---------- |
| | | .el-message { |
| | | border-radius: var(--opo-radius-base); |
| | | box-shadow: var(--opo-shadow-md); |
| | | } |
| | | |
| | | .el-tooltip__popper { |
| | | font-size: var(--opo-font-size-xs); |
| | | } |
| | | |
| | | // ---------- æ»å¨æ¡ï¼è§æç»èï¼ ---------- |
| | | ::-webkit-scrollbar { |
| | | width: 8px; |
| | | height: 8px; |
| | | } |
| | | |
| | | ::-webkit-scrollbar-thumb { |
| | | background-color: rgba(0, 0, 0, 0.18); |
| | | border-radius: var(--opo-radius-pill); |
| | | |
| | | &:hover { |
| | | background-color: rgba(0, 0, 0, 0.28); |
| | | } |
| | | } |
| | | |
| | | ::-webkit-scrollbar-track { |
| | | background-color: transparent; |
| | | } |
| | |
| | | /** |
| | | * I think element-ui's default theme color is too light for long-term use. |
| | | * So I modified the default color and you can modify it to your liking. |
| | | **/ |
| | | * Element UI 主é¢åéï¼ç¼è¯æï¼ |
| | | * ------------------------------------------------------------ |
| | | * åç主è²ï¼åèª src/assets/logo/OPO_Logo.png åç¯é #0E768F |
| | | * å±é©è²ï¼ åèªåå¾å¿å½¢ç«çº¢ #CD1D4Eï¼ç½å对æ¯åº¦ 5.41ï¼ä¼äºå #F56C6C ç 3.4ï¼ |
| | | * |
| | | * 说æï¼è¿éå³å®"ç¼è¯è¿ CSS çé»è®¤ç®è¤"ï¼ |
| | | * è¿è¡æ¶æ¢è¤ç± assets/styles/theme-runtime.scss + utils/theme.js è´è´£ï¼ |
| | | * äºè
éè¿ CSS åé --opo-primary* è¡æ¥ã |
| | | */ |
| | | |
| | | /* theme color */ |
| | | $--color-primary: #1890ff; |
| | | $--color-success: #13ce66; |
| | | $--color-warning: #ffba00; |
| | | $--color-danger: #ff4949; |
| | | // $--color-info: #1E1E1E; |
| | | /* ---------- 主é¢è² ---------- */ |
| | | $--color-primary: #0E768F; |
| | | $--color-success: #67C23A; |
| | | $--color-warning: #E6A23C; |
| | | $--color-danger: #CD1D4E; |
| | | $--color-info: #909399; |
| | | |
| | | /* ---------- æå ---------- */ |
| | | $--color-text-primary: #1F2937; |
| | | $--color-text-regular: #4B5563; |
| | | $--color-text-secondary: #6B7280; |
| | | $--color-text-placeholder: #9CA3AF; |
| | | |
| | | /* ---------- è¾¹æ¡ ---------- */ |
| | | $--border-color-base: #E5E7EB; |
| | | $--border-color-light: #F0F2F5; |
| | | $--border-color-lighter: #F5F7FA; |
| | | $--border-color-extra-light: #FAFBFC; |
| | | |
| | | /* ---------- èæ¯ ---------- */ |
| | | $--background-color-base: #F5F7FA; |
| | | |
| | | /* ---------- åè§ ---------- */ |
| | | $--border-radius-base: 4px; |
| | | $--border-radius-small: 2px; |
| | | |
| | | /* ---------- åå·ï¼2026-10-22 æ´ä½ä¸è°ä¸å·ï¼ ---------- */ |
| | | $--font-size-extra-large: 22px; |
| | | $--font-size-large: 20px; |
| | | $--font-size-medium: 18px; |
| | | $--font-size-base: 16px; |
| | | $--font-size-small: 14px; |
| | | $--font-size-extra-small: 13px; |
| | | |
| | | /* æé®åå·é»è®¤å¨å°å°ºå¯¸é被硬ç¼ç æ 12pxï¼ä¸å¹¶ä¸è° */ |
| | | $--button-font-size: 16px; |
| | | $--button-medium-font-size: 16px; |
| | | $--button-small-font-size: 14px; |
| | | $--button-mini-font-size: 14px; |
| | | |
| | | /* ä¾§è¾¹æ èååå·ï¼2026-10-22 ç± 18px åè°ä¸å·ï¼ */ |
| | | $--menu-item-font-size: 16px; |
| | | |
| | | $--button-font-weight: 400; |
| | | |
| | | // $--color-text-regular: #1f2d3d; |
| | | |
| | | $--border-color-light: #dfe4ed; |
| | | $--border-color-lighter: #e6ebf5; |
| | | |
| | | $--table-border:1px solid#dfe6ec; |
| | | /* ---------- è¡¨æ ¼ ---------- */ |
| | | $--table-border: 1px solid #E5E7EB; |
| | | |
| | | /* icon font path, required */ |
| | | $--font-path: '~element-ui/lib/theme-chalk/fonts'; |
| | |
| | | -moz-osx-font-smoothing: grayscale; |
| | | -webkit-font-smoothing: antialiased; |
| | | text-rendering: optimizeLegibility; |
| | | font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; |
| | | font-family: $opo-font-family-base; |
| | | } |
| | | |
| | | // è¡¨åæ ç¾ä¸åå
¨å±å ç²ï¼åæ¥ 700 让ææé¡µé¢æ¾å¾å¾"é"ï¼ |
| | | label { |
| | | font-weight: 700; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | html { |
| | |
| | | border-radius: 2px; |
| | | display: block; |
| | | line-height: 32px; |
| | | font-size: 16px; |
| | | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; |
| | | font-size: $opo-font-size-lg; |
| | | font-family: $opo-font-family-base; |
| | | color: #2c3e50; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | |
| | | * Copyright (c) 2019 ruoyi |
| | | */ |
| | | |
| | | /* 设计令çï¼æ¬æä»¶ä¸ºç¬ç«å
¥å£ï¼éèªè¡å¼å
¥åéï¼ */ |
| | | @import './tokens.scss'; |
| | | |
| | | /** åºç¡éç¨ **/ |
| | | .pt5 { |
| | | padding-top: 5px; |
| | |
| | | .el-table__header-wrapper, .el-table__fixed-header-wrapper { |
| | | th { |
| | | word-break: break-word; |
| | | background-color: #f8f8f9; |
| | | color: #515a6e; |
| | | background-color: $opo-bg-thead; |
| | | color: $opo-text-primary; |
| | | height: 40px; |
| | | font-size: 13px; |
| | | font-size: $opo-font-size-sm; |
| | | } |
| | | } |
| | | .el-table__body-wrapper { |
| | |
| | | /** è¡¨æ ¼æ´å¤æä½ä¸ææ ·å¼ */ |
| | | .el-table .el-dropdown-link { |
| | | cursor: pointer; |
| | | color: #409EFF; |
| | | color: var(--opo-primary, #0E768F); |
| | | margin-left: 5px; |
| | | } |
| | | |
| | |
| | | width: 100% !important; |
| | | } |
| | | |
| | | // èååå·ï¼æ¯æ£æå¤§ä¸¤å·ï¼æ£æ 16px â èå 18pxï¼ |
| | | .el-menu-item, |
| | | .el-submenu__title { |
| | | font-size: $opo-font-size-menu; |
| | | } |
| | | |
| | | .el-menu-item, .el-submenu__title { |
| | | overflow: hidden !important; |
| | | text-overflow: ellipsis !important; |
| | | white-space: nowrap !important; |
| | | } |
| | | |
| | | // menu hover |
| | | // menu hoverï¼æ·±è²åºä¸ç¨éç½ï¼åæ¥ rgba(0,0,0,.06) 卿·±è²ä¸çä¸åºæ¥ï¼ |
| | | .submenu-title-noDropdown, |
| | | .el-submenu__title { |
| | | &:hover { |
| | | background-color: rgba(0, 0, 0, 0.06) !important; |
| | | background-color: rgba(255, 255, 255, 0.08) !important; |
| | | } |
| | | } |
| | | |
| | |
| | | min-width: $base-sidebar-width !important; |
| | | |
| | | &:hover { |
| | | background-color: rgba(0, 0, 0, 0.06) !important; |
| | | background-color: rgba(255, 255, 255, 0.08) !important; |
| | | } |
| | | } |
| | | |
| | |
| | | &:hover { |
| | | background-color: $base-sub-menu-hover !important; |
| | | } |
| | | } |
| | | |
| | | // ---- å½åéä¸èåé«äº® ---- |
| | | // åç¶ï¼Element ç¼è¯åºç .el-menu-item.is-active æ¯ä¸»è²æåï¼ |
| | | // å¨åæ ·æ¯éè²çæ·±è²ä¾§è¾¹æ ä¸å ä¹çä¸è§ â æ¹ä¸º"åçéå®åº + ç½å + 左侧亮æ¡" |
| | | & .el-menu-item.is-active { |
| | | position: relative; |
| | | color: #ffffff !important; |
| | | background-color: $opo-primary !important; |
| | | font-weight: 500; |
| | | |
| | | &::before { |
| | | content: ''; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | width: 3px; |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | &:hover { |
| | | background-color: $opo-primary !important; |
| | | } |
| | | } |
| | | |
| | | // ç¶çº§åç»åªæ¯"å
å«éä¸é¡¹"ï¼ç¨å¼±ä¸ç¹çåºè²ï¼é¿å
åå¶å项䏿 ·é |
| | | & .el-submenu.is-active > .el-submenu__title { |
| | | background-color: rgba(255, 255, 255, 0.1) !important; |
| | | color: #ffffff !important; |
| | | } |
| | | } |
| | | |
| | |
| | | .nest-menu .el-submenu>.el-submenu__title, |
| | | .el-menu-item { |
| | | &:hover { |
| | | // you can use $subMenuHover |
| | | background-color: rgba(0, 0, 0, 0.06) !important; |
| | | // æ·±è²èåç¨éç½è¦ç |
| | | background-color: rgba(255, 255, 255, 0.08) !important; |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // ============================================================ |
| | | // è¿è¡æ¶ä¸»é¢å±ï¼CSS åéæ¶è´¹æ¹ï¼ |
| | | // ------------------------------------------------------------ |
| | | // Element UI 2.x ç主é¢è²æ¯ SCSS ç¼è¯æå¸¸éï¼æ æ³å¨è¿è¡æ¶ä¿®æ¹ã |
| | | // æ¬æä»¶ä¸æ¹ Element æºç ï¼åª"éåç¨å°ä¸»è²çéæ©å¨"ï¼å¼æ¹ä¸º |
| | | // var(--opo-primary*)ï¼è¿äºåéç± utils/theme.js å¨åæ¢ç®è¤æ¶åå
¥ |
| | | // :rootï¼å æ¤æ¢è¤æ ééæ°ç¼è¯ãæ éå·æ°é¡µé¢ã |
| | | // |
| | | // è¦ç顺åºå¾å
³é®ï¼æ¬æä»¶å¿
é¡»å¨ element-ui ä¸ ruoyi.scss ä¹åå¼å
¥ |
| | | // ï¼è§ main.js ç import 顺åºï¼ã |
| | | // è¦çèå´ï¼æé®/龿¥/è¾å
¥/åéå¤éå¼å
³/Tabs/å页/è¡¨æ ¼/æ¥éª¤æ¡/ |
| | | // æ¥æ/䏿/å è½½/è¿åº¦ï¼å
¶ä½ç»ä»¶æéè¡¥å
ã |
| | | // ============================================================ |
| | | |
| | | $opo-fallback: #0E768F; |
| | | |
| | | // ---------- æé® ---------- |
| | | .el-button--primary { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | color: #fff; |
| | | |
| | | &:hover, |
| | | &:focus { |
| | | background-color: var(--opo-primary-hover, #{$opo-fallback}); |
| | | border-color: var(--opo-primary-hover, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | &:active { |
| | | background-color: var(--opo-primary-active, #{$opo-fallback}); |
| | | border-color: var(--opo-primary-active, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | &.is-disabled, |
| | | &.is-disabled:hover, |
| | | &.is-disabled:focus, |
| | | &.is-disabled:active { |
| | | background-color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | border-color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | &.is-plain { |
| | | background-color: var(--opo-primary-light-9, #fff); |
| | | border-color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | |
| | | &:hover, |
| | | &:focus, |
| | | &:active { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-button--text { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | |
| | | &:hover, |
| | | &:focus { |
| | | color: var(--opo-primary-hover, #{$opo-fallback}); |
| | | } |
| | | |
| | | &.is-disabled, |
| | | &.is-disabled:hover { |
| | | color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | } |
| | | } |
| | | |
| | | // é»è®¤æé® hover æ¶éåºåçè²ï¼åæ¥æ¯ä¸çç°ï¼ |
| | | .el-button--default:hover, |
| | | .el-button--default:focus { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | background-color: var(--opo-primary-light-9, #fff); |
| | | } |
| | | |
| | | // ---------- 龿¥ ---------- |
| | | .el-link.el-link--primary { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | |
| | | &:hover { |
| | | color: var(--opo-primary-light-3, #{$opo-fallback}); |
| | | } |
| | | } |
| | | |
| | | // ---------- è¾å
¥ç±» ---------- |
| | | .el-input__inner:focus, |
| | | .el-textarea__inner:focus, |
| | | .el-input__inner:hover { |
| | | border-color: var(--opo-primary-light-5, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-input__inner:focus, |
| | | .el-textarea__inner:focus { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-select .el-input.is-focus .el-input__inner, |
| | | .el-select .el-input__inner:focus { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-select-dropdown__item.selected { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .el-input-number__decrease:hover, |
| | | .el-input-number__increase:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- åé / å¤é ---------- |
| | | .el-radio__input.is-checked .el-radio__inner, |
| | | .el-checkbox__input.is-checked .el-checkbox__inner, |
| | | .el-checkbox__input.is-indeterminate .el-checkbox__inner { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-radio__input.is-checked + .el-radio__label, |
| | | .el-checkbox__input.is-checked + .el-checkbox__label { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-radio-button__orig-radio:checked + .el-radio-button__inner, |
| | | .el-checkbox-button__orig-radio:checked + .el-checkbox-button__inner { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | box-shadow: -1px 0 0 0 var(--opo-primary, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | // ---------- å¼å
³ ---------- |
| | | .el-switch.is-checked .el-switch__core { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- Tabs ---------- |
| | | .el-tabs__item.is-active, |
| | | .el-tabs__item:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-tabs__active-bar { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | border-bottom-color: transparent; |
| | | } |
| | | |
| | | // ---------- å页 ---------- |
| | | .el-pager li.active, |
| | | .el-pager li:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-pagination.is-background .el-pager li:not(.disabled).active { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | .el-pagination button:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- è¡¨æ ¼ ---------- |
| | | .el-table .ascending .sort-caret.ascending { |
| | | border-bottom-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-table .descending .sort-caret.descending { |
| | | border-top-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-table__body tr.current-row > td { |
| | | background-color: var(--opo-primary-light-9, #fff) !important; |
| | | } |
| | | |
| | | .el-table--enable-row-hover .el-table__body tr:hover > td { |
| | | background-color: var(--opo-primary-light-95, #f5f9fd) !important; |
| | | } |
| | | |
| | | // ---------- æ¥éª¤æ¡ ---------- |
| | | .el-step__head.is-process { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-step__title.is-process { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .el-step__head.is-finish { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-step__title.is-finish { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- æ¥æ / æ¶é´ ---------- |
| | | .el-date-table td.today span { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | font-weight: 700; |
| | | } |
| | | |
| | | .el-date-table td.current:not(.disabled) span { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | color: #fff; |
| | | } |
| | | |
| | | .el-date-table td.available:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-date-picker__header-label.active, |
| | | .el-date-picker__header-label:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- 䏿 / å¼¹åºèåï¼åªä½ç¨äºå¼¹åºå±ï¼é¿å
影忷±è²ä¾§è¾¹æ ï¼ ---------- |
| | | .el-dropdown-menu__item:not(.is-disabled):hover, |
| | | .el-dropdown-menu__item:focus { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | background-color: var(--opo-primary-light-9, #fff); |
| | | } |
| | | |
| | | .el-menu--popup .el-menu-item.is-active, |
| | | .el-menu--popup .el-menu-item:hover { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- 级è ---------- |
| | | .el-cascader .el-input.is-focus .el-input__inner { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-cascader-node.in-active-path, |
| | | .el-cascader-node.is-active { |
| | | color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- å è½½ / è¿åº¦ ---------- |
| | | .el-loading-spinner .path { |
| | | stroke: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-progress-bar__inner { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | // ---------- æ»å ---------- |
| | | .el-slider__bar { |
| | | background-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| | | |
| | | .el-slider__button { |
| | | border-color: var(--opo-primary, #{$opo-fallback}); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /* ============================================================ |
| | | * 设计令ç · CSS èªå®ä¹å±æ§ |
| | | * è¿è¡æ¶æ¢è¤åªéæ¹å¨ --opo-primary åå
¶æ´¾çè²é¶ï¼ç± utils/theme.js 注å
¥ï¼ |
| | | * è¿éç弿¯"åçé"é»è®¤å¼ï¼JS 注å
¥ç inline style ä¼è¦ç :root |
| | | * ============================================================ */ |
| | | :root { |
| | | /* åçè²ï¼é»è®¤ï¼OPO_Logo åç¯éï¼ */ |
| | | --opo-primary: #0E768F; |
| | | --opo-primary-hover: #0D6A81; |
| | | --opo-primary-active: #0B5E72; |
| | | --opo-primary-light-3: #569FB1; |
| | | --opo-primary-light-5: #87BBC7; |
| | | --opo-primary-light-7: #B7D6DD; |
| | | --opo-primary-light-8: #CFE4E9; |
| | | --opo-primary-light-9: #E7F1F4; |
| | | --opo-primary-light-95: #F3F8F9; |
| | | --opo-primary-dark-2: #0B5E72; |
| | | |
| | | /* è¯ä¹è² */ |
| | | --opo-success: #67C23A; |
| | | --opo-success-light: #F0F9EB; |
| | | --opo-warning: #E6A23C; |
| | | --opo-warning-light: #FDF6EC; |
| | | --opo-danger: #CD1D4E; |
| | | --opo-danger-light: #FBEBEF; |
| | | --opo-info: #909399; |
| | | --opo-info-light: #F4F4F5; |
| | | |
| | | /* 䏿§è² */ |
| | | --opo-text-primary: #1F2937; |
| | | --opo-text-regular: #4B5563; |
| | | --opo-text-secondary: #6B7280; |
| | | --opo-text-placeholder: #9CA3AF; |
| | | --opo-border-base: #E5E7EB; |
| | | --opo-border-light: #F0F2F5; |
| | | --opo-border-lighter: #F5F7FA; |
| | | --opo-bg-page: #F5F7FA; |
| | | --opo-bg-card: #FFFFFF; |
| | | --opo-bg-hover: #F5F9FD; |
| | | --opo-bg-stripe: #FAFBFC; |
| | | --opo-bg-thead: #F5F7FA; |
| | | |
| | | /* è¡¨æ ¼æ¡çº¿ï¼æ¯éç¨è¾¹æ¡æ´æ·±ï¼ */ |
| | | --opo-table-border: #C8CFD8; |
| | | --opo-table-border-strong: #B7C0CC; |
| | | |
| | | /* ä¾§è¾¹æ */ |
| | | --opo-sidebar-bg: #0A4655; |
| | | --opo-sidebar-sub-bg: #083B47; |
| | | --opo-sidebar-hover: rgba(14, 118, 143, 0.28); |
| | | --opo-sidebar-text: rgba(255, 255, 255, 0.72); |
| | | --opo-sidebar-text-active: #FFFFFF; |
| | | |
| | | /* åå·ï¼2026-10-22 æ´ä½ä¸è°ä¸å·ï¼æ£æ 14â16ï¼ */ |
| | | --opo-font-size-display: 34px; |
| | | --opo-font-size-h1: 26px; |
| | | --opo-font-size-h2: 20px; |
| | | --opo-font-size-lg: 18px; |
| | | --opo-font-size-base: 16px; |
| | | --opo-font-size-sm: 14px; |
| | | --opo-font-size-xs: 13px; |
| | | --opo-font-size-menu: 16px; |
| | | |
| | | /* åä½ï¼ä¸è¦ç¨ -apple-system æå¤´ï¼Windows ä¸ä¼åæ Segoe UIï¼æ°åæ¾å°ï¼ */ |
| | | --opo-font-family-base: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é
é»", |
| | | "Helvetica Neue", Arial, sans-serif; |
| | | --opo-font-family-number: "DIN Alternate", "SF Mono", "Roboto Mono", Consolas, "Courier New", monospace; |
| | | |
| | | /* é´è· */ |
| | | --opo-space-1: 4px; |
| | | --opo-space-2: 8px; |
| | | --opo-space-3: 12px; |
| | | --opo-space-4: 16px; |
| | | --opo-space-5: 24px; |
| | | --opo-space-6: 32px; |
| | | |
| | | /* åè§ */ |
| | | --opo-radius-sm: 2px; |
| | | --opo-radius-base: 4px; |
| | | --opo-radius-lg: 8px; |
| | | --opo-radius-pill: 999px; |
| | | |
| | | /* é´å½± */ |
| | | --opo-shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06); |
| | | --opo-shadow-md: 0 4px 12px rgba(16, 24, 40, 0.08); |
| | | --opo-shadow-lg: 0 12px 32px rgba(16, 24, 40, 0.12); |
| | | |
| | | /* æ§ä»¶é«åº¦ */ |
| | | --opo-control-height-small: 32px; |
| | | --opo-control-height-base: 36px; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // ============================================================ |
| | | // 设计令çï¼Design Tokensï¼Â· SCSS åé |
| | | // åçè²åèª src/assets/logo/OPO_Logo.png åç¯é #0E768F |
| | | // 说æè§ï¼æ¹æ¡-å端çé¢è§è§ä¼åæ¹æ¡.md |
| | | // 约å®ï¼ä¸å¡æ ·å¼ä¸å¾å¼ç¨è¿éçåéï¼ç¦æ¢åå裸è²å¼ |
| | | // ============================================================ |
| | | |
| | | // ---------- åçè²ï¼éï¼ ---------- |
| | | $opo-primary: #0E768F; |
| | | $opo-primary-hover: #0D6A81; |
| | | $opo-primary-active: #0B5E72; |
| | | $opo-primary-light-3: #569FB1; |
| | | $opo-primary-light-5: #87BBC7; |
| | | $opo-primary-light-7: #B7D6DD; |
| | | $opo-primary-light-8: #CFE4E9; |
| | | $opo-primary-light-9: #E7F1F4; |
| | | $opo-primary-light-95: #F3F8F9; |
| | | $opo-primary-dark-2: #0B5E72; |
| | | |
| | | // ---------- è¯ä¹è² ---------- |
| | | $opo-success: #67C23A; |
| | | $opo-success-light: #F0F9EB; |
| | | $opo-warning: #E6A23C; |
| | | $opo-warning-light: #FDF6EC; |
| | | $opo-danger: #CD1D4E; |
| | | $opo-danger-light: #FBEBEF; |
| | | $opo-info: #909399; |
| | | $opo-info-light: #F4F4F5; |
| | | |
| | | // ---------- 䏿§è² ---------- |
| | | $opo-text-primary: #1F2937; |
| | | $opo-text-regular: #4B5563; |
| | | $opo-text-secondary: #6B7280; |
| | | $opo-text-placeholder: #9CA3AF; |
| | | $opo-border-base: #E5E7EB; |
| | | $opo-border-light: #F0F2F5; |
| | | $opo-border-lighter: #F5F7FA; |
| | | $opo-bg-page: #F5F7FA; |
| | | $opo-bg-card: #FFFFFF; |
| | | $opo-bg-hover: #F5F9FD; |
| | | $opo-bg-stripe: #FAFBFC; |
| | | $opo-bg-thead: #F5F7FA; |
| | | |
| | | // ---------- è¡¨æ ¼æ¡çº¿ï¼æ¯éç¨è¾¹æ¡æ´æ·±ï¼ä¾¿äºçæ¸
åå/åè¡ï¼ ---------- |
| | | $opo-table-border: #C8CFD8; |
| | | $opo-table-border-strong: #B7C0CC; |
| | | |
| | | // ---------- ä¾§è¾¹æ ï¼ä¸åçéåæï¼ ---------- |
| | | $opo-sidebar-bg: #0A4655; |
| | | $opo-sidebar-sub-bg: #083B47; |
| | | $opo-sidebar-hover: rgba(14, 118, 143, 0.28); |
| | | $opo-sidebar-text: rgba(255, 255, 255, 0.72); |
| | | $opo-sidebar-text-active: #FFFFFF; |
| | | |
| | | // ---------- åå·ï¼2026-10-22 æ´ä½ä¸è°ä¸å·ï¼æ£æ 14â16ï¼ ---------- |
| | | $opo-font-size-display: 34px; |
| | | $opo-font-size-h1: 26px; |
| | | $opo-font-size-h2: 20px; |
| | | $opo-font-size-lg: 18px; |
| | | $opo-font-size-base: 16px; |
| | | $opo-font-size-sm: 14px; |
| | | $opo-font-size-xs: 13px; |
| | | $opo-font-size-menu: 16px; // ä¾§è¾¹æ èåï¼2026-10-22 ç± 18px åè°ä¸å·ï¼ |
| | | |
| | | // ---------- è¡é« ---------- |
| | | $opo-line-height-base: 22px; |
| | | $opo-line-height-heading: 1.3; |
| | | |
| | | // ---------- åä½ ---------- |
| | | // 注æï¼ä¸è¦ç¨ -apple-system / BlinkMacSystemFont æå¤´ââWindows ä¸ Chrome ä¼è§£ææ Segoe UIï¼ |
| | | // å¯¼è´æ°å/è±æèµ° Segoe UIï¼æ¯ä¸æç»ãæ¾å°ï¼ï¼ä¸æåé微软é
é»ï¼åä¸è¡éåå·è§æä¸ä¸è´ã |
| | | // è¿éæ"平尿åç¨ã没æåéå°å¾®è½¯é
é»"ç顺åºï¼ä¿è¯ä¸è±æåæã |
| | | $opo-font-family-base: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é
é»", |
| | | "Helvetica Neue", Arial, sans-serif; |
| | | $opo-font-family-number: "DIN Alternate", "SF Mono", "Roboto Mono", Consolas, "Courier New", monospace; |
| | | |
| | | // ---------- é´è·ï¼8 ç¹æ
æ ¼ï¼ ---------- |
| | | $opo-space-1: 4px; |
| | | $opo-space-2: 8px; |
| | | $opo-space-3: 12px; |
| | | $opo-space-4: 16px; |
| | | $opo-space-5: 24px; |
| | | $opo-space-6: 32px; |
| | | |
| | | // ---------- åè§ ---------- |
| | | $opo-radius-sm: 2px; |
| | | $opo-radius-base: 4px; |
| | | $opo-radius-lg: 8px; |
| | | $opo-radius-pill: 999px; |
| | | |
| | | // ---------- é´å½± ---------- |
| | | $opo-shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06); |
| | | $opo-shadow-md: 0 4px 12px rgba(16, 24, 40, 0.08); |
| | | $opo-shadow-lg: 0 12px 32px rgba(16, 24, 40, 0.12); |
| | | |
| | | // ---------- æ§ä»¶é«åº¦ ---------- |
| | | $opo-control-height-small: 32px; |
| | | $opo-control-height-base: 36px; |
| | |
| | | // 设计令çï¼é¢è²/åå·/é´è·/åè§/é´å½±/åä½çå¯ä¸æ¥æºï¼ |
| | | @import './tokens.scss'; |
| | | |
| | | // base color |
| | | $blue:#324157; |
| | | $light-blue:#3A71A8; |
| | |
| | | |
| | | // é»è®¤èå主é¢é£æ ¼ |
| | | //èååä½é¢è² |
| | | $base-menu-color:#fff; |
| | | $base-menu-color:$opo-sidebar-text; |
| | | //éå®ååè¡¨æ¶æå¨å表çåä½é¢è² |
| | | // f4f4f5 |
| | | $base-menu-color-active:#fff; |
| | | //æ´ä½èæ¯é¢è²#0187B1 |
| | | $base-menu-background:#394d74; |
| | | $base-menu-color-active:$opo-sidebar-text-active; |
| | | //æ´ä½èæ¯é¢è²ï¼ä¸åçéåæçæ·±éï¼ |
| | | $base-menu-background:$opo-sidebar-bg; |
| | | //æ é¢åä½é¢è² |
| | | $base-logo-title-color: #ffffff; |
| | | // |
| | | $base-menu-light-color:rgba(0,0,0,.70); |
| | | $base-menu-light-background:#ffffff; |
| | | $base-logo-light-title-color: #001529; |
| | | //åè¡¨èæ¯é¢è²1f2d3d |
| | | $base-sub-menu-background:#394d74; |
| | | // |
| | | $base-sub-menu-hover:#a76ac3; |
| | | //åè¡¨èæ¯é¢è² |
| | | $base-sub-menu-background:$opo-sidebar-sub-bg; |
| | | //åè忬åè²ï¼åæ¥æ¯æ å
³èçç´«è² #a76ac3ï¼ |
| | | $base-sub-menu-hover:$opo-sidebar-hover; |
| | | |
| | | // èªå®ä¹æè²èå飿 ¼ |
| | | /** |
| | |
| | | $base-sub-menu-hover:#001528; |
| | | */ |
| | | |
| | | $base-sidebar-width: 200px; |
| | | $base-sidebar-width: 220px; |
| | | |
| | | // the :export directive is the magic sauce for webpack |
| | | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass |
| | |
| | | <template> |
| | | <el-color-picker |
| | | v-model="theme" |
| | | :predefine="['#409EFF', '#1890ff', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d', ]" |
| | | :predefine="['#0E768F', '#CD1D4E', '#409EFF', '#1B8E70', '#7B61FF', '#E6843C', '#304156', '#212121']" |
| | | class="theme-picker" |
| | | popper-class="theme-picker-dropdown" |
| | | /> |
| | |
| | | |
| | | methods: { |
| | | async setTheme(val) { |
| | | const oldVal = this.chalk ? this.theme : ORIGINAL_THEME |
| | | if (typeof val !== 'string') return |
| | | // å
éç¥å¤å±ï¼ä¸»é¢è²ç± CSS åéå±ï¼utils/theme.jsï¼ç«å³çæã |
| | | // 忥çå®ç°è¦ç CDN æå theme-chalk å®æåæ emitï¼å
ç½æä¸å° unpkg |
| | | // æ¶ Promise æ°¸ä¸ resolveï¼å¯¼è´"æ¹ä¸»é¢æ²¡æä»»ä½ååº"ã |
| | | this.$emit('change', val) |
| | | const oldVal = this.chalk ? this.theme : ORIGINAL_THEME |
| | | const themeCluster = this.getThemeCluster(val.replace('#', '')) |
| | | const originalCluster = this.getThemeCluster(oldVal.replace('#', '')) |
| | | |
| | |
| | | if (typeof innerText !== 'string') return |
| | | style.innerText = this.updateStyle(innerText, originalCluster, themeCluster) |
| | | }) |
| | | |
| | | this.$emit('change', val) |
| | | }, |
| | | |
| | | updateStyle(style, oldCluster, newCluster) { |
| | |
| | | getCSSString(url, variable) { |
| | | return new Promise(resolve => { |
| | | const xhr = new XMLHttpRequest() |
| | | const done = () => resolve() |
| | | xhr.onreadystatechange = () => { |
| | | if (xhr.readyState === 4 && xhr.status === 200) { |
| | | if (xhr.readyState === 4) { |
| | | if (xhr.status === 200) { |
| | | this[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '') |
| | | } |
| | | resolve() |
| | | } |
| | | } |
| | | // å
ç½/æ å¤ç½æ¶å¿«é失败ï¼é¿å
Promise æ¬æå¯¼è´æ¢è¤å¡ä½ |
| | | xhr.onerror = done |
| | | xhr.ontimeout = done |
| | | xhr.timeout = 4000 |
| | | xhr.open('GET', url) |
| | | xhr.send() |
| | | }) |
| | |
| | | <span>主é¢é¢è²</span> |
| | | <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" /> |
| | | </div> |
| | | |
| | | <div class="drawer-item"> |
| | | <span>é¢è®¾ç®è¤</span> |
| | | <div class="opo-preset-list"> |
| | | <span |
| | | v-for="p in presets" |
| | | :key="p.color" |
| | | class="opo-preset-item" |
| | | :class="{ 'is-active': isCurrent(p.color) }" |
| | | :style="{ backgroundColor: p.color }" |
| | | :title="p.name" |
| | | @click="themeChange(p.color)" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <el-divider/> |
| | |
| | | |
| | | <script> |
| | | import ThemePicker from '@/components/ThemePicker' |
| | | import { PRESETS, applyTheme, setStoredTheme } from '@/utils/theme' |
| | | |
| | | export default { |
| | | components: { ThemePicker }, |
| | | data() { |
| | | return { |
| | | theme: this.$store.state.settings.theme, |
| | | sideTheme: this.$store.state.settings.sideTheme |
| | | sideTheme: this.$store.state.settings.sideTheme, |
| | | presets: PRESETS |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | }, |
| | | }, |
| | | methods: { |
| | | isCurrent(color) { |
| | | return !!this.theme && String(this.theme).toUpperCase() === String(color).toUpperCase(); |
| | | }, |
| | | themeChange(val) { |
| | | this.$store.dispatch('settings/changeSetting', { |
| | | key: 'theme', |
| | | value: val |
| | | }) |
| | | this.theme = val; |
| | | // ç«å³çæå¹¶è®°ä½ï¼ä¸ä¾èµ ThemePicker ä» CDN æå theme-chalk |
| | | applyTheme(val); |
| | | setStoredTheme(val); |
| | | }, |
| | | handleTheme(val) { |
| | | this.$store.dispatch('settings/changeSetting', { |
| | |
| | | .drawer-switch { |
| | | float: right |
| | | } |
| | | |
| | | // é¢è®¾ç®è¤è²å |
| | | .opo-preset-list { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | .opo-preset-item { |
| | | display: inline-block; |
| | | width: 22px; |
| | | height: 22px; |
| | | margin-right: 10px; |
| | | border-radius: 4px; |
| | | cursor: pointer; |
| | | border: 2px solid transparent; |
| | | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); |
| | | |
| | | &.is-active { |
| | | border-color: #1F2937; |
| | | box-shadow: 0 0 0 2px rgba(31, 41, 55, 0.18); |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}"> |
| | | <div :class="classObj" class="app-wrapper"> |
| | | <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/> |
| | | <sidebar class="sidebar-container"/> |
| | | <div :class="{hasTagsView:needTagsView}" class="main-container"> |
| | |
| | | import ResizeMixin from './mixin/ResizeHandler' |
| | | import { mapState } from 'vuex' |
| | | import variables from '@/assets/styles/variables.scss' |
| | | import { applyTheme, setStoredTheme } from '@/utils/theme' |
| | | |
| | | export default { |
| | | name: 'Layout', |
| | |
| | | return variables; |
| | | } |
| | | }, |
| | | created() { |
| | | // è¿å
¥ Layout æ¶åºç¨å½å主é¢è²ï¼å¹¶è®°ä½éæ©ï¼ |
| | | this.applyCurrentTheme() |
| | | }, |
| | | watch: { |
| | | theme(val) { |
| | | this.applyCurrentTheme() |
| | | setStoredTheme(val) |
| | | } |
| | | }, |
| | | methods: { |
| | | applyCurrentTheme() { |
| | | applyTheme(this.theme) |
| | | }, |
| | | handleClickOutside() { |
| | | this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) |
| | | } |
| | |
| | | import Cookies from 'js-cookie' |
| | | |
| | | import Element from 'element-ui' |
| | | import '@/assets/styles/tokens.css' // 设计令çï¼CSS åéï¼ä¾è¿è¡æ¶æ¢è¤ï¼ |
| | | import './assets/styles/element-variables.scss' |
| | | |
| | | import '@/assets/styles/index.scss' // global css |
| | | import '@/assets/styles/ruoyi.scss' // ruoyi css |
| | | // è¿è¡æ¶ä¸»é¢å± + ç»ä»¶é»è®¤å¤è§ï¼å¿
é¡»æäº element-ui ä¸ ruoyi.scssï¼å¦åè¦çä¸çæ |
| | | import '@/assets/styles/theme-runtime.scss' |
| | | import '@/assets/styles/element-override.scss' |
| | | import App from './App' |
| | | import store from './store' |
| | | import router from './router' |
| | |
| | | import { getConfigKey } from "@/api/system/config"; |
| | | import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; |
| | | import dataV from '@jiaminghi/data-view';//dataV |
| | | // 主é¢è²è¿è¡æ¶ï¼CSS åéæ³¨å
¥ï¼ |
| | | import { applyTheme, getStoredTheme, DEFAULT_PRIMARY } from '@/utils/theme' |
| | | // å页ç»ä»¶ |
| | | import Pagination from "@/components/Pagination"; |
| | | // èªå®ä¹è¡¨æ ¼å·¥å
·ç»ä»¶ |
| | |
| | | */ |
| | | |
| | | Vue.use(Element, { |
| | | size: Cookies.get('size') || 'medium' // set element-ui default size |
| | | size: Cookies.get('size') || 'small' // set element-ui default sizeï¼å mediumï¼æ¹ä¸º small æåä¿¡æ¯å¯åº¦ï¼ |
| | | }) |
| | | |
| | | // å¯å¨å³åºç¨å·²ä¿åç主é¢è²ï¼ç»å½é¡µçä¸ä½¿ç¨ Layout ç页é¢ä¹è½çæï¼ |
| | | applyTheme(getStoredTheme() || DEFAULT_PRIMARY) |
| | | |
| | | Vue.config.productionTip = false |
| | | |
| | | new Vue({ |
| | |
| | | sideTheme: 'theme-dark', |
| | | |
| | | /** |
| | | * æ¯å¦ç³»ç»å¸å±é
ç½® |
| | | * æ¯å¦ç³»ç»å¸å±é
ç½®ï¼å³ä¸è§é½¿è½®é¢æ¿ï¼ |
| | | * å为 falseï¼å¯¼è´"主é¢é¢è² / é¢è®¾ç®è¤"å
¥å£å¯¹ç¨æ·ä¸å¯è§ â æ¹ä¸º true |
| | | */ |
| | | showSettings: false, |
| | | showSettings: true, |
| | | |
| | | /** |
| | | * æ¯å¦æ¾ç¤ºé¡¶é¨å¯¼èª |
| | |
| | | * The default is only used in the production env |
| | | * If you want to also use it in dev, you can pass ['production', 'development'] |
| | | */ |
| | | errorLog: 'production', |
| | | // vscodeé»è®¤å¯ç¨äºæ ¹æ®æä»¶ç±»åèªå¨è®¾ç½®tabsizeçé项 |
| | | |
| | | "editor.detectIndentation": false, |
| | | |
| | | // éæ°è®¾å®tabsize |
| | | |
| | | "editor.tabSize": 2, |
| | | |
| | | // #æ¯æ¬¡ä¿åçæ¶åèªå¨æ ¼å¼å |
| | | |
| | | "editor.formatOnSave": true, |
| | | |
| | | // #æ¯æ¬¡ä¿åçæ¶åå°ä»£ç æeslintæ ¼å¼è¿è¡ä¿®å¤ |
| | | |
| | | "eslint.autoFixOnSave": true, |
| | | |
| | | "tslint.autoFixOnSave": true, |
| | | |
| | | // æ·»å vue æ¯æ |
| | | |
| | | "eslint.validate": [ |
| | | |
| | | "javascript", |
| | | |
| | | "javascriptreact", |
| | | |
| | | { |
| | | |
| | | "language": "vue", |
| | | |
| | | "autoFix": true |
| | | |
| | | errorLog: 'production' |
| | | } |
| | | |
| | | ], |
| | | |
| | | // #廿代ç ç»å°¾çåå· |
| | | |
| | | "prettier.semi": true, |
| | | |
| | | // #使ç¨å¸¦å¼å·æ¿ä»£åå¼å· |
| | | |
| | | "prettier.singleQuote": true, |
| | | |
| | | // #è®©å½æ°(å)ååé¢çæ¬å·ä¹é´å ä¸ªç©ºæ ¼ |
| | | |
| | | "javascript.format.insertSpaceBeforeFunctionParenthesis": true, |
| | | |
| | | // #è¿ä¸ªæç¨æ·èªèº«ä¹ æ¯éæ© |
| | | |
| | | "vetur.format.defaultFormatter.html": "js-beautify-html", |
| | | |
| | | // #让vueä¸çjsæç¼è¾å¨èªå¸¦çtsæ ¼å¼è¿è¡æ ¼å¼å |
| | | |
| | | "vetur.format.defaultFormatter.js": "vscode-typescript", |
| | | |
| | | "vetur.format.defaultFormatterOptions": { |
| | | |
| | | "js-beautify-html": { |
| | | |
| | | "wrap_attributes": "force-aligned" |
| | | |
| | | // #vueç»ä»¶ä¸htmlä»£ç æ ¼å¼åæ ·å¼ |
| | | |
| | | } |
| | | |
| | | }, |
| | | |
| | | // æ ¼å¼åstylus, éå®è£
Manta's Stylus Supremacyæä»¶ |
| | | |
| | | "stylusSupremacy.insertColons": false, // æ¯å¦æå
¥åå· |
| | | |
| | | "stylusSupremacy.insertSemicolons": false, // æ¯å¦æå
¥å好 |
| | | |
| | | "stylusSupremacy.insertBraces": false, // æ¯å¦æå
¥å¤§æ¬å· |
| | | |
| | | "stylusSupremacy.insertNewLineAroundImports": false, // importä¹åæ¯å¦æ¢è¡ |
| | | |
| | | "stylusSupremacy.insertNewLineAroundBlocks": false, |
| | | |
| | | "javascript.format.insertSpaceAfterConstructor": true // ä¸¤ä¸ªéæ©å¨ä¸æ¯å¦æ¢è¡ |
| | | } |
| | | |
| | |
| | | import defaultSettings from '@/settings' |
| | | import { DEFAULT_PRIMARY, getStoredTheme } from '@/utils/theme' |
| | | |
| | | const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings |
| | | |
| | | const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' |
| | | const state = { |
| | | title: '', |
| | | theme: storageSetting.theme || '#409EFF', |
| | | theme: storageSetting.theme || getStoredTheme() || DEFAULT_PRIMARY, |
| | | sideTheme: storageSetting.sideTheme || sideTheme, |
| | | showSettings: showSettings, |
| | | topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav, |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * 主é¢è²è¿è¡æ¶è®¡ç®ä¸åºç¨ |
| | | * --------------------------------------------------------------- |
| | | * èæ¯ï¼Element UI 2.x ç主é¢è²æ¯ SCSS ç¼è¯æå¸¸éï¼è¿è¡æ¶æ æ³æ¹å¨ï¼ |
| | | * åæ ThemePicker ä¾èµ unpkg CDN æå theme-chalk ååç¬¦ä¸²æ¿æ¢ï¼ |
| | | * å
ç½ç¯å¢æä¸å° CSSï¼å¯¼è´"æ¹ä¸»é¢æ²¡ååº"ã |
| | | * åæ³ï¼ç±ä»»æä¸»è²æ¨åºä¸å¥è²é¶ï¼hover / active / light-3~95ï¼ï¼ |
| | | * åå
¥ :root ç CSS åéï¼theme-runtime.scss ç¨ var() æ¶è´¹è¿äºåéï¼ |
| | | * ä»èå®ç°"䏿¬¡ç¼è¯ãè¿è¡æ¶æ¢è¤ã页é¢ä¸å·æ°"ã |
| | | */ |
| | | |
| | | /** é»è®¤ä¸»è²ï¼OPO_Logo.png åç¯é */ |
| | | export const DEFAULT_PRIMARY = '#0E768F' |
| | | |
| | | /** localStorage é®ï¼ä¸å¸å±è®¾ç½®åå¼ï¼é¿å
äºç¸è¦çï¼ */ |
| | | const STORAGE_KEY = 'opo-theme' |
| | | |
| | | /** é¢è®¾ç®è¤ */ |
| | | export const PRESETS = [ |
| | | { name: 'åçé', color: '#0E768F' }, |
| | | { name: 'ç«çº¢', color: '#CD1D4E' }, |
| | | { name: 'Element è', color: '#409EFF' }, |
| | | { name: 'å¶è½ç»¿', color: '#1B8E70' }, |
| | | { name: 'ç´«', color: '#7B61FF' }, |
| | | { name: 'æ©', color: '#E6843C' } |
| | | ] |
| | | |
| | | const WHITE = [255, 255, 255] |
| | | const BLACK = [0, 0, 0] |
| | | |
| | | function clamp(v) { |
| | | return Math.max(0, Math.min(255, Math.round(v))) |
| | | } |
| | | |
| | | /** #abc / #aabbcc â [r,g,b]ï¼éæ³è¿å null */ |
| | | export function hexToRgb(hex) { |
| | | if (typeof hex !== 'string') return null |
| | | let h = hex.trim().replace(/^#/, '') |
| | | if (h.length === 3) { |
| | | h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2] |
| | | } |
| | | if (!/^[0-9a-fA-F]{6}$/.test(h)) return null |
| | | return [parseInt(h.slice(0, 2), 16), parseInt(h.slice(2, 4), 16), parseInt(h.slice(4, 6), 16)] |
| | | } |
| | | |
| | | /** [r,g,b] â #RRGGBB */ |
| | | export function rgbToHex(rgb) { |
| | | return ( |
| | | '#' + |
| | | rgb |
| | | .map(function (v) { |
| | | const s = clamp(v).toString(16) |
| | | return s.length === 1 ? '0' + s : s |
| | | }) |
| | | .join('') |
| | | .toUpperCase() |
| | | ) |
| | | } |
| | | |
| | | /** |
| | | * æ··è²ï¼weight ä¸ºç®æ è²å æ¯ï¼0~1ï¼ |
| | | * mix([14,118,143], WHITE, 0.3) â 30% ç½ + 70% ä¸»è² |
| | | */ |
| | | export function mix(rgb, target, weight) { |
| | | const w = Math.max(0, Math.min(1, weight)) |
| | | return [ |
| | | clamp(rgb[0] * (1 - w) + target[0] * w), |
| | | clamp(rgb[1] * (1 - w) + target[1] * w), |
| | | clamp(rgb[2] * (1 - w) + target[2] * w) |
| | | ] |
| | | } |
| | | |
| | | function channelLum(v) { |
| | | const c = v / 255 |
| | | return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4) |
| | | } |
| | | |
| | | /** ç¸å¯¹äº®åº¦ï¼WCAGï¼ */ |
| | | export function luminance(rgb) { |
| | | return 0.2126 * channelLum(rgb[0]) + 0.7152 * channelLum(rgb[1]) + 0.0722 * channelLum(rgb[2]) |
| | | } |
| | | |
| | | /** ä¸ç½è²ç对æ¯åº¦ï¼ç¨äºå¤æç½åæ¯å¦å¯è¯» */ |
| | | export function contrastWithWhite(rgb) { |
| | | return 1.05 / (luminance(rgb) + 0.05) |
| | | } |
| | | |
| | | /** |
| | | * ç±ä¸»è²æ¨å
¨å¥è²é¶ |
| | | * æ·±è²ä¸»è²ï¼äº®åº¦ä½ï¼hover ç¨"å æ·±"ï¼æµ
è²ä¸»è² hover ç¨"åæµ
"ï¼ |
| | | * ä¿è¯ hover æçç½å对æ¯åº¦ä¸ä¼æä¸å»ã |
| | | */ |
| | | export function buildScale(primary) { |
| | | const base = hexToRgb(primary) || hexToRgb(DEFAULT_PRIMARY) |
| | | const isDark = luminance(base) < 0.4 |
| | | |
| | | const hover = isDark ? mix(base, BLACK, 0.1) : mix(base, WHITE, 0.2) |
| | | const active = isDark ? mix(base, BLACK, 0.2) : mix(base, WHITE, 0.32) |
| | | |
| | | return { |
| | | primary: rgbToHex(base), |
| | | hover: rgbToHex(hover), |
| | | active: rgbToHex(active), |
| | | light3: rgbToHex(mix(base, WHITE, 0.3)), |
| | | light5: rgbToHex(mix(base, WHITE, 0.5)), |
| | | light7: rgbToHex(mix(base, WHITE, 0.7)), |
| | | light8: rgbToHex(mix(base, WHITE, 0.8)), |
| | | light9: rgbToHex(mix(base, WHITE, 0.9)), |
| | | light95: rgbToHex(mix(base, WHITE, 0.95)), |
| | | dark2: rgbToHex(mix(base, BLACK, 0.2)), |
| | | isDark: isDark, |
| | | contrastWithWhite: Number(contrastWithWhite(base).toFixed(2)) |
| | | } |
| | | } |
| | | |
| | | /** æè²é¶åå
¥ :root ç CSS åéï¼theme-runtime.scss æ¶è´¹ï¼ */ |
| | | export function applyTheme(primary) { |
| | | const scale = buildScale(primary || DEFAULT_PRIMARY) |
| | | if (typeof document === 'undefined') return scale |
| | | |
| | | const root = document.documentElement |
| | | const map = { |
| | | '--opo-primary': scale.primary, |
| | | '--opo-primary-hover': scale.hover, |
| | | '--opo-primary-active': scale.active, |
| | | '--opo-primary-light-3': scale.light3, |
| | | '--opo-primary-light-5': scale.light5, |
| | | '--opo-primary-light-7': scale.light7, |
| | | '--opo-primary-light-8': scale.light8, |
| | | '--opo-primary-light-9': scale.light9, |
| | | '--opo-primary-light-95': scale.light95, |
| | | '--opo-primary-dark-2': scale.dark2 |
| | | } |
| | | Object.keys(map).forEach(function (k) { |
| | | root.style.setProperty(k, map[k]) |
| | | }) |
| | | // ä¾ä¸ªå«éè¦ç¥é"å½åæ¯å¦æ·±è²ä¸»è²"çåºæ¯ä½¿ç¨ |
| | | root.setAttribute('data-opo-dark-primary', scale.isDark ? '1' : '0') |
| | | return scale |
| | | } |
| | | |
| | | /** 读å䏿¬¡éæ©çä¸»è² */ |
| | | export function getStoredTheme() { |
| | | try { |
| | | return localStorage.getItem(STORAGE_KEY) |
| | | } catch (e) { |
| | | return null |
| | | } |
| | | } |
| | | |
| | | /** è®°ä½éæ© */ |
| | | export function setStoredTheme(color) { |
| | | try { |
| | | localStorage.setItem(STORAGE_KEY, color) |
| | | } catch (e) { |
| | | /* 忽ç¥éç§æ¨¡å¼çå¼å¸¸ */ |
| | | } |
| | | } |
| | | |
| | | export default { |
| | | DEFAULT_PRIMARY: DEFAULT_PRIMARY, |
| | | PRESETS: PRESETS, |
| | | applyTheme: applyTheme, |
| | | buildScale: buildScale, |
| | | getStoredTheme: getStoredTheme, |
| | | setStoredTheme: setStoredTheme, |
| | | hexToRgb: hexToRgb, |
| | | rgbToHex: rgbToHex, |
| | | mix: mix, |
| | | luminance: luminance, |
| | | contrastWithWhite: contrastWithWhite |
| | | } |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ä»»å¡åç§°" prop="jobName"> |
| | | <el-input |
| | | v-model="queryParams.jobName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ä»»å¡åç§°" prop="jobName"> |
| | | <el-input |
| | | v-model="queryParams.jobName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ç»å½å°å" prop="ipaddr"> |
| | | <el-input |
| | | v-model="queryParams.ipaddr" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> |
| | | <el-form-item label="ç»å½å°å" prop="ipaddr"> |
| | | <el-input |
| | | v-model="queryParams.ipaddr" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ç³»ç»æ¨¡å" prop="title"> |
| | | <el-input |
| | | v-model="queryParams.title" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | this.queryParams.reporterno = this.reportervalue; |
| | | } |
| | | |
| | | if (this.starttime != "") { |
| | | this.queryParams.starttime = this.starttime; |
| | | } else { |
| | | this.queryParams.starttime = ""; |
| | | } |
| | | if (this.endtime != "") { |
| | | this.queryParams.endtime = this.endtime; |
| | | } else { |
| | | this.queryParams.endtime = ""; |
| | | } |
| | | // æªéæ¶é´èå´æ¶ä¼ nullï¼ç©ºä¸²ä¼è®©å端æ¼åº `donatetime >= ''`ï¼ |
| | | // MySQL ä¸¥æ ¼æ¨¡å¼ä¼æ¥ Incorrect DATETIME value: ''ï¼è§ CHANGELOG 2026-10-22ï¼ |
| | | this.queryParams.starttime = this.starttime || null; |
| | | this.queryParams.endtime = this.endtime || null; |
| | | console.log(this.queryParams); |
| | | |
| | | listDonationProcess(this.queryParams).then(response => { |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="æ¶ç人å§å 家屿ä¸å®¶" prop="beneficiaryname"> |
| | | <el-input |
| | | v-model="queryParams.beneficiaryname" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="éä»¶ç¼å·" prop="annexno"> |
| | |
| | | <el-form |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | class="opo-query-form" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="70px" |
| | | > |
| | | <el-row :gutter="8"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-form-item label="æç®è
" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.name" |
| | | placeholder="请è¾å
¥å§å" |
| | | placeholder="请è¾å
¥æç®è
å§å" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <el-form-item label="æ¡ä¾æ¶é´"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="selecttime" |
| | | type="monthrange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æä»½" |
| | | end-placeholder="ç»ææä»½" |
| | | value-format="yyyy-MM-dd" |
| | | @change="getTimeList" |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¥å人"> |
| | | <el-select |
| | | v-model="queryParams.reporterno" |
| | | placeholder="è¯·éæ©æ¥å人" |
| | | > |
| | | </el-date-picker> |
| | | <el-option |
| | | v-for="item in reportlist" |
| | | :key="item.index" |
| | | :label="item.reportername" |
| | | :value="item.reporterno" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="8"> |
| | | <el-col :span="5"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æç®è¿åº¦" prop="workflow"> |
| | | <el-select |
| | | v-model="queryParams.workflow" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æ¥å人"> |
| | | <el-select |
| | | v-model="queryParams.reporterno" |
| | | placeholder="è¯·éæ©æ¥å人" |
| | | <el-col :span="9"> |
| | | <el-form-item label="æ¡ä¾æ¶é´"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="selecttime" |
| | | type="monthrange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æä»½" |
| | | end-placeholder="ç»ææä»½" |
| | | value-format="yyyy-MM-dd" |
| | | @change="getTimeList" |
| | | > |
| | | <el-option |
| | | v-for="item in reportlist" |
| | | :key="item.index" |
| | | :label="item.reportername" |
| | | :value="item.reporterno" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¯å¦ç»æ¢"> |
| | | <el-select |
| | | v-model="queryParams.terminationCase" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <el-form-item label="ç±è´¯"> |
| | | <div> |
| | | <li_area_select |
| | | ref="areaSelect" |
| | | v-model="searchAddress" |
| | | ></li_area_select> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <!-- æç´¢/éç½®ç´§è·æ¥è¯¢æ¡ä»¶ï¼ä¸"æ¡ä¾è¯ä¼°"页ä¸è´ï¼ --> |
| | | <el-col :span="6"> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | |
| | | label="æç®ç¼å·" |
| | | align="center" |
| | | prop="donorno" |
| | | width="200" |
| | | width="100" |
| | | /> |
| | | <el-table-column label="å§å" align="center" prop="name" width="100" /> |
| | | <el-table-column label="æ§å«" align="center" prop="sex" width="100"> |
| | |
| | | <el-table-column |
| | | label="å»çæºæ" |
| | | align="center" |
| | | prop="treatmenthospitalname" |
| | | prop="treatmenthospitalname" width="220" |
| | | /> |
| | | <el-table-column label="è¡å" align="center" prop="bloodtype" width="100"> |
| | | <el-table-column label="è¡å" align="center" prop="bloodtype" width="80"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_BloodType" |
| | |
| | | prop="reportername" |
| | | width="100" |
| | | /> |
| | | <!-- |
| | | |
| | | <el-table-column |
| | | label="ç°æå¨å°å¸" |
| | | align="center" |
| | |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | --> |
| | | |
| | | <el-table-column |
| | | label="æç®è¿åº¦" |
| | | align="center" |
| | |
| | | label="æä½" |
| | | align="center" |
| | | class-name="small-padding fixed-width" |
| | | fixed="right" |
| | | fixed="right" width="200" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | |
| | | this.queryParams.reportno = this.reportervalue; |
| | | } |
| | | |
| | | if (this.starttime != "") { |
| | | this.queryParams.starttime = this.starttime; |
| | | } else { |
| | | this.queryParams.starttime = ""; |
| | | } |
| | | if (this.endtime != "") { |
| | | this.queryParams.endtime = this.endtime; |
| | | } else { |
| | | this.queryParams.endtime = ""; |
| | | } |
| | | this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng(); |
| | | this.queryParams.residencecity = this.$refs.areaSelect.getShi(); |
| | | this.queryParams.residencetown = this.$refs.areaSelect.getQu(); |
| | | // æªéæ©æ¶é´èå´æ¶å¿
é¡»ä¼ nullï¼ä¼ 空串ä¼è®©å端æ¼åº `donatetime >= ''`ï¼ |
| | | // MySQL ä¸¥æ ¼æ¨¡å¼ä¼æ¥ Incorrect DATETIME value: ''ï¼å¯¼è´å表æ¥ä¸åºæ¥ã |
| | | // request.js åªä¼æ¼æ¥é null/undefined çåæ°ï¼æä»¥ null çäº"ä¸å¸¦è¯¥æ¡ä»¶"ã |
| | | this.queryParams.starttime = this.starttime || null; |
| | | this.queryParams.endtime = this.endtime || null; |
| | | // æ¥è¯¢æ¡ä»¶éç"ç±è´¯"已移é¤ï¼ä¸åä» areaSelect ç»ä»¶åå¼ï¼ |
| | | // 置空以æ¸
æå¯è½æ®ççæ§æ¡ä»¶ï¼åæ°ä¸º null æ¶ä¸ä¼è¢«æ¼è¿è¯·æ±ï¼ |
| | | this.queryParams.residenceprovince = null; |
| | | this.queryParams.residencecity = null; |
| | | this.queryParams.residencetown = null; |
| | | console.log(this.queryParams); |
| | | |
| | | listDonatebaseinfo(this.queryParams).then(response => { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* æ¥è¯¢åºè¡è·ã页é¢å
è¾¹è·ãå·¥å
·æ é´è·å·²æå为å
¨å±è§åï¼.opo-query-form / .app-containerï¼ï¼æ¤å¤ä¸ååç¬è¦ç */ |
| | | ::v-deep .el-dialog__header { |
| | | padding-top: 40px !important; |
| | | margin: auto !important; |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | // this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng(); |
| | | // this.queryParams.residencecity = this.$refs.areaSelect.getShi(); |
| | | // this.queryParams.residencetown = this.$refs.areaSelect.getQu(); |
| | | if (this.starttime != "") { |
| | | this.queryParams.starttime = this.starttime; |
| | | } else { |
| | | this.queryParams.starttime = ""; |
| | | } |
| | | if (this.endtime != "") { |
| | | this.queryParams.endtime = this.endtime; |
| | | } else { |
| | | this.queryParams.endtime = ""; |
| | | } |
| | | // æªéæ¶é´èå´æ¶ä¼ nullï¼ç©ºä¸²ä¼è®©å端æ¼åº `donatetime >= ''`ï¼ |
| | | // MySQL ä¸¥æ ¼æ¨¡å¼ä¼æ¥ Incorrect DATETIME value: ''ï¼è§ CHANGELOG 2026-10-22ï¼ |
| | | this.queryParams.starttime = this.starttime || null; |
| | | this.queryParams.endtime = this.endtime || null; |
| | | // this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng(); |
| | | // this.queryParams.residencecity = this.$refs.areaSelect.getShi(); |
| | | // this.queryParams.residencetown = this.$refs.areaSelect.getQu(); |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="å¨å®åç§°" prop="organno"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | // this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng(); |
| | | // this.queryParams.residencecity = this.$refs.areaSelect.getShi(); |
| | | // this.queryParams.residencetown = this.$refs.areaSelect.getQu(); |
| | | if (this.starttime != "") { |
| | | this.queryParams.starttime = this.starttime; |
| | | } else { |
| | | this.queryParams.starttime = ""; |
| | | } |
| | | if (this.endtime != "") { |
| | | this.queryParams.endtime = this.endtime; |
| | | } else { |
| | | this.queryParams.endtime = ""; |
| | | } |
| | | // æªéæ¶é´èå´æ¶ä¼ nullï¼ç©ºä¸²ä¼è®©å端æ¼åº `donatetime >= ''`ï¼ |
| | | // MySQL ä¸¥æ ¼æ¨¡å¼ä¼æ¥ Incorrect DATETIME value: ''ï¼è§ CHANGELOG 2026-10-22ï¼ |
| | | this.queryParams.starttime = this.starttime || null; |
| | | this.queryParams.endtime = this.endtime || null; |
| | | listDonatebaseinfo(this.queryParams).then((response) => { |
| | | console.log("getlist", response.rows); |
| | | this.donatebaseinfoList = response.rows; |
| | |
| | | <div class="left-course" :class="{ 'left-collapsed': isLeftCollapsed }"> |
| | | <div class="postfilx"> |
| | | <div class="title"> |
| | | å·¥ä½è¿ç¨ |
| | | æ¡ä¾è¿ç¨ |
| | | <el-button |
| | | class="collapse-btn" |
| | | @click="toggleLeftCollapse" |
| | |
| | | this.isLeftCollapsed = !this.isLeftCollapsed; |
| | | }, |
| | | /** ä¿å主表æé® */ |
| | | submitForm() { |
| | | submitForm(fromProcess) { |
| | | // ä¿åé²éï¼é"æµç¨æ¨è¿"触åçä¿åï¼2 ç§å
çéå¤ç¹å»ç´æ¥å¿½ç¥ï¼é²æ¢é夿å
¥ï¼ |
| | | if (!fromProcess && !this.canSave()) { |
| | | this.$modal.msgWarning("请å¿éå¤æäº¤"); |
| | | return; |
| | | } |
| | | this.$refs["form"].validate(valid => { |
| | | console.log("æäº¤çæ°æ®ä»¬ï¼", this.form); |
| | | if (valid) { |
| | |
| | | "YYYY-MM-DD HH:mm:ss" |
| | | ); |
| | | |
| | | this.form.diseasetype = this.form.diseasetype.join(","); |
| | | |
| | | this.form.infectious = this.form.infectious.join(","); |
| | | this.form.selfwill = this.form.selfwill.join(","); |
| | | this.form.othercases = this.form.othercases.join(","); |
| | | this.form.infosources = this.form.infosources.join(","); |
| | | this.form.kinship = this.form.kinship.join(","); |
| | | this.form.patientstate = this.form.patientstate.join(","); |
| | | // å¤éåæ®µè½¬å符串ï¼å¹çå¤çï¼å·²æ¯å符串æ¶ä¿æåæ ·ï¼ï¼ |
| | | // é¿å
"ä¿åæååæªéæ°å è½½åæ¬¡ä¿å"æ¶æ join is not a function |
| | | [ |
| | | "diseasetype", |
| | | "infectious", |
| | | "selfwill", |
| | | "othercases", |
| | | "infosources", |
| | | "kinship", |
| | | "patientstate" |
| | | ].forEach(key => { |
| | | if (Array.isArray(this.form[key])) { |
| | | this.form[key] = this.form[key].join(","); |
| | | } |
| | | }); |
| | | this.form.registerprovince = this.$refs.registerSelect.getSheng(); |
| | | this.form.registerprovincename = this.registerAddresss.sheng; |
| | | |
| | |
| | | }, |
| | | // ä¿åäºçº§è¡¨æé® |
| | | Savethedetails() { |
| | | // ä¿åé²éï¼2 ç§å
çéå¤ç¹å»ç´æ¥å¿½ç¥ï¼é²æ¢é夿å
¥ï¼ |
| | | if (!this.canSave()) { |
| | | this.$modal.msgWarning("请å¿éå¤æäº¤"); |
| | | return; |
| | | } |
| | | console.log(this.actives); |
| | | if (this.actives == 1) { |
| | | this.medicineform.infoid = this.infoid; |
| | |
| | | updateMedicalevaluation(this.medicineform).then(response => { |
| | | this.$modal.msgSuccess("å»å¦è¯ä¼°ä¿¡æ¯ä¿®æ¹æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } else { |
| | | addMedicalevaluation(this.medicineform).then(response => { |
| | | // å填主é®ï¼å¦å䏿¬¡ä¿åä»èµ°"æ°å¢"ï¼ä¼äº§çéå¤è¡ |
| | | if (response && response.data && response.data.id) { |
| | | this.medicineform.id = response.data.id; |
| | | } |
| | | this.$modal.msgSuccess("å»å¦è¯ä¼°ä¿¡æ¯æ°å¢æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } |
| | | this.Processvalidation(); |
| | | } |
| | | }); |
| | | } else if (this.actives == 2) { |
| | |
| | | updateRelativesconfirmation(this.affirmform).then(response => { |
| | | this.$modal.msgSuccess("æç®ç¡®è®¤ä¿¡æ¯ä¿®æ¹æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } else { |
| | | this.affirmform.residenceprovincename = this.defultAddresss.sheng; |
| | | this.affirmform.residencecityname = this.defultAddresss.shi; |
| | | this.affirmform.residencetownname = this.defultAddresss.qu; |
| | | addRelativesconfirmation(this.affirmform).then(response => { |
| | | // å填主é®ï¼å¦å䏿¬¡ä¿åä»èµ°"æ°å¢"ï¼ä¼äº§çéå¤è¡ |
| | | if (response && response.data && response.data.id) { |
| | | this.affirmform.id = response.data.id; |
| | | } |
| | | this.$modal.msgSuccess("æç®ç¡®è®¤ä¿¡æ¯æ°å¢æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } |
| | | this.Processvalidation(); |
| | | } |
| | | }); |
| | | } else if (this.actives == 3) { |
| | |
| | | updateEthicalreviewopinions(this.ethicform).then(res => { |
| | | this.$modal.msgSuccess("伦ç审æ¥ä¿¡æ¯ä¿®æ¹æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } else { |
| | | //addDonateflowchart(this.ethicform).then(response => { |
| | | addEthicalreviewopinions(this.ethicform).then(res => { |
| | | // å填主é®ï¼å¦å䏿¬¡ä¿åä»èµ°"æ°å¢"ï¼ä¼äº§çéå¤è¡ |
| | | if (res && res.data && res.data.id) { |
| | | this.ethicform.id = res.data.id; |
| | | } |
| | | this.$modal.msgSuccess("伦ç审æ¥ä¿¡æ¯æ°å¢æå"); |
| | | this.$modal.closeLoading(); |
| | | this.Processvalidation(); |
| | | }); |
| | | } |
| | | this.Processvalidation(); |
| | | } |
| | | }); |
| | | } else if (this.actives == 4) { |
| | |
| | | } |
| | | }); |
| | | saveDonateorgan(this.allocateddata).then(res => { |
| | | // å填主é®ï¼å端已æ"å䏿¡ä¾åä¸å¨å®"å upsertï¼åå¡«åå端ä¸ä¼å误å¤ä¸ºæ°å¢ |
| | | if (res && res.data && res.data.length === this.allocateddata.length) { |
| | | res.data.forEach((row, i) => { |
| | | this.allocateddata[i].id = row.id; |
| | | }); |
| | | } |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("å¨å®æç®åé
ä¿¡æ¯ä¿åæåï¼"); |
| | | this.$modal.closeLoading(); |
| | |
| | | }); |
| | | //ä¿åå¨å®è·åè¡¨æ°æ® |
| | | saveDonationwitnessorgan(this.procureddata).then(res => { |
| | | if (res == 200) { |
| | | if (res && res.data && res.data.length === this.procureddata.length) { |
| | | res.data.forEach((row, i) => { |
| | | this.procureddata[i].id = row.id; |
| | | }); |
| | | } |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æç®å¨å®è·åä¿¡æ¯ä¿åæåï¼"); |
| | | } |
| | | this.$modal.closeLoading(); |
| | |
| | | } else { |
| | | addDonationwitness(this.witnessform).then(response => { |
| | | if (response.code === 200) { |
| | | // å填主é®ï¼å¦å䏿¬¡ä¿åä»èµ°"æ°å¢" |
| | | if (response.data && response.data.id) { |
| | | this.witnessform.id = response.data.id; |
| | | } |
| | | this.$modal.msgSuccess("è·åè§è¯ä¿¡æ¯æ°å¢æå"); |
| | | this.form.donationcategory = this.witnessform.donationcategory; |
| | | let data = JSON.parse(JSON.stringify(this.form)); |
| | |
| | | }); |
| | | //ä¿åå¨å®è·åè¡¨æ°æ® |
| | | saveDonationwitnessorgan(this.procureddata).then(res => { |
| | | if (res == 200) { |
| | | if (res && res.data && res.data.length === this.procureddata.length) { |
| | | res.data.forEach((row, i) => { |
| | | this.procureddata[i].id = row.id; |
| | | }); |
| | | } |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æç®å¨å®è·åä¿¡æ¯ä¿åæåï¼"); |
| | | } |
| | | this.$modal.closeLoading(); |
| | |
| | | updateDonatecompletioninfo(this.accomplishform).then(response => { |
| | | this.$modal.msgSuccess("宿ç»è®°ä¿¡æ¯ä¿®æ¹æå"); |
| | | saveDonatecomporgan(this.transplantdata).then(res => { |
| | | if (res == 200) { |
| | | if (res && res.data && res.data.length === this.transplantdata.length) { |
| | | res.data.forEach((row, i) => { |
| | | this.transplantdata[i].id = row.id; |
| | | }); |
| | | } |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æç®å¨å®ç»è®°ä¿¡æ¯ä¿åæåï¼"); |
| | | } else { |
| | | this.$modal.msgSuccess(res.msg); |
| | |
| | | }); |
| | | } else { |
| | | addDonatecompletioninfo(this.accomplishform).then(response => { |
| | | // å填主é®ï¼å¦å䏿¬¡ä¿åä»èµ°"æ°å¢" |
| | | if (response && response.data && response.data.id) { |
| | | this.accomplishform.id = response.data.id; |
| | | } |
| | | this.$modal.msgSuccess("宿ç»è®°æå"); |
| | | saveDonatecomporgan(this.transplantdata).then(res => { |
| | | if (res && res.data && res.data.length === this.transplantdata.length) { |
| | | res.data.forEach((row, i) => { |
| | | this.transplantdata[i].id = row.id; |
| | | }); |
| | | } |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("æç®å¨å®ç»è®°ä¿¡æ¯ä¿åæåï¼"); |
| | | } else { |
| | |
| | | console.log("å·²å°è¾¾æå¤§å¼"); |
| | | } |
| | | }, |
| | | // ä¿åé²éï¼2 ç§å
éå¤ç¹å»è§ä¸ºéå¤æäº¤ |
| | | canSave() { |
| | | const now = Date.now(); |
| | | if (this.saveLockAt && now - this.saveLockAt < 2000) { |
| | | return false; |
| | | } |
| | | this.saveLockAt = now; |
| | | return true; |
| | | }, |
| | | // æ´æ¹è¿ç¨æéª |
| | | Processvalidation() { |
| | | if (this.form.workflow + 1 == this.actives) { |
| | |
| | | this.form.workflow++; |
| | | } else { |
| | | } |
| | | this.submitForm(); |
| | | // this.GetAttacheddata(); |
| | | // ç±"ä¿åäºçº§è¡¨"触åçä¿åï¼ä¸åä¸é²éï¼å¦åä¼è¢« canSave æ¦æï¼ |
| | | this.submitForm(true); |
| | | } else if (this.form.workflow > this.actives) { |
| | | this.submitForm(); |
| | | // Modifydonationattachment(this.donatelist).then(res => {}); |
| | | // this.GetAttacheddata(); |
| | | this.submitForm(true); |
| | | } else { |
| | | this.submitForm(); |
| | | // this.$modal.msgWarning("请å
宿å鍿¥éª¤"); |
| | | this.submitForm(true); |
| | | return; |
| | | } |
| | | }, |
| | |
| | | <style lang="scss" scoped> |
| | | .particularsdiv { |
| | | display: flex; |
| | | background-color: #f5f7fa; |
| | | background-color: var(--opo-bg-page, #f5f7fa); |
| | | height: 100vh; |
| | | overflow: hidden; |
| | | transition: all 0.3s ease; |
| | |
| | | margin: 0; |
| | | padding: 0; |
| | | height: 100%; |
| | | box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1); |
| | | box-shadow: 2px 0 8px rgba(16, 24, 40, 0.08); |
| | | transition: all 0.3s ease; |
| | | position: relative; |
| | | z-index: 100; |
| | |
| | | flex-direction: column; |
| | | |
| | | .title { |
| | | background: #22a2c3; |
| | | background: var(--opo-primary, #0e768f); |
| | | margin-bottom: 0; |
| | | padding: 15px 10px; |
| | | color: #fff; |
| | |
| | | } |
| | | } |
| | | |
| | | // æ¥éª¤æ ·å¼ä¼å |
| | | // æ¥éª¤æ ·å¼ä¼åï¼é
è²ç»ä¸å°ç³»ç»åçè²ï¼teal #0E768Fï¼ |
| | | ::v-deep .el-steps { |
| | | &.el-steps--vertical { |
| | | height: 100%; |
| | |
| | | |
| | | .el-step__head { |
| | | &.is-finish { |
| | | color: #22a2c3; |
| | | border-color: #22a2c3; |
| | | color: var(--opo-primary, #0e768f); |
| | | border-color: var(--opo-primary, #0e768f); |
| | | } |
| | | } |
| | | |
| | | .el-step__title { |
| | | font-size: 14px; |
| | | font-size: var(--opo-font-size-sm); |
| | | font-weight: 600; |
| | | |
| | | &.is-finish { |
| | | color: #22a2c3; |
| | | color: var(--opo-primary, #0e768f); |
| | | } |
| | | } |
| | | |
| | | .el-step__description { |
| | | font-size: 12px; |
| | | color: #666; |
| | | font-size: var(--opo-font-size-xs); |
| | | // æè¿°æåç»ä¸ç¨ä¸æ§ç°ï¼é¿å
æ´å颿¿è¢«åçè²æ·¹æ²¡ |
| | | color: var(--opo-text-secondary, #6b7280); |
| | | line-height: 1.5; |
| | | |
| | | &.is-finish { |
| | | color: #22a2c3; |
| | | color: var(--opo-text-regular, #4b5563); |
| | | } |
| | | |
| | | p { |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px"> |
| | | <el-form-item label="æç®å§å" prop="name"> |
| | | <el-input v-model="queryParams.name" placeholder="请è¾å
¥å§å" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å¨å®ç¼ç " prop="organcode"> |
| | | <el-input |
| | | v-model="queryParams.organcode" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | |
| | | <el-form-item label="è´¦å·ç±»å«" prop="usertype"> |
| | | <el-select v-model="queryParams.usertype" placeholder="è¯·éæ©è´¦å·ç±»å«" clearable size="small"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="项ç®ç±»å" prop="itemtype"> |
| | | <el-select v-model="queryParams.itemtype" placeholder="è¯·éæ©é¡¹ç®ç±»å" clearable size="small"> |
| | | <el-option v-for="dict in dict.type.sys_ConsolationType" :key="dict.value" :label="dict.label" |
| | |
| | | return callback(); |
| | | } |
| | | const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/; |
| | | if (regex.test(value)) { |
| | | } else { |
| | | callback(new Error("身份è¯å·ç æ ¼å¼é误")); |
| | | // 2026-10-19ï¼æ ¼å¼ä¸åæ³ç«å³æ©éãåæ¥åæ if/else ä½ else éæ²¡æ returnï¼ |
| | | // ä¼ç»§ç»å¾ä¸èµ°å¼æ¥æ¥éï¼å¯¼è´ callback 被è°ç¨ä¸¤æ¬¡ã"身份è¯å·ç æ ¼å¼é误"被åç»ç»æè¦çã |
| | | if (!regex.test(value)) { |
| | | return callback(new Error("身份è¯å·ç æ ¼å¼é误")); |
| | | } |
| | | |
| | | // 2. è°ç¨å端æ¥å£è¿è¡é夿§æ ¡éª |
| | |
| | | }, |
| | | |
| | | dialogrules: { |
| | | // 2026-10-19ï¼è´¦æ·åç§°ï¼è´¦æ·æ¥æº=ä»è´¦æ·åº æ¶ç䏿ï¼ä¹æ¯å¿
è¾é¡¹ |
| | | accountname: [ |
| | | { required: true, message: "è¯·éæ©è´¦æ·åç§°", trigger: "change" } |
| | | ], |
| | | usertype: [ |
| | | { required: true, message: "请è¾å
¥è´¦æ·ç±»å", trigger: "blur" } |
| | | ], |
| | |
| | | unitTaxNo: [{ required: true, message: "请è¾å
¥ç¨å·", trigger: "blur" }], |
| | | idcardno: [ |
| | | { |
| | | // 2026-10-19ï¼å required æ è®°åªä¸ºè®© el-form-item æ åºå¿
è¾æå·ï¼Element ç isRequired åªè®¤ rule.requiredï¼ã |
| | | // æ¬è§å带 validatorï¼async-validator ç getValidationMethod ä¼ç´æ¥è¿å该 validatorãè·³è¿å
建 required æ£æ¥ï¼ |
| | | // æä»¥æ ¡éªè¡ä¸ºä¸æ¹å¨åå®å
¨ä¸è´ï¼å¦å¤**ä¸è½å message**ï¼å¦åä¼è¦çä¸é¢èªå®ä¹ validator çæ¥éææ¡ã |
| | | required: true, |
| | | // è´¦æ·ç±»åéæ©"å使ºæ"æ¶ä¸éè¦èº«ä»½è¯å· |
| | | validator: (rule, value, callback) => { |
| | | if (this.hasUserType(this.accountselectform.usertype, "org")) { |
| | |
| | | //ä¸å®¶/å»çæºæ/è´¹ç¨æ¥éæºæéæ© |
| | | confirmSelectionDialog() { |
| | | this.$refs["accountselectform"].validate(valid => { |
| | | // 2026-10-19ï¼åæ¥æ²¡æå¤æ validï¼æ ¡éªå¤±è´¥ä¹ç
§æ ·å¾ä¸èµ°ãç
§æ ·ä¿åï¼æå·/红åå½¢åèè®¾ï¼ |
| | | if (!valid) { |
| | | return; |
| | | } |
| | | let tempIndex = this.accountselectform.index; |
| | | if (this.selectionType == "account") { |
| | | if (this.accountfrom == "1") { |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | </el-row> |
| | | <div> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="æç®è
ç¼å·" prop="donorno"> |
| | | <el-input v-model="queryParams.donorno" placeholder="请è¾å
¥æç®è
ç¼å·" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | |
| | | </el-row> |
| | | <div> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®æ¡ä¾" prop="donorname" style="float: left"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®æ¡ä¾" prop="donorname" style="float: left"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-row align="left"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®æ¡ä¾" prop="donorname" style="float: left"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-row align="left"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®æ¡ä¾" prop="donorname" style="float: left"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px"> |
| | | <el-row align="left"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="é¢å®¡ç¶æ" prop="checkstatus" style="float: left"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ä¸å®¶å§å" prop="beneficiaryname"> |
| | | <el-input v-model="queryParams.beneficiaryname" placeholder="请è¾å
¥ä¸å®¶å§å" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <!-- <el-form-item label="è´¹ç¨ç¼å·ï¼å·®æ
è´¹å
³è表service_reimbursement ID; è´¹ç¨å
³èè´¹ç¨è¡¨service_fundçID" prop="fundid"> |
| | | <el-input |
| | | v-model="queryParams.fundid" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <div class="app-container"> |
| | | <el-col :span="24" v-if="showType == 'list'"> |
| | | <el-card shadow="never"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.name" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="æå¡é¡¹ç®ID" prop="itemid"> |
| | | <el-input |
| | | v-model="queryParams.itemid" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <div class="app-container"> |
| | | <!-- æç´¢æ¡ä»¶ --> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æç®è
" prop="name"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å建è
" prop="createBy"> |
| | | <el-input |
| | | v-model="queryParams.createBy" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å建人" prop="createBy"> |
| | | <el-input |
| | | v-model="queryParams.createBy" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="èµéç³è¯·ä¸»è¡¨ID" prop="rbid"> |
| | | <el-input |
| | | v-model="queryParams.rbid" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="patientqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-row> |
| | | <!-- |
| | | <el-col :span="6"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="æç®æ¡ä¾" prop="name"> |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px"> |
| | | <el-form-item label="å»çæºæ" prop="name"> |
| | | <el-input v-model="queryParams.name" placeholder="请è¾å
¥å»çæºæ" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | |
| | | <el-row :gutter="20"> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="patientqueryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ç级åç§°" prop="className"> |
| | | <el-input |
| | | v-model="queryParams.className" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="åæ°åç§°" prop="configName"> |
| | | <el-input |
| | | v-model="queryParams.configName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form |
| | | class="opo-query-form" |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | :inline="true" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="é¨é¨åç§°" prop="deptName"> |
| | | <el-input |
| | | v-model="queryParams.deptName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="åå
¸åç§°" prop="dictType"> |
| | | <el-select v-model="queryParams.dictType" size="small"> |
| | | <el-option |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="åå
¸åç§°" prop="dictName"> |
| | | <el-input |
| | | v-model="queryParams.dictName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="年级åç§°" prop="gradeName"> |
| | | <el-input |
| | | v-model="queryParams.gradeName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-input |
| | | v-model="queryParams.name" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="èååç§°" prop="menuName"> |
| | | <el-input |
| | | v-model="queryParams.menuName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å
¬åæ é¢" prop="noticeTitle"> |
| | | <el-input |
| | | v-model="queryParams.noticeTitle" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å²ä½ç¼ç " prop="postCode"> |
| | | <el-input |
| | | v-model="queryParams.postCode" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true"> |
| | | <el-form-item label="ç¨æ·åç§°" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.userName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true"> |
| | | <el-form-item label="è§è²åç§°" prop="roleName"> |
| | | <el-input |
| | | v-model="queryParams.roleName" |
| | |
| | | <template> |
| | | <!-- ææç¨æ· --> |
| | | <el-dialog title="éæ©ç¨æ·" :visible.sync="visible" width="800px" top="5vh" append-to-body> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="ç¨æ·åç§°" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.userName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="å¦çåç§°" prop="studentName"> |
| | | <el-input |
| | | v-model="queryParams.studentName" |
| | |
| | | </el-col> |
| | | <!--ç¨æ·æ°æ®--> |
| | | <el-col :span="20" :xs="24"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ç¨æ·åç§°" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.userName" |
| | |
| | | <template> |
| | | <!-- 导å
¥è¡¨ --> |
| | | <el-dialog title="导å
¥è¡¨" :visible.sync="visible" width="800px" top="5vh" append-to-body> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true"> |
| | | <el-form-item label="表åç§°" prop="tableName"> |
| | | <el-input |
| | | v-model="queryParams.tableName" |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form |
| | | class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="表åç§°" prop="tableName"> |
| | | <el-input |
| | | v-model="queryParams.tableName" |