查单操作日志图标edit icon

创建者:
Kitty
Fork(复制)
下载
嵌入
BUG反馈
index.html
md
README.md
index.html
            
            <!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Order Detail</title>
  <style>
    * {
      box-sizing: border-box;
    }

    :root {
      --red: #ef3a3a;
      --green: #44c05c;
      --text: #111;
      --border: #ececec;
      --bg: #f6f6f6;
      --muted: #8b8b8b;
    }

    body {
      margin: 0;
      font-family: "Arial", "Helvetica Neue", Helvetica, sans-serif;
      color: var(--text);
      background: var(--bg);
    }

    .wrap {
      width: 100vw;
      max-width: 1365px;
      margin: 0 auto;
      padding: 8px 6px 0;
    }

    .topbar {
      height: 56px;
      /* background: #fff; */
      /* border: 1px solid var(--border); */
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 18px;
      font-size: 15px;
      font-weight: 700;
    }

    .order-no {
      display: flex;
      align-items: center;
      gap: 8px;
      white-space: nowrap;
    }

    .icon-action {
      position: relative;
      width: 30px;
      height: 30px;
      border-radius: 10px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      margin-left: 12px;
      overflow: visible;
      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
      cursor: pointer;
    }

    .copy {
      width: 16px;
      height: 16px;
      object-fit: contain;
      display: block;
      filter: grayscale(0.08) contrast(1.05);
    }

    .icon-action.copy-action {
      background: linear-gradient(145deg, #ffffff, #eef4ff);
      border: 1px solid #dbe4ff;
      box-shadow:
        0 2px 8px rgba(51, 90, 170, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.85);
    }

    .icon-action.copy-action:hover {
      transform: translateY(-1px) scale(1.05);
      box-shadow:
        0 6px 14px rgba(51, 90, 170, 0.22),
        inset 0 1px 0 rgba(255, 255, 255, 0.92);
      background: linear-gradient(145deg, #ffffff, #e8f1ff);
    }

    .order_operation_log {
      width: 16px;
      height: 16px;
      object-fit: contain;
      display: block;
      filter: saturate(1.2) contrast(1.08);
    }

    .icon-action.log-action {
      background: linear-gradient(145deg, #fff7f8, #ffe8eb);
      border: 1px solid #ffc5cf;
      box-shadow:
        0 0 0 0 rgba(239, 58, 58, 0.36),
        0 3px 10px rgba(239, 58, 58, 0.22);
      animation: logPulse 1.9s ease-out infinite;
    }

    .icon-action.log-action::after {
      content: "";
      position: absolute;
      top: -3px;
      right: -2px;
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: #ff2e2e;
      box-shadow:
        0 0 0 2px #fff,
        0 0 8px rgba(255, 46, 46, 0.8);
      animation: dotBlink 1s ease-in-out infinite;
    }

    .icon-action.log-action:hover {
      transform: translateY(-1px) scale(1.08);
      box-shadow:
        0 0 0 8px rgba(239, 58, 58, 0.16),
        0 8px 18px rgba(239, 58, 58, 0.34);
      animation: logPulse 1.2s ease-out infinite, logShake 0.9s ease-in-out infinite;
    }

    .log-tip {
      position: absolute;
      left: calc(100% + 12px);
      top: 50%;
      transform: translateY(-50%) translateX(-6px) scale(0.97);
      transform-origin: left center;
      padding: 7px 11px;
      min-width: 150px;
      border-radius: 10px;
      border: 1px solid #e9ecf3;
      background: #ffffff;
      color: #23252d;
      font-size: 12px;
      font-weight: 600;
      line-height: 1.2;
      letter-spacing: 0.12px;
      text-align: left;
      white-space: nowrap;
      box-shadow:
        0 8px 24px rgba(23, 33, 61, 0.15),
        0 1px 0 rgba(255, 255, 255, 0.7) inset;
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transition: opacity 0.2s ease, transform 0.22s ease, visibility 0.2s ease;
      z-index: 12;
    }

    .log-tip::after {
      content: "";
      position: absolute;
      right: 100%;
      top: 50%;
      transform: translateY(-50%);
      width: 0;
      height: 0;
      border-top: 6px solid transparent;
      border-bottom: 6px solid transparent;
      border-right: 6px solid #ffffff;
    }

    .log-tip::before {
      content: "";
      position: absolute;
      right: 100%;
      top: 50%;
      transform: translateY(-50%);
      width: 0;
      height: 0;
      border-top: 7px solid transparent;
      border-bottom: 7px solid transparent;
      border-right: 7px solid #e9ecf3;
    }

    .icon-action.log-action:hover .log-tip {
      opacity: 1;
      visibility: visible;
      transform: translateY(-50%) translateX(0) scale(1);
    }

    @keyframes logPulse {
      0% {
        box-shadow:
          0 0 0 0 rgba(239, 58, 58, 0.35),
          0 3px 10px rgba(239, 58, 58, 0.2);
      }
      70% {
        box-shadow:
          0 0 0 9px rgba(239, 58, 58, 0),
          0 5px 12px rgba(239, 58, 58, 0.25);
      }
      100% {
        box-shadow:
          0 0 0 0 rgba(239, 58, 58, 0),
          0 3px 10px rgba(239, 58, 58, 0.2);
      }
    }

    @keyframes dotBlink {
      0%, 100% { transform: scale(1); opacity: 1; }
      50% { transform: scale(1.18); opacity: 0.72; }
    }

    @keyframes logShake {
      0%, 100% { transform: translateY(-1px) rotate(0deg) scale(1.08); }
      25% { transform: translateY(-1px) rotate(-3deg) scale(1.08); }
      75% { transform: translateY(-1px) rotate(3deg) scale(1.08); }
    }

    .copy-icon {
      width: 16px;
      height: 16px;
      border: 1px solid #777;
      border-radius: 2px;
      position: relative;
      margin-left: 6px;
    }

    .copy-icon::before {
      content: "";
      position: absolute;
      left: -5px;
      top: -5px;
      width: 16px;
      height: 16px;
      border: 1px solid #aaa;
      border-radius: 2px;
      background: #fff;
    }

    .badge {
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background: var(--red);
      color: #fff;
      font-size: 14px;
      font-weight: 700;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      margin-left: -4px;
      margin-top: -11px;
    }

    .btn-cs {
      border: none;
      background: var(--red);
      color: #fff;
      font-size: 15px;
      font-weight: 700;
      border-radius: 16px;
      height: 36px;
      padding: 0 22px;
      cursor: pointer;
      line-height: 36px;
    }

    .caret {
      display: inline-block;
      margin-left: 4px;
      width: 0;
      height: 0;
      border-left: 5px solid transparent;
      border-right: 5px solid transparent;
      border-top: 6px solid #fff;
      vertical-align: middle;
    }

    .card {
      background: #fff;
      border: 1px solid var(--border);
      margin-top: 10px;
    }

    .timeline-head {
      display: flex;
      justify-content: space-between;
      padding: 16px 14px 10px;
      font-size: 14px;
      font-weight: 700;
    }

    .red {
      color: var(--red);
      font-size: 14px;
    }

    .steps {
      padding: 5px 28px 14px;
      display: grid;
      grid-template-columns: repeat(6, 1fr);
      gap: 0;
      align-items: start;
    }

    .step {
      text-align: center;
      position: relative;
    }

    .step:not(:last-child)::after {
      content: "";
      position: absolute;
      right: -50%;
      top: 20px;
      width: 100%;
      height: 4px;
      background: #f0f0f0;
      z-index: 0;
      border-radius: 3px;
    }

    .step.done:not(:last-child)::after {
      background: var(--green);
    }

    .dot {
      width: 42px;
      height: 42px;
      border-radius: 50%;
      margin: 0 auto;
      border: 4px solid #f0f0f0;
      background: #fff;
      position: relative;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 17px;
      color: #c4c4c4;
    }

    .done .dot {
      background: var(--green);
      color: #fff;
      border-color: #def3e3;
    }

    .step-title {
      margin-top: 8px;
      font-size: 16px;
      font-weight: 700;
      line-height: 1.15;
    }

    .done .step-title {
      color: var(--green);
    }

    .step-date {
      font-size: 15px;
      font-weight: 700;
      color: var(--green);
      line-height: 1.05;
      min-height: 16px;
    }

    .section {
      background: #fff;
      border: 1px solid var(--border);
      margin-top: 10px;
      padding: 14px 14px 12px;
    }

    .title {
      font-size: 15px;
      font-weight: 700;
      margin-bottom: 14px;
    }

    .line-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
    }

    .line-left {
      display: flex;
      align-items: center;
      gap: 12px;
      min-width: 0;
    }

    .label {
      font-size: 15px;
      font-weight: 700;
      white-space: nowrap;
    }

    .address {
      font-size: 14px;
      font-weight: 700;
      background: #f8f8f8;
      border-radius: 18px;
      padding: 4px 12px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 845px;
    }

    .btn-change,
    .btn-view {
      border: 1px solid var(--red);
      color: var(--red);
      background: #fff;
      border-radius: 16px;
      font-size: 13px;
      font-weight: 700;
      height: 30px;
      padding: 0 18px;
      cursor: pointer;
      white-space: nowrap;
    }

    .btn-view {
      background: var(--red);
      color: #fff;
      border: none;
      border-radius: 16px;
      height: 30px;
      padding: 0 20px;
    }

    .subline {
      font-size: 14px;
      font-weight: 700;
      margin-bottom: 12px;
    }

    .product-row {
      border: 1px solid var(--border);
      padding: 10px 10px;
      display: grid;
      grid-template-columns: 22px 170px 1fr 70px 260px;
      align-items: center;
      column-gap: 12px;
    }

    .check {
      width: 14px;
      height: 14px;
      border: 1px solid #d6d6d6;
      border-radius: 2px;
    }

    .thumb {
      width: 170px;
      height: 112px;
      object-fit: cover;
      border: 1px solid #dfdfdf;
      background: #e9e9e9;
    }

    .p-name {
      font-size: 15px;
      margin-bottom: 8px;
      color: #2f2f2f;
    }

    .p-text {
      font-size: 13px;
      margin-bottom: 5px;
      color: #2f2f2f;
      line-height: 1.15;
    }

    .p-link {
      color: var(--red);
      text-decoration: underline;
      font-weight: 700;
    }

    .qty {
      width: 30px;
      height: 24px;
      border: 1px solid #e2e2e2;
      border-radius: 4px;
      font-size: 12px;
      font-weight: 700;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      background: #f7f7f7;
    }

    .price-col {
      justify-self: end;
      width: 240px;
      font-size: 14px;
      font-weight: 700;
      line-height: 1.62;
    }

    .price-col .row {
      display: flex;
      justify-content: space-between;
    }

    .price-col .final span:last-child {
      color: var(--red);
    }

    .bottom {
      border-top: 1px solid var(--border);
      margin-top: 10px;
      padding: 10px 0 2px;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
    }

    .select-all {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 12px;
      color: #3f3f3f;
      padding-left: 8px;
      margin-top: 2px;
    }

    .summary {
      width: 250px;
      font-size: 14px;
      font-weight: 700;
      line-height: 1.42;
      padding-right: 2px;
    }

    .summary .row {
      display: flex;
      justify-content: space-between;
    }

    .summary .total span {
      color: var(--red);
    }

    .summary .total span:first-child {
      letter-spacing: 0.3px;
    }

    .addr-modal-mask {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.35);
      display: none;
      align-items: center;
      justify-content: center;
      z-index: 9999;
      padding: 20px;
    }

    .addr-modal-mask.show {
      display: flex;
    }

    .addr-modal {
      width: 560px;
      max-width: 100%;
      background: #fff;
      border: 1px solid #d9d9d9;
      border-radius: 6px;
      box-shadow: 0 6px 22px rgba(0, 0, 0, 0.2);
      overflow: hidden;
    }

    .addr-modal-header {
      position: relative;
      text-align: center;
      font-size: 15px;
      font-weight: 700;
      padding: 18px 46px 14px;
      border-bottom: 1px solid #ececec;
      line-height: 1.1;
    }

    .addr-close {
      position: absolute;
      right: 18px;
      top: 12px;
      font-size: 30px;
      font-weight: 100;
      line-height: 1;
      color: #555;
      cursor: pointer;
      user-select: none;
    }

    .addr-modal-body {
      padding: 18px 50px 24px;
    }

    .addr-field {
      margin-bottom: 10px;
    }

    .addr-label {
      display: block;
      margin-bottom: 6px;
      font-size: 13px;
      font-weight: 700;
    }

    .addr-input,
    .addr-select {
      width: 100%;
      height: 44px;
      border: 1px solid #d8d8d8;
      border-radius: 2px;
      background: #fff;
      font-size: 15px;
      padding: 0 10px;
      color: #111;
      outline: none;
    }

    .addr-select {
      appearance: none;
      -webkit-appearance: none;
      -moz-appearance: none;
      background-image:
        linear-gradient(45deg, transparent 50%, #bdbdbd 50%),
        linear-gradient(135deg, #bdbdbd 50%, transparent 50%);
      background-position:
        calc(100% - 16px) 18px,
        calc(100% - 9px) 18px;
      background-size: 7px 7px, 7px 7px;
      background-repeat: no-repeat;
      padding-right: 30px;
    }

    .addr-row {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      gap: 12px;
      margin-bottom: 10px;
    }

    .addr-confirm-wrap {
      padding-top: 8px;
      display: flex;
      justify-content: center;
    }

    .addr-confirm {
      width: 190px;
      height: 44px;
      border: none;
      border-radius: 22px;
      background: var(--red);
      color: #fff;
      font-size: 15px;
      font-weight: 700;
      line-height: 44px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <div class="wrap">
    <div class="topbar">
      <div class="order-no">
        <span>Order Number:</span>
        <span>NK13348</span>
        <span class="badge">1</span>
        <span class="icon-action copy-action" title="Copy Order Number">
          <svg t="1776231789398" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2808" width="20" height="20"><path d="M334.5 704.5V331.4H191v499.8h499.9V704.5H386.3z" fill="#a5b4e1" p-id="2809"></path><path d="M386.3 204.7V652.8h448.1V204.7z" fill="#a5b4e1" p-id="2810"></path></svg>
          <!-- <img class="copy" src="https://ordertrack.info/static/admin/images/icon_copy_pc.png" alt="copy" /> -->
        </span>
        <span class="icon-action log-action" aria-label="Order Operation Record">
          <svg t="1776231914159" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3975" width="20" height="20"><path d="M665.6 153.6a102.4 102.4 0 0 1 102.4 102.4v149.5552L502.8352 670.7456a76.8 76.8 0 0 0-18.0992 28.6976l-1.7152 5.4784-10.7008 39.3984a76.8 76.8 0 0 0 81.7408 96.5376l48.5632-4.8384a76.8 76.8 0 0 0 46.6688-22.1184L768 695.1936V768a102.4 102.4 0 0 1-102.4 102.4H256a102.4 102.4 0 0 1-102.4-102.4V256a102.4 102.4 0 0 1 102.4-102.4h409.6z m176.384 250.4192a51.2 51.2 0 1 1 72.3968 72.4224L613.0944 777.7024a25.6 25.6 0 0 1-15.5648 7.3728l-48.5376 4.864a25.6 25.6 0 0 1-27.2384-32.2048l10.7008-39.3984a25.6 25.6 0 0 1 6.5792-11.392L841.984 404.0192zM608 435.2h-345.6a32 32 0 0 0 0 64h345.6a32 32 0 0 0 0-64z m-136.5248-128H262.4a32 32 0 0 0 0 64h209.0752a32 32 0 0 0 0-64z" fill="#f4899b" p-id="3976"></path></svg>
          <span class="log-tip">Order Operation Record </span>
        </span>
        <!-- <span class="copy-icon" aria-hidden="true"></span> -->
      </div>
      <button class="btn-cs">Customer Service <span class="caret"></span></button>
    </div>

    <div class="card">
      <div class="timeline-head">
        <div>Estimated Finish &amp; Shiping Time <span class="red">◷</span> 2026-04-19</div>
        <div>Production Time <span class="red">◷</span> 3-5 Working Days</div>
      </div>
      <div class="steps">
        <div class="step done">
          <div class="dot">▤</div>
          <div class="step-title">Order placed</div>
          <div class="step-date">2026-04-11</div>
        </div>
        <div class="step done">
          <div class="dot">✎</div>
          <div class="step-title">Desiging</div>
          <div class="step-date">2026-04-15</div>
        </div>
        <div class="step">
          <div class="dot">⚙</div>
          <div class="step-title">Prducing</div>
          <div class="step-date">&nbsp;</div>
        </div>
        <div class="step">
          <div class="dot">◷</div>
          <div class="step-title">Packing</div>
          <div class="step-date">&nbsp;</div>
        </div>
        <div class="step">
          <div class="dot">↵</div>
          <div class="step-title">Shipping</div>
          <div class="step-date">&nbsp;</div>
        </div>
        <div class="step">
          <div class="dot">✓</div>
          <div class="step-title">Delivred</div>
          <div class="step-date">&nbsp;</div>
        </div>
      </div>
    </div>

    <div class="section">
      <div class="title">Delivery Info.</div>
      <div class="line-row">
        <div class="line-left">
          <div class="label">Shipping Address:</div>
          <div class="address">Jay Anderson, +1319788859, 16805 Sprenger Ave, Eastpointe, Michigan, United States, 48021-3099</div>
        </div>
        <button class="btn-change" id="changeBtn">Change</button>
      </div>
    </div>

    <div class="section">
      <div class="title">Product Info.</div>
      <div class="line-row" style="margin-bottom: 10px;">
        <div class="subline">Product Qty: 1 Completed Qty: 0</div>
        <button class="btn-view">View Design</button>
      </div>

      <div class="product-row">
        <div class="check"></div>
        <img class="thumb" alt="product" src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='160'%3E%3Crect width='240' height='160' fill='%23d9dde2'/%3E%3Crect x='15' y='18' width='95' height='65' fill='%23f9f9f9' stroke='%23a8a8a8'/%3E%3Crect x='130' y='18' width='95' height='65' fill='%23f9f9f9' stroke='%23a8a8a8'/%3E%3Crect x='15' y='95' width='210' height='50' fill='%23f7f7f7' stroke='%23a8a8a8'/%3E%3Ccircle cx='62' cy='50' r='18' fill='%2396b8d5'/%3E%3Ccircle cx='177' cy='50' r='18' fill='%23d9b596'/%3E%3C/svg%3E" />
        <div>
          <div class="p-name">--W.7.6*H11---</div>
          <div class="p-text">Item No.: BXT0P1670X03</div>
          <div class="p-text">Unique Code: X2604159130148</div>
          <div class="p-text p-link">Design Details &amp; History</div>
          <div class="p-text">Product Status: - Desiging</div>
        </div>
        <div class="qty">x1</div>
        <div class="price-col">
          <div class="row"><span>Unit price</span><span>($15.95)</span></div>
          <div class="row"><span>Total price</span><span>($15.95)</span></div>
          <div class="row"><span>Discount Amount</span><span>($0.00)</span></div>
          <div class="row final"><span>Actual price</span><span>($15.95)</span></div>
        </div>
      </div>

      <div class="bottom">
        <div class="select-all">
          <div class="check"></div>
          <span>Select All</span>
        </div>
        <div class="summary">
          <div class="row"><span>Order Total</span><span>$25.13</span></div>
          <div class="row"><span>Shipping Fee</span><span>$9.99</span></div>
          <div class="row"><span>Duty</span><span>$0.80</span></div>
          <div class="row total"><span>Grand&nbsp; Total</span><span>$35.92</span></div>
        </div>
      </div>
    </div>
  </div>

  <div class="addr-modal-mask" id="addrModalMask">
    <div class="addr-modal">
      <div class="addr-modal-header">
        Update Address
        <span class="addr-close" id="addrCloseBtn">&times;</span>
      </div>
      <div class="addr-modal-body">
        <div class="addr-field">
          <label class="addr-label" for="recipientName">Recipient name:</label>
          <input class="addr-input" id="recipientName" type="text" value="Jay Anderson" />
        </div>

        <div class="addr-field">
          <label class="addr-label" for="recipientArea">Recipient area:</label>
          <select class="addr-select" id="recipientArea">
            <option selected>United States</option>
          </select>
        </div>

        <div class="addr-row">
          <div class="addr-field" style="margin-bottom: 0;">
            <label class="addr-label" for="stateInput">State:</label>
            <select class="addr-select" id="stateInput">
              <option selected>Michigan</option>
            </select>
          </div>
          <div class="addr-field" style="margin-bottom: 0;">
            <label class="addr-label" for="cityInput">City:</label>
            <input class="addr-input" id="cityInput" type="text" value="Eastpointe" />
          </div>
          <div class="addr-field" style="margin-bottom: 0;">
            <label class="addr-label" for="zipInput">Zip code:</label>
            <input class="addr-input" id="zipInput" type="text" value="48021-3099" />
          </div>
        </div>

        <div class="addr-field">
          <label class="addr-label" for="streetInput">Street (Please provide detailed street address and Apt.or house number):</label>
          <input class="addr-input" id="streetInput" type="text" value="16805 Sprenger Ave" />
        </div>

        <div class="addr-field">
          <label class="addr-label" for="phoneInput">Phone number:</label>
          <input class="addr-input" id="phoneInput" type="text" value="+1313978859" />
        </div>

        <div class="addr-confirm-wrap">
          <button class="addr-confirm" id="addrConfirmBtn" type="button">Confirm</button>
        </div>
      </div>
    </div>
  </div>

  <script>
    (function () {
      var changeBtn = document.getElementById("changeBtn");
      var modalMask = document.getElementById("addrModalMask");
      var closeBtn = document.getElementById("addrCloseBtn");
      var confirmBtn = document.getElementById("addrConfirmBtn");

      if (!changeBtn || !modalMask || !closeBtn || !confirmBtn) {
        return;
      }

      function openModal() {
        modalMask.classList.add("show");
      }

      function closeModal() {
        modalMask.classList.remove("show");
      }

      changeBtn.addEventListener("click", openModal);
      closeBtn.addEventListener("click", closeModal);
      confirmBtn.addEventListener("click", closeModal);

      modalMask.addEventListener("click", function (event) {
        if (event.target === modalMask) {
          closeModal();
        }
      });
    })();
  </script>
</body>
</html>

        
编辑器加载中
预览
控制台