From b636525ff0255bf9b592bb3ee2d556c5d19f8d2e Mon Sep 17 00:00:00 2001 From: xingyongchun Date: Fri, 22 Jul 2022 16:58:07 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/client/assets/color.less | 104 +- .../src/sections/fillion/actions/infor.js | 77 +- .../fillion/components/bridgeTable.js | 1824 +++++++++++++++-- .../fillion/components/compileDrawer.js | 118 -- .../fillion/components/configModal.js | 124 -- .../fillion/components/enforceTable.js | 56 +- .../fillion/components/highwaysTable.js | 59 +- .../fillion/components/infor/details.js | 130 +- .../sections/fillion/components/inforTable.js | 118 +- .../fillion/components/operationalTable.js | 1629 +++------------ .../fillion/components/promotionalTable.js | 5 +- .../fillion/components/publicTable.js | 71 +- .../fillion/components/transportationTable.js | 1741 +++++++++++++--- .../src/sections/fillion/containers/bridge.js | 6 +- .../sections/fillion/containers/enforce.js | 2 +- .../sections/fillion/containers/highways.js | 2 +- .../src/sections/fillion/containers/infor.js | 2 +- .../fillion/containers/infor/details.js | 124 -- .../fillion/containers/maintenance.js | 2 +- .../fillion/containers/operational.js | 2 +- .../src/sections/fillion/containers/patrol.js | 2 +- .../fillion/containers/promotional.js | 2 +- .../src/sections/fillion/containers/public.js | 2 +- .../fillion/containers/transportation.js | 2 +- .../sections/fillion/containers/videois.js | 2 +- web/client/src/themes/light.json | 2 +- web/client/src/utils/webapi.js | 19 +- 27 files changed, 3859 insertions(+), 2368 deletions(-) delete mode 100644 web/client/src/sections/fillion/components/compileDrawer.js delete mode 100644 web/client/src/sections/fillion/components/configModal.js delete mode 100644 web/client/src/sections/fillion/containers/infor/details.js diff --git a/web/client/assets/color.less b/web/client/assets/color.less index f684d0bc..52ae9809 100644 --- a/web/client/assets/color.less +++ b/web/client/assets/color.less @@ -174,7 +174,7 @@ button::-moz-focus-inner, [type='submit']::-moz-focus-inner {border-style: none;} fieldset {border: 0;} legend {color: inherit;} -mark {background-color: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 1)`);} +mark {background-color: #feffe6;} ::selection {color: #fff;background: @primary-color;} .anticon {color: inherit;} .ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;} @@ -555,18 +555,6 @@ html {--antd-wave-shadow-color: @primary-color;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} -a.ant-btn-disabled, -a.ant-btn-disabled:hover, -a.ant-btn-disabled:focus, -a.ant-btn-disabled:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} -a.ant-btn-disabled > a:only-child, -a.ant-btn-disabled:hover > a:only-child, -a.ant-btn-disabled:focus > a:only-child, -a.ant-btn-disabled:active > a:only-child {color: currentcolor;} -a.ant-btn-disabled > a:only-child::after, -a.ant-btn-disabled:hover > a:only-child::after, -a.ant-btn-disabled:focus > a:only-child::after, -a.ant-btn-disabled:active > a:only-child::after {background: transparent;} .ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: @border-color-base;} .ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {border-right-color: @border-color-base;border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-picker-calendar {color: @text-color;background: @calendar-full-bg;} @@ -601,6 +589,7 @@ a.ant-btn-disabled:active > a:only-child::after {background: transparent;} .ant-card-type-inner .ant-card-head {background: @background-color-light;} .ant-card-meta-title {color: @heading-color;} .ant-card-meta-description {color: @text-color-secondary;} +.ant-card-loading-block {background: linear-gradient(90deg, fade(@card-skeleton-bg, 20%), fade(@card-skeleton-bg, 40%), fade(@card-skeleton-bg, 20%));background-size: 600% 600%;border-radius: 2px;} .ant-carousel {color: @text-color;} .ant-carousel .slick-slider {-webkit-tap-highlight-color: transparent;} .ant-carousel .slick-prev, .ant-carousel .slick-next {color: transparent;background: transparent;border: 0;} @@ -674,10 +663,8 @@ a.ant-btn-disabled:active > a:only-child::after {background: transparent;} .ant-comment-actions > li > span:hover {color: @comment-action-hover-color;} .ant-picker-status-error.ant-picker, .ant-picker-status-error.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #ff4d4f;} .ant-picker-status-error.ant-picker-focused, .ant-picker-status-error.ant-picker:focus {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} -.ant-picker-status-error.ant-picker .ant-picker-active-bar {background: #ff7875;} .ant-picker-status-warning.ant-picker, .ant-picker-status-warning.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #faad14;} .ant-picker-status-warning.ant-picker-focused, .ant-picker-status-warning.ant-picker:focus {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} -.ant-picker-status-warning.ant-picker .ant-picker-active-bar {background: #ffc53d;} .ant-picker {color: @text-color;background: @picker-bg;border: 1px solid @border-color-base;border-radius: 2px;} .ant-picker:hover, .ant-picker-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} .ant-input-rtl .ant-picker:hover, .ant-input-rtl .ant-picker-focused {border-right-width: 0;border-left-width: 1px !important;} @@ -708,7 +695,7 @@ a.ant-btn-disabled:active > a:only-child::after {background: transparent;} .ant-picker-range .ant-picker-active-bar {background: @primary-color;} .ant-picker-dropdown {color: @text-color;} .ant-picker-ranges .ant-picker-preset > .ant-tag-blue {color: @primary-color;background: color(~`colorPalette("@{primary-color}", 1)`);border-color: color(~`colorPalette("@{primary-color}", 3)`);} -.ant-picker-range-arrow {box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;} +.ant-picker-range-arrow {background: linear-gradient(135deg, transparent 40%, @calendar-bg 40%);box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;} .ant-picker-range-arrow::before {background: @calendar-bg;background-repeat: no-repeat;background-position: -10px -10px;} .ant-picker-panel-container {background: @calendar-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} .ant-picker-panel-container .ant-picker-panel {background: transparent;border-width: 0 0 1px 0;border-radius: 0;} @@ -814,7 +801,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;} .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;} .ant-dropdown {color: @text-color;} -.ant-dropdown-arrow {border-radius: 0 0 2px;} +.ant-dropdown-arrow {background: linear-gradient(135deg, transparent 40%, @popover-bg 40%);border-radius: 0 0 2px;} .ant-dropdown-arrow::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} .ant-dropdown-placement-top > .ant-dropdown-arrow, .ant-dropdown-placement-topLeft > .ant-dropdown-arrow, .ant-dropdown-placement-topRight > .ant-dropdown-arrow {box-shadow: 3px 3px 7px -3px rgba(0, 0, 0, 0.1);} .ant-dropdown-placement-bottom > .ant-dropdown-arrow, .ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow, .ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {box-shadow: 2px 2px 5px -2px rgba(0, 0, 0, 0.1);} @@ -949,7 +936,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} .ant-input-group > .ant-input-rtl:first-child, .ant-input-group-rtl .ant-input-group-addon:first-child {border-radius: 0 2px 2px 0;} .ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} -.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;} .ant-input-group-rtl.ant-input-group > .ant-input:last-child, .ant-input-group-rtl.ant-input-group-addon:last-child {border-radius: 2px 0 0 2px;} .ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} .ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} @@ -957,10 +944,6 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} .ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} .ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} -.ant-input-group > .ant-input-rtl:first-child {border-radius: 0 2px 2px 0;} -.ant-input-group > .ant-input-rtl:last-child {border-radius: 2px 0 0 2px;} -.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} -.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-password-icon.anticon {color: @text-color-secondary;} .ant-input-password-icon.anticon:hover {color: @input-icon-hover-color;} .ant-input-textarea-show-count::after {color: @text-color-secondary;} @@ -1046,7 +1029,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} .ant-input-number-group > .ant-input-number-rtl:first-child, .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-radius: 0 2px 2px 0;} .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} -.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;} .ant-input-number-group-rtl.ant-input-number-group > .ant-input-number:last-child, .ant-input-number-group-rtl.ant-input-number-group-addon:last-child {border-radius: 2px 0 0 2px;} .ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} .ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} @@ -1054,10 +1037,6 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:first-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:last-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} .ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} -.ant-input-number-group > .ant-input-number-rtl:first-child {border-radius: 0 2px 2px 0;} -.ant-input-number-group > .ant-input-number-rtl:last-child {border-radius: 2px 0 0 2px;} -.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} -.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-number-handler {color: @text-color-secondary;border-left: 1px solid @border-color-base;} .ant-input-number-handler:active {background: @input-number-handler-active-bg;} .ant-input-number-handler:hover .ant-input-number-handler-up-inner, .ant-input-number-handler:hover .ant-input-number-handler-down-inner {color: color(~`colorPalette("@{primary-color}", 5)`);} @@ -1149,10 +1128,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-mentions-dropdown-menu-item-active {background-color: @item-hover-bg;} .ant-menu-item-danger.ant-menu-item {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;} -.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{radio-dot-disabled-color}", 1)`);} +.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{menu-popup-bg}", 2)`);} .ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;} -.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{radio-dot-disabled-color}", 1)`);} +.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{menu-popup-bg}", 2)`);} .ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;} .ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;} .ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;} @@ -1313,8 +1292,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-pagination-simple .ant-pagination-simple-pager input:hover {border-color: @primary-color;} .ant-pagination-simple .ant-pagination-simple-pager input:focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);} .ant-pagination-simple .ant-pagination-simple-pager input[disabled] {color: @disabled-color;background: @disabled-bg;border-color: @border-color-base;} -.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;} -.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;} +.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;} +.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;} .ant-pagination.ant-pagination-disabled .ant-pagination-item {background: @disabled-bg;border-color: @border-color-base;} .ant-pagination.ant-pagination-disabled .ant-pagination-item a {color: @disabled-color;background: transparent;border: none;} .ant-pagination.ant-pagination-disabled .ant-pagination-item-active {background: @pagination-item-disabled-bg-active;} @@ -1330,8 +1309,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-popover-message {color: @text-color;} .ant-popover-message > .anticon {color: #faad14;} .ant-popover-arrow {background: transparent;} -.ant-popover-arrow-content {--antd-arrow-background-color: @popover-bg;border-radius: 0 0 2px;} -.ant-popover-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;} +.ant-popover-arrow-content {background-color: @popover-bg;border-radius: 0 0 2px;} +.ant-popover-arrow-content::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} .ant-popover-placement-top .ant-popover-arrow-content, .ant-popover-placement-topLeft .ant-popover-arrow-content, .ant-popover-placement-topRight .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-popover-placement-right .ant-popover-arrow-content, .ant-popover-placement-rightTop .ant-popover-arrow-content, .ant-popover-placement-rightBottom .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-popover-placement-bottom .ant-popover-arrow-content, .ant-popover-placement-bottomLeft .ant-popover-arrow-content, .ant-popover-placement-bottomRight .ant-popover-arrow-content {box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.06);} @@ -1387,13 +1366,12 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-wrapper {color: @text-color;} .ant-radio {color: @text-color;} .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner, .ant-radio-input:focus + .ant-radio-inner {border-color: @primary-color;} -.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} +.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} .ant-radio-checked::after {border: 1px solid @primary-color;border-radius: 50%;animation-fill-mode: both;} .ant-radio-inner {background-color: @btn-default-bg;border-color: @border-color-base;border-style: solid;border-width: 1px;border-radius: 50%;} .ant-radio-inner::after {background-color: @primary-color;border-top: 0;border-left: 0;border-radius: 16px;} -.ant-radio.ant-radio-disabled .ant-radio-inner {border-color: @border-color-base;} .ant-radio-checked .ant-radio-inner {border-color: @primary-color;} -.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;} +.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} .ant-radio-disabled .ant-radio-inner::after {background-color: @radio-dot-disabled-color;} .ant-radio-disabled + span {color: @disabled-color;} .ant-radio-button-wrapper {color: @text-color;background: @btn-default-bg;border: 1px solid @border-color-base;border-top-width: 1.02px;border-left-width: 0;} @@ -1403,7 +1381,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-button-wrapper:last-child {border-radius: 0 2px 2px 0;} .ant-radio-button-wrapper:first-child:last-child {border-radius: 2px;} .ant-radio-button-wrapper:hover {color: @primary-color;} -.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} +.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @primary-color;background: @btn-default-bg;border-color: @primary-color;} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {background-color: @primary-color;} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {border-color: @primary-color;} @@ -1411,11 +1389,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {background-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before {background-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @radio-solid-checked-color;background: @primary-color;border-color: @primary-color;} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} .ant-radio-button-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} .ant-radio-button-wrapper-disabled:first-child {border-left-color: @border-color-base;} @@ -1482,11 +1460,14 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {border-radius: 50%;} .ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {border-radius: 50%;} .ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {border-radius: 50%;} -.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 2px;} -.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 2px;} +.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 4px;} +.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 4px;} .ant-skeleton-round .ant-skeleton-content .ant-skeleton-title, .ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li {border-radius: 100px;} -.ant-skeleton-active .ant-skeleton-title, .ant-skeleton-active .ant-skeleton-paragraph > li, .ant-skeleton-active .ant-skeleton-avatar, .ant-skeleton-active .ant-skeleton-button, .ant-skeleton-active .ant-skeleton-input, .ant-skeleton-active .ant-skeleton-image {background: transparent;} -.ant-skeleton-active .ant-skeleton-title::after, .ant-skeleton-active .ant-skeleton-paragraph > li::after, .ant-skeleton-active .ant-skeleton-avatar::after, .ant-skeleton-active .ant-skeleton-button::after, .ant-skeleton-active .ant-skeleton-input::after, .ant-skeleton-active .ant-skeleton-image::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} +.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-button {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-input {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} +.ant-skeleton.ant-skeleton-active .ant-skeleton-image {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} .ant-skeleton-element .ant-skeleton-button {background: @skeleton-color;border-radius: 2px;} .ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle {border-radius: 50%;} .ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round {border-radius: 32px;} @@ -1603,7 +1584,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td, .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td {border-right: 0;} .ant-table.ant-table-bordered > .ant-table-footer {border: 1px solid @border-color-split;border-top: 0;} .ant-table-cell .ant-table-container:first-child {border-top: 0;} -.ant-table-cell-scrollbar:not([rowspan]) {box-shadow: 0 1px 0 1px @table-header-bg;} +.ant-table-cell-scrollbar {box-shadow: 0 1px 0 1px @table-header-bg;} .ant-table {color: @text-color;background: @component-background;border-radius: 2px;} .ant-table table {border-radius: 2px 2px 0 0;border-collapse: separate;border-spacing: 0;} .ant-table-footer {color: @heading-color;background: @background-color-light;} @@ -1654,10 +1635,10 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-table-empty .ant-table-tbody > tr.ant-table-placeholder {color: @disabled-color;} .ant-table-tbody > tr.ant-table-placeholder:hover > td {background: @component-background;} .ant-table-cell-fix-left, .ant-table-cell-fix-right {background: @component-background;} -.ant-table-ping-left:not(.ant-table-has-fix-left) > .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-left .ant-table-cell-fix-left-first::after, .ant-table-ping-left .ant-table-cell-fix-left-last::after {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-left .ant-table-cell-fix-left-last::before {background-color: transparent !important;} -.ant-table-ping-right:not(.ant-table-has-fix-right) > .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-right .ant-table-cell-fix-right-first::after, .ant-table-ping-right .ant-table-cell-fix-right-last::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-sticky-holder {background: @component-background;} .ant-table-sticky-scroll {background: lighten(@table-border-color, 80%);border-top: 1px solid @border-color-split;} @@ -1666,7 +1647,6 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-table-sticky-scroll-bar-active {background-color: fade(@table-sticky-scroll-bar-bg, 80%);} .ant-table-title {border-radius: 2px 2px 0 0;} .ant-table-title + .ant-table-container {border-top-left-radius: 0;border-top-right-radius: 0;} -.ant-table-title + .ant-table-container table {border-radius: 0;} .ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child {border-radius: 0;} .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {border-radius: 0;} .ant-table-container {border-top-left-radius: 2px;border-top-right-radius: 2px;} @@ -1722,31 +1702,31 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;} .ant-tag-checkable-checked {background-color: @primary-color;} .ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{alert-info-bg-color}", 1)`);border-color: #ffadd2;} +.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{timeline-color}", 4)`);border-color: #ffadd2;} .ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} -.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{alert-info-bg-color}", 1)`);border-color: #ffadd2;} +.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{timeline-color}", 4)`);border-color: #ffadd2;} .ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} -.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{radio-dot-disabled-color}", 1)`);border-color: #ffa39e;} +.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{menu-popup-bg}", 2)`);border-color: #ffa39e;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} .ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;} .ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} -.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 1)`);border-color: #fffb8f;} +.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;} .ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} .ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;} .ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} -.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{avatar-bg}", 1)`);border-color: #87e8de;} +.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;} .ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} .ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;} .ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} -.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{radio-dot-disabled-color}", 1)`);border-color: #91d5ff;} +.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{progress-steps-item-bg}", 1)`);border-color: #91d5ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} -.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{descriptions-bg}", 2)`);border-color: #adc6ff;} +.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{popover-background}", 3)`);border-color: #adc6ff;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} -.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{calendar-bg}", 1)`);border-color: #d3adf7;} +.ant-tag-purple {color: #531dab;background: #f9f0ff;border-color: #d3adf7;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} @@ -1769,7 +1749,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tooltip {color: @text-color;} .ant-tooltip-inner {color: #fff;background-color: @tooltip-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} .ant-tooltip-arrow {background: transparent;} -.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);border-radius: 0 0 2px;} +.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);background-color: transparent;border-radius: 0 0 2px;} .ant-tooltip-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;} .ant-tooltip-placement-top .ant-tooltip-arrow-content, .ant-tooltip-placement-topLeft .ant-tooltip-arrow-content, .ant-tooltip-placement-topRight .ant-tooltip-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-tooltip-placement-right .ant-tooltip-arrow-content, .ant-tooltip-placement-rightTop .ant-tooltip-arrow-content, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);} @@ -1959,7 +1939,6 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography .ant-typography pre code {background: transparent;border: 0;} .ant-typography blockquote {border-left: 4px solid rgba(100, 100, 100, 0.2);} .ant-upload {color: @text-color;} -.ant-upload.ant-upload-disabled {color: @disabled-color;} .ant-upload.ant-upload-select-picture-card {background-color: @background-color-light;border: 1px dashed @border-color-base;border-radius: 2px;} .ant-upload.ant-upload-select-picture-card:hover {border-color: @primary-color;} .ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover {border-color: @border-color-base;} @@ -1984,12 +1963,13 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography .ant-upload-list-picture .ant-upload-list-item-error, .ant-upload-list-picture-card .ant-upload-list-item-error {border-color: #ff4d4f;} .ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;} .ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;} -.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{radio-dot-disabled-color}", 1)`)'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{radio-dot-disabled-color}", 1)`)'] {fill: @error-color-deprecated-bg;} +.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{progress-steps-item-bg}", 1)`)'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{progress-steps-item-bg}", 1)`)'] {fill: @error-color-deprecated-bg;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;} .ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {color: #fff;} .ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {background-color: @background-color-light;} +.ant-upload-list .ant-upload-animate-inline-appear, .ant-upload-list .ant-upload-animate-inline-enter, .ant-upload-list .ant-upload-animate-inline-leave {animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);} .ant-pro-table-search {background-color: @component-background !important;} .bezierEasingMixin() { @functions: ~`(function() {var NEWTON_ITERATIONS = 4;var NEWTON_MIN_SLOPE = 0.001;var SUBDIVISION_PRECISION = 0.0000001;var SUBDIVISION_MAX_ITERATIONS = 10;var kSplineTableSize = 11;var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);var float32ArraySupported = typeof Float32Array === 'function';function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } @@ -2439,8 +2419,7 @@ this.tinycolor = tinycolor;})()`;} .colorPaletteMixin() { @functions: ~`(function() {var hueStep = 2;var saturationStep = 0.16;var saturationStep2 = 0.05;var brightnessStep1 = 0.05;var brightnessStep2 = 0.15;var lightColorCount = 5;var darkColorCount = 4;var getHue = function(hsv, i, isLight) {var hue;if (hsv.h >= 60 && hsv.h <= 240) {hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;} else {hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;} if (hue < 0) {hue += 360;} else if (hue >= 360) {hue -= 360;} - return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {if (hsv.h === 0 && hsv.s === 0) {return hsv.s;} - var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;} + return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;} if (saturation > 1) {saturation = 1;} if (isLight && i === lightColorCount && saturation > 0.1) {saturation = 0.1;} if (saturation < 0.06) {saturation = 0.06;} @@ -2897,7 +2876,7 @@ this.tinycolor = tinycolor;})()`;} @cascader-dropdown-line-height: @dropdown-line-height; @anchor-bg: transparent; @anchor-border-color: @border-color-split; -@anchor-link-top: 4px; +@anchor-link-top: 7px; @anchor-link-left: 16px; @anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; @tooltip-max-width: 250px; @@ -2922,7 +2901,7 @@ this.tinycolor = tinycolor;})()`;} @modal-header-border-style: @border-style-base; @modal-header-title-line-height: 22px; @modal-header-title-font-size: @font-size-lg; -@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical; +@modal-header-close-size: 56px; @modal-heading-color: @heading-color; @modal-close-color: @text-color-secondary; @modal-footer-bg: transparent; @@ -2933,7 +2912,6 @@ this.tinycolor = tinycolor;})()`;} @modal-mask-bg: fade(@black, 45%); @modal-confirm-body-padding: 32px 32px 24px; @modal-confirm-title-font-size: @font-size-lg; -@modal-border-radius: @border-radius-base; @progress-default-color: @processing-color; @progress-remaining-color: @background-color-base; @progress-info-text-color: @progress-text-color; diff --git a/web/client/src/sections/fillion/actions/infor.js b/web/client/src/sections/fillion/actions/infor.js index 17872957..d68042e8 100644 --- a/web/client/src/sections/fillion/actions/infor.js +++ b/web/client/src/sections/fillion/actions/infor.js @@ -11,14 +11,81 @@ export function getDepMessage() { reducer: { name: 'depMessage' } }); } -export function getReportStatistic(query) { +// export function getReportStatistic(query) { +// return dispatch => basicAction({ +// type: 'get', +// dispatch: dispatch, +// query: query, +// actionType: 'GET_DEPARTMENT_STATIS', +// url: ApiTable.getReportStatistic, +// msg: { error: '获取填报信息失败' }, +// reducer: { name: 'reportstatistic' } +// }); + +// } +export function getOperaTional(query) { return dispatch => basicAction({ type: 'get', dispatch: dispatch, query: query, - actionType: 'GET_DEPARTMENT_STATIS', - url: ApiTable.getReportStatistic, - msg: { error: '获取填报信息失败' }, - reducer: { name: 'reportstatistic' } + actionType: 'GET_OPERA_TIONAL', + url: ApiTable.getOperaTional, + msg: { error: '获取客运信息失败' }, + // reducer: { name: 'reportstatistic' } + }); +} +export function getSpecificVehicle(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query: query, + actionType: 'GET_SPECIFIC_VEHICLE', + url: ApiTable.getSpecificVehicle, + msg: { error: '获取车辆信息失败' }, + // reducer: { name: 'reportstatistic' } + }); +} +export function getHouseholds(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query: query, + actionType: 'GET_HOUSEHOLDS', + url: ApiTable.getHouseholds, + msg: { error: '获取业户信息失败' }, + // reducer: { name: 'reportstatistic' } + }); +} +export function getRoadway(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query: query, + actionType: 'GET_ROADWAY', + url: ApiTable.getRoadway, + msg: { error: '获取道路信息失败' }, + // reducer: { name: 'reportstatistic' } + }); +} +export function getBridge(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query: query, + actionType: 'GET_BRIDGE', + url: ApiTable.getBridge, + msg: { error: '获取桥梁信息失败' }, + // reducer: { name: 'reportstatistic' } + }); +} +export function getProject(query) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + query: query, + actionType: 'GET_PROJECT', + url: ApiTable.getProject, + msg: { error: '获取工程信息失败' }, + // reducer: { name: 'reportstatistic' } }); } \ No newline at end of file diff --git a/web/client/src/sections/fillion/components/bridgeTable.js b/web/client/src/sections/fillion/components/bridgeTable.js index 7dab06ad..1e5afe22 100644 --- a/web/client/src/sections/fillion/components/bridgeTable.js +++ b/web/client/src/sections/fillion/components/bridgeTable.js @@ -4,21 +4,1523 @@ import { Spin, Button, Popconfirm, Badge } from 'antd'; import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; -import { getReportStatistic } from "../actions/infor" +import { getBridge, getProject } from "../actions/infor" +import UserModal from './infor/details'; + const BrideTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) - const [regionId, setRegionId] = useState()//区域id - const [placeType, setPlaceType] = useState()//场所 - const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 - const [sitename, setSitename] = useState()//场所名称 + // const [regionId, setRegionId] = useState()//区域id + // const [placeType, setPlaceType] = useState()//场所 + // const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 + // const [sitename, setSitename] = useState()//场所名称 const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + const [activeKey, setActiveKey] = useState('tab1'); + + const columns = { + tab1: [ + { + title: '桥梁代码', + dataIndex: 'placeName', + fixed: 'left', + width: 120, + options: 1, + backgroundColor: "#ffffff", + fieldProps: { + onChange: (value, cs) => { + setSitename(value.currentTarget.value) + }, + placeholder: '请输入桥梁代码进行搜索', + getPopupContainer: (triggerNode) => triggerNode.parentNode, + }, + }, + { + title: '桥梁名称', + search: false, + dataIndex: 'containers', + + fixed: 'left', + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '中心桩号', + search: false, + dataIndex: 'time2', + valueType: 'dateRange', + // align: 'right', + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '跨越地物类型', + search: false, + dataIndex: 'time3', + valueType: 'dateRange', + + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨越地物名称', + search: false, + dataIndex: 'time4', + valueType: 'dateRange', + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '收费性质', + search: false, + dataIndex: 'time5', + valueType: 'dateRange', + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '匝道编码', + search: false, + dataIndex: 'time6', + valueType: 'dateRange', + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路段类型', + search: false, + dataIndex: 'time7', + valueType: 'dateRange', + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨越地物类型1', + search: false, + dataIndex: 'time8', + valueType: 'dateRange', + + + width: 120, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨越地物名称1', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '原桥梁代码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否宽路窄桥', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否在长大桥梁目录中', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否跨省桥梁', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '互通类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '互通形式', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '互通交叉方式', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥梁分类', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥梁全长', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径总长', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '主桥主跨', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '主桥孔数', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径组合', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥梁性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '设计荷载等级', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上部结构', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上部结构材料', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥面铺装类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥面宽', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥面净宽', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥下净空', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '抗震等级', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '通航等级', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥台类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥墩类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '墩台防撞设施类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '伸缩缝类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '支座类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '弯坡斜特征', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桥梁高度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '人行道宽度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '建设单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '建成时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '通车日期', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '改建时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '总造价', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '设计单位名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '施工单位名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '监理单位名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '建设性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '评定日期', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '技术状况评定', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '评定单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '主要病害位置', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '病害描述', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '采取管制措施', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '最近定期检查日期', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '管养单位性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '管养单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '监管单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '改造施工单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否部补助项目', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '工程性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '改造部位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '改造完工日期', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '年份1', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径组合1', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '投资1', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '年份2', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径组合2', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '投资2', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '年份3', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径组合3', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '投资3', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '年份4', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '跨径组合4', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '投资4', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '年份5', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '跨径组合5', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '投资5', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划资金类别', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划文号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目唯一编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工情况', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '变更原因', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '变更时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '填报单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '备注', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否跨线桥', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否线外桥', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否危桥改造', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '所在区县', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '所在地市', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '操作', + dataIndex: 'creatTime', + valueType: 'dateTimeRange', + hideInSearch: true, + width: 120, + fixed: 'right', + render: (dom, record) => { + return
+ + } + }, + { + key: "direction", + hideInTable: true, + dataIndex: "direction", + order: 6, + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { + return ( +
+ +
- const columns = - [ + + ); + }, + }, + ], tab2: [ { title: '桥梁代码', dataIndex: 'placeName', @@ -67,7 +1569,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time3', valueType: 'dateRange', - initialValue: day, + width: 120, @@ -82,7 +1584,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time4', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -96,7 +1598,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time5', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -110,7 +1612,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time6', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -124,7 +1626,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time7', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -138,7 +1640,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time8', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -152,7 +1654,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -167,7 +1669,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -182,7 +1684,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -197,7 +1699,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -212,7 +1714,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -227,7 +1729,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -242,7 +1744,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -257,7 +1759,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -272,7 +1774,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -287,7 +1789,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -302,7 +1804,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -317,7 +1819,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -332,7 +1834,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -347,7 +1849,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -362,7 +1864,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -377,7 +1879,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -392,7 +1894,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -407,7 +1909,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -422,7 +1924,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -437,7 +1939,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -452,7 +1954,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -467,7 +1969,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -482,7 +1984,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -497,7 +1999,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -512,7 +2014,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -527,7 +2029,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -542,7 +2044,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -557,7 +2059,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -572,7 +2074,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -587,7 +2089,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -602,7 +2104,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -617,7 +2119,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -632,7 +2134,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -647,7 +2149,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -662,7 +2164,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -677,7 +2179,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -692,7 +2194,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -707,7 +2209,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -722,7 +2224,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -737,7 +2239,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -752,7 +2254,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -767,7 +2269,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -782,7 +2284,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -797,7 +2299,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -812,7 +2314,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -827,7 +2329,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -842,7 +2344,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -857,7 +2359,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -872,7 +2374,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -887,7 +2389,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -902,7 +2404,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -917,7 +2419,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -932,7 +2434,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -947,7 +2449,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -962,7 +2464,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -977,7 +2479,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -992,7 +2494,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1007,7 +2509,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1022,7 +2524,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1037,7 +2539,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1052,7 +2554,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1067,7 +2569,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1082,7 +2584,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1097,7 +2599,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1112,7 +2614,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1127,7 +2629,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1143,7 +2645,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1158,7 +2660,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1173,7 +2675,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1188,7 +2690,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1203,7 +2705,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1218,7 +2720,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1233,7 +2735,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1248,7 +2750,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1263,7 +2765,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1278,7 +2780,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1293,7 +2795,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1308,7 +2810,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1323,7 +2825,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1338,7 +2840,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1353,7 +2855,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1368,7 +2870,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1383,7 +2885,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1398,7 +2900,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1413,7 +2915,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1428,7 +2930,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1443,7 +2945,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1458,7 +2960,7 @@ const BrideTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1477,7 +2979,13 @@ const BrideTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
+ return
} }, @@ -1486,13 +2994,14 @@ const BrideTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
@@ -1513,22 +3020,85 @@ const BrideTable = (props) => { }, }, ] + } +const requestBridge=()=>{ + const query = { + } + setRowSelected([]); + const res = dispatch(getBridge(query)); + setCounts(res.payload.data) +} +//工程数据 +const requestProject=()=>{ + const query = { + type:'桥梁' + } + setRowSelected([]); + const res =dispatch(getProject(query)); + setCounts(res.payload.data) + } + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) + } return (
setActiveKey(key), + items: [ + { + key: 'tab1', + label: requestBridge()}>桥梁{activeKey === 'tab1'}, + }, + { + key: 'tab2', + label: requestProject()}>工程一览{activeKey === 'tab2'}, + }, + + ], + }, + }} scroll={{ x: 800 }} options={false} ref={c => { finishedProductTable = c; }} style={{ width: "100% ", overflow: "auto", height: '760px' }} rowKey='id' onReset={(v) => { - const { id } = depMessage[0] - console.log(id) - setRegionId(id) - setPlaceType(-1) - setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) - setSitename('') + // const { id } = depMessage[0] + // console.log(id) + // setRegionId(id) + // setPlaceType(-1) + // setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) + // setSitename('') }} rowSelection={{ selectedRowKeys: rowSelected, @@ -1536,21 +3106,15 @@ const BrideTable = (props) => { setRowSelected(selectedRowKeys); }, }} - columns={columns} + columns={columns[activeKey]} dataSource={(counts || {}).rows || []} request={async (params) => { const query = { - startDate: day[0], - endDate: day[1], - placeType: placeType, - regionId: regionId, - placeName: sitename, - limit: params.pageSize, - offset: ((params.current ? params.current : 1) - 1) * params.pageSize + } setRowSelected([]); - const res = await dispatch(getReportStatistic(query)); + const res = await dispatch(getBridge(query)); setCounts(res.payload.data) return { ...res, @@ -1571,8 +3135,14 @@ const BrideTable = (props) => { }} > -
- + +
+ ) } diff --git a/web/client/src/sections/fillion/components/compileDrawer.js b/web/client/src/sections/fillion/components/compileDrawer.js deleted file mode 100644 index 6c22aa9b..00000000 --- a/web/client/src/sections/fillion/components/compileDrawer.js +++ /dev/null @@ -1,118 +0,0 @@ -// import React, { useEffect, useState } from 'react'; -// import { connect } from 'react-redux'; -// import { Spin, Drawer, Button } from 'antd'; -// import '../style.less'; -// import { EditableProTable } from '@ant-design/pro-table'; - -// const CompileDrawer = (props) => { -// const { dispatch, actions, user, loading, visible, checkRow, close, reportRectifyDetail, checkAction } = props -// const [requesting, setRequesting] = useState(false) -// const [dataSource, setDataSource] = useState([]) -// const { report } = actions -// const isCheck = checkAction == 'check' - -// useEffect(() => { -// if (checkRow.day) { -// dispatch(report.reportRectifyDetail(checkRow.day, checkRow.depId)) -// } -// }, [checkRow]) - -// useEffect(() => { -// let data = reportRectifyDetail -// let i = 1 -// for (let d of data) { -// d.index_ = i++ -// } -// setDataSource(data) -// }, [reportRectifyDetail]) - -// return ( -// { -// close() -// }} -// visible={visible} -// width={'82%'} -// > -// -// r.id) -// }} -// toolBarRender={() => [ -// isCheck ? '' : -// -// ]} -// > - -// -// -// -// ) -// } - -// function mapStateToProps (state) { -// const { auth, global, members, reportRectifyDetail } = state; -// return { -// loading: reportRectifyDetail.isRequesting, -// user: auth.user, -// actions: global.actions, -// members: members.data, -// reportRectifyDetail: reportRectifyDetail.data || [] -// }; -// } - -// export default connect(mapStateToProps)(CompileDrawer); diff --git a/web/client/src/sections/fillion/components/configModal.js b/web/client/src/sections/fillion/components/configModal.js deleted file mode 100644 index f2ad4352..00000000 --- a/web/client/src/sections/fillion/components/configModal.js +++ /dev/null @@ -1,124 +0,0 @@ -// import React, { useEffect, useRef } from 'react'; -// import { connect } from 'react-redux'; -// import { Spin, Button, Modal, Form, Switch } from 'antd'; -// import ProForm, { ProFormText, ProFormSelect } from '@ant-design/pro-form'; -// import { useState } from 'react'; - -// const ConfigModal = (props) => { -// const { dispatch, actions, user, loading, visible, close, editData, allAreas, reportType } = props -// const [excuteTimeOptions, setExcuteTimeOptions] = useState([]) -// const formRef = useRef() -// const { report } = actions - -// useEffect(() => { -// let excuteTimeOptions = [] -// for (let i = 0; i < 24; i++) { -// let curT = i -// if (curT < 10) { -// curT = '0' + curT -// } -// excuteTimeOptions.push({ -// value: curT + ':00', -// label: curT + ':00', -// }) -// excuteTimeOptions.push({ -// value: curT + ':30', -// label: curT + ':30', -// }) -// } -// setExcuteTimeOptions(excuteTimeOptions); -// }, []) - -// return ( -// { -// formRef.current.validateFields().then(v => { -// v.excuteTime = String(v.excuteTime) -// console.log(v); -// dispatch(editData ? report.editReportConfig(v, editData.id) : report.addReportConfig(v)).then(res => { -// if (res.success) { -// dispatch(report.getReportConfig()) -// close() -// } -// }) -// }) -// }} -// onCancel={() => { -// close() -// }} -// > -// -// -// -// { -// return { -// value: a.id, -// label: a.name, -// } -// })} -// cacheForSwr -// name="regionId" -// label="区域" -// required -// rules={[{ required: true, message: '请选择区域' }]} -// /> -// -// -// -// -// -// -// ) -// } - -// function mapStateToProps (state) { -// const { auth, global, allAreas } = state; -// console.log(allAreas); -// return { -// user: auth.user, -// actions: global.actions, -// allAreas: allAreas.data || [] -// }; -// } - -// export default connect(mapStateToProps)(ConfigModal); diff --git a/web/client/src/sections/fillion/components/enforceTable.js b/web/client/src/sections/fillion/components/enforceTable.js index f5d15f51..468c0818 100644 --- a/web/client/src/sections/fillion/components/enforceTable.js +++ b/web/client/src/sections/fillion/components/enforceTable.js @@ -5,6 +5,8 @@ import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; import { getReportStatistic } from "../actions/infor" +import UserModal from './infor/details'; + const enforceTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) @@ -13,10 +15,36 @@ const enforceTable = (props) => { const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 const [sitename, setSitename] = useState()//场所名称 const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) - + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + +//打开弹窗 +const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } +} + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) +} const columns = [ { @@ -1477,7 +1505,13 @@ const enforceTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
+ return
} }, @@ -1486,13 +1520,14 @@ const enforceTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form,record) => { return (
- + ) } diff --git a/web/client/src/sections/fillion/components/highwaysTable.js b/web/client/src/sections/fillion/components/highwaysTable.js index ff18948b..de0e8091 100644 --- a/web/client/src/sections/fillion/components/highwaysTable.js +++ b/web/client/src/sections/fillion/components/highwaysTable.js @@ -5,6 +5,8 @@ import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; import { getReportStatistic } from "../actions/infor" +import UserModal from './infor/details'; + const HigwaysTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) @@ -13,10 +15,36 @@ const HigwaysTable = (props) => { const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 const [sitename, setSitename] = useState()//场所名称 const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) - + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + +//打开弹窗 +const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } +} + //批量导出 +const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) +} const columns = [ { @@ -1477,7 +1505,12 @@ const HigwaysTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
+ return
} }, @@ -1486,13 +1519,14 @@ const HigwaysTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
@@ -1572,7 +1604,12 @@ const HigwaysTable = (props) => { >
- + ) } diff --git a/web/client/src/sections/fillion/components/infor/details.js b/web/client/src/sections/fillion/components/infor/details.js index 4522a774..35b4a6c9 100644 --- a/web/client/src/sections/fillion/components/infor/details.js +++ b/web/client/src/sections/fillion/components/infor/details.js @@ -1,114 +1,44 @@ import React from 'react'; import { connect } from 'react-redux'; import { Spin, Table } from 'antd'; -import { ModalForm } from '@ant-design/pro-form'; +import { DrawerForm, ProForm, ProFormText } from '@ant-design/pro-form'; import moment from 'moment'; const UserModal = (props) => { - const { visible, onVisibleChange } = props - const datas = props.modalRecord || {} - const scopeOfExamination = { ...datas }.hiddenDangerItem12 - const arr = [ - ' 1、合用场所的所有权人、使用人是否遵守消防法律、法规、规章;', - ' 2、住宿场所是否违规搭建;', - ' 3、合用场所是否配置灭火器、消防应急照明等消防器材和设施;', - ' 4、合用场所的电器产品的安装、使用及其线路和管路的设计、敷设、维护保养、检测,是否符合消防技术标准和管理规定;', - ' 5、合用场所住宿是否超过2人;(judge_0) 若超过,人员住宿是否设置在首层,并直通室外安全出口。(judge_1)', - ' 6、电动自行车是否违规室内充电、停放;', - ' 7、合用场所是否违规生产、储存、经营易燃易爆危险品;', - ' 8、合用场所除厨房外是否违规使用或者放置瓶装液化石油气、可燃液体;', - ' 9、放置瓶装液化石油气的厨房是否采取防火分隔措施,并设置自然排风窗;', - ' 10、合用场所疏散通道、安全出口是否保持畅通;', - ' 11、合用场所的外窗或阳台是否设置金属栅栏;(judge_0) 若设置,是否能从内部易于开启。(judge_1)', - ' 12、存在其他安全隐患;', - ] - const columns = [ - { - title: '场所名称', - dataIndex: 'reportName', - hideInSearch: true, - render: () => { - return
{datas.placeName}
- } - }, { - title: '场所基本情况', - dataIndex: 'reportName', - hideInSearch: true, - render: () => { - return
-
  • 使用性质:{datas.placeType}
  • -
  • 地址:{datas.address}
  • -
  • 负责人:{datas.placeOwner}
  • -
  • 电话:{datas.phone}
  • -
  • 面积:{datas.dimension}
  • -
  • 层数:{datas.floors}
  • -
  • 常驻人口:{datas.numberOfPeople}
  • -
    - } - }, { - title: '检查内容', - dataIndex: 'reportName', - hideInSearch: true, - render: () => { - return datas.hiddenDangerItem12 ? - scopeOfExamination.map((item, index) => { - let message = arr[index] - if (arr[index].indexOf('judge_') > -1) { - if (item.value == true && index === 4) { - message = message.replace(`judge_1`, item.child.value ? "是" : "否") - } else { - message = message.replace(`若超过,人员住宿是否设置在首层,并直通室外安全出口。(judge_1)`, '') - - - } - if (item.value == true && index === 10) { - message = message.replace(`judge_1`, item.child.value ? "是" : "否") - } else { - - message = message.replace(`若设置,是否能从内部易于开启。(judge_1)`, '') - - } - if (arr[index].indexOf('judge_0') > -1) { - return
  • {message.replace(`judge_0`, item.value ? "是" : "否")}
  • - } - } - return
  • {message}({item.value ? "是" : "否"})
  • - }) - : '---' - } - }, { - title: '存在具体问题', - dataIndex: 'reportName', - hideInSearch: true, - render: () => { - return
    {datas.description ? datas.description : '---'}
    - } - }, - ] - const data = [ - { - key: '1', - - address: 'New York No. 1 Lake Park', - tags: ['nice', 'developer'], - }, - ]; + const { visible, onVisibleChange,typecard } = props + console.log(typecard) return ( - -
    排查单位:{(datas || {}).checkAreaName || ''} - 填报日期:{moment((datas || {}).time).format('YYYY-MM-DD') || ''}
    - -
    - 排查人:{(datas || {}).checkUserName || ''} - 手机号:{(datas || {}).checkUserPhone || ''}
    - + {typecard==111? + + + + : + + + } + + ) } diff --git a/web/client/src/sections/fillion/components/inforTable.js b/web/client/src/sections/fillion/components/inforTable.js index 58dc18bf..5690aae7 100644 --- a/web/client/src/sections/fillion/components/inforTable.js +++ b/web/client/src/sections/fillion/components/inforTable.js @@ -1,22 +1,47 @@ import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; -import { Spin, Button, Popconfirm, Badge } from 'antd'; +import { Spin, Button, Popconfirm, Col, Input,Row } from 'antd'; import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; import { getReportStatistic } from "../actions/infor" +import UserModal from './infor/details'; + const InForTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) - const [regionId, setRegionId] = useState()//区域id - const [placeType, setPlaceType] = useState()//场所 - const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 - const [sitename, setSitename] = useState()//场所名称 + const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) + } const columns = [ { @@ -67,22 +92,34 @@ const InForTable = (props) => { // search: false, dataIndex: 'containers3', // valueType: 'dateRange', - // initialValue: day, + // width: 120, render: (dom, record) => { return record.address }, - fieldProps: { - placeholder: '请输入超限率进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, + // fieldProps: { + // placeholder: '请输入超限率进行搜索', + // getPopupContainer: (triggerNode) => triggerNode.parentNode, + // }, + renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => { + return + + + + + + + + + } - + }, { title: '超限重量(kg)', search: false, dataIndex: 'containers4', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -96,7 +133,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers5', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -110,7 +147,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers6', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -137,7 +174,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers8', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -151,7 +188,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -166,7 +203,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers10', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -181,7 +218,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers11', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -196,7 +233,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers12', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -211,7 +248,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -226,7 +263,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers13', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -241,7 +278,7 @@ const InForTable = (props) => { search: false, dataIndex: 'containers14', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -260,7 +297,13 @@ const InForTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
    + return
    } }, @@ -269,13 +312,14 @@ const InForTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    @@ -305,14 +347,7 @@ const InForTable = (props) => { ref={c => { finishedProductTable = c; }} style={{ width: "100% ", overflow: "auto", height: '760px' }} rowKey='id' - onReset={(v) => { - const { id } = depMessage[0] - console.log(id) - setRegionId(id) - setPlaceType(-1) - setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) - setSitename('') - }} + rowSelection={{ selectedRowKeys: rowSelected, onChange: (selectedRowKeys) => { @@ -355,7 +390,12 @@ const InForTable = (props) => { >
    - + ) } diff --git a/web/client/src/sections/fillion/components/operationalTable.js b/web/client/src/sections/fillion/components/operationalTable.js index 55c2d088..653ae268 100644 --- a/web/client/src/sections/fillion/components/operationalTable.js +++ b/web/client/src/sections/fillion/components/operationalTable.js @@ -4,1146 +4,94 @@ import { Spin, Button, Popconfirm, Badge } from 'antd'; import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; -import { getReportStatistic } from "../actions/infor" -const OperaTionalTable = (props) => { - const { dispatch, user, depData, depMessage, depLoading } = props - const [rowSelected, setRowSelected] = useState([]) - const [regionId, setRegionId] = useState()//区域id - const [placeType, setPlaceType] = useState()//场所 - const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 - const [sitename, setSitename] = useState()//场所名称 - const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) - const [activeKey, setActiveKey] = useState('tab1'); - // const renderBadge = (count, active = false) => { - // return ( - // - // ); - // }; - const columns = { - tab1: [ - { - title: '路线名称', - dataIndex: 'placeName', - fixed: 'left', - width: 120, - options: 1, - backgroundColor: "#ffffff", - fieldProps: { - onChange: (value, cs) => { - setSitename(value.currentTarget.value) - }, - placeholder: '请输入道路名称进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, - }, - }, - { - title: '路线代码', - search: false, - dataIndex: 'containers', - - fixed: 'left', - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, - { - title: '路段序号', - search: false, - dataIndex: 'time2', - valueType: 'dateRange', - // align: 'right', - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, - { - title: '乡镇编码', - search: false, - dataIndex: 'time3', - valueType: 'dateRange', - initialValue: day, - - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '起点地名', - search: false, - dataIndex: 'time4', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '起点桩号', - search: false, - dataIndex: 'time5', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '起点分界点类别', - search: false, - dataIndex: 'time6', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '止点地名', - search: false, - dataIndex: 'time7', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '止点分界点类别', - search: false, - dataIndex: 'time8', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '止点桩号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路段类型', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路网调整前路线编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '原路段序号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '原路段起点桩号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '原路段止点桩号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路线等级', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路段性质', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '建成时间', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '改建时间', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '建设性质', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '最近一次修复养护年度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: 'GBM及文明样板路', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '地貌', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '收费性质', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '所属收费站', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '涵洞数量', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '技术等级', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路面类型', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '面层厚度(厘米)', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路面宽度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路基宽度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '是否晴雨通车', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '车道特征', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '设计时速', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '是否城管路段', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '管养单位', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '路政管理单位', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '列养情况', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '列养资金来源', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '养护时间', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '可绿化里程', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '已绿化里程', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '重复道路路段类型', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '重复路段序号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '重复路段路线编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划资金类别', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划年度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划文号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目唯一编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目路线编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目名称', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目类型', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '完工情况', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '完工年度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划资金类别', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划年度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划文号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目唯一编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '计划项目名称', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '完工情况', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '完工年度', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '桩号范围', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '填报单位', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '变更原因', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '变更时间', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '是否按干线公路管理接养', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '备注', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '上年路线编码', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '上年路线名称', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '上年起点桩号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '上年止点桩号', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, +import { getOperaTional, getSpecificVehicle, getHouseholds } from "../actions/infor" +import UserModal from './infor/details'; - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '图形里程', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '桩号里程', +const OperaTionalTable = (props) => { + const { dispatch, user, depData, depMessage, depLoading } = props + const [rowSelected, setRowSelected] = useState([]) + // const [regionId, setRegionId] = useState()//区域id + // const [placeType, setPlaceType] = useState()//场所 + // const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 + // const [sitename, setSitename] = useState()//场所名称 + const [counts, setCounts] = useState()//shuju + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + const [activeKey, setActiveKey] = useState('tab1'); + //客运请求 + const requestoperational = () => { + const query = '' + setRowSelected([]); + const res = dispatch(getOperaTional(query)); + setCounts(res.payload.data) + } + //危货出租车请求 + const requestspecificvehicle = (name) => { + const query = name + setRowSelected([]); + const res = dispatch(getSpecificVehicle(query)); + setCounts(res.payload.data) + } + // + const requesthouseholds = () => { + const query = '' + setRowSelected([]); + const res = dispatch(getHouseholds(query)); + setCounts(res.payload.data) + } + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) + } + const columns = { + tab1: [ + { + title: '类型', + dataIndex: 'placeName', + fixed: 'left', + width: 120, + options: 1, + backgroundColor: "#ffffff", search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - render: (dom, record) => { - return record.address - }, fieldProps: { + onChange: (value, cs) => { + setSitename(value.currentTarget.value) + }, + placeholder: '请输入道路名称进行搜索', getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '所在区县', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '所在地市', + }, + { + title: '数量', search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, + dataIndex: 'containers', + fixed: 'left', + width: 120, render: (dom, record) => { return record.address }, @@ -1159,41 +107,17 @@ const OperaTionalTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
    + return
    } }, - { - key: "direction", - hideInTable: true, - dataIndex: "direction", - order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { - return ( -
    - -
    - - ); - }, - }, ], tab2: [ { title: '业户名称', @@ -1243,7 +167,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time3', valueType: 'dateRange', - initialValue: day, + width: 120, @@ -1258,7 +182,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time4', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -1272,7 +196,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time5', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -1286,7 +210,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time6', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -1300,7 +224,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time7', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -1314,7 +238,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time8', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -1328,7 +252,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1343,7 +267,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1358,7 +282,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1373,7 +297,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1388,7 +312,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1403,7 +327,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1418,7 +342,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1433,7 +357,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1448,7 +372,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1463,7 +387,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1478,7 +402,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1493,7 +417,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1508,7 +432,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1523,7 +447,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1538,7 +462,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1553,7 +477,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1568,7 +492,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1583,7 +507,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1598,7 +522,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1613,7 +537,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1628,7 +552,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1643,7 +567,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1658,7 +582,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1673,7 +597,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1688,7 +612,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1703,7 +627,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1718,7 +642,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1733,7 +657,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1748,7 +672,7 @@ const OperaTionalTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1767,7 +691,12 @@ const OperaTionalTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
    + return
    } }, @@ -1776,13 +705,14 @@ const OperaTionalTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    + return
    } }, { @@ -2398,13 +1333,14 @@ const OperaTionalTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    + return
    } }, @@ -3561,13 +2502,14 @@ const OperaTionalTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    - + : null + ], }} >
    - + ) } diff --git a/web/client/src/sections/fillion/components/promotionalTable.js b/web/client/src/sections/fillion/components/promotionalTable.js index 7b7803fc..f12810dd 100644 --- a/web/client/src/sections/fillion/components/promotionalTable.js +++ b/web/client/src/sections/fillion/components/promotionalTable.js @@ -13,9 +13,7 @@ const promotionalTable = (props) => { const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 const [sitename, setSitename] = useState()//场所名称 const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) + const columns = [{ @@ -141,6 +139,7 @@ const promotionalTable = (props) => { // // ], // }} + > diff --git a/web/client/src/sections/fillion/components/publicTable.js b/web/client/src/sections/fillion/components/publicTable.js index d0aba20d..51f55cfb 100644 --- a/web/client/src/sections/fillion/components/publicTable.js +++ b/web/client/src/sections/fillion/components/publicTable.js @@ -5,6 +5,8 @@ import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; import { getReportStatistic } from "../actions/infor" +import UserModal from './infor/details'; + const PublicTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) @@ -12,11 +14,39 @@ const PublicTable = (props) => { const [placeType, setPlaceType] = useState()//场所 const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 const [sitename, setSitename] = useState()//场所名称 - const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) + const [counts, setCounts] = useState()//shuju const [activeKey, setActiveKey] = useState('tab1'); + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); + + + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) + } const columns = { tab1: [ { @@ -128,7 +158,12 @@ const PublicTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
    + return
    } }, @@ -137,13 +172,14 @@ const PublicTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    + return
    } }, @@ -285,13 +326,14 @@ const PublicTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    - + ) } diff --git a/web/client/src/sections/fillion/components/transportationTable.js b/web/client/src/sections/fillion/components/transportationTable.js index 666f5052..1d109899 100644 --- a/web/client/src/sections/fillion/components/transportationTable.js +++ b/web/client/src/sections/fillion/components/transportationTable.js @@ -4,34 +4,1220 @@ import { Spin, Button, Popconfirm, Badge } from 'antd'; import ProTable from '@ant-design/pro-table'; import './protable.less' import moment from 'moment'; -import { getReportStatistic } from "../actions/infor" -const InForTable = (props) => { +import { getRoadway, getProject } from "../actions/infor" +import UserModal from './infor/details'; + +const TransporTationTable = (props) => { const { dispatch, user, depData, depMessage, depLoading } = props const [rowSelected, setRowSelected] = useState([]) - const [regionId, setRegionId] = useState()//区域id - const [placeType, setPlaceType] = useState()//场所 - const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 - const [sitename, setSitename] = useState()//场所名称 + // const [regionId, setRegionId] = useState()//区域id + // const [placeType, setPlaceType] = useState()//场所 + // const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 + // const [sitename, setSitename] = useState()//场所名称 const [counts, setCounts] = useState()//shuju - useEffect(() => { - setRegionId(user.departmentId) - }, [user]) + const [modalVisible, setModalVisible] = useState(false); + const [modalRecord, setModalRecord] = useState(); + const [typecard, setTypecard] = useState(); const [activeKey, setActiveKey] = useState('tab1'); - // const renderBadge = (count, active = false) => { - // return ( - // - // ); - // }; + + //请求数据 + const requestRoadway = (name) => { + const query = { + level: name + } + setRowSelected([]); + const res = dispatch(getRoadway(query)); + setCounts(res.payload.data) + } + //工程数据 + const requestProject = () => { + const query = { + type: '道路' + } + setRowSelected([]); + const res = dispatch(getProject(query)); + setCounts(res.payload.data) + } + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } + console.log(counts) + //批量导出 + const exports = (ids, counts) => { + // console.log(user); + let reportIds = []; + if (ids.length) + reportIds = ids + else + reportIds = (counts || {}).ids || []; + superagent.post('/_report/http') + .send({ id: reportIds.map(i => Number(i)) }).end((err, res) => { + const resTextIs = res.text.split('/').pop() + window.open( + '/_api/' + + `attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`) + }) + } const columns = { tab1: [ + { + title: '路线名称', + dataIndex: 'placeName', + fixed: 'left', + width: 120, + options: 1, + backgroundColor: "#ffffff", + fieldProps: { + onChange: (value, cs) => { + setSitename(value.currentTarget.value) + }, + placeholder: '请输入道路名称进行搜索', + getPopupContainer: (triggerNode) => triggerNode.parentNode, + }, + render: (dom, record) => { + console.log('record',record) + return record.routeName + }, + }, + { + title: '路线代码', + search: false, + dataIndex: 'containers', + + fixed: 'left', + width: 120, + render: (dom, record) => { + return record.routeCode + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '路段序号', + search: false, + dataIndex: 'time2', + valueType: 'dateRange', + // align: 'right', + width: 120, + render: (dom, record) => { + return record.sectionNo + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '乡镇编码', + search: false, + dataIndex: 'time3', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.townshipCode + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '起点地名', + search: false, + dataIndex: 'time4', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.startingPlaceName + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '起点桩号', + search: false, + dataIndex: 'time5', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.startStation + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '起点分界点类别', + search: false, + dataIndex: 'time6', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.categoryOfStartingPointAndDividingPoint + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '止点地名', + search: false, + dataIndex: 'time7', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.stopPlaceName + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '止点分界点类别', + search: false, + dataIndex: 'time8', + valueType: 'dateRange', + width: 120, + render: (dom, record) => { + return record.categoryOfDeadCenterAndDividingPoint + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '止点桩号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + width: 140, + render: (dom, record) => { + return record.stopStation + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路段类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + width: 140, + render: (dom, record) => { + return record.sectionType + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路网调整前路线编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + width: 140, + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '原路段序号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '原路段起点桩号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '原路段止点桩号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路线等级', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路段性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '建成时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '改建时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '建设性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '最近一次修复养护年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: 'GBM及文明样板路', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '地貌', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '收费性质', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '所属收费站', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '涵洞数量', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '技术等级', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路面类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '面层厚度(厘米)', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路面宽度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路基宽度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否晴雨通车', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '车道特征', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '设计时速', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否城管路段', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '管养单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '路政管理单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '列养情况', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '列养资金来源', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '养护时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '可绿化里程', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '已绿化里程', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '重复道路路段类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '重复路段序号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '重复路段路线编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划资金类别', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划文号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目唯一编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目路线编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目类型', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工情况', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划资金类别', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划文号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目唯一编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '计划项目名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工情况', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '完工年度', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桩号范围', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '填报单位', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '变更原因', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '变更时间', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '是否按干线公路管理接养', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '备注', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上年路线编码', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上年路线名称', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上年起点桩号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '上年止点桩号', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '图形里程', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '桩号里程', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '所在区县', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, { + title: '所在地市', + search: false, + dataIndex: 'time9', + valueType: 'dateRange', + + + width: 140, + + render: (dom, record) => { + return record.address + }, + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '操作', + dataIndex: 'creatTime', + valueType: 'dateTimeRange', + hideInSearch: true, + width: 120, + fixed: 'right', + render: (dom, record) => { + return
    + + } + }, + { + key: "direction", + hideInTable: true, + dataIndex: "direction", + order: 6, + renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + return ( +
    + +
    + + + ); + }, + }, + ], tab2: [ { title: '路线名称', dataIndex: 'placeName', @@ -80,7 +1266,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time3', valueType: 'dateRange', - initialValue: day, + width: 120, @@ -95,7 +1281,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time4', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -109,7 +1295,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time5', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -123,7 +1309,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time6', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -137,7 +1323,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time7', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -151,7 +1337,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time8', valueType: 'dateRange', - initialValue: day, + width: 120, render: (dom, record) => { @@ -165,7 +1351,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -180,7 +1366,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -195,7 +1381,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -210,7 +1396,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -225,7 +1411,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -240,7 +1426,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -255,7 +1441,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -270,7 +1456,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -285,7 +1471,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -300,7 +1486,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -315,7 +1501,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -330,7 +1516,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -345,7 +1531,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -360,7 +1546,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -375,7 +1561,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -390,7 +1576,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -405,7 +1591,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -420,7 +1606,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -435,7 +1621,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -450,7 +1636,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -465,7 +1651,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -480,7 +1666,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -495,7 +1681,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -510,7 +1696,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -525,7 +1711,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -540,7 +1726,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -555,7 +1741,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -570,7 +1756,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -585,7 +1771,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -600,7 +1786,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -615,7 +1801,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -630,7 +1816,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -645,7 +1831,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -660,7 +1846,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -675,7 +1861,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -690,7 +1876,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -705,7 +1891,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -720,7 +1906,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -735,7 +1921,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -750,7 +1936,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -765,7 +1951,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -780,7 +1966,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -795,7 +1981,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -810,7 +1996,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -825,7 +2011,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -840,7 +2026,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -855,7 +2041,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -870,7 +2056,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -885,7 +2071,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -900,7 +2086,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -915,7 +2101,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -930,7 +2116,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -945,7 +2131,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -960,7 +2146,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -975,7 +2161,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -990,7 +2176,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1005,7 +2191,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1020,7 +2206,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1035,7 +2221,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1050,7 +2236,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1065,7 +2251,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1080,7 +2266,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1095,7 +2281,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1110,7 +2296,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1125,7 +2311,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1140,7 +2326,7 @@ const InForTable = (props) => { search: false, dataIndex: 'time9', valueType: 'dateRange', - initialValue: day, + width: 140, @@ -1159,7 +2345,12 @@ const InForTable = (props) => { width: 120, fixed: 'right', render: (dom, record) => { - return
    + return
    } }, @@ -1168,13 +2359,14 @@ const InForTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    + return
    } }, @@ -2331,13 +3528,14 @@ const InForTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    + return
    } }, @@ -3494,13 +4697,14 @@ const InForTable = (props) => { hideInTable: true, dataIndex: "direction", order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { + renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => { return (
    - + + + ) } @@ -3628,4 +4837,4 @@ function mapStateToProps(state) { depData, }; } -export default connect(mapStateToProps)(InForTable); \ No newline at end of file +export default connect(mapStateToProps)(TransporTationTable); \ No newline at end of file diff --git a/web/client/src/sections/fillion/containers/bridge.js b/web/client/src/sections/fillion/containers/bridge.js index d1f968e7..d65cad4f 100644 --- a/web/client/src/sections/fillion/containers/bridge.js +++ b/web/client/src/sections/fillion/containers/bridge.js @@ -4,12 +4,12 @@ import '../style.less'; import { getDepMessage, getReportStatistic } from "../actions/infor" import BridgeTable from '../components/bridgeTable'; const superagent = require('superagent'); -const infor = (props) => { +const bridge = (props) => { const { dispatch, user } = props const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 @@ -39,4 +39,4 @@ function mapStateToProps(state) { user: auth.user, } } -export default connect(mapStateToProps)(infor); \ No newline at end of file +export default connect(mapStateToProps)(bridge); \ No newline at end of file diff --git a/web/client/src/sections/fillion/containers/enforce.js b/web/client/src/sections/fillion/containers/enforce.js index b572c374..677f8612 100644 --- a/web/client/src/sections/fillion/containers/enforce.js +++ b/web/client/src/sections/fillion/containers/enforce.js @@ -9,7 +9,7 @@ const enforce = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/highways.js b/web/client/src/sections/fillion/containers/highways.js index 7b30888e..f734f12a 100644 --- a/web/client/src/sections/fillion/containers/highways.js +++ b/web/client/src/sections/fillion/containers/highways.js @@ -9,7 +9,7 @@ const highways = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/infor.js b/web/client/src/sections/fillion/containers/infor.js index eb72fbcd..1d492a93 100644 --- a/web/client/src/sections/fillion/containers/infor.js +++ b/web/client/src/sections/fillion/containers/infor.js @@ -11,7 +11,7 @@ const infor = (props) => { const [modalRecord, setModalRecord] = useState(); useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); // //打开弹窗 diff --git a/web/client/src/sections/fillion/containers/infor/details.js b/web/client/src/sections/fillion/containers/infor/details.js deleted file mode 100644 index 016b8288..00000000 --- a/web/client/src/sections/fillion/containers/infor/details.js +++ /dev/null @@ -1,124 +0,0 @@ -// import React from 'react'; -// import { connect } from 'react-redux'; -// import { Spin, Table } from 'antd'; -// import { ModalForm } from '@ant-design/pro-form'; -// import moment from 'moment'; -// const UserModal = (props) => { -// const { visible, onVisibleChange } = props -// const datas = props.modalRecord || {} -// const scopeOfExamination = { ...datas }.hiddenDangerItem12 -// const arr = [ -// ' 1、合用场所的所有权人、使用人是否遵守消防法律、法规、规章;', -// ' 2、住宿场所是否违规搭建;', -// ' 3、合用场所是否配置灭火器、消防应急照明等消防器材和设施;', -// ' 4、合用场所的电器产品的安装、使用及其线路和管路的设计、敷设、维护保养、检测,是否符合消防技术标准和管理规定;', -// ' 5、合用场所住宿是否超过2人;(judge_0) 若超过,人员住宿是否设置在首层,并直通室外安全出口;(judge_1)', -// ' 6、电动自行车是否违规室内充电、停放;', -// ' 7、合用场所是否违规生产、储存、经营易燃易爆危险品;', -// ' 8、合用场所除厨房外是否违规使用或者放置瓶装液化石油气、可燃液体;', -// ' 9、放置瓶装液化石油气的厨房是否采取防火分隔措施,并设置自然排风窗;', -// ' 10、合用场所疏散通道、安全出口是否保持畅通;', -// ' 11、合用场所的外窗或阳台是否设置金属栅栏;(judge_0) 若设置,是否能从内部易于开启。(judge_1)', -// ' 12、存在其他安全隐患;', -// ] -// const columns = [ -// { -// title: '场所名称', -// dataIndex: 'reportName', -// hideInSearch: true, -// render: () => { -// return
    {datas.placeName}
    -// } -// }, { -// title: '场所基本情况', -// dataIndex: 'reportName', -// hideInSearch: true, -// render: () => { -// return
    -//
  • 使用性质:{datas.placeType}
  • -//
  • 地址:{datas.address}
  • -//
  • 负责人:{datas.placeOwner}
  • -//
  • 电话:{datas.phone}
  • -//
  • 面积:{datas.dimension}
  • -//
  • 层数:{datas.floors}
  • -//
  • 常驻人口:{datas.numberOfPeople}
  • -//
    -// } -// }, { -// title: '检查内容', -// dataIndex: 'reportName', -// hideInSearch: true, -// render: () => { -// return datas.hiddenDangerItem12 ? -// scopeOfExamination.map((item, index) => { -// let message = arr[index] -// if (arr[index].indexOf('judge_') > -1) { -// if (item.child && item.child.itemIndex) { -// message = message.replace(`judge_${item.child.itemIndex}`, item.child.value ? "是" : "否") -// } else { -// message = message.replace(`judge_1`, '---') -// } - -// if (arr[index].indexOf('judge_0') > -1) { -// return
  • {message.replace(`judge_0`, item.value ? "是" : "否")}
  • -// } -// } -// return
  • {message}({item.value ? "是" : "否"})
  • -// }) -// : '---' -// } -// }, { -// title: '存在具体问题', -// dataIndex: 'reportName', -// hideInSearch: true, -// render: () => { -// return
    {datas.description ? datas.description : '---'}
    -// } -// }, -// ] -// const data = [ -// { -// key: '1', - -// address: 'New York No. 1 Lake Park', -// tags: ['nice', 'developer'], -// }, -// ]; -// return ( -// -// -//
    排查单位:{(datas || {}).checkAreaName || ''} -// 填报日期:{moment((datas || {}).time).format('YYYY-MM-DD') || ''}
    -//
    -//
    -// 排查人:{(datas || {}).checkUserName || ''} -// 手机号:{(datas || {}).checkUserPhone || ''}
    -// -// -// ) -// } -// function mapStateToProps (state) { -// const { depMessage } = state; -// const pakData = (dep) => { -// return dep.map((d) => { -// return { -// title: d.name, -// value: d.id, -// children: pakData(d.subordinate) -// } -// }) -// } -// let depData = pakData(depMessage.data || []) -// return { -// loading: depMessage.isRequesting, -// depData, -// }; -// } -// export default connect(mapStateToProps)(UserModal); \ No newline at end of file diff --git a/web/client/src/sections/fillion/containers/maintenance.js b/web/client/src/sections/fillion/containers/maintenance.js index 6a231dec..1554927e 100644 --- a/web/client/src/sections/fillion/containers/maintenance.js +++ b/web/client/src/sections/fillion/containers/maintenance.js @@ -9,7 +9,7 @@ const Maintenance = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/operational.js b/web/client/src/sections/fillion/containers/operational.js index 82fb180e..2c6a2fda 100644 --- a/web/client/src/sections/fillion/containers/operational.js +++ b/web/client/src/sections/fillion/containers/operational.js @@ -9,7 +9,7 @@ const operational = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/patrol.js b/web/client/src/sections/fillion/containers/patrol.js index 0e7b77c0..bd57775b 100644 --- a/web/client/src/sections/fillion/containers/patrol.js +++ b/web/client/src/sections/fillion/containers/patrol.js @@ -9,7 +9,7 @@ const patrol = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/promotional.js b/web/client/src/sections/fillion/containers/promotional.js index cdb3492d..98b1bc6f 100644 --- a/web/client/src/sections/fillion/containers/promotional.js +++ b/web/client/src/sections/fillion/containers/promotional.js @@ -10,7 +10,7 @@ const promotional = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); // //批量导出 diff --git a/web/client/src/sections/fillion/containers/public.js b/web/client/src/sections/fillion/containers/public.js index 073fd9d3..b0a5dc1e 100644 --- a/web/client/src/sections/fillion/containers/public.js +++ b/web/client/src/sections/fillion/containers/public.js @@ -9,7 +9,7 @@ const Public = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/transportation.js b/web/client/src/sections/fillion/containers/transportation.js index b57967eb..405f7082 100644 --- a/web/client/src/sections/fillion/containers/transportation.js +++ b/web/client/src/sections/fillion/containers/transportation.js @@ -9,7 +9,7 @@ const transportation = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/sections/fillion/containers/videois.js b/web/client/src/sections/fillion/containers/videois.js index 61411e51..289d19ae 100644 --- a/web/client/src/sections/fillion/containers/videois.js +++ b/web/client/src/sections/fillion/containers/videois.js @@ -9,7 +9,7 @@ const Videois = (props) => { const [data, setData] = useState() useEffect(() => { // dispatch(getDepMessage()) - dispatch(getReportStatistic()) + setData(props) }, []); //批量导出 diff --git a/web/client/src/themes/light.json b/web/client/src/themes/light.json index c59ee5e5..a7c012cd 100644 --- a/web/client/src/themes/light.json +++ b/web/client/src/themes/light.json @@ -1 +1 @@ -{"@line-height-base":"1.66667","@mode":"compact","@font-size-base":"12px","@font-size-lg":"@font-size-base + 2px","@default-padding-lg":"24px","@default-padding-md":"16px","@default-padding-sm":"12px","@default-padding-xs":"8px","@default-padding-xss":"4px","@padding-lg":"16px","@padding-md":"8px","@padding-sm":"8px","@padding-xs":"4px","@padding-xss":"0px","@control-padding-horizontal":"@padding-sm","@control-padding-horizontal-sm":"@default-padding-xs","@margin-lg":"16px","@margin-md":"8px","@margin-sm":"8px","@margin-xs":"4px","@margin-xss":"0px","@height-base":"28px","@height-lg":"32px","@height-sm":"22px","@btn-padding-horizontal-base":"@default-padding-sm - 1px","@btn-padding-horizontal-lg":"@btn-padding-horizontal-base","@btn-padding-horizontal-sm":"@default-padding-xs - 1px","@btn-square-only-icon-size-lg":"16px","@btn-square-only-icon-size":"14px","@btn-square-only-icon-size-sm":"12px","@breadcrumb-font-size":"@font-size-base","@breadcrumb-icon-font-size":"@font-size-base","@dropdown-line-height":"18px","@menu-item-padding":"0 12px","@menu-horizontal-line-height":"38px","@menu-inline-toplevel-item-height":"32px","@menu-item-height":"32px","@menu-item-vertical-margin":"0px","@menu-item-boundary-margin":"0px","@menu-icon-margin-right":"8px","@checkbox-size":"14px","@checkbox-group-item-margin-right":"6px","@picker-panel-cell-height":"22px","@picker-panel-cell-width":"32px","@picker-text-height":"32px","@picker-time-panel-cell-height":"24px","@picker-panel-without-time-cell-height":"48px","@form-item-margin-bottom":"16px","@form-vertical-label-padding":"0 0 4px","@rate-star-size":"16px","@radio-size":"14px","@radio-wrapper-margin-right":"6px","@switch-height":"20px","@switch-sm-height":"14px","@switch-min-width":"40px","@switch-sm-min-width":"24px","@switch-inner-margin-min":"4px","@switch-inner-margin-max":"22px","@slider-handle-size":"12px","@slider-handle-margin-top":"-4px","@input-padding-vertical-base":"round(\n max(\n (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n @border-width-base,\n 2px\n )\n)","@input-padding-horizontal-lg":"11px","@page-header-padding":"16px","@page-header-padding-vertical":"8px","@page-header-heading-title":"16px","@page-header-heading-sub-title":"12px","@page-header-tabs-tab-font-size":"14px","@pagination-mini-options-size-changer-top":"1px","@pagination-item-size-sm":"22px","@cascader-dropdown-line-height":"@dropdown-line-height","@select-dropdown-height":"@height-base","@select-single-item-height-lg":"32px","@select-multiple-item-height":"@input-height-base - max(@input-padding-vertical-base, 4) * 2","@select-multiple-item-height-lg":"24px","@select-multiple-item-spacing-half":"3px","@tree-title-height":"20px","@transfer-item-padding-vertical":"3px","@transfer-list-search-icon-top":"8px","@transfer-header-height":"36px","@comment-actions-margin-bottom":"0px","@comment-actions-margin-top":"@margin-xs","@comment-content-detail-p-margin-bottom":"0px","@steps-icon-size":"24px","@steps-icon-custom-size":"20px","@steps-icon-custom-font-size":"20px","@steps-icon-custom-top":"2px","@steps-icon-margin":"2px 8px 2px 0","@steps-icon-font-size":"@font-size-base","@steps-dot-top":"4px","@steps-icon-top":"0px","@steps-small-icon-size":"20px","@steps-vertical-icon-width":"12px","@steps-vertical-tail-width":"12px","@steps-vertical-tail-width-sm":"10px","@collapse-header-padding-extra":"32px","@collapse-content-padding":"@padding-md @padding-lg","@list-item-meta-description-font-size":"@font-size-sm","@list-item-padding-sm":"4px 12px","@list-item-padding-lg":"12px 16px","@drawer-header-padding":"11px @padding-lg","@drawer-footer-padding-vertical":"@padding-sm","@drawer-footer-padding-horizontal":"@padding-sm","@drawer-header-close-size":"44px","@modal-header-padding-vertical":"11px","@modal-header-padding":"@modal-header-padding-vertical @modal-header-padding-horizontal","@modal-footer-padding-vertical":"@padding-sm","@modal-header-close-size":"@modal-header-title-line-height + 2 * @modal-header-padding-vertical","@modal-confirm-body-padding":"24px 24px 16px","@message-notice-content-padding":"8px 16px","@popover-min-height":"28px","@popover-padding-horizontal":"@default-padding-sm","@card-padding-base":"12px","@card-head-height":"36px","@card-head-font-size":"@card-head-font-size-sm","@card-head-padding":"8.5px","@card-padding-base-sm":"@card-padding-base","@card-head-height-sm":"30px","@card-head-padding-sm":"6px","@card-actions-li-margin":"4px 0","@card-head-tabs-margin-bottom":"-9px","@table-padding-vertical":"12px","@table-padding-horizontal":"8px","@table-padding-vertical-md":"8px","@table-padding-horizontal-md":"8px","@table-padding-vertical-sm":"4px","@table-padding-horizontal-sm":"4px","@table-selection-column-width":"32px","@statistic-content-font-size":"20px","@alert-with-description-no-icon-padding-vertical":"7px","@alert-with-description-padding-vertical":"11px","@alert-icon-top":"7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)","@alert-with-description-icon-size":"20px","@skeleton-paragraph-margin-top":"20px","@skeleton-paragraph-li-margin-top":"12px","@skeleton-paragraph-li-height":"14px","@skeleton-title-height":"14px","@skeleton-title-paragraph-margin-top":"20px","@descriptions-title-margin-bottom":"8px","@descriptions-default-padding":"12px @padding-lg","@descriptions-item-padding-bottom":"@padding-xs","@avatar-size-base":"28px","@avatar-size-lg":"32px","@avatar-size-sm":"22px","@avatar-font-size-base":"16px","@avatar-font-size-lg":"20px","@avatar-font-size-sm":"12px","@badge-height":"18px","@tag-line-height":"18px","@notification-padding-vertical":"12px","@notification-padding-horizontal":"16px","@result-title-font-size":"20px","@result-icon-font-size":"64px","@result-extra-margin":"24px 0 0 0","@anchor-link-top":"4px","@anchor-link-left":"16px","@anchor-link-padding":"@anchor-link-top 0 @anchor-link-top @anchor-link-left","@tabs-card-horizontal-padding":"4px @padding-md","@progress-circle-text-font-size":"0.833333em","@image-size-base":"48px","@image-font-size-base":"24px","@primary-color":"@blue-6","@layout-header-background":"#fff"} \ No newline at end of file +{"@line-height-base":"1.66667","@mode":"compact","@font-size-base":"12px","@font-size-lg":"@font-size-base + 2px","@default-padding-lg":"24px","@default-padding-md":"16px","@default-padding-sm":"12px","@default-padding-xs":"8px","@default-padding-xss":"4px","@padding-lg":"16px","@padding-md":"8px","@padding-sm":"8px","@padding-xs":"4px","@padding-xss":"0px","@control-padding-horizontal":"@padding-sm","@control-padding-horizontal-sm":"@default-padding-xs","@margin-lg":"16px","@margin-md":"8px","@margin-sm":"8px","@margin-xs":"4px","@margin-xss":"0px","@height-base":"28px","@height-lg":"32px","@height-sm":"22px","@btn-padding-horizontal-base":"@default-padding-sm - 1px","@btn-padding-horizontal-lg":"@btn-padding-horizontal-base","@btn-padding-horizontal-sm":"@default-padding-xs - 1px","@btn-square-only-icon-size-lg":"16px","@btn-square-only-icon-size":"14px","@btn-square-only-icon-size-sm":"12px","@breadcrumb-font-size":"@font-size-base","@breadcrumb-icon-font-size":"@font-size-base","@dropdown-line-height":"18px","@menu-item-padding":"0 12px","@menu-horizontal-line-height":"38px","@menu-inline-toplevel-item-height":"32px","@menu-item-height":"32px","@menu-item-vertical-margin":"0px","@menu-item-boundary-margin":"0px","@menu-icon-margin-right":"8px","@checkbox-size":"14px","@checkbox-group-item-margin-right":"6px","@picker-panel-cell-height":"22px","@picker-panel-cell-width":"32px","@picker-text-height":"32px","@picker-time-panel-cell-height":"24px","@picker-panel-without-time-cell-height":"48px","@form-item-margin-bottom":"16px","@form-vertical-label-padding":"0 0 4px","@rate-star-size":"16px","@radio-size":"14px","@radio-wrapper-margin-right":"6px","@switch-height":"20px","@switch-sm-height":"14px","@switch-min-width":"40px","@switch-sm-min-width":"24px","@switch-inner-margin-min":"4px","@switch-inner-margin-max":"22px","@slider-handle-size":"12px","@slider-handle-margin-top":"-4px","@input-padding-vertical-base":"round(\n max(\n (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n @border-width-base,\n 2px\n )\n)","@input-padding-horizontal-lg":"11px","@page-header-padding":"16px","@page-header-padding-vertical":"8px","@page-header-heading-title":"16px","@page-header-heading-sub-title":"12px","@page-header-tabs-tab-font-size":"14px","@pagination-mini-options-size-changer-top":"1px","@pagination-item-size-sm":"22px","@cascader-dropdown-line-height":"@dropdown-line-height","@select-dropdown-height":"@height-base","@select-single-item-height-lg":"32px","@select-multiple-item-height":"@input-height-base - max(@input-padding-vertical-base, 4) * 2","@select-multiple-item-height-lg":"24px","@select-multiple-item-spacing-half":"3px","@tree-title-height":"20px","@transfer-item-padding-vertical":"3px","@transfer-list-search-icon-top":"8px","@transfer-header-height":"36px","@comment-actions-margin-bottom":"0px","@comment-actions-margin-top":"@margin-xs","@comment-content-detail-p-margin-bottom":"0px","@steps-icon-size":"24px","@steps-icon-custom-size":"20px","@steps-icon-custom-font-size":"20px","@steps-icon-custom-top":"2px","@steps-icon-margin":"2px 8px 2px 0","@steps-icon-font-size":"@font-size-base","@steps-dot-top":"4px","@steps-icon-top":"0px","@steps-small-icon-size":"20px","@steps-vertical-icon-width":"12px","@steps-vertical-tail-width":"12px","@steps-vertical-tail-width-sm":"10px","@collapse-header-padding-extra":"32px","@collapse-content-padding":"@padding-md @padding-lg","@list-item-meta-description-font-size":"@font-size-sm","@list-item-padding-sm":"4px 12px","@list-item-padding-lg":"12px 16px","@drawer-header-padding":"11px @padding-lg","@drawer-footer-padding-vertical":"@padding-sm","@drawer-footer-padding-horizontal":"@padding-sm","@drawer-header-close-size":"44px","@modal-header-padding":"11px @modal-header-padding-horizontal","@modal-footer-padding-vertical":"@padding-sm","@modal-header-close-size":"44px","@modal-confirm-body-padding":"24px 24px 16px","@message-notice-content-padding":"8px 16px","@popover-min-height":"28px","@popover-padding-horizontal":"@default-padding-sm","@card-padding-base":"12px","@card-head-height":"36px","@card-head-font-size":"@card-head-font-size-sm","@card-head-padding":"8.5px","@card-padding-base-sm":"@card-padding-base","@card-head-height-sm":"30px","@card-head-padding-sm":"6px","@card-actions-li-margin":"4px 0","@card-head-tabs-margin-bottom":"-9px","@table-padding-vertical":"12px","@table-padding-horizontal":"8px","@table-padding-vertical-md":"8px","@table-padding-horizontal-md":"8px","@table-padding-vertical-sm":"4px","@table-padding-horizontal-sm":"4px","@table-selection-column-width":"32px","@statistic-content-font-size":"20px","@alert-with-description-no-icon-padding-vertical":"7px","@alert-with-description-padding-vertical":"11px","@alert-icon-top":"7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)","@alert-with-description-icon-size":"20px","@skeleton-paragraph-margin-top":"20px","@skeleton-paragraph-li-margin-top":"12px","@skeleton-paragraph-li-height":"14px","@skeleton-title-height":"14px","@skeleton-title-paragraph-margin-top":"20px","@descriptions-title-margin-bottom":"8px","@descriptions-default-padding":"12px @padding-lg","@descriptions-item-padding-bottom":"@padding-xs","@avatar-size-base":"28px","@avatar-size-lg":"32px","@avatar-size-sm":"22px","@avatar-font-size-base":"16px","@avatar-font-size-lg":"20px","@avatar-font-size-sm":"12px","@badge-height":"18px","@tag-line-height":"18px","@notification-padding-vertical":"12px","@notification-padding-horizontal":"16px","@result-title-font-size":"20px","@result-icon-font-size":"64px","@result-extra-margin":"24px 0 0 0","@anchor-link-top":"4px","@anchor-link-left":"16px","@anchor-link-padding":"@anchor-link-top 0 @anchor-link-top @anchor-link-left","@tabs-card-horizontal-padding":"4px @padding-md","@progress-circle-text-font-size":"0.833333em","@image-size-base":"48px","@image-font-size-base":"24px","@primary-color":"@blue-6","@layout-header-background":"#fff"} \ No newline at end of file diff --git a/web/client/src/utils/webapi.js b/web/client/src/utils/webapi.js index 96b86ae0..7e36e0fd 100644 --- a/web/client/src/utils/webapi.js +++ b/web/client/src/utils/webapi.js @@ -38,15 +38,18 @@ export const ApiTable = { getReportRectifyDetail: 'report/rectify/detail', compileReportRectifyDetail: 'report/rectify/detail', - //报表下载 - getReportList: 'report/list', - // 数据 - getFundamental: 'daily/report/data/statistic', - getsortord: "daily/report/area/statistic?startDate={zuo}&endDate={day}", - //填报信息 - getReportStatistic: 'report/management/statistic', - reportDownLoad: '_report/http' + //运政管理 + getOperaTional:'vehicle', + getSpecificVehicle:'vehicle/specific', + getHouseholds:'vehicle/business', + //道路管理 + getRoadway:'road', +//桥梁管理 +getBridge:'bridge', +//工程数据 +getProject:'project' }; + export const RouteTable = { apiRoot: '/api/root', fileUpload: '/_upload/new', From fcea9240bbce8e5b3f51837c5981804e0adc9af2 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Fri, 22 Jul 2022 17:20:37 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E5=85=BB=E6=8A=A4?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/src/packages/patrol/index.config.js | 3 + weapp/src/packages/patrol/index.jsx | 203 +++++++++++++++++- weapp/src/packages/patrol/index.scss | 51 +++++ weapp/src/pages/auth/login/login.scss | 2 - weapp/src/pages/home/index.scss | 48 ++--- .../static/img/{patrol => home}/fill-bg.svg | 0 weapp/src/static/img/patrol/arrow-down.svg | 15 ++ 7 files changed, 293 insertions(+), 29 deletions(-) rename weapp/src/static/img/{patrol => home}/fill-bg.svg (100%) create mode 100644 weapp/src/static/img/patrol/arrow-down.svg diff --git a/weapp/src/packages/patrol/index.config.js b/weapp/src/packages/patrol/index.config.js index e69de29b..9b65a793 100644 --- a/weapp/src/packages/patrol/index.config.js +++ b/weapp/src/packages/patrol/index.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: '巡查养护' +} \ No newline at end of file diff --git a/weapp/src/packages/patrol/index.jsx b/weapp/src/packages/patrol/index.jsx index d7d8cfd7..d8e594da 100644 --- a/weapp/src/packages/patrol/index.jsx +++ b/weapp/src/packages/patrol/index.jsx @@ -1,9 +1,206 @@ -import React from 'react' -import { View } from '@tarojs/components'; +import React, { useState, useEffect } from 'react'; +import { + View, + RadioGroup, + Radio, + Button, + Image, + Input, + Textarea, + Picker +} from '@tarojs/components'; +import { AtForm, AtInput, AtButton, AtTextarea, AtImagePicker, AtTimeline } from 'taro-ui'; +// import InputPicker from '../components/inputPicker'; +import './index.scss'; +import arrowIcon from '../../static/img/patrol/arrow-down.svg'; const Index = () => { + const [isPatrol, setIsPatrol] = useState(true) // 巡查 or 养护 + const [prjTypeSelector, setPrjTypeSelector] = useState([]) + const [roadSelector, setRoadSelector] = useState([]) + const [projectType, setProjectType] = useState('') + const [road, setRoad] = useState('') + + const [images, setimages] = useState([]) + + const reportType = [ + { + value: '巡查', + text: '巡查', + checked: true + }, + { + value: '养护', + text: '养护', + checked: false + } + ] + + useEffect(() => { + const prjTypeSelector = ['道路', '桥梁', '涵洞'] + const roadSelector = ['富山一路', '金沙大道', '玉湖路'] + setPrjTypeSelector(prjTypeSelector) + setRoadSelector(roadSelector) + }, []) + + useEffect(() => { + if (projectType) { + setPrjTypeSelector(prjTypeSelector.filter(s => s.includes(projectType))) + } + }, [projectType]) + // useEffect(() => { + // if (projectType) { + // setPrjTypeSelector(prjTypeSelector.filter(s => s.includes(projectType))) + // } + // }, [projectType]) + + function onTypeChange(e) { + if (e.detail.value === '巡查') { + setIsPatrol(true) + } else { + setIsPatrol(false) + } + } + + function onPrjTypeChange(e) { + setProjectType(selector[e.detail.value]) + } + + function onImgPickerChange() { + + } + return ( - 巡查养护 + + + 上报类型 + + { + reportType.map((item, i) => { + return ( + + {item.text} + + ) + }) + } + + + + + setProjectType(value)} + /> + + + + + + setRoad(value)} + /> + + + + + + {/* + */} + + + + + + + + + + + + + { + isPatrol ? + + 现场图片: + + : + + 养护图片: + + + + } + + 上报 + + ) } diff --git a/weapp/src/packages/patrol/index.scss b/weapp/src/packages/patrol/index.scss index e69de29b..44aa32e2 100644 --- a/weapp/src/packages/patrol/index.scss +++ b/weapp/src/packages/patrol/index.scss @@ -0,0 +1,51 @@ +.patrol { + height: 100vh; + width: 100vw; + background-color: #f6f6f6; + padding-top: 20px; + + .report-type { + height: 96px; + background-color: #fff; + margin-bottom: 20px; + display: flex; + justify-content: space-between; + align-items: center; + + .text { + margin-left: 30px; + } + + .radio { + margin-right: 30px; + } + } + + .input-picker { + display: flex; + justify-content: space-between; + align-items: center; + background-color: #fff; + margin-bottom: 5px; + + .img-r { + width: 24px; + height: 14px; + margin-right: 30px; + // margin-left: 10px; + } + .img-l { + width: 24px; + height: 14px; + } + } + + .img-picker { + background-color: #fff; + + } + + .sub-btn { + width: 70%; + } +} \ No newline at end of file diff --git a/weapp/src/pages/auth/login/login.scss b/weapp/src/pages/auth/login/login.scss index 647103f5..0a033c69 100644 --- a/weapp/src/pages/auth/login/login.scss +++ b/weapp/src/pages/auth/login/login.scss @@ -1,5 +1,3 @@ -@import "~taro-ui/dist/style/components/divider.scss"; - .page { height: 100vh; background: #fff; diff --git a/weapp/src/pages/home/index.scss b/weapp/src/pages/home/index.scss index 4761576f..d9f40d1e 100644 --- a/weapp/src/pages/home/index.scss +++ b/weapp/src/pages/home/index.scss @@ -1,29 +1,29 @@ .page { - display: flex; - flex-direction: column; - align-items: center; + display: flex; + flex-direction: column; + align-items: center; - .fill { - margin-top: 30px; - padding: 10px; - width: 94%; - height: 360px; - background: url('../../static/img/patrol//fill-bg.svg') no-repeat; - background-size:100% 100%; - } + .fill { + margin-top: 30px; + padding: 10px; + width: 94%; + height: 360px; + background: url('../../static/img/home/fill-bg.svg') no-repeat; + background-size: 100% 100%; + } - .title { - margin: 50px 0 0 48px; - color: #fff; - font-size: 48px; - } + .title { + margin: 50px 0 0 48px; + color: #fff; + font-size: 48px; + } - .btn { - margin: 20px 0 0 50px; - color: #fff; - text-align: center; - width: 200px; - border: solid 1px #fff; - border-radius: 10px; - } + .btn { + margin: 30px 0 0 50px; + color: #fff; + text-align: center; + width: 200px; + border: solid 1px #fff; + border-radius: 10px; + } } \ No newline at end of file diff --git a/weapp/src/static/img/patrol/fill-bg.svg b/weapp/src/static/img/home/fill-bg.svg similarity index 100% rename from weapp/src/static/img/patrol/fill-bg.svg rename to weapp/src/static/img/home/fill-bg.svg diff --git a/weapp/src/static/img/patrol/arrow-down.svg b/weapp/src/static/img/patrol/arrow-down.svg new file mode 100644 index 00000000..d543f363 --- /dev/null +++ b/weapp/src/static/img/patrol/arrow-down.svg @@ -0,0 +1,15 @@ + + + chevron-down + + + + + + + + + + + + \ No newline at end of file From 812dd001e919472a4e3176ad1b6e0ce229374141 Mon Sep 17 00:00:00 2001 From: dengyinhuan Date: Fri, 22 Jul 2022 17:28:22 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=B7=A6=E4=BE=A7=E7=9A=84=E7=8E=AF=E5=BD=A2?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E8=BD=AC=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../containers/footer/guanli/LeftItem.js | 224 +++++++++++++----- 1 file changed, 164 insertions(+), 60 deletions(-) diff --git a/web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js b/web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js index d774030c..c50f7e59 100644 --- a/web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js +++ b/web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js @@ -5,76 +5,180 @@ export default function LeftItem() { const seasonChartRef = useRef(null); useEffect(() => { let chartInstance = echarts.init(seasonChartRef.current); - const seasonOption = { - title: [ - { - text: "已处理", - x: "center", - top: "55%", - textStyle: { - color: "#E9F7FF", - fontSize: 14, - }, + // const seasonOption = { + // title: [ + // { + // text: "已处理", + // x: "center", + // top: "55%", + // textStyle: { + // color: "#E9F7FF", + // fontSize: 14, + // }, + // }, + // { + // text: "2333", + // x: "center", + // y: "35%", + // textStyle: { + // fontSize: "30", + // color: "#FFFFFF", + // fontFamily: "YouSheBiaoTiHei", + // }, + // }, + // ], + // polar: { + // radius: ["78%", "86%"], + // center: ["50%", "50%"], + // }, + // angleAxis: { + // max: 100, + // clockWise:false, //逆时针加载 + // show: false, + // }, + // radiusAxis: { + // type: "category", + // show: true, + // axisLabel: { + // show: false, + // }, + // axisLine: { + // show: false, + // }, + // axisTick: { + // show: false, + // }, + // }, + // series: [ + // { + // name: "", + // type: "bar", + // roundCap: true, + // clockWise:false, //逆时针加载 + // barWidth: 30, + // showBackground: true, + // data: [40], + // coordinateSystem: "polar", + // itemStyle: { + // normal: { + // color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ + // { + // offset: 0, + // color: "#AAC8FF", + // }, + // { + // offset: 1, + // color: "#0041BB", + // }, + // ]), + // }, + // }, + // }, + // ], + // }; + const option = { + title: { + text: '75%', + top:'35%', + + textStyle: { + fontSize: 22, + fontFamily: 'PingFangSC-Medium, PingFang SC', + fontWeight: 500, + // marginTop:-60, + color: '#FFFFFF' }, - { - text: "2333", - x: "center", - y: "35%", - textStyle: { - fontSize: "30", - color: "#FFFFFF", - fontFamily: "YouSheBiaoTiHei", - }, + subtext: '已处理', + subtextStyle: { + fontSize: 16, + fontFamily: "PingFangSC-Regular, PingFang SC", + fontWeight: 400, + color: 'rgba(216,240,255,0.8000)' + }, + // itemGap: -2, // 主副标题距离 + left: 'center', + // top: 'center' + }, + angleAxis: { + max: 100, // 满分 + clockwise: false, // 逆时针 + // 隐藏刻度线 + axisLine: { + show: false + }, + axisTick: { + show: false }, - ], - polar: { - radius: ["78%", "86%"], - center: ["50%", "50%"], - }, - angleAxis: { - max: 100, - show: false, - }, - radiusAxis: { - type: "category", - show: true, axisLabel: { - show: false, + show: false }, + splitLine: { + show: false + } + }, + radiusAxis: { + type: 'category', + // 隐藏刻度线 axisLine: { - show: false, + show: false }, axisTick: { - show: false, + show: false + }, + axisLabel: { + show: false }, + splitLine: { + show: false + } }, - series: [ - { - name: "", - type: "bar", - roundCap: true, - barWidth: 30, - showBackground: true, - data: [40], - coordinateSystem: "polar", - itemStyle: { - normal: { - color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ - { - offset: 0, - color: "#AAC8FF", - }, - { - offset: 1, - color: "#0041BB", - }, - ]), + polar: { + center: ['50%', '50%'], + radius: '180%' //图形大小 + // radius: ["78%", "86%"], + }, + series: [{ + type: 'bar', + data: [{ + name: '作文得分', + value: 75, + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { + offset: 0, + color: "#AAC8FF", + }, + { + offset: 1, + color: "#0041BB", + }]) + } }, - }, - }, - ], - }; - chartInstance.setOption(seasonOption); + }], + coordinateSystem: 'polar', + roundCap: true, + barWidth: 8, + barGap: '-100%', // 两环重叠 + z: 2, + },{ // 灰色环 + type: 'bar', + data: [{ + value: 100, + itemStyle: { + color: '#e2e2e2', + shadowColor: 'rgba(0, 0, 0, 0.2)', + shadowBlur: 5, + shadowOffsetY: 2 + } + }], + coordinateSystem: 'polar', + roundCap: true, + barWidth: 8, + barGap: '-100%', // 两环重叠 + z: 1 + }] + } + chartInstance.setOption(option); }, []) return ( From 65cf2722eec21e1d07ce958f4298eec7ae620c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98lijianhao=E2=80=99?= Date: Fri, 22 Jul 2022 17:54:28 +0800 Subject: [PATCH 4/8] =?UTF-8?q?'=E5=85=BB=E6=8A=A4=E5=A4=A7=E5=B1=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../footer/conserve/left/left-top.js | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/web/client/src/sections/quanju/containers/footer/conserve/left/left-top.js b/web/client/src/sections/quanju/containers/footer/conserve/left/left-top.js index 6cf714ea..89333c1e 100644 --- a/web/client/src/sections/quanju/containers/footer/conserve/left/left-top.js +++ b/web/client/src/sections/quanju/containers/footer/conserve/left/left-top.js @@ -1,6 +1,7 @@ import React, { useEffect, useRef } from 'react'; import Module from '../../../public/module' import * as echarts from 'echarts'; +import { Badge } from 'antd'; const LeftTop = () => { @@ -134,9 +135,6 @@ const LeftTop = () => { roundCap: true, barWidth: 30, showBackground: true, - backgroundStyle: { - color: "rgba(66, 66, 66, .3)", - }, data: [40], coordinateSystem: "polar", itemStyle: { @@ -154,6 +152,8 @@ const LeftTop = () => { }, }, }, + + ], }; chartInstance.setOption(frequentlyOption); @@ -163,11 +163,27 @@ const LeftTop = () => { return ( <> -
    -
    -
    -
    +
    +
    +
    + +
    +
    +
    + + +
    ) From f166aa2919c85fb758dc00987d73858a1691319a Mon Sep 17 00:00:00 2001 From: wangyue Date: Fri, 22 Jul 2022 18:02:59 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E9=A2=86=E5=AF=BC=E9=A9=BE=E9=A9=B6?= =?UTF-8?q?=E8=88=B1=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/client/assets/color.less | 20 +- web/client/assets/images/leadership/di.png | Bin 0 -> 5318 bytes .../assets/images/leadership/jiejue.png | Bin 0 -> 2096 bytes .../assets/images/leadership/mingri.png | Bin 0 -> 21643 bytes .../assets/images/leadership/pingshi.png | Bin 0 -> 21336 bytes web/client/assets/images/leadership/road.png | Bin 0 -> 21688 bytes .../assets/images/leadership/shiyantu.png | Bin 0 -> 95471 bytes .../assets/images/leadership/zibiaoti.png | Bin 0 -> 44858 bytes .../centerleft/center-left-bottom.js | 19 +- .../centerleft/echarts/centerleftecharts.js | 203 ++++++++++++++++++ .../centerleft/lunbo/bottomlunbo.js | 59 +++++ .../leadership/centerleft/lunbo/lunbo.js | 180 ++++++++++++++++ .../leadership/centerleft/lunbo/style.less | 6 + .../leadership/centerleft/lunbo/toplunbo.js | 57 +++++ .../containers/footer/leadership/left.js | 4 +- .../left/echarts/leftbottomecharts.js | 146 +++++++++---- .../footer/leadership/left/left-bottom.js | 2 +- .../footer/leadership/left/left-center.js | 88 +++++++- .../footer/leadership/left/left-top.js | 39 +++- .../footer/leadership/right/left.less | 3 + .../footer/leadership/right/lunbo.js | 139 ++++++++++++ .../footer/leadership/right/right-bottom.js | 74 ++++++- .../quanju/containers/public/left.less | 25 +++ .../quanju/containers/public/lunbo.js | 139 ++++++++++++ .../quanju/containers/public/module.js | 5 +- web/log/development.txt | 62 ++++++ 26 files changed, 1208 insertions(+), 62 deletions(-) create mode 100644 web/client/assets/images/leadership/di.png create mode 100644 web/client/assets/images/leadership/jiejue.png create mode 100644 web/client/assets/images/leadership/mingri.png create mode 100644 web/client/assets/images/leadership/pingshi.png create mode 100644 web/client/assets/images/leadership/road.png create mode 100644 web/client/assets/images/leadership/shiyantu.png create mode 100644 web/client/assets/images/leadership/zibiaoti.png create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/right/left.less create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js create mode 100644 web/client/src/sections/quanju/containers/public/left.less create mode 100644 web/client/src/sections/quanju/containers/public/lunbo.js diff --git a/web/client/assets/color.less b/web/client/assets/color.less index ff4253c6..450501f1 100644 --- a/web/client/assets/color.less +++ b/web/client/assets/color.less @@ -174,7 +174,7 @@ button::-moz-focus-inner, [type='submit']::-moz-focus-inner {border-style: none;} fieldset {border: 0;} legend {color: inherit;} -mark {background-color: color(~`colorPalette("@{skeleton-to-color}", 1)`);} +mark {background-color: #feffe6;} ::selection {color: #fff;background: @primary-color;} .anticon {color: inherit;} .ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;} @@ -1702,31 +1702,31 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;} .ant-tag-checkable-checked {background-color: @primary-color;} .ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-tag-pink {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;} +.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;} .ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} -.ant-tag-magenta {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;} +.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;} .ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} .ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} -.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{select-background}", 3)`);border-color: #ffd591;} +.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;} .ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} -.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{skeleton-to-color}", 1)`);border-color: #fffb8f;} +.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;} .ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} -.ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;} +.ant-tag-gold {color: #d48806;background: color(~`colorPalette("@{skeleton-color}", 1)`);border-color: #ffe58f;} .ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} -.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{comment-author-time-color}", 3)`);border-color: #87e8de;} +.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;} .ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} -.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{item-active-bg}", 1)`);border-color: #eaff8f;} +.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;} .ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} .ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} -.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;} +.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{success-color-deprecated-border}", 1)`);border-color: #adc6ff;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} -.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{disabled-color}", 2)`);border-color: #d3adf7;} +.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{progress-steps-item-bg}", 3)`);border-color: #d3adf7;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} diff --git a/web/client/assets/images/leadership/di.png b/web/client/assets/images/leadership/di.png new file mode 100644 index 0000000000000000000000000000000000000000..82da9cd7fe111c9d88a0d959fb4307fd79ce64b4 GIT binary patch literal 5318 zcmV;%6glgOP)Px}fJsC_RCr$PT?>#L#d-dEc4yy@+uhsKoutzl>GT#z0)rCq5aI;FMm9q>7;w_ zYdY0E)3d#^GqbaMC!CO(Qt4)r++Vi|TtY1Pa>17jA8?6F@kX}xW^OT(veHb0y|dsmQHg(vt0&i_W#7#FwqZ^RWL&bcOlRupgES~2AJ8t4ru;i zFi^(~fETJDwgS2ms0FwHw;P~M;7MSX&zbvS9nb{;Y8j+xyfzMKwuS5g&Fir;J3zB@ zD!{<(RL+6!0%#6Y23nPUbM@E4+ZaIRWfGthQ3TsmgaZo3?&`+=4I44ogy?pZ$wvXgyx^U9C7U;G^=C) zTCUH)>Lo(6dX9iLBDHOVW)}+qCGn-P^ka>}ULrK>vL}s1Is!Er##_6u$FB(?bdp%+ z&H0D(PtVbwa=Z|pC?9{z>{N=-W<<6*S3@~EMQaJr$O9ejl*0scMu)W<<=~&|=n%1^ z9444~FG+_8&4MtaAU2f4h|sLHOgZ?mL?d)i>wvC_&<4hvr5ud_&C3NnaiJW7Zm{|? z`emM9MC^_fzF49$dMCAUr*&U zYNZr)$KrxUq-Kr~5g=avs>lnW- zC4*-0FNN5bcsipasTjh`rej)IL1BF-p1Ni&8Jz@{c~cIgt-qp63&m2DzH#D};Ow%- zOAN4z!5=&3R77xT6U?k~?VwQR&>YeodDlUqOgS2HXx5)ogl1(rpxrpM9HH$ghaR2T zCJzdwV~I~r#h_3IFW>h-IoP1k7_Yff4$+@0{XZ)qeaTmNaZjAFL7u) zmBWd0@LSa&Li1o?88mv0&}KB22Zc5fTBsZ{pxL>L=3sVAMQlzEFKqcRd8s8N8;v+H z?ms{;pv6j@22VcMsbx#%fKUwnEPr{_mQ@dQA!^EYtVeeaZB;ou4GJa7A>Oc6wyWXL zZh&U=B49HpbO3a{Z0D?UaDdlD@W!&830UKeStB$rmpC+2IT(0rBD4WoTiMP6Xm)5F zAeM|MEtiS?rYHvka!`-TPO_a9(CHY$7xrLLB!J54S?v1kTJmPApyq(ScQ0M5kV>o= z9eOr{3H_JHMsv2iNd2JDMu&a}7Yh6v~Its4X1Y%b<|=8{)}6*Tjm~L19gnu_Dn55y3@b zr3ntrqjZqV?7>TxU}ZFfz|0h$y1S1YXadW;DhKpkd&-}n8c9auqmT4fl4G1h%bK&4 z>NeF5De>YqDCD_9iwvYL_K0%*CM1GGV=kSA6q zj7*>%{}$k7gF_L%sbO zdOZmsl^h%SL9S!CUJJBr&sgUXCQkt?cD60bLWJ ztALg>g;v>))e-|kYo^evY-gJ(wBgVkgcjM(1g0fZ*o+QcY`~$}HCk0U%+xpQ#6^d; zsvI(h=AVxdsn45>`Q2$O$%Jt@+kvf{KS)?Qz|+P7ecRLYW(2i#A~g1oUE$#oS#z#S zgIkpkei>Qis2vot(kaoQjp)n+m7FPbq8y$wg%%y!1Lff0cF7brH7Jw@S|;T%0AYey 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 Y03aMF&OWrF6#xJL07*qoM6N<$f)&L}^Z)<= literal 0 HcmV?d00001 diff --git a/web/client/assets/images/leadership/jiejue.png b/web/client/assets/images/leadership/jiejue.png new file mode 100644 index 0000000000000000000000000000000000000000..fe38485cc04de8903ce8972666f6bb01d052b06e GIT binary patch literal 2096 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 literal 0 HcmV?d00001 diff --git a/web/client/assets/images/leadership/pingshi.png b/web/client/assets/images/leadership/pingshi.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb3a8596ff4c22d73f4737cbbeb9d40b2999a1c GIT binary patch literal 21336 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 literal 0 HcmV?d00001 diff --git a/web/client/assets/images/leadership/road.png b/web/client/assets/images/leadership/road.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac9c233972020e67bfab76be1928ea9f12604c6 GIT binary patch literal 21688 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 literal 0 HcmV?d00001 diff --git a/web/client/assets/images/leadership/shiyantu.png b/web/client/assets/images/leadership/shiyantu.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ed7993731dd893697b25ff9a915c08b11bfb4c GIT binary patch literal 95471 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 z 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%0D?;%!f+@N-7Ty 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

    >%mgsc=|E-Gxz}hBPYbN&?Ld#e{xn&1 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 MWmKdgpG<@Q4_^EkyZ`_I literal 0 HcmV?d00001 diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js index b9d6d319..540c3f39 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js @@ -1,12 +1,27 @@ import React from 'react' import Module from '../../../public/module' +import Centerleftecharts from "./echarts/centerleftecharts" +import Bottomlunbo from './lunbo/bottomlunbo' +import Leftlunbo from './lunbo/toplunbo' const Leftbottom = () => { const style = { height: "28%", marginTop: "2%" } return ( <> - - + +

    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    ) diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js new file mode 100644 index 00000000..a041ffce --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js @@ -0,0 +1,203 @@ +import React, { useEffect, useRef } from 'react' +import * as echarts from 'echarts'; + +const Leftbottomecharts = () => { + const chartRef = useRef(null); + useEffect(() => { + var chartInstance = echarts.init(chartRef.current); + var colorArray = [ + { + top: "#1978E5", //黄 + bottom: "#10274B", + }, + { + top: "#C31E00", //绿 + bottom: "#10274B", + }, + { + top: "#00B5E0 ", //蓝 + bottom: "#10274B", + }, + { + top: "#19E5D6", //深蓝 + bottom: "#10274B", + }, + // { + // top: "#b250ff", //粉 + // bottom: "rgba(11,42,84,.3)", + // }, + ]; + const option = { + tooltip: { + show: true, + formatter: "{b}:{c}", + }, + grid: { + left: "5%", + top: "12%", + right: "1%", + bottom: "8%", + containLabel: true, + }, + + xAxis: { + type: "value", + show: true, + position: "bottom", + axisTick: { + show: true, + lineStyle: { + color: "rgba(176,215,255,0.25)", + // type: "dashed", + }, + }, + axisLine: { + show: false, + lineStyle: { + color: "rgba(216,240,255,0.8000)", + }, + }, + splitLine: { + show: true, + lineStyle: { + color: "rgba(176,215,255,0.25)", + type: "dashed", + }, + }, + }, + yAxis: [ + { + type: "category", + axisTick: { + show: false, + alignWithLabel: false, + length: 5, + }, + splitLine: { + //网格线 + show: false, + }, + inverse: "true", //排序 + // nameTextStyle: { + // color: ["rgba(216,240,255,0.8)"], + // }, + axisLine: { + // show: true, + lineStyle: { + color: "rgba(216,240,255,0.8000)", + width: 2, + }, + }, + data: ["客运车", "危险货运", "出租车", "公交"], + }, + ], + series: [ + { + type: "bar", + barWidth: 10, + barGap: "100%", + // zlevel: 1, + barCategoryGap: "50%", + color: "#042B7F", + data: [150, 150, 150, 150], + tooltip: { + show: false, + }, + }, + { + name: "能耗值", + type: "bar", + // zlevel: 2, + barWidth: 10, + barGap: "-100%", + barCategoryGap: "50%", + data: [60, 132, 89, 134], + markPoint: { + Symbol: "",/* 可以通过’image: *///url’设置为图片,其中url为图片的链接 + data: [{ type: "max", name: "最大值" }], + }, + itemStyle: { + normal: { + show: true, + color: function (params) { + let num = colorArray.length; + return { + type: "linear", + colorStops: [ + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + { + offset: 0, + color: colorArray[params.dataIndex % num].bottom, + }, + { + offset: 1, + color: colorArray[params.dataIndex % num].top, + }, + ], + globalCoord: false, + }; + }, + barBorderRadius: 70, + borderWidth: 0, + borderColor: "#333", + }, + }, + }, + ], + }; + chartInstance.setOption(option); + window.onresize = function () { + chartInstance.resize(); + } + }, []); + + + return ( + <> +
    + + ); +} + +export default Leftbottomecharts \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js new file mode 100644 index 00000000..b30fb333 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js @@ -0,0 +1,59 @@ +import React, { useState, useEffect } from 'react' +import Lunbotop from "./lunbo" + +const Bottomlunbo = () => { + const [list, setList] = useState([ + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + ]) + const renderBody = () => { + return ( +
    + { + list.map((item, index) => { + return
    {item.name}
    + }) + } +
    + ) + } + return ( + <> +
    +
    + 业户信息: +
    +
    +
    + +

    出租车

    +
    +
    + +
    + + ) +} +export default Bottomlunbo \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js new file mode 100644 index 00000000..6bf6d406 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js @@ -0,0 +1,180 @@ +'use strict' +import React, { Component } from 'react'; +// import { Col, Row, Tag, Tooltip } from '@douyinfe/semi-ui'; +import { Col, Row, Tag, Toolip } from 'antd'; +import './style.less'; +export default class AutoRollComponent extends Component { + + constructor(props) { + super(props); + this.scrollElem = null; + this.stopscroll = false; + this.preTop = 0; + this.cloneEle = null; + this.currentTop = 0; + this.marqueesHeight = 0; + this.interval = null; + } + + marque = (height) => { + try { + this.scrollElem = document.getElementById(this.props.divId); + this.marqueesHeight = height; + if (this.scrollElem) { + this.scrollElem.style.height = this.marqueesHeight; + this.scrollElem.style.overflow = 'hidden'; + } + + if (!this.props.closeroll) { + this.repeat() + } + } catch (e) { console.log(e) } + } + + + repeat = () => { + this.scrollElem.scrollTop = 0; + + this.interval = setInterval(() => { + if (this.stopscroll) return; + this.currentTop = this.currentTop + 1; + this.preTop = this.scrollElem.scrollTop; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1; + if (this.preTop === this.scrollElem.scrollTop) { + this.scrollElem.scrollTop = this.marqueesHeight; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1; + } + }, 80); + } + + + componentWillUnmount() { + clearInterval(this.interval); + } + + componentDidMount() { + this.marque(10); + } + + onMouseOver = () => { + this.stopscroll = true; + } + + onMouseOut = () => { + this.stopscroll = false; + } + + loadDataColumn = (c, index, q) => { + const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props; + if (c === changeStyleCol) { + if (color) { + {q.data[index]} + } else { + if (['时间'].indexOf(c) != -1) { + return {q.data[index]} + } + // if (c.indexOf("时间") == -1) { + // if (customColorBox) { + // return + // } + // if (q.data[index].length > showWord) { + // return {q.data[index].substring(0, showWord) + '...'} + // } else { + // return {q.data[index]} + // } + // } + } + + } else { + if (c.indexOf("时间") == -1) + if (q.data[index].length > showWord) { + return {q.data[index].substring(0, showWord) + '...'} + } + return {q.data[index]} + } + + // c === changeStyleCol ? + // color ? + // {q.data[index]} + // : q.levelbg ? + // q.isSiteAlermListMock ? 已处理 : + // {q.data[index]} + // : {q.data[index]} + + + // : ['时间'].indexOf(c) != -1 ? !customColorBox ? {q.data[index]} : + // + + // : c.indexOf("时间") == -1 && q.data[index].length > showWord ? + // {q.data[index].substring(0, showWord) + '...'} + // : {q.data[index]} + } + + getContent = () => { + const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props; + let result =
    ; + if (data) { + result = data.map((q, idx) => { + return ( +
    + + {q.data[1] == -1 ? null : heads.map((c, index) => { + let extraStyle = {} + if (q.isSiteAlermListMock && c == "状态") { + extraStyle = { color: "green" } + } + + return
    + { + this.loadDataColumn(c, index, q) + } + + }) + } + + + ) + }) + } else { + result =
    + +
    + } + return result; + } + + render() { + + const { heads, spans, divId, divHeight, content, color, titleLeft, containerStyle = {} } = this.props; + return ( +
    + {heads ? + + {heads.map((c, index) => { + return
    {c} + }) + } + + : ''} +
    +
    + {content ? content : ''} + {this.getContent()} +
    +
    + + ) + } +} diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less new file mode 100644 index 00000000..2ad0bd00 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less @@ -0,0 +1,6 @@ +.hidden-scroll-bar-y{ + overflow-y: scroll !important; + scrollbar-width: none !important; +} + +.hidden-scroll-bar-y::-webkit-scrollbar { width: 0 !important } \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js new file mode 100644 index 00000000..910a3937 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js @@ -0,0 +1,57 @@ +import React, { useState, useEffect } from 'react' +import Lunbotop from "./lunbo" + +const Toplunbo = () => { + const [list, setList] = useState([ + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + { name: "南昌宁昌物流运输有限公司" }, + ]) + const renderBody = () => { + return ( +
    + { + list.map((item, index) => { + return
    {item.name}
    + }) + } +
    + ) + } + return ( + <> +
    +
    +
    + +

    危险货运

    +
    +
    + +
    + + ) +} +export default Toplunbo \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left.js b/web/client/src/sections/quanju/containers/footer/leadership/left.js index 5b6c1649..ab464e2b 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left.js @@ -1,6 +1,6 @@ import React from 'react' import Lefttop from './left/left-top' -import Leftcenter from "./left/left-center" +// import Leftcenter from "./left/left-center" import Leftbottom from './left/left-bottom' const Left = () => { @@ -8,7 +8,7 @@ const Left = () => { <>
    - +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js b/web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js index bfec0134..906278be 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js @@ -3,67 +3,139 @@ import * as echarts from 'echarts'; const Leftbottomecharts = () => { const chartRef = useRef(null); - useEffect(() => { - let chartInstance = echarts.init(chartRef.current); + var chartInstance = echarts.init(chartRef.current); const option = { - - xAxis: { - type: "category", - data: ["街道1", "街道2", "街道3", "街道4", "街道5", "街道6", "街道7"], + title: { }, - yAxis: [ - { type: "value" }, + tooltip: { + trigger: "axis", + axisPointer: { + lineStyle: { + color: "#57617B", + }, + }, + }, + legend: { + icon: "rect", + itemWidth: 14, + itemHeight: 5, + itemGap: 13, + data: ["移动"], + right: "4%", + // textStyle: { + // fontSize: 12, + // color: "#F1F1F3", + // }, + }, + grid: { + top: "18%", + left: "3%", + right: "4%", + bottom: "3%", + containLabel: true, + }, + xAxis: [ { - type: "value", - nameTextStyle: { - color: "#ccc", + type: "category", + boundaryGap: true, + axisTick: { + show: false, }, - splitNumber: 5, - splitLine: { - show: true, + axisLine: { lineStyle: { - type: "dashed", - width: 1, - color: ["#ccc", "#ccc"], + color: "rgba(176,215,255,0.4)", }, }, - axisLabel: { + data: [ + "13:00", + "13:05", + "13:10", + "13:15", + ], + normal: { + lineStyle: { + color: "red"//折线的颜色 + } + } + }, + ], + yAxis: [ + { + // type: "value", + // show: true, + // type: "value", + splitLine: { show: true, - textStyle: { - fontSize: 12, - }, + lineStyle: { + color: "rgba(176,215,255,0.2500)", + type: "dashed" + } + }, //去除网格线 + // nameTextStyle: { + // color: "#abb8ce", + // }, + // axisLabel: { + // color: "#abb8ce", + // }, + axisTick: { + //y轴刻度线 + show: false, + }, + axisLine: { + // y轴 + show: false, }, }, ], - tooltip: { - trigger: "axis", - axisPointer: { - type: "shadow", - }, - textStyle: { - color: "#fff", - align: "left", - fontSize: 14, - }, - backgroundColor: "rgba(0,0,0,0.8)", - }, series: [ { - name: "完成率", - data: [50, 130, 124, 18, 35, 47, 160], - yAxisIndex: 1, + // name: "移动", type: "line", smooth: true, + symbol: "circle", + symbolSize: 5, + showSymbol: false, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: "rgba(176,215,255,0.2500)", + }, + { + offset: 0.8, + color: "rgba(0,150,255,0)", + }, + ], + false + ), + shadowBlur: 10, + }, + }, + data: [220, 182, 191, 134], }, ], }; chartInstance.setOption(option); + window.addEventListener('resize', function () { + chartInstance.resize(); + }) }, []); + return ( <> -
    +
    +

    公里数Km

    +
    ); } diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js index 1164dab6..8fbcd053 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js @@ -6,7 +6,7 @@ const Leftbottom = () => { const style = { height: "28%", marginTop: "5%" } return ( <> - + diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js index 9beb1113..052e59c4 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js @@ -1,13 +1,95 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import Module from '../../../public/module' +import Lunbo from "../centerleft/lunbo/lunbo" +// import "./left.less" const Leftcenter = () => { const style = { height: "30%", marginTop: "5%" } + // const hualun = "auto" + const [num, setNum] = useState(1); + const [tu, setTu] = useState(""); + const [name, setName] = useState(""); + const [list, setList] = useState([ + { name: '静夜思', img: "/assets/images/leadership/shiyantu.png" }, + { name: '唐-李白', img: "/assets/images/leadership/shiyantu.png" }, + { name: '窗前明月光', img: "/assets/images/leadership/shiyantu.png" }, + { name: '疑是地上霜', img: "/assets/images/leadership/shiyantu.png" }, + { name: '举头望明月', img: "/assets/images/leadership/shiyantu.png" }, + { name: '低头思故乡', img: "/assets/images/leadership/shiyantu.png" }, + { name: '静夜思', img: "/assets/images/leadership/shiyantu.png" }, + { name: '唐-李白', img: "/assets/images/leadership/shiyantu.png" }, + { name: '窗前明月光', img: "/assets/images/leadership/shiyantu.png" }, + { name: '疑是地上霜', img: "/assets/images/leadership/shiyantu.png" }, + { name: '举头望明月', img: "/assets/images/leadership/shiyantu.png" }, + { name: '低头思故乡', img: "/assets/images/leadership/shiyantu.png" }, + ]) + useEffect(() => { + const timer = setInterval(() => { + if (num == 12) { + setNum(1); + setTu(list[0].img); + } else { + setNum(num + 1); + setTu(list[num].img); + } + }, 6000); + return () => clearInterval(timer); + }, [num]); + const renderBody = () => { + return ( +
    { + list.map((item, index) => { + return ( + //
    + // {/*
    */} +
  • { + setTu(item.img); + setNum(index + 1); + setName(item.name) + // console.log(list); + }}>{item.name}
  • + // {/*
    */} + //
    + ) + + }) + } +
    + ) + } return ( <> - +
    + {/*

    {title || []}

    */} + + 主要路段拥堵情况分析 + +
    +
    +
    + { + list.map((item, index) => { + return index + 1 == num ? +
    + +

    {item.name}

    +
    : "" + + }) - + } +
    + +
    ) } diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js index f879054b..c486d189 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js @@ -1,12 +1,47 @@ import React from 'react' import Module from '../../../public/module' +import Leftcenter from './left-center' const Lefttop = () => { - const style = { height: "25%", height: "35%" } + const style = { height: "68%" } return ( <> - {/*
    */} +
    +
    +
    + +

    路况

    +

    畅通

    +
    +
    + +

    平均时速

    +

    55.2Km/h

    +
    +
    + +

    预测明日

    +

    55.2Km/h

    +
    +
    +
    + +
    +
    +
    + +
    +
    ) diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/left.less b/web/client/src/sections/quanju/containers/footer/leadership/right/left.less new file mode 100644 index 00000000..b5333c1a --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/left.less @@ -0,0 +1,3 @@ +li{ + list-style-type:none +} \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js b/web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js new file mode 100644 index 00000000..ab086a11 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/lunbo.js @@ -0,0 +1,139 @@ +'use strict' +import React, { Component } from 'react'; +import { Row, Col } from 'antd'; + +export default class AutoRollComponent extends Component { + + constructor(props) { + super(props); + this.scrollElem = null; + this.stopscroll = false; + this.preTop = 0; + this.cloneEle = null; + this.currentTop = 0; + this.marqueesHeight = 0; + this.interval = null; + this.state = { + enabledScroll: false + } + } + + get enabledScroll() { + let scrollElem = document.getElementById(this.props.divId); + let fatherElem = scrollElem?.parentNode || null; + if (scrollElem && fatherElem) { + return scrollElem.scrollHeight > fatherElem.scrollHeight + } + + return false; + } + + + marque = (height) => { + try { + this.scrollElem = document.getElementById(this.props.divId); + this.marqueesHeight = height; + if (this.scrollElem) { + this.scrollElem.style.height = this.marqueesHeight; + this.scrollElem.style.overflow = 'hidden'; + } + this.repeat(); + } catch (e) { console.log(e) } + } + + + repeat = () => { + this.scrollElem.scrollTop = 0; + let offset = 1.5 + + this.interval = setInterval(() => { + if (this.stopscroll) return; + this.currentTop = this.currentTop + offset; + this.preTop = this.scrollElem.scrollTop; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset; + // console.log(`this.scrollElem.scrollTop:${this.scrollElem.scrollTop} === this.preTop:${this.preTop}`); + if (this.preTop === this.scrollElem.scrollTop) { + this.scrollElem.scrollTop = this.marqueesHeight; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset; + } + }, 40); + } + + + componentWillUnmount() { + clearInterval(this.interval); + } + + componentWillReceiveProps(nextProps) { + requestAnimationFrame(() => { + if (this.enabledScroll) { + if (!this.state.enabledScroll) { + this.setState({ enabledScroll: true }, () => { + this.marque(10) + }) + } + + } + }) + } + + componentDidMount() { + if (this.enabledScroll) { + this.setState({ enabledScroll: true }, () => { + this.marque(10) + }) + } + } + + onMouseOver = () => { + this.stopscroll = true; + } + + onMouseOut = () => { + this.stopscroll = false; + } + + + render() { + + const { changeStyleCol, heads, spans, data, divId, divHeight, content, containerStyle = {} } = this.props; + + return ( +
    + { + heads ? + + {heads.map((c, index) => { + return
    {c} + }) + } + : '' + } + +
    +
    + {content ? content : ''} + {this.state.enabledScroll && content ? content : ''} + { + data ? + data.map((q, idx) => { + return ( +
    + + {heads.map((c, index) => { + return
    + {index == 1 ? q.data[index] == -1 ? "-" : q.data[index] : index == 2 ? q.data[1] == -1 ? '-' : q.data[index] : q.data[index]} + }) + } + + + ) + }) : '' + } +
    + + + + ) + } +} \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js index 1b534859..470a4c58 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js @@ -1,12 +1,80 @@ -import React from 'react' +import React, { useState, useEffect } from 'react' import Module from '../../../public/module' +import Lun from "./lunbo" +import "./left.less" const Rightbottom = () => { const style = { height: "28%", marginTop: "4%" } + const [beijing, setBeijing] = useState() + const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" }, + { name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }, + { name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }]) + const renderBody = () => { + return ( + //
    { + // lists.map((item, index) => { + // return (
    + //
    + //
  • { + // }}>{item.name}
  • + //
    + //
    ) + + // }) + // } + //
    +
    + {list.map((item, index) => { + return
  • { + setBeijing(item.name) + console.log(beijing); + }}> +
    {item.name}
    +
    {item.chaoxian}
    +
    {item.penalty}
    +
    {item.days}
  • + }) + + } +
    + ) + } return ( <> - - + +
    + + 已处理192件 +
    +
    +

    车牌号

    +

    超限

    +

    处罚

    +

    日期

    +
    +
    ) diff --git a/web/client/src/sections/quanju/containers/public/left.less b/web/client/src/sections/quanju/containers/public/left.less new file mode 100644 index 00000000..a675a58d --- /dev/null +++ b/web/client/src/sections/quanju/containers/public/left.less @@ -0,0 +1,25 @@ +#scroll-2::-webkit-scrollbar{ + width:4px; + height:4px; +} +#scroll-2::-webkit-scrollbar-track{ + background: #f6f6f6; + border-radius:2px; +} +#scroll-2::-webkit-scrollbar-thumb{ + background: #aaa; + border-radius:2px; +} +#scroll-2::-webkit-scrollbar-thumb:hover{ + background: #747474; +} +#scroll-2::-webkit-scrollbar-corner{ + background: #f6f6f6; +} +#screen-slope-midde-top-jiangxi{ + & > div > div{ + &:first-child{ + margin-bottom: 1px; + } + } + } \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/public/lunbo.js b/web/client/src/sections/quanju/containers/public/lunbo.js new file mode 100644 index 00000000..46735f50 --- /dev/null +++ b/web/client/src/sections/quanju/containers/public/lunbo.js @@ -0,0 +1,139 @@ +'use strict' +import React, { Component } from 'react'; +import { Row, Col } from 'antd'; + +export default class AutoRollComponent extends Component { + + constructor(props) { + super(props); + this.scrollElem = null; + this.stopscroll = false; + this.preTop = 0; + this.cloneEle = null; + this.currentTop = 0; + this.marqueesHeight = 0; + this.interval = null; + this.state = { + enabledScroll: false + } + } + + get enabledScroll() { + let scrollElem = document.getElementById(this.props.divId); + let fatherElem = scrollElem?.parentNode || null; + if (scrollElem && fatherElem) { + return scrollElem.scrollHeight > fatherElem.scrollHeight + } + + return false; + } + + + marque = (height) => { + try { + this.scrollElem = document.getElementById(this.props.divId); + this.marqueesHeight = height; + if (this.scrollElem) { + this.scrollElem.style.height = this.marqueesHeight; + this.scrollElem.style.overflow = 'hidden'; + } + this.repeat(); + } catch (e) { console.log(e) } + } + + + repeat = () => { + this.scrollElem.scrollTop = 0; + let offset = 1.5 + + this.interval = setInterval(() => { + if (this.stopscroll) return; + this.currentTop = this.currentTop + offset; + this.preTop = this.scrollElem.scrollTop; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset; + // console.log(`this.scrollElem.scrollTop:${this.scrollElem.scrollTop} === this.preTop:${this.preTop}`); + if (this.preTop === this.scrollElem.scrollTop) { + this.scrollElem.scrollTop = this.marqueesHeight; + this.scrollElem.scrollTop = this.scrollElem.scrollTop + offset; + } + }, 300000); + } + + + componentWillUnmount() { + clearInterval(this.interval); + } + + componentWillReceiveProps(nextProps) { + requestAnimationFrame(() => { + if (this.enabledScroll) { + if (!this.state.enabledScroll) { + this.setState({ enabledScroll: true }, () => { + this.marque(10) + }) + } + + } + }) + } + + componentDidMount() { + if (this.enabledScroll) { + this.setState({ enabledScroll: true }, () => { + this.marque(10) + }) + } + } + + onMouseOver = () => { + this.stopscroll = true; + } + + onMouseOut = () => { + this.stopscroll = false; + } + + + render() { + + const { changeStyleCol, heads, spans, data, divId, divHeight, content, containerStyle = {} } = this.props; + + return ( +
    + { + heads ? + + {heads.map((c, index) => { + return
    {c} + }) + } + : '' + } + +
    +
    + {content ? content : ''} + {this.state.enabledScroll && content ? content : ''} + { + data ? + data.map((q, idx) => { + return ( +
    + + {heads.map((c, index) => { + return
    + {index == 1 ? q.data[index] == -1 ? "-" : q.data[index] : index == 2 ? q.data[1] == -1 ? '-' : q.data[index] : q.data[index]} + }) + } + + + ) + }) : '' + } +
    + + + + ) + } +} \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/public/module.js b/web/client/src/sections/quanju/containers/public/module.js index 53c833f1..8a3af285 100644 --- a/web/client/src/sections/quanju/containers/public/module.js +++ b/web/client/src/sections/quanju/containers/public/module.js @@ -1,8 +1,9 @@ import React from 'react' import "./font.css" +import "./left.less" const Module = (props) => { - const { style, children, title } = props + const { style, children, title, hualun } = props return ( <>
    @@ -12,7 +13,7 @@ const Module = (props) => { {title || []}
    -
    +
    {children}
    diff --git a/web/log/development.txt b/web/log/development.txt index 95fc9315..f5f2f0ea 100644 --- a/web/log/development.txt +++ b/web/log/development.txt @@ -3415,3 +3415,65 @@ 2022-07-18 17:40:02.984 - info: [Router] Inject api: attachment/index 2022-07-19 09:38:20.086 - debug: [FS-LOGGER] Init. 2022-07-19 09:38:20.998 - info: [Router] Inject api: attachment/index +2022-07-21 15:22:04.942 - debug: [FS-LOGGER] Init. +2022-07-21 15:22:05.542 - info: [Router] Inject api: attachment/index +2022-07-21 17:03:00.480 - debug: [FS-LOGGER] Init. +2022-07-21 17:03:01.177 - info: [Router] Inject api: attachment/index +2022-07-21 18:12:39.625 - error: [FS-ERRHD] +{ + message: 'Error: connect ETIMEDOUT 10.8.30.157:8439', + name: 'RequestError', + cause: { + errno: -4039, + code: 'ETIMEDOUT', + syscall: 'connect', + address: '10.8.30.157', + port: 8439 + }, + error: { '$ref': '$["cause"]' }, + options: { + jar: false, + url: 'http://10.8.30.157:8439/enterprises/undefined/members?token=215ed57a-8244-4523-b2ed-5a6b12b51711', + headers: { + host: '10.8.30.157:8439', + connection: 'keep-alive', + 'sec-ch-ua': '" Not;A Brand";v="99", "Microsoft Edge";v="103", "Chromium";v="103"', + expires: '-1', + 'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private', + 'x-requested-with': 'XMLHttpRequest', + 'sec-ch-ua-mobile': '?0', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62', + 'sec-ch-ua-platform': '"Windows"', + accept: '*/*', + 'sec-fetch-site': 'same-origin', + 'sec-fetch-mode': 'cors', + 'sec-fetch-dest': 'empty', + referer: 'http://localhost:5000/quanju', + 'accept-encoding': 'gzip, deflate, br', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' + }, + encoding: null, + followRedirect: true, + method: 'GET', + body: '[object Object]', + simple: false, + resolveWithFullResponse: true, + callback: [Function: RP$callback], + transform: undefined, + transform2xxOnly: false + }, + response: undefined, + stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.157:8439\n' + + ' at new RequestError (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' + + ' at Request.plumbing.callback (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' + + ' at Request.RP$callback [as _callback] (F:\\4hao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' + + ' at self.callback (F:\\4hao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' + + ' at Request.emit (events.js:315:20)\n' + + ' at Request.onRequestError (F:\\4hao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' + + ' at ClientRequest.emit (events.js:315:20)\n' + + ' at Socket.socketErrorListener (_http_client.js:461:9)\n' + + ' at Socket.emit (events.js:315:20)\n' + + ' at emitErrorNT (internal/streams/destroy.js:96:8)\n' + + ' at emitErrorCloseNT (internal/streams/destroy.js:68:3)\n' + + ' at processTicksAndRejections (internal/process/task_queues.js:84:21)' +} From 3a2d616526311b1ae76ba76ed2d5578cd3021b79 Mon Sep 17 00:00:00 2001 From: dengyinhuan Date: Sat, 23 Jul 2022 09:57:32 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9module.js=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/client/src/sections/quanju/containers/public/module.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/client/src/sections/quanju/containers/public/module.js b/web/client/src/sections/quanju/containers/public/module.js index 8a3af285..e3aaa454 100644 --- a/web/client/src/sections/quanju/containers/public/module.js +++ b/web/client/src/sections/quanju/containers/public/module.js @@ -3,7 +3,7 @@ import "./font.css" import "./left.less" const Module = (props) => { - const { style, children, title, hualun } = props + const { style, children, title, hualun,customize } = props return ( <>
    @@ -13,7 +13,7 @@ const Module = (props) => { {title || []}
    -
    +
    {children}
    From 4134c92dafac807179139900f0367470b23d46a9 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Sat, 23 Jul 2022 10:50:01 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E5=85=BB=E6=8A=A4?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/src/packages/patrol/index.jsx | 100 +++++++++++++++++++-------- weapp/src/packages/patrol/index.scss | 67 +++++++++++++++++- 2 files changed, 136 insertions(+), 31 deletions(-) diff --git a/weapp/src/packages/patrol/index.jsx b/weapp/src/packages/patrol/index.jsx index d8e594da..fa27ad47 100644 --- a/weapp/src/packages/patrol/index.jsx +++ b/weapp/src/packages/patrol/index.jsx @@ -1,4 +1,5 @@ import React, { useState, useEffect } from 'react'; +import Taro from '@tarojs/taro'; import { View, RadioGroup, @@ -37,7 +38,7 @@ const Index = () => { ] useEffect(() => { - const prjTypeSelector = ['道路', '桥梁', '涵洞'] + const prjTypeSelector = ['道路', '桥梁', '涵洞', '其他'] const roadSelector = ['富山一路', '金沙大道', '玉湖路'] setPrjTypeSelector(prjTypeSelector) setRoadSelector(roadSelector) @@ -66,10 +67,19 @@ const Index = () => { setProjectType(selector[e.detail.value]) } - function onImgPickerChange() { - + function onImgPickerChange(files) { + setimages(files) + } + function onImageClick(index, file) { + Taro.previewImage({ + urls: [file.url] // 需要预览的图片http链接列表 + }) } + useEffect(() => { + console.log(images); + }, [images]) + return ( @@ -142,14 +152,16 @@ const Index = () => { - + + + { // value={this.state.value} // onChange={this.handleChange.bind(this, 'value')} /> - + + + - - - + + { isPatrol ? - + 现场图片: = 3 ? false : true} files={images} onChange={onImgPickerChange} + onImageClick={onImageClick} /> : - + 养护图片: - - + + + 养护前 + + + + + 养护中 + + + + + 养护后 + + } diff --git a/weapp/src/packages/patrol/index.scss b/weapp/src/packages/patrol/index.scss index 44aa32e2..b7338b0f 100644 --- a/weapp/src/packages/patrol/index.scss +++ b/weapp/src/packages/patrol/index.scss @@ -40,12 +40,77 @@ } } - .img-picker { + .patrol-picker { background-color: #fff; + padding: 20px; } + .conserve-picker { + background-color: #fff; + padding: 20px; + + .horizontal-line { + height: 30px; + width: 100%; + display: flex; + justify-content: left; + align-items: center; + + .circle { + margin-left: 4px; + width: 22px; + height: 22px; + background-color: #fff; + border-radius: 50%; + } + + .text { + margin-left: 46px; + font-size: 24px; + } + } + .hl-one { + background-color: #DFDFDF; + + .c-one { + border: solid 4px #999999; + } + + .t-one { + color: #999999; + } + } + .hl-two { + background-color: #f7d3a5; + + .c-two { + border: solid 4px #FE9B1C; + } + + .t-two { + color: #FE9B1C; + } + } + .hl-three { + background-color: #a0f3a4; + + .c-three { + border: solid 4px #08D514; + } + + .t-three { + color: #08D514; + } + } + + .img-picker { + margin: 20px; + } + } + .sub-btn { width: 70%; + margin-top: 100px; } } \ No newline at end of file From 8164437d5fa034008d3fac07a224504aabb7f691 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Sat, 23 Jul 2022 11:46:17 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E2=80=9C=E6=88=91=E7=9A=84=E2=80=9D?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/src/pages/user/index.jsx | 40 +++++++--- weapp/src/pages/user/index.scss | 109 ++++++++++++++++++++-------- weapp/src/static/img/my/card-bg.svg | 23 ++++++ weapp/src/static/img/my/head.png | Bin 0 -> 1431 bytes weapp/src/static/img/my/more.svg | 13 ++++ weapp/src/static/img/my/pswd.svg | 18 +++++ weapp/src/static/img/my/report.svg | 14 ++++ 7 files changed, 175 insertions(+), 42 deletions(-) create mode 100644 weapp/src/static/img/my/card-bg.svg create mode 100644 weapp/src/static/img/my/head.png create mode 100644 weapp/src/static/img/my/more.svg create mode 100644 weapp/src/static/img/my/pswd.svg create mode 100644 weapp/src/static/img/my/report.svg diff --git a/weapp/src/pages/user/index.jsx b/weapp/src/pages/user/index.jsx index 6c34502f..781cbb80 100644 --- a/weapp/src/pages/user/index.jsx +++ b/weapp/src/pages/user/index.jsx @@ -5,16 +5,20 @@ import { logout } from '@/actions/auth'; import { getLogoutUrl } from '@/services/api'; import cfg from '../../config'; import './index.scss'; - -import Common from '../../components/echartForWx/common'; - +import headImg from '../../static/img/my/head.png'; +import moreImg from '../../static/img/my/more.svg'; +import pswdImg from '../../static/img/my/pswd.svg'; +import reportImg from '../../static/img/my/report.svg'; const { webUrl } = cfg; - const Index = ({ ...props }) => { const userInfo = Taro.getStorageSync('userInfo') || {}; + const goRedirect = () => { + + } + const onLogout = () => { logout(getLogoutUrl()).then(() => { Taro.reLaunch({ @@ -23,19 +27,33 @@ const Index = ({ ...props }) => { }); } - + console.log(userInfo) return ( - - - - {userInfo.displayName || '----'} + + + + + {userInfo.displayName} + {userInfo.phone} + - - + goRedirect(1)}> + + 我的填报 + + + goRedirect(2)} style={{ marginTop: '2rpx' }}> + + 修改密码 + + + + 退出登录 + ); } diff --git a/weapp/src/pages/user/index.scss b/weapp/src/pages/user/index.scss index 5414ce90..152e5a44 100644 --- a/weapp/src/pages/user/index.scss +++ b/weapp/src/pages/user/index.scss @@ -1,45 +1,92 @@ .page { height: 100vh; background: #F0F2F5; - box-sizing: border-box; - - .personal { - padding: 20px; - - .info { - border-radius: 10px; - background: #fff; - height: 30vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - .icon { - width: 150px; - height: 150px; - border-radius: 50%; + display: flex; + flex-direction: column; + + .myBox { + width: 90%; + height: 300rpx; + margin: 30rpx auto; + background: url('../../static/img/my/card-bg.svg') no-repeat; + background-size: 100%; + border-radius: 8rpx; + + .my-top { + overflow: hidden; + padding: 70rpx 0 28rpx 30rpx; + + .my-portrait { + width: 120rpx; + height: 120rpx; + display: block; + float: left; } - .name { - font-size: 30px; - margin-top: 30px; + .my-item { + float: left; + margin-left: 32rpx; + width: 70%; + + .my-username { + font-size: 32rpx; + color: #FFFFFF; + margin-bottom: 24rpx; + margin-top: 6rpx; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + } + + .my-phone { + font-size: 28rpx; + font-weight: bold; + color: #FFFFFF; + } } } + } + + .box { + overflow: hidden; + background-color: #fff; + width: 100%; + height: 92rpx; + line-height: 92rpx; + + .box-img { + width: 52rpx; + height: 52rpx; + display: block; + float: left; + padding: 20rpx 20rpx 20rpx 30rpx; + } + .box-txt { + float: left; + font-size: 28rpx; + color: #333333; + } + .img { + width: 52rpx; + height: 52rpx; + display: block; + float: right; + padding: 20rpx 30rpx 20rpx 0; + } } .logout { - box-sizing: border-box; - width: 100vw; - margin-top: 50px; - padding: 0 20px; - - .btn { - background: #fff; - font-size: 28px; - padding: 8px 0; - } + width: 550rpx; + height: 80rpx; + line-height: 80rpx; + background: #346FC2; + border-radius: 8rpx; + font-size: 28rpx; + color: #FFFFFF; + margin: 98rpx auto 0; + text-align: center; } } \ No newline at end of file diff --git a/weapp/src/static/img/my/card-bg.svg b/weapp/src/static/img/my/card-bg.svg new file mode 100644 index 00000000..914f3279 --- /dev/null +++ b/weapp/src/static/img/my/card-bg.svg @@ -0,0 +1,23 @@ + + + 形状结合 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/head.png b/weapp/src/static/img/my/head.png new file mode 100644 index 0000000000000000000000000000000000000000..a354ae1ae8c6a9643d9ee1bfd07a2859ffbc020a GIT binary patch literal 1431 zcmW-gc{~&d6vv0jRw~C@XRDHuK5eC}O6zVMLx)9iZ$M9v;?$ zSv6eF1KV5>Zb4Na_*Q~j3H)9JD?-Ta0>LIQIM6r-_zno^fR`jlXaoNiKxG4a5t@e~ zr4#(Cp#0<393MCU$Q;PiUF$<#(%Rt|}!siuYv)4U)2Bi(H(3nTjIP%@3BbY|i@`h|$%wbcv_(rwT*hUPOK(N12 zUmwk)qwe(d6|QvF1>!6M@D*4e`?R} zD!Og0Ka(kUrR#-TaLZRnF}<&~+gYmaU-XYX@ds(ev;cg~LV|s&Gjeg;!kUnx?Y%QN z-i9JDb96y}B!0o7hAF%-!+ED0E%92?0 zirAuzp#1vY(WR)obIZxe$&VFC<$KI1g{2y+=er}dm2vXuMZNGyj{Gb zyt>k!(D!1e)~Phvz(TiOjmK0I^7r2eOk+EkxdXzZ$&WWZFu?wpo^ i$GbSGjH>^Q6CS)NtuA}6BI^f-Ex literal 0 HcmV?d00001 diff --git a/weapp/src/static/img/my/more.svg b/weapp/src/static/img/my/more.svg new file mode 100644 index 00000000..fda19b75 --- /dev/null +++ b/weapp/src/static/img/my/more.svg @@ -0,0 +1,13 @@ + + + 切片 + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/pswd.svg b/weapp/src/static/img/my/pswd.svg new file mode 100644 index 00000000..31bbe81b --- /dev/null +++ b/weapp/src/static/img/my/pswd.svg @@ -0,0 +1,18 @@ + + + 切片 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/report.svg b/weapp/src/static/img/my/report.svg new file mode 100644 index 00000000..c4cdfc7c --- /dev/null +++ b/weapp/src/static/img/my/report.svg @@ -0,0 +1,14 @@ + + + 切片 + + + + + + + + + + + \ No newline at end of file