From 4a800a8fc83c6bd1f86a8e847b079a51a7532c09 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 20 七月 2022 15:05:58 +0800
Subject: [PATCH] 修复国标配置的bug

---
 src/pages/desktop/index/components/Desktop.vue |  814 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 805 insertions(+), 9 deletions(-)

diff --git a/src/pages/desktop/index/components/Desktop.vue b/src/pages/desktop/index/components/Desktop.vue
index 673329c..a0737fb 100644
--- a/src/pages/desktop/index/components/Desktop.vue
+++ b/src/pages/desktop/index/components/Desktop.vue
@@ -1,25 +1,821 @@
 <template>
   <div class="desktop">
-    <d-frame v-for="item in this.$store.state.desktop.frames" :data="item" :key="item.id"></d-frame>
-    <safari :data="$store.state.desktop.safari" v-if="$store.state.desktop.safari.active"></safari>
+    <d-frame
+      v-for="item in this.$store.state.desktop.frames"
+      :data="item"
+      :key="item.id"
+    ></d-frame>
+    <safari
+      :data="$store.state.desktop.safari"
+      v-if="$store.state.desktop.safari.active"
+    ></safari>
+
+    <div class="warn-tag" v-if="showFreeVersion">
+      <span v-if="!snExpire" class="text"
+        >{{
+          versionName
+        }}灏氭湭婵�娲伙紝浠呮敮鎸佷娇鐢ㄩ儴鍒嗗姛鑳斤紝濡傞渶浣跨敤鍏ㄩ儴鍔熻兘锛岃灏藉揩婵�娲汇��</span
+      >
+      <span v-else class="text">SmartAIOS 璇曠敤鏈熷凡鍒版湡锛岃鎮ㄥ敖蹇縺娲荤郴缁�</span>
+      <div>
+        <span class="go-to" @click="gotoActive">鍓嶅線婵�娲�</span>
+        <span
+          class="icon iconfont"
+          v-if="!snExpire"
+          @click="showFreeVersion = false"
+          >&#xe61b;</span
+        >
+      </div>
+    </div>
+
+    <el-dialog
+      title="婵�娲籗martAI"
+      :visible.sync="activeDialog"
+      width="640px"
+      custom-class="my-activate"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <el-dialog
+        width="30%"
+        title="璐︽埛婵�娲�"
+        custom-class="my-account"
+        :visible.sync="innerVisible"
+        append-to-body
+        class="inner-login-dialog"
+      >
+        <div class="info">
+          <span style="font-size: 14px; line-height: 21px; color: #5f5f5f">
+            璇疯緭鍏ヤ綘鍦⊿martAI鍟嗗煄璐︽埛鐨勬墜鏈哄彿骞跺畬鎴愰獙璇佺爜鏍¢獙锛屽疄鐜扮郴缁熸縺娲伙紒
+          </span>
+        </div>
+        <div class="login-content">
+          <el-form
+            :model="phone"
+            :rules="phoneCodeRule"
+            :validate-on-rule-change="false"
+            ref="phoneLogin"
+            class="demo-ruleForm"
+          >
+            <el-form-item prop="phoneNum" style="margin-top: 20px">
+              <el-input v-model="phone.phoneNum" placeholder="璇疯緭鍏ユ墜鏈哄彿">
+                <i slot="prefix" class="el-icon-mobile-phone"></i>
+              </el-input>
+            </el-form-item>
+            <el-form-item prop="verifyCode">
+              <el-input
+                @keyup.enter.native="phoneLogin"
+                v-model="phone.verifyCode"
+                autocomplete="off"
+                placeholder="璇疯緭鍏ラ獙璇佺爜"
+              >
+                <i slot="prefix" class="el-icon-message"></i>
+                <el-button
+                  class="code-btn"
+                  slot="suffix"
+                  style="margin-left: 15px"
+                  :disabled="codeDisabled"
+                  @click="getCode"
+                  >{{ codeMsg }}</el-button
+                >
+              </el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <div class="btns">
+            <el-button class="cancel" @click="cancelLogin">鍙栨秷</el-button>
+            <el-button class="ok" type="primary" @click="loginShop"
+              >纭畾</el-button
+            >
+          </div>
+        </span>
+      </el-dialog>
+      <div class="ver">
+        <span class="ver-text">鐗堟湰锛�</span>SmartAI{{ versionName }}
+      </div>
+      <div class="ver"><span class="ver-text">鐘舵�侊細</span>灏氭湭婵�娲�</div>
+      <el-divider></el-divider>
+      <div class="info" v-if="versionName == '姝e紡鐗�'">
+        <span style="font-weight: bold; font-size: 18px">路 </span>
+        <span style="font-size: 14px; line-height: 21px; color: #5f5f5f">
+          濡傛灉鎮ㄥ凡杩炴帴鍒癐nternet骞朵笖宸茶喘涔颁骇鍝佸瘑閽ワ紝鍙互灏濊瘯楠岃瘉SmartAI鍟嗗煄璐︽埛婵�娲荤郴缁熴��
+        </span>
+        <div style="padding: 15px 0">
+          <el-button type="primary" @click="innerVisible = true">
+            璐︽埛婵�娲�
+          </el-button>
+        </div>
+      </div>
+      <div class="info" v-if="versionName == '姝e紡鐗�'">
+        <span style="font-weight: bold; font-size: 18px">路 </span>
+        <span style="font-size: 14px; line-height: 21px; color: #5f5f5f">
+          濡傛灉鎮ㄦ湭杩炴帴Internet鎴栨縺娲诲け璐ワ紝鍙皾璇曠绾挎縺娲伙紝璇风敤鎵嬫満鎵爜璐拱浜у搧鎴栭獙璇丼martAI鍟嗗煄璐︽埛婵�娲荤郴缁熴��
+        </span>
+      </div>
+      <div class="info" v-if="versionName !== '姝e紡鐗�'">
+        <span style="font-weight: bold; font-size: 18px">路 </span>
+        <span style="font-size: 14px; line-height: 21px; color: #5f5f5f">
+          濡傛灉杩樻病鏈変骇鍝佸瘑閽ワ紝浣犲彲浠ヤ娇鐢ㄦ墜鏈烘壂鐮佹垨鍓嶅線姝ら摼鎺�
+          <a href="http://apps.smartai.com" target="_blank"
+            >http://apps.smartai.com</a
+          >
+          璐拱銆�
+        </span>
+      </div>
+      <img class="qr-code-img" src="/version/offline/qrcode" />
+      <div class="ask">
+        <span style="font-weight: bold; font-size: 18px">路 </span>
+        <span style="font-size: 14px; line-height: 21px; color: #5f5f5f">
+          濡傛灉鎮ㄦ湁SmartAI鎻愪緵鐨勪骇鍝佸瘑閽ワ紝璇峰湪姝ゅ杈撳叆锛屾縺娲籗martAI銆�
+        </span>
+      </div>
+      <div class="validate">
+        <form id="myForm">
+          <el-input
+            type="textarea"
+            autosize
+            style="width: 450px"
+            placeholder="璇疯緭鍏ユ垨瀵煎叆瀵嗛挜"
+            v-model="secrectKey"
+          >
+          </el-input>
+        </form>
+
+        <el-upload
+          class="upload-demo"
+          action
+          :http-request="uploadKey"
+          :limit="1"
+          :show-file-list="false"
+        >
+          <el-button size="small" type="primary">瀵煎叆瀵嗛挜</el-button>
+        </el-upload>
+      </div>
+      <!-- <el-divider></el-divider> -->
+
+      <span slot="footer" class="dialog-footer">
+        <div class="btns">
+          <el-button
+            v-if="!snExpire && versionName != '姝e紡鐗�'"
+            class="cancel"
+            @click="activeDialog = false"
+            >缁х画璇曠敤</el-button
+          >
+          <el-button
+            class="cancel"
+            v-if="snExpire && versionName != '姝e紡鐗�'"
+            @click="$emit('quit')"
+            >閫�鍑虹櫥闄�
+          </el-button>
+          <el-button class="ok" type="primary" @click="activateVersion"
+            >婵�娲�</el-button
+          >
+        </div>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      title="鎴戠殑璁㈠崟"
+      :visible.sync="innerDialog"
+      width="750px"
+      :show-close="true"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      custom-class="my-order"
+    >
+      <div class="tip">
+        <i class="el-icon-info"></i>
+        <span>璇锋鏌ヨ鍗曚俊鎭槸鍚︽纭紝纭鏃犺鍚庡啀婵�娲荤郴缁�</span>
+      </div>
+
+      <div class="order-list" v-if="orderList.length">
+        <div
+          class="wrap"
+          style="margin: 0 5px"
+          v-for="(item, index) in orderList"
+          :key="index"
+        >
+          <div class="order-card" v-for="(prod, i) in item.products" :key="i">
+            <div class="head">
+              <el-checkbox v-model="checked" @change="choseProd(item, prod)">
+                <span>璁㈠崟ID锛歿{ item.id }}</span>
+              </el-checkbox>
+
+              <span>{{ item.orderMoney }} 鍏�</span>
+            </div>
+            <div class="desc">
+              <div>璁㈠崟鐢熸垚鏃ユ湡锛歿{ item.createTime }}</div>
+              <div>浜у搧鍚嶇О锛歿{ prod.productName }}</div>
+              <div>浜у搧绫诲瀷锛歿{ prod.productTypeName }}</div>
+              <div>绯荤粺鐗堟湰锛歿{ prod.edition }}</div>
+              <div>閫氶亾鏁伴噺锛歿{ prod.ChCount }}</div>
+              <div>鎺堟潈鏁伴噺锛歿{ prod.authCount }}</div>
+              <div>
+                璧锋鏈嶅姟鏃堕棿 锛歿{
+                  startAndEnd(item.createTime, prod.serveYear)
+                }}
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="no-order-list" v-else>
+        {{
+          loadingOrders ? "璁㈠崟鍔犺浇涓紝璇风◢鍚�..." : "鎶辨瓑锛屾湭鏌ヨ鍒拌鍗曚俊鎭紒"
+        }}
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="btns">
+          <el-button class="cancel" @click="$emit('quit')">閫�鍑虹櫥褰�</el-button>
+          <el-button class="ok" type="primary" @click="activeVerByOrd"
+            >婵�娲�</el-button
+          >
+        </div>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import DFrame from './DFrame';
-import Safari from './Safari';
-
+import DFrame from "./DFrame";
+import Safari from "./Safari";
+import { isPhone } from "../../../../scripts/validate.ts";
+import {
+  getActiveQrCode,
+  getSN,
+  activateVersion,
+  uploadKey,
+  getSmsCode,
+  loginShopInSmart,
+  getShopOrderList,
+  activeByOrder,
+} from "@/api/system";
 export default {
   name: "Desktop",
   components: {
-    DFrame, Safari
-  }
-}
+    DFrame,
+    Safari,
+  },
+  data() {
+    return {
+      showFreeVersion: false,
+      activeDialog: false,
+      countdown: 60,
+      innerDialog: false,
+      versionName: "",
+      codeMsg: "鑾峰彇楠岃瘉鐮�",
+      secrectKey: "",
+      curOrder: {},
+      curProd: {},
+      codeDisabled: false,
+      innerVisible: false,
+      snExpire: false,
+      timer: null,
+      token: "",
+      loadingOrders: true,
+      orderList: [],
+      phone: {
+        phoneNum: "",
+        verifyCode: "",
+      },
+      phoneCodeRule: {
+        phoneNum: [{ validator: isPhone, trigger: "blur" }],
+        verifyCode: [
+          { required: true, message: "璇疯緭鍏ラ獙璇佺爜", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.validateSn();
+  },
+  methods: {
+    startAndEnd(createTime, serveYear) {
+      let year = createTime.split("-")[0];
+      let endTime = parseInt(year) + serveYear + createTime.slice(4);
+      return createTime + " - " + endTime;
+    },
+    activeVerByOrd() {
+      activeByOrder({
+        token: this.token,
+        activateCode: this.curProd.activateCode,
+        productId: this.curProd.productId,
+        orderId: this.curOrder.id,
+      }).then((res) => {
+        if (res.code == 200) {
+          this.$notify.success("婵�娲绘垚鍔�");
+          this.innerDialog = false;
+          this.versionName = this.getVersionName(res.data.edition);
+        } else {
+          this.$notify.error("婵�娲诲け璐�");
+        }
+      });
+    },
+    validateSn() {
+      getSN().then((res) => {
+        this.snExpire = res.data.expire;
+        this.activeDialog = res.data.expire;
+        this.showFreeVersion = res.data.sn == "" || res.data.expire;
+        this.versionName = this.getVersionName(res.data.edition);
+      });
+    },
+    getValidStr() {
+      if (this.countdown > 0 && this.countdown <= 60) {
+        this.countdown--;
+        if (this.countdown !== 0) {
+          this.codeMsg = "閲嶆柊鍙戦��(" + this.countdown + ")";
+        } else {
+          clearInterval(this.timer);
+          this.codeMsg = "鑾峰彇楠岃瘉鐮�";
+          this.countdown = 60;
+          this.timer = null;
+          this.codeDisabled = false;
+        }
+      }
+    },
+    choseProd(order, prod) {
+      this.curOrder = order;
+      this.curProd = prod;
+    },
+    getVersionName(s) {
+      switch (s) {
+        case "alpha":
+          return "鍐呮祴鐗�";
+        case "beta":
+          return "鍏祴鐗�";
+        case "trial":
+          return "璇曠敤鐗�";
+        case "test":
+          return "娴嬭瘯鐗�";
+        case "official":
+          return "姝e紡鐗�";
+        default:
+          return "瀹氬埗鐗�";
+          break;
+      }
+    },
+    loginShop() {
+      this.$refs["phoneLogin"].validate((valid) => {
+        if (valid) {
+          let param = {
+            phoneNum: this.phone.phoneNum,
+            verifyCode: this.phone.verifyCode,
+          };
+          loginShopInSmart(param).then((res) => {
+            this.innerDialog = true;
+            this.activeDialog = false;
+
+            this.token = res.data.access_token;
+            getShopOrderList({ token: this.token })
+              .then((res) => {
+                if (res.code == 200) {
+                  this.orderList = res.data.list;
+                  this.loadingOrders = false;
+                } else {
+                  this.$notify.error("鑾峰彇璁㈠崟鍒楄〃澶辫触");
+                }
+              })
+              .catch(() => {
+                this.$notify.error("鑾峰彇璁㈠崟鍒楄〃澶辫触");
+              });
+          });
+        } else {
+          this.nullRule = {};
+        }
+      });
+    },
+    cancelLogin() {
+      this.innerVisible = false;
+    },
+    getCode() {
+      var pattern = /^1[345789]\d{9}$/;
+      if (this.phone.phoneNum == "") {
+        this.$refs["phoneLogin"].fields[0].validateMessage = "璇疯緭鍏ユ墜鏈哄彿";
+        this.$refs["phoneLogin"].fields[0].validateState = "error";
+        return;
+      }
+      if (!pattern.test(this.phone.phoneNum)) {
+        this.$refs["phoneLogin"].fields[0].validateMessage = "鎵嬫満鍙风爜鏍煎紡鏈夎";
+        this.$refs["phoneLogin"].fields[0].validateState = "error";
+        return;
+      }
+      if (!this.timer) {
+        this.codeDisabled = true;
+        this.getValidStr();
+        this.timer = setInterval(this.getValidStr, 1000);
+        getSmsCode({ phoneNum: this.phone.phoneNum })
+          .then((res) => {
+            this.gotCode = true;
+          })
+          .catch((err) => {
+            this.$refs["phoneLogin"].fields[0].validateMessage = err.data.msg;
+            this.$refs["phoneLogin"].fields[0].validateState = "error";
+          });
+      }
+    },
+    activateVersion() {
+      if (this.secrectKey.trim() == "") {
+        this.$message.warning("璇峰厛濉啓浜у搧瀵嗛挜");
+        return;
+      }
+      activateVersion({ code: this.secrectKey.trim() })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$notify.success("婵�娲绘垚鍔�");
+            this.validateSn();
+            this.goToSysInfo();
+            this.activeDialog = false;
+          } else {
+            this.$notify.error(res.msg);
+          }
+        })
+        .catch((err) => {
+          this.$notify.error(err.msg);
+        });
+    },
+    goToSysInfo() {
+      window.parent.postMessage({ msg: `toVindicate?menu=绯荤粺淇℃伅` }, "*");
+    },
+    gotoActive() {
+      this.activeDialog = true;
+    },
+    uploadKey(params) {
+      let param = new FormData();
+      param.append("code", params.file);
+      uploadKey(param).then(
+        (res) => {
+          if (res.code == 200) {
+            this.$message.success("瀵煎叆鎴愬姛");
+            this.secrectKey = res.data;
+          } else {
+            this.$message.error(res.msg);
+          }
+        },
+        (err) => {
+          this.$message.error(err.msg);
+        }
+      );
+    },
+    onInput(val) {
+      if (this[`input${val}`].length == 4 && val < 5) {
+        this.$refs[`input${val + 1}`].focus();
+      }
+      if (this[`input${val}`].length == 0 && val > 0) {
+        this.$refs[`input${val - 1}`].focus();
+      }
+    },
+  },
+};
 </script>
 
