From c0c034b3ef0fdf0fd9c802d5984dbd717db6817a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 06 九月 2023 17:54:55 +0800
Subject: [PATCH] 定制桌面.
---
src/pages/desktop/index/components/Desktop.vue | 755 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 749 insertions(+), 6 deletions(-)
diff --git a/src/pages/desktop/index/components/Desktop.vue b/src/pages/desktop/index/components/Desktop.vue
index 673329c..9f83144 100644
--- a/src/pages/desktop/index/components/Desktop.vue
+++ b/src/pages/desktop/index/components/Desktop.vue
@@ -2,24 +2,767 @@
<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>
+
+ <!-- 鏆傛椂闅愯棌璇曠敤鐗堟彁绀� -->
+ <!-- <div class="warn-tag" v-if="showFreeVersion"> -->
+ <div class="warn-tag" v-show="false">
+ <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"></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;
+ }
}
-</style>
\ No newline at end of file
+
+.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>
--
Gitblit v1.8.0