@chenchaolong/plugin-trade-compliance-workbench 1.0.43 → 1.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -537,8 +537,8 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
537
537
  .tcw-contract-source-preview { grid-column: auto; }
538
538
  }
539
539
 
540
- .tcw-page-analytics .tcw-content { padding: 18px 24px 24px; background: #fbfcff; }
541
- .tcw-analytics-page { display: grid; min-width: 0; gap: 12px; }
540
+ .tcw-page-analytics .tcw-content { padding: 16px 24px 18px; background: #fbfcff; }
541
+ .tcw-analytics-page { display: grid; min-width: 0; gap: 9px; }
542
542
  .tcw-analytics-overview-header { display: flex; min-width: 0; align-items: flex-end; justify-content: space-between; gap: 12px; }
543
543
  .tcw-analytics-overview-header .tcw-page-tabs { min-width: 0; flex: 1 1 auto; }
544
544
  .tcw-analytics-summary { display: grid; min-width: 0; gap: 8px; }
@@ -684,11 +684,12 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
684
684
  .tcw-analytics-chip { display: inline-flex; min-height: 32px; align-items: center; gap: 6px; padding: 0 12px; border: 1px solid #dbe5ef; border-radius: 4px; color: #475467; background: #fff; font-size: 12px; font-weight: 650; white-space: nowrap; }
685
685
  .tcw-analytics-chip--org { min-width: 210px; justify-content: flex-start; }
686
686
  .tcw-analytics-chip--refresh { color: #667085; font-weight: 500; }
687
- .tcw-analytics-period button { min-width: 86px; }
688
- .tcw-analytics-cockpit { display: grid; min-width: 0; gap: 12px; }
689
- .tcw-analytics-kpi-grid { display: grid; grid-template-columns: repeat(10, minmax(118px, 1fr)); gap: 9px; min-width: 0; }
690
- .tcw-analytics-kpi-grid button { position: relative; display: grid; min-width: 0; min-height: 84px; grid-template-columns: minmax(0, 1fr) 24px; gap: 5px 8px; align-content: center; padding: 11px 12px 9px; overflow: hidden; border: 1px solid #e2e8f0; border-left: 3px solid #1769ff; border-radius: 5px; background: #fff; text-align: left; box-shadow: 0 3px 10px rgba(15, 23, 42, .045); }
691
- .tcw-analytics-kpi-grid button i { grid-column: 2; grid-row: 1 / 3; width: 24px; height: 24px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; color: #1769ff; background: #eff6ff; font-size: 15px; }
687
+ .tcw-analytics-period button { min-width: 92px; }
688
+ .tcw-analytics-period button[aria-pressed="true"] { color: #1769ff; background: #eaf4ff; font-weight: 700; }
689
+ .tcw-analytics-cockpit { display: grid; min-width: 0; gap: 9px; }
690
+ .tcw-analytics-kpi-grid { display: grid; grid-template-columns: repeat(10, minmax(118px, 1fr)); gap: 8px; min-width: 0; }
691
+ .tcw-analytics-kpi-grid button { position: relative; display: grid; min-width: 0; min-height: 90px; grid-template-columns: minmax(0, 1fr) 24px; gap: 4px 7px; align-content: center; padding: 10px 10px 8px; overflow: hidden; border: 1px solid #e2e8f0; border-left: 3px solid #1769ff; border-radius: 5px; background: #fff; text-align: left; box-shadow: 0 3px 10px rgba(15, 23, 42, .045); }
692
+ .tcw-analytics-kpi-grid button i { grid-column: 2; grid-row: 1 / 3; width: 23px; height: 23px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; color: #1769ff; background: #eff6ff; font-size: 15px; }
692
693
  .tcw-analytics-kpi-grid button.is-success { border-left-color: #18a058; }
693
694
  .tcw-analytics-kpi-grid button.is-success i { color: #18a058; background: #eaf8f0; }
694
695
  .tcw-analytics-kpi-grid button.is-warn { border-left-color: #ff8a00; }
@@ -705,25 +706,35 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
705
706
  .tcw-analytics-kpi-grid small { grid-column: 1 / -1; display: inline-flex; min-width: 0; gap: 5px; overflow: hidden; color: #667085; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
706
707
  .tcw-analytics-kpi-grid small em { color: #667085; font-style: normal; }
707
708
  .tcw-analytics-kpi-grid small b { color: #12b76a; font-weight: 700; }
708
- .tcw-analytics-cockpit-layout { display: grid; grid-template-columns: minmax(260px, .95fr) minmax(360px, 1.45fr) minmax(300px, 1.1fr) minmax(320px, 1.15fr); gap: 12px; min-width: 0; align-items: stretch; }
709
- .tcw-analytics-panel { display: grid; min-width: 0; align-content: start; gap: 8px; min-height: 154px; padding: 10px 12px; border: 1px solid #e1e7ef; border-radius: 6px; background: #fff; box-shadow: 0 3px 12px rgba(15, 23, 42, .035); }
710
- .tcw-analytics-panel--queue { grid-column: 1; }
711
- .tcw-analytics-panel--trend { grid-column: 2; }
712
- .tcw-analytics-panel--capital { grid-column: 3; }
713
- .tcw-analytics-panel--risk { grid-column: 4; }
714
- .tcw-analytics-panel--wide { grid-column: span 2; }
715
- .tcw-analytics-panel--queue, .tcw-analytics-panel--trend, .tcw-analytics-panel--capital, .tcw-analytics-panel--risk { min-height: 232px; }
716
- .tcw-analytics-panel > header { display: flex; min-width: 0; align-items: center; justify-content: space-between; padding-bottom: 8px; border-bottom: 1px solid #edf2f7; }
709
+ .tcw-analytics-cockpit-layout { display: grid; gap: 10px; min-width: 0; }
710
+ .tcw-analytics-layout-row { display: grid; min-width: 0; gap: 10px; align-items: stretch; }
711
+ .tcw-analytics-layout-row--charts { grid-template-columns: minmax(280px, .86fr) minmax(430px, 1.28fr) minmax(340px, 1fr) minmax(380px, 1.08fr); }
712
+ .tcw-analytics-layout-row--top5, .tcw-analytics-layout-row--bottom { grid-template-columns: repeat(3, minmax(0, 1fr)); }
713
+ .tcw-analytics-panel { display: grid; min-width: 0; grid-template-rows: auto minmax(0, 1fr); align-content: stretch; gap: 7px; min-height: 0; padding: 9px 12px; overflow: hidden; border: 1px solid #e1e7ef; border-radius: 6px; background: #fff; box-shadow: 0 3px 12px rgba(15, 23, 42, .035); }
714
+ .tcw-analytics-layout-row--charts .tcw-analytics-panel { height: 226px; }
715
+ .tcw-analytics-layout-row--top5 .tcw-analytics-panel { height: 216px; }
716
+ .tcw-analytics-layout-row--bottom .tcw-analytics-panel { height: 206px; }
717
+ .tcw-analytics-panel > header { display: flex; min-width: 0; align-items: center; justify-content: space-between; min-height: 23px; padding-bottom: 7px; border-bottom: 1px solid #edf2f7; }
717
718
  .tcw-analytics-panel > header strong { display: inline-flex; min-width: 0; align-items: center; gap: 7px; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
718
719
  .tcw-analytics-panel > header i { color: #2d7dd2; font-size: 16px; }
719
720
  .tcw-analytics-panel-link { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 2px; padding: 0; border: 0; color: #2d7dd2; background: transparent; text-decoration: none; font-size: 12px; font-weight: 650; white-space: nowrap; cursor: pointer; }
720
721
  .tcw-analytics-panel-link:hover { color: #185da4; text-decoration: underline; }
721
722
  .tcw-analytics-todo-list, .tcw-analytics-table-list, .tcw-analytics-file-list, .tcw-analytics-source-list { display: grid; min-width: 0; gap: 6px; }
723
+ .tcw-analytics-todo-board { display: grid; min-width: 0; align-content: start; font-size: 11px; }
724
+ .tcw-analytics-todo-head, .tcw-analytics-todo-row { display: grid; grid-template-columns: minmax(0, 1.25fr) 34px minmax(76px, .86fr) 40px; align-items: center; gap: 5px; min-width: 0; }
725
+ .tcw-analytics-todo-head { height: 22px; padding: 0 4px; color: #6d7b8f; background: #f8fbff; font-weight: 650; }
726
+ .tcw-analytics-todo-row { height: 27px; padding: 0 4px; border: 0; border-bottom: 1px solid #edf2f7; background: transparent; color: #26364a; text-align: left; cursor: pointer; }
727
+ .tcw-analytics-todo-row:hover { background: #fbfdff; }
728
+ .tcw-analytics-todo-row span { display: inline-flex; min-width: 0; align-items: center; gap: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
729
+ .tcw-analytics-todo-row span i { color: #1769ff; font-size: 12px; }
730
+ .tcw-analytics-todo-row b, .tcw-analytics-todo-row em { min-width: 0; overflow: hidden; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
731
+ .tcw-analytics-todo-row em { color: #344054; font-style: normal; }
722
732
  .tcw-analytics-todo-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 12px; }
723
733
  .tcw-analytics-todo-table th, .tcw-analytics-todo-table td { overflow: hidden; padding: 7px 6px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
724
734
  .tcw-analytics-todo-table th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
725
735
  .tcw-analytics-todo-table td:nth-child(2), .tcw-analytics-todo-table th:nth-child(2) { width: 58px; text-align: right; }
726
736
  .tcw-analytics-todo-table td:nth-child(3), .tcw-analytics-todo-table th:nth-child(3) { width: 68px; text-align: center; }
737
+ .tcw-analytics-todo-table td:nth-child(4), .tcw-analytics-todo-table th:nth-child(4) { width: 70px; text-align: right; }
727
738
  .tcw-analytics-todo-list article { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; padding: 7px 8px; border: 1px solid #edf2f7; border-left: 3px solid #2d7dd2; border-radius: 5px; background: #fbfdff; }
728
739
  .tcw-analytics-todo-list article.is-high { border-left-color: #d95040; }
729
740
  .tcw-analytics-todo-list article.is-medium { border-left-color: #e69f2a; }
@@ -736,16 +747,23 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
736
747
  .tcw-analytics-month-chart .is-purchase { background: #91b8e6; }
737
748
  .tcw-analytics-month-chart .is-sales { background: #2d7dd2; }
738
749
  .tcw-analytics-month-chart span { grid-column: 1 / -1; color: var(--tcw-muted); text-align: center; font-size: 10px; }
739
- .tcw-analytics-line-chart { min-width: 0; height: 136px; border: 1px solid #edf2f7; border-radius: 5px; background: linear-gradient(180deg, #ffffff, #fbfdff); }
750
+ .tcw-analytics-line-chart { position: relative; min-width: 0; height: 138px; border: 1px solid #edf2f7; border-radius: 5px; background: linear-gradient(180deg, #ffffff, #fbfdff); }
740
751
  .tcw-analytics-line-chart svg { display: block; width: 100%; height: 100%; }
741
752
  .tcw-analytics-line-chart line { stroke: #edf2f7; stroke-width: 1; }
742
- .tcw-analytics-line-chart polyline { fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
753
+ .tcw-analytics-line-chart polyline { fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
743
754
  .tcw-analytics-line-chart polyline.is-purchase { stroke: #91b8e6; }
744
755
  .tcw-analytics-line-chart polyline.is-sales { stroke: #2d7dd2; }
745
756
  .tcw-analytics-line-chart polyline.is-profit { stroke: #31a776; }
746
757
  .tcw-analytics-line-chart polyline.is-received { stroke: #f97316; }
758
+ .tcw-analytics-line-chart circle { stroke: #fff; stroke-width: 1.4; }
759
+ .tcw-analytics-line-chart circle.is-purchase { fill: #91b8e6; }
760
+ .tcw-analytics-line-chart circle.is-sales { fill: #2d7dd2; }
761
+ .tcw-analytics-line-chart circle.is-profit { fill: #31a776; }
762
+ .tcw-analytics-line-chart circle.is-received { fill: #f97316; }
747
763
  .tcw-analytics-line-chart text { fill: #8a97a9; text-anchor: middle; font-size: 10px; }
748
- .tcw-analytics-chart-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; color: #66758a; font-size: 12px; }
764
+ .tcw-analytics-line-chart .tcw-analytics-trend-axis { text-anchor: end; font-size: 10px; }
765
+ .tcw-analytics-line-chart .tcw-analytics-trend-unit { position: absolute; top: 7px; left: 11px; z-index: 1; color: #667085; font-size: 10px; font-weight: 600; line-height: 1; pointer-events: none; }
766
+ .tcw-analytics-chart-legend { display: flex; flex-wrap: wrap; gap: 5px 14px; color: #66758a; font-size: 11px; }
749
767
  .tcw-analytics-chart-legend span { display: inline-flex; align-items: center; gap: 5px; }
750
768
  .tcw-analytics-chart-legend b { color: #667085; font-size: 11px; font-weight: 500; }
751
769
  .tcw-analytics-chart-legend i { width: 9px; height: 9px; border-radius: 50%; background: #2d7dd2; }
@@ -753,48 +771,65 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
753
771
  .tcw-analytics-chart-legend .is-profit { background: #31a776; }
754
772
  .tcw-analytics-chart-legend .is-received { background: #f97316; }
755
773
  .tcw-analytics-trend-summary { display: none; }
756
- .tcw-analytics-money-structure { display: grid; min-width: 0; gap: 9px; }
757
- .tcw-analytics-money-structure div { display: grid; min-width: 0; gap: 5px; }
758
- .tcw-analytics-money-structure span { display: inline-flex; align-items: center; gap: 6px; color: #56677f; font-size: 12px; }
774
+ .tcw-analytics-money-structure { display: grid; min-width: 0; align-content: start; gap: 6px; height: 100%; font-size: 11px; }
775
+ .tcw-analytics-money-head, .tcw-analytics-money-row { display: grid; grid-template-columns: 70px minmax(0, 1fr) 70px 48px; align-items: center; gap: 7px; min-width: 0; }
776
+ .tcw-analytics-money-head { color: #6d7b8f; }
777
+ .tcw-analytics-money-head span:first-child { grid-column: 1 / 4; }
778
+ .tcw-analytics-money-head span:last-child { text-align: right; }
779
+ .tcw-analytics-money-row { min-height: 22px; }
780
+ .tcw-analytics-money-structure span { display: inline-flex; align-items: center; gap: 6px; color: #56677f; font-size: 11px; }
759
781
  .tcw-analytics-money-structure span i { width: 8px; height: 8px; border-radius: 50%; }
760
- .tcw-analytics-money-structure b { color: #17283f; }
761
- .tcw-analytics-money-structure em { display: block; height: 8px; overflow: hidden; border-radius: 999px; background: #eef3f8; }
782
+ .tcw-analytics-money-structure b, .tcw-analytics-money-structure strong { min-width: 0; overflow: hidden; color: #17283f; text-align: right; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
783
+ .tcw-analytics-money-structure strong { color: #667085; font-weight: 500; }
784
+ .tcw-analytics-money-structure em { display: block; height: 9px; overflow: hidden; border-radius: 999px; background: #eef3f8; }
762
785
  .tcw-analytics-money-structure em i { display: block; height: 100%; border-radius: inherit; }
763
- .tcw-analytics-risk-distribution { display: grid; grid-template-columns: 132px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; }
764
- .tcw-analytics-risk-distribution .tcw-analytics-donut { width: 116px; height: 116px; background: radial-gradient(circle, #fff 0 47%, transparent 48%), var(--risk-donut); }
786
+ .tcw-analytics-risk-distribution { display: grid; grid-template-columns: 142px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; height: 100%; }
787
+ .tcw-analytics-risk-distribution .tcw-analytics-donut { width: 132px; height: 132px; background: radial-gradient(circle, #fff 0 47%, transparent 48%), var(--risk-donut); }
765
788
  .tcw-analytics-risk-distribution .tcw-analytics-donut strong { font-size: 13px; }
766
- .tcw-analytics-risk-distribution .tcw-analytics-donut span { color: #101828; font-size: 22px; font-weight: 700; }
767
- .tcw-analytics-risk-distribution dl { display: grid; gap: 8px; margin: 0; min-width: 0; }
768
- .tcw-analytics-risk-distribution button { display: grid; min-width: 0; gap: 2px; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
789
+ .tcw-analytics-risk-distribution .tcw-analytics-donut span { color: #101828; font-size: 20px; font-weight: 700; }
790
+ .tcw-analytics-risk-distribution dl { display: grid; gap: 5px; margin: 0; min-width: 0; }
791
+ .tcw-analytics-risk-distribution button { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-width: 0; gap: 8px; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
769
792
  .tcw-analytics-risk-distribution button:hover dt { color: #2d7dd2; text-decoration: underline; }
770
793
  .tcw-analytics-risk-distribution dt, .tcw-analytics-risk-distribution dd { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
771
- .tcw-analytics-risk-distribution dt { display: inline-flex; align-items: center; gap: 6px; color: #56677f; }
794
+ .tcw-analytics-risk-distribution dt { display: inline-flex; align-items: center; gap: 6px; color: #56677f; font-size: 11px; }
772
795
  .tcw-analytics-risk-distribution dt i { width: 8px; height: 8px; border-radius: 50%; }
773
- .tcw-analytics-risk-distribution dd { margin: 0 0 0 14px; color: #1f334c; font-weight: 700; }
774
- .tcw-analytics-table-list article, .tcw-analytics-file-list article, .tcw-analytics-source-list article, .tcw-analytics-source-list button { display: grid; min-width: 0; gap: 3px; padding: 8px; border: 0; border-bottom: 1px solid #edf2f7; background: transparent; color: inherit; text-align: left; text-decoration: none; cursor: pointer; }
796
+ .tcw-analytics-risk-distribution dd { margin: 0; color: #1f334c; font-size: 11px; font-weight: 700; }
797
+ .tcw-analytics-table-list article, .tcw-analytics-file-list article, .tcw-analytics-source-list article, .tcw-analytics-source-list button { display: grid; min-width: 0; gap: 3px; padding: 8px 8px; border: 0; border-bottom: 1px solid #edf2f7; background: transparent; color: inherit; text-align: left; text-decoration: none; cursor: pointer; }
775
798
  .tcw-analytics-table-list article:last-child, .tcw-analytics-file-list article:last-child, .tcw-analytics-source-list article:last-child, .tcw-analytics-source-list button:last-child { border-bottom: 0; }
776
- .tcw-analytics-source-list button { grid-template-columns: auto minmax(0, 1fr); }
777
- .tcw-analytics-source-list button > i { grid-row: 1 / span 2; align-self: center; color: #2d7dd2; }
799
+ .tcw-analytics-source-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 0 18px; height: 100%; }
800
+ .tcw-analytics-source-list button { grid-template-columns: 18px minmax(0, 1fr); align-content: center; min-height: 32px; padding: 3px 0; }
801
+ .tcw-analytics-source-list button > i { grid-row: 1 / span 2; align-self: start; margin-top: 2px; color: #2d7dd2; font-size: 14px; }
778
802
  .tcw-analytics-source-list button:hover strong { color: #2d7dd2; text-decoration: underline; }
779
- .tcw-analytics-table-list span, .tcw-analytics-file-list strong, .tcw-analytics-source-list strong { min-width: 0; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
803
+ .tcw-analytics-table-list span, .tcw-analytics-file-list strong, .tcw-analytics-source-list strong { min-width: 0; overflow: hidden; color: #1f334c; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 700; }
780
804
  .tcw-analytics-table-list span { white-space: normal; line-height: 1.35; }
781
805
  .tcw-analytics-table-list b { color: #2d7dd2; }
782
- .tcw-analytics-table-list small, .tcw-analytics-file-list span, .tcw-analytics-file-list small, .tcw-analytics-source-list span { min-width: 0; overflow: hidden; color: var(--tcw-muted); text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
783
- .tcw-analytics-info-list { display: grid; gap: 10px; margin: 0; }
784
- .tcw-analytics-info-list div { display: grid; gap: 3px; padding: 10px 12px; border: 1px solid #edf2f7; border-radius: 6px; background: #fbfdff; }
785
- .tcw-analytics-info-list dt { color: #1f334c; font-weight: 700; }
786
- .tcw-analytics-info-list dd { margin: 0; color: #56677f; }
806
+ .tcw-analytics-table-list small, .tcw-analytics-file-list span, .tcw-analytics-file-list small, .tcw-analytics-source-list span { min-width: 0; overflow: hidden; color: var(--tcw-muted); text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
807
+ .tcw-analytics-info-list { width: 100%; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 12px; }
808
+ .tcw-analytics-info-list th, .tcw-analytics-info-list td { overflow: hidden; padding: 9px 8px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
809
+ .tcw-analytics-info-list th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
810
+ .tcw-analytics-info-list th:first-child, .tcw-analytics-info-list td:first-child { width: 30%; }
811
+ .tcw-analytics-info-list th:last-child, .tcw-analytics-info-list td:last-child { width: 86px; text-align: right; }
812
+ .tcw-analytics-info-action { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: 26px; padding: 0 9px; border: 1px solid #cfe0f2; border-radius: 4px; color: #1769ff; background: #f0f7ff; font-size: 12px; font-weight: 650; cursor: pointer; }
813
+ .tcw-analytics-row-action, .tcw-analytics-todo-action { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: 24px; padding: 0 7px; border: 1px solid #cfe0f2; border-radius: 4px; color: #1769ff; background: #f0f7ff; font-size: 11px; font-weight: 650; cursor: pointer; white-space: nowrap; }
787
814
  .tcw-analytics-risk-orders { display: grid; min-width: 0; gap: 6px; }
788
815
  .tcw-analytics-risk-orders article { display: grid; grid-template-columns: minmax(96px, .75fr) minmax(0, 1fr) minmax(80px, .7fr) auto auto; align-items: center; gap: 8px; min-width: 0; padding: 8px; border: 1px solid #edf2f7; border-radius: 5px; background: #fbfdff; }
789
816
  .tcw-analytics-risk-orders span, .tcw-analytics-risk-orders b, .tcw-analytics-risk-orders em { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
790
817
  .tcw-analytics-risk-orders em { color: #d95040; font-style: normal; }
791
818
  .tcw-analytics-risk-orders strong { color: #1f334c; white-space: nowrap; }
792
819
  .tcw-analytics-risk-orders small { padding: 2px 7px; border-radius: 999px; color: #265f9b; background: #eaf4ff; white-space: nowrap; }
793
- .tcw-analytics-dashboard-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 11px; }
794
- .tcw-analytics-dashboard-table th, .tcw-analytics-dashboard-table td { overflow: hidden; padding: 6px 6px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
820
+ .tcw-analytics-dashboard-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; color: #26364a; font-size: 10px; }
821
+ .tcw-analytics-dashboard-table th, .tcw-analytics-dashboard-table td { overflow: hidden; padding: 5px 6px; border-bottom: 1px solid #edf2f7; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
795
822
  .tcw-analytics-dashboard-table th { color: #6d7b8f; background: #f8fbff; font-weight: 650; }
796
823
  .tcw-analytics-dashboard-table td:nth-child(n+2), .tcw-analytics-dashboard-table th:nth-child(n+2) { text-align: right; }
797
- .tcw-analytics-dashboard-table td:first-child, .tcw-analytics-dashboard-table th:first-child { width: 34%; }
824
+ .tcw-analytics-dashboard-table td:first-child, .tcw-analytics-dashboard-table th:first-child { width: auto; }
825
+ .tcw-analytics-table--customer th:nth-child(1), .tcw-analytics-table--customer td:nth-child(1) { width: 20px; color: #1769ff; text-align: center; }
826
+ .tcw-analytics-table--customer th:nth-child(2), .tcw-analytics-table--customer td:nth-child(2) { width: 26%; text-align: left; }
827
+ .tcw-analytics-table--customer th:nth-child(7), .tcw-analytics-table--customer td:nth-child(7) { width: 52px; }
828
+ .tcw-analytics-table--receivable th:nth-child(1), .tcw-analytics-table--receivable td:nth-child(1) { width: 36%; text-align: left; }
829
+ .tcw-analytics-table--supplier th:nth-child(1), .tcw-analytics-table--supplier td:nth-child(1) { width: 30%; text-align: left; }
830
+ .tcw-analytics-table--supplier th:nth-child(3), .tcw-analytics-table--supplier td:nth-child(3) { width: 64px; text-align: center; }
831
+ .tcw-analytics-table--files th:nth-child(1), .tcw-analytics-table--files td:nth-child(1) { width: 28%; text-align: left; }
832
+ .tcw-analytics-table--files th:nth-child(4), .tcw-analytics-table--files td:nth-child(4) { width: 25%; text-align: left; }
798
833
  .tcw-analytics-dashboard-table tbody tr:hover { background: #fbfdff; }
799
834
  .tcw-analytics-dashboard-table em { color: #d95040; font-style: normal; font-weight: 650; }
800
835
  .tcw-analytics-dashboard-table.tcw-analytics-risk-orders { display: table; }
@@ -802,6 +837,10 @@ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: no
802
837
  .tcw-analytics-risk-badge.is-high { color: #a83225; background: #fff0ed; }
803
838
  .tcw-analytics-risk-badge.is-medium { color: #94600e; background: #fff7e8; }
804
839
  .tcw-analytics-risk-badge.is-low { color: #20785b; background: #eaf8f2; }
840
+ .tcw-analytics-status { display: inline-flex; align-items: center; justify-content: center; min-height: 18px; padding: 0 6px; border-radius: 999px; font-size: 10px; font-weight: 650; }
841
+ .tcw-analytics-status.is-ok { color: #20785b; background: #eaf8f2; }
842
+ .tcw-analytics-status.is-warn { color: #1769ff; background: #eaf4ff; }
843
+ .tcw-analytics-status.is-danger { color: #c2412f; background: #fff0ed; }
805
844
  .tcw-analytics-empty { display: grid; min-height: 92px; place-items: center; color: var(--tcw-muted); border: 1px dashed #dbe5ef; border-radius: 5px; background: #fbfdff; }
806
845
  .tcw-analytics-detail-modal { display: grid; min-width: 0; gap: 10px; }
807
846
  .tcw-analytics-detail-note { display: inline-flex; min-width: 0; align-items: center; gap: 7px; padding: 8px 10px; border: 1px solid #cfe0f2; border-radius: 5px; color: #285c91; background: #f0f7ff; font-size: 12px; }
@@ -4177,8 +4177,15 @@ function analyticsDashboardJsonSql(query, tenant, organization, from, to) {
4177
4177
  'riskOrders', (SELECT COALESCE(jsonb_agg(risk_item.item), '[]'::jsonb) FROM (SELECT jsonb_build_object('orderKey', 'sales:' || sales_scope."purchaseOrderId"::text, 'orderNo', sales_scope."salesOrderNo", 'partyName', sales_scope."customerName", 'riskType', '未收款风险', 'riskAmountCny', sales_scope."unreceivedCny", 'status', '待跟进') AS item, sales_scope."unreceivedCny" AS amount FROM sales_scope WHERE sales_scope."unreceivedCny" > 0 UNION ALL SELECT jsonb_build_object('orderKey', 'purchase:' || purchase_scope.id::text, 'orderNo', purchase_scope."contractNo", 'partyName', purchase_scope."supplierName", 'riskType', '未付款风险', 'riskAmountCny', purchase_scope."unpaidCny", 'status', '待跟进') AS item, purchase_scope."unpaidCny" AS amount FROM purchase_scope WHERE purchase_scope."unpaidCny" > 0 ORDER BY amount DESC LIMIT 5) risk_item),
4178
4178
  'dataSources', jsonb_build_array(
4179
4179
  jsonb_build_object('label', '采购订单', 'description', '采购金额、付款记录、退税记录'),
4180
+ jsonb_build_object('label', '采购商品明细', 'description', '采购商品金额、商品风险命中'),
4181
+ jsonb_build_object('label', '客户合同审核结果', 'description', '客户合同风险、待审核合同'),
4182
+ jsonb_build_object('label', '公司制裁目录匹配结果', 'description', '客户/供应商制裁命中'),
4183
+ jsonb_build_object('label', '付款记录', 'description', '已付款、未付款金额'),
4180
4184
  jsonb_build_object('label', '销售订单', 'description', '销售金额、收款记录、客户合同关联'),
4181
- jsonb_build_object('label', '合规风险', 'description', '目录匹配、制裁匹配、合同审核、销售文件复核')
4185
+ jsonb_build_object('label', '销售商品明细', 'description', '销售商品金额、管控商品命中'),
4186
+ jsonb_build_object('label', '管控商品目录匹配结果', 'description', '商品风险命中与处理状态'),
4187
+ jsonb_build_object('label', '收款记录', 'description', '已收款、未收款金额'),
4188
+ jsonb_build_object('label', '退税记录', 'description', '已退税、未退税金额')
4182
4189
  )
4183
4190
  ))`;
4184
4191
  }
@@ -4326,8 +4333,15 @@ function parseAnalyticsDashboard(value) {
4326
4333
  function defaultAnalyticsDataSources() {
4327
4334
  return [
4328
4335
  { label: '采购订单', description: '采购金额、付款记录、退税记录' },
4336
+ { label: '采购商品明细', description: '采购商品金额、商品风险命中' },
4337
+ { label: '客户合同审核结果', description: '客户合同风险、待审核合同' },
4338
+ { label: '公司制裁目录匹配结果', description: '客户/供应商制裁命中' },
4339
+ { label: '付款记录', description: '已付款、未付款金额' },
4329
4340
  { label: '销售订单', description: '销售金额、收款记录、客户合同关联' },
4330
- { label: '合规风险', description: '目录匹配、制裁匹配、合同审核、销售文件复核' }
4341
+ { label: '销售商品明细', description: '销售商品金额、管控商品命中' },
4342
+ { label: '管控商品目录匹配结果', description: '商品风险命中与处理状态' },
4343
+ { label: '收款记录', description: '已收款、未收款金额' },
4344
+ { label: '退税记录', description: '已退税、未退税金额' }
4331
4345
  ];
4332
4346
  }
4333
4347
  function safeJsonParse(value) { try {