-<style scoped>
+<style lang="scss" >
 .desktop {
   width: 100%;
   height: 100%;
+  .el-dialog__header {
+    padding: 14px 20px 13px;
+    text-align: center;
+    box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.08);
+    .el-dialog__title {
+      font-weight: 600;
+      font-size: 18px;
+      color: #5f5f5f;
+      line-height: 25px;
+    }
+  }
+  .el-dialog__body {
+    text-align: left;
+    padding: 30px;
+    padding-top: 20px;
+  }
+  .el-divider--horizontal {
+    margin: 20px 0;
+  }
+  .validate {
+    display: flex;
+    align-items: baseline;
+    margin-top: 15px;
+    .upload-demo {
+      .el-button--small {
+        font-size: 14px;
+        border-radius: 3px;
+        border-radius: 16px;
+        background-color: var(--colorCard) !important;
+        border-color: var(--colorCard) !important;
+        min-width: 120px;
+      }
+    }
+  }
+  #myForm {
+    display: flex;
+    align-items: center;
+    margin-right: 10px;
+    .el-textarea__inner {
+      min-height: 32px;
+      height: 32px;
+      border: 1px solid #d4d6d9;
+      box-sizing: border-box;
+      border-radius: 16px;
+    }
+
+    .single-input {
+      margin: 0 8px;
+      width: 60px;
+    }
+  }
+  .ver {
+    margin-bottom: 10px;
+    font-size: 16px;
+    color: #5f5f5f;
+    font-weight: bold;
+    .ver-text {
+      color: #666666;
+      font-weight: 400;
+    }
+  }
+  .info {
+    margin-bottom: 10px;
+    .el-button--primary {
+      font-size: 14px;
+      color: #fff;
+      background-color: var(--colorCard);
+      border-color: #4e94ff !important;
+      background: #4e94ff !important;
+      border-radius: 16px;
+      width: 200px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      height: 32px;
+      line-height: 32px;
+    }
+  }
+  .ask {
+    margin-top: 20px;
+    font-size: 15px;
+  }
+}
+
+.el-dialog.my-account {
+  border-radius: 24px;
+  .btns {
+    display: flex;
+    justify-content: right;
+    .cancel {
+      width: 76px;
+      height: 40px;
+      cursor: pointer;
+      border-radius: 20px;
+      line-height: 40px;
+      font-size: 14px;
+      color: var(--colorCard);
+      border-color: var(--colorCard) !important;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .ok {
+      width: 76px;
+      height: 40px;
+      cursor: pointer;
+      border-radius: 20px;
+      background-color: var(--colorCard) !important;
+      border-color: var(--colorCard) !important;
+      color: #fff;
+      line-height: 40px;
+      font-size: 14px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+  }
+  .login-content {
+    box-sizing: border-box;
+    .el-input__prefix {
+      left: 20px;
+      transition: all 0.3s;
+      font-size: 20px;
+    }
+    .el-input__suffix-inner {
+      .code-btn {
+        padding: 6px 20px;
+        border: none;
+        border-left: 1px solid #d4d6d9;
+        color: var(--colorCard);
+      }
+      .code-btn:hover {
+        background: none;
+      }
+    }
+    .el-input__inner {
+      background-color: #ffffff;
+      border: 1px solid #d4d6d9;
+      box-sizing: border-box;
+      color: #606266;
+      display: inline-block;
+      font-size: 14px;
+      height: 40px;
+      line-height: 40px;
+      outline: none;
+      padding: 0 50px;
+      transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
+      width: 100%;
+      border-radius: 20px;
+    }
+  }
+  .el-dialog__footer {
+    padding: 30px;
+    text-align: left;
+    box-sizing: border-box;
+    box-shadow: 0px -1px 0px rgb(0 0 0 / 8%);
+  }
+  .el-dialog__header {
+    padding: 14px 20px 13px;
+    text-align: center;
+    box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.08);
+    .el-dialog__title {
+      font-weight: 600;
+      font-size: 18px;
+      color: #5f5f5f;
+      line-height: 25px;
+    }
+  }
+  .el-dialog__body {
+    padding: 30px 30px 10px 30px;
+  }
+  .info {
+    text-align: left;
+  }
+}
+.el-dialog.my-activate {
+  border-radius: 24px;
+  .el-dialog__footer {
+    padding: 30px;
+    text-align: left;
+    box-sizing: border-box;
+    box-shadow: 0px -1px 0px rgb(0 0 0 / 8%);
+    .btns {
+      display: flex;
+      .cancel {
+        width: 140px;
+        height: 40px;
+        cursor: pointer;
+        border-radius: 20px;
+        line-height: 40px;
+        font-size: 14px;
+        color: var(--colorCard);
+        border-color: var(--colorCard) !important;
+        margin-right: 12px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+      .ok {
+        width: 140px;
+        height: 40px;
+        cursor: pointer;
+        border-radius: 20px;
+        background-color: var(--colorCard) !important;
+        border-color: var(--colorCard) !important;
+        color: #fff;
+        line-height: 40px;
+        font-size: 14px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+    }
+  }
+}
+.el-dialog.my-order {
+  border-radius: 24px;
+  .el-dialog__body {
+    padding: 22px 20px;
+  }
+  .btns {
+    display: flex;
+    justify-content: right;
+    .cancel {
+      width: 140px;
+
+      height: 40px;
+      cursor: pointer;
+      border-radius: 20px;
+      line-height: 40px;
+      font-size: 14px;
+      color: var(--colorCard);
+      border-color: var(--colorCard) !important;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .ok {
+      width: 140px;
+      height: 40px;
+      cursor: pointer;
+      border-radius: 20px;
+      background-color: var(--colorCard) !important;
+      border-color: var(--colorCard) !important;
+      color: #fff;
+      line-height: 40px;
+      font-size: 14px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+  }
+  .tip {
+    width: auto;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    padding: 0 10px;
+    border-radius: 5px;
+    color: #5f5f5f;
+    line-height: 20px;
+    font-weight: bold;
+    -ms-flex-align: center;
+    align-items: center;
+    justify-content: center;
+    i {
+      margin-right: 5px;
+      font-size: 24px;
+      color: var(--colorCard);
+    }
+    span {
+      font-size: 14px;
+    }
+  }
+  .no-order-list {
+    margin-top: 20px;
+    font-size: 16px;
+    color: red;
+  }
+  .order-list {
+    margin: 20px 0;
+    height: 550px;
+    overflow-y: auto;
+    .order-card {
+      background: #fff;
+      margin-bottom: 15px;
+      border-radius: 8px;
+      box-shadow: 0px 0px 4px rgb(0 0 0 / 25%);
+      .head {
+        height: 40px;
+        line-height: 40px;
+        text-align: left;
+        box-sizing: border-box;
+        padding: 0 20px;
+        border-bottom: 1px rgba(242, 242, 242, 1) solid;
+        font-size: 14px;
+        display: flex;
+        justify-content: space-between;
+      }
+      .desc {
+        display: flex;
+        flex-direction: column;
+        justify-content: space-evenly;
+        text-align: left;
+        box-sizing: border-box;
+        font-size: 13px;
+
+        padding: 8px 20px;
+        line-height: 20px;
+      }
+    }
+  }
+}
+.warn-tag {
+  width: 630px;
+  text-align: left;
+  box-sizing: border-box;
+  padding: 0 25px;
+  height: 45px;
+  background-color: rgba(255, 238, 230, 1);
+  z-index: 99999;
+  position: absolute;
+  display: flex;
+  justify-content: space-between;
+  top: 55px;
+  left: calc(50% - 315px);
+  line-height: 45px;
+  border-radius: 5px;
+  .go-to {
+    color: var(--colorCard);
+    cursor: pointer;
+    text-decoration: underline;
+    font-weight: 600;
+    font-size: 14px;
+  }
+  .text {
+    font-size: 14px;
+  }
+  .icon {
+    font-size: 14px;
+    cursor: pointer;
+    margin-left: 25px;
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0