Selaa lähdekoodia

style(web-admin): style product confirm dialog for scheme A/B.

Co-authored-by: Cursor <cursoragent@cursor.com>
wuzilong 2 viikkoa sitten
vanhempi
commit
321e0d05fa
1 muutettua tiedostoa jossa 390 lisäystä ja 0 poistoa
  1. 390 0
      web-admin/src/views/m/crm/product/product.scss

+ 390 - 0
web-admin/src/views/m/crm/product/product.scss

@@ -0,0 +1,390 @@
+:root {
+  --van-primary-color: #0a9f6d;
+  --van-success-color: #0a9f6d;
+  --van-danger-color: #dc2626;
+  --van-warning-color: #d97706;
+  --van-button-primary-background: #0a9f6d;
+  --van-button-primary-border-color: #0a9f6d;
+  --van-dropdown-menu-title-active-text-color: #0a9f6d;
+  --van-dropdown-menu-option-active-color: #0a9f6d;
+  --van-tabs-bottom-bar-color: #0a9f6d;
+  --van-tab-active-text-color: #0a9f6d;
+}
+
+.mp-product-page {
+  --van-primary-color: #0a9f6d;
+  --van-success-color: #0a9f6d;
+  --van-button-primary-background: #0a9f6d;
+  --van-button-primary-border-color: #0a9f6d;
+  min-height: 100%;
+  background: #f5f8f7;
+}
+
+.mp-product-list .mp-wv-header {
+  padding-bottom: 10px;
+}
+
+.mp-product-list .mp-wv-header .mp-wv-search {
+  margin-bottom: 0;
+}
+
+.mp-product-list .mp-wv-header .mp-product-dd {
+  margin-top: 4px;
+}
+
+.mp-product-loading {
+  display: flex;
+  justify-content: center;
+  padding: 48px 16px;
+}
+
+.mp-product-error {
+  display: flex;
+  gap: 10px;
+  align-items: center;
+  justify-content: space-between;
+  margin: 0 10px 10px;
+  padding: 10px 12px;
+  font-size: 13px;
+  color: #b91c1c;
+  background: #fff7f7;
+  border: 1px solid #fecaca;
+  border-radius: 10px;
+}
+
+.mp-product-tag-row {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 6px;
+  justify-content: flex-end;
+}
+
+/* ── 产品管理按钮:对齐列表卡片 .mp-wv-btn(高 30px)── */
+@mixin mp-product-card-btn {
+  box-sizing: border-box;
+  height: 30px !important;
+  min-height: 30px !important;
+  padding: 0 10px !important;
+  font-size: 13px !important;
+  font-weight: 500;
+  line-height: 1 !important;
+  border-radius: 8px !important;
+
+  &.van-button--round {
+    border-radius: 8px !important;
+  }
+
+  &.van-button--default {
+    color: #1f2a26 !important;
+    background: #fff !important;
+    border: 1px solid #dcebe4 !important;
+  }
+
+  &.van-button--primary:not(.van-button--plain) {
+    color: #fff !important;
+    font-weight: 600;
+    background: #0a9f6d !important;
+    border: 1px solid #0a9f6d !important;
+  }
+
+  &.van-button--disabled,
+  &[disabled] {
+    opacity: 0.45;
+  }
+}
+
+.mp-product-page .mp-wv-fab-bar {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 40;
+  display: flex;
+  flex-wrap: nowrap;
+  gap: 8px;
+  width: 100%;
+  max-width: min(480px, 100%);
+  margin: 0 auto;
+  padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
+  background: #fff;
+  border-top: 1px solid #dcebe4;
+  box-shadow: 0 -8px 24px rgb(34 64 52 / 12%);
+
+  .van-button {
+    flex: 1 1 0;
+    min-width: 0;
+    @include mp-product-card-btn;
+  }
+}
+
+.mp-product-detail-tabs {
+  position: sticky;
+  z-index: 40;
+  display: flex;
+  margin: 0 0 12px;
+  overflow-x: auto;
+  background: #f5f8f7;
+  border-bottom: 1px solid #dcebe4;
+  -webkit-overflow-scrolling: touch;
+}
+
+.mp-product-detail-tab {
+  position: relative;
+  flex: 1 0 auto;
+  min-width: 96px;
+  height: 44px;
+  padding: 0 10px;
+  font-size: 13px;
+  font-weight: 600;
+  color: #6b7b74;
+  background: transparent;
+  border: 0;
+
+  &.is-active {
+    color: #087f57;
+
+    &::after {
+      position: absolute;
+      right: 22%;
+      bottom: 0;
+      left: 22%;
+      height: 2px;
+      content: '';
+      background: #0a9f6d;
+      border-radius: 2px;
+    }
+  }
+}
+
+.mp-product-detail-body {
+  padding: 0 10px 88px;
+}
+
+.mp-product-anchor + .mp-product-anchor {
+  margin-top: 0;
+}
+
+/* 更多筛选:头/底固定,中间可滚(popup teleport 到 body) */
+.mp-customer-vant-popup .mp-customer-filter-vant {
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
+  height: 100%;
+  min-height: 0;
+  background: #f7faf8;
+}
+
+.mp-customer-vant-popup .mp-customer-filter-vant > .van-nav-bar {
+  flex-shrink: 0;
+}
+
+.mp-product-filter-vant__body {
+  flex: 1 1 auto;
+  min-height: 0;
+  padding: 8px 0 16px;
+  overflow: auto;
+  -webkit-overflow-scrolling: touch;
+}
+
+.mp-product-filter-vant__foot {
+  display: flex;
+  flex-shrink: 0;
+  gap: 8px;
+  padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
+  background: #fff;
+  border-top: 1px solid #e8f0ec;
+  box-shadow: 0 -8px 24px rgb(34 64 52 / 12%);
+
+  .van-button {
+    flex: 1 1 0;
+    min-width: 0;
+    @include mp-product-card-btn;
+  }
+}
+
+.mp-product-form-popup.van-popup,
+.mp-customer-vant-popup.van-popup {
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+}
+
+.mp-product-form-popup,
+.mp-customer-vant-popup {
+  --van-primary-color: #0a9f6d;
+  --van-button-primary-background: #0a9f6d;
+  --van-button-primary-border-color: #0a9f6d;
+  --van-nav-bar-icon-color: #0a9f6d;
+  --van-nav-bar-text-color: #0a9f6d;
+  --van-picker-confirm-action-color: #0a9f6d;
+}
+
+.mp-product-page .mp-customer-pool-vant,
+.mp-product-form-popup .mp-customer-pool-vant {
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
+  height: 100%;
+  min-height: 0;
+  background: #f7faf8;
+}
+
+.mp-product-page .mp-customer-pool-vant__body,
+.mp-product-form-popup .mp-customer-pool-vant__body {
+  flex: 1 1 auto;
+  min-height: 0;
+  padding: 8px 0 16px;
+  overflow: auto;
+  -webkit-overflow-scrolling: touch;
+}
+
+.mp-product-form-popup .mp-wv-section {
+  margin: 0 12px 10px;
+}
+
+.mp-product-form-popup .mp-customer-fields-vant {
+  margin: 0;
+  overflow: hidden;
+  background: #fff !important;
+  border-radius: 12px;
+
+  .van-cell {
+    background: #fff !important;
+  }
+}
+
+.mp-product-page .van-button:not(.mp-wv-speed-main),
+.mp-product-form-popup .van-button,
+.mp-product-filter-vant .van-button {
+  @include mp-product-card-btn;
+}
+
+/* FAB 圆形主按钮保持圆形 */
+.mp-product-page .mp-wv-speed-main.van-button {
+  width: 52px !important;
+  height: 52px !important;
+  min-width: 52px !important;
+  min-height: 52px !important;
+  padding: 0 !important;
+  border-radius: 50% !important;
+}
+
+.mp-product-page .mp-customer-pool-vant__foot,
+.mp-product-form-popup .mp-customer-pool-vant__foot,
+.mp-product-form-popup__foot {
+  display: flex;
+  flex-shrink: 0;
+  gap: 8px;
+  padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
+  background: #fff;
+  border-top: 1px solid #dcebe4;
+  box-shadow: 0 -8px 24px rgb(34 64 52 / 12%);
+
+  .van-button {
+    flex: 1 1 0;
+    min-width: 0;
+    @include mp-product-card-btn;
+  }
+}
+
+body > .van-dropdown-item {
+  z-index: 3000 !important;
+}
+
+/* ── 确认弹窗:方案 A / B(挂到 body,须用 className 限定)── */
+body .van-dialog.mp-product-dialog {
+  overflow: hidden;
+  border-radius: 16px;
+  box-shadow: 0 16px 40px rgb(15 40 30 / 22%);
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__header {
+  padding-top: 20px;
+  font-size: 16px;
+  font-weight: 700;
+  color: #1f2a26;
+  line-height: 1.4;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__content {
+  padding: 0;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__message {
+  padding: 10px 20px 4px;
+  font-size: 14px;
+  line-height: 1.55;
+  color: #6b7b74;
+  text-align: center;
+}
+
+body .van-dialog.mp-product-dialog .mp-product-dialog__warn {
+  display: flex;
+  justify-content: center;
+  margin: 4px 0 10px;
+}
+
+body .van-dialog.mp-product-dialog .mp-product-dialog__warn-icon {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 44px;
+  height: 44px;
+  font-size: 22px;
+  font-weight: 700;
+  color: #dc2626;
+  background: #fef2f2;
+  border-radius: 50%;
+}
+
+body .van-dialog.mp-product-dialog .mp-product-dialog__msg {
+  color: #6b7b74;
+  text-align: center;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__footer {
+  display: flex;
+  gap: 10px;
+  padding: 16px;
+  border-top: none !important;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__footer::after,
+body .van-dialog.mp-product-dialog .van-hairline--left::after,
+body .van-dialog.mp-product-dialog .van-hairline--top::after {
+  display: none !important;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__cancel,
+body .van-dialog.mp-product-dialog .van-dialog__confirm {
+  flex: 1;
+  height: 40px !important;
+  min-height: 40px !important;
+  margin: 0 !important;
+  padding: 0 10px !important;
+  font-size: 14px !important;
+  font-weight: 600 !important;
+  line-height: 40px !important;
+  border-radius: 10px !important;
+  border: 1px solid #dcebe4 !important;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__cancel {
+  color: #1f2a26 !important;
+  background: #fff !important;
+}
+
+body .van-dialog.mp-product-dialog .van-dialog__confirm {
+  color: #fff !important;
+  background: #0a9f6d !important;
+  border-color: #0a9f6d !important;
+}
+
+body .van-dialog.mp-product-dialog.mp-product-dialog--danger .van-dialog__confirm {
+  background: #dc2626 !important;
+  border-color: #dc2626 !important;
+}
+
+body .van-dialog.mp-product-dialog.mp-product-dialog--danger .van-dialog__header {
+  padding-top: 12px;
+}