From f20a554bdb24e9dfde9dc6a69d78595944f61d15 Mon Sep 17 00:00:00 2001
From: mark <mark18340872469@163.com>
Date: 星期二, 25 十月 2022 14:53:57 +0800
Subject: [PATCH] 设备管理 样式调整

---
 src/views/productDetail/components/PayCard.vue |  406 +++++++++++++++++++++++++--------------------------------
 1 files changed, 179 insertions(+), 227 deletions(-)

diff --git a/src/views/productDetail/components/PayCard.vue b/src/views/productDetail/components/PayCard.vue
index 8177742..b4d8c35 100644
--- a/src/views/productDetail/components/PayCard.vue
+++ b/src/views/productDetail/components/PayCard.vue
@@ -1,16 +1,16 @@
 <template>
   <div class="PayCard">
     <div class="imageArea" v-if="data.pics.length">
-      <img class="activeImg" :src="'/httpImage/' + activeImg.url" />
+      <ImageShow class="activeImg" :src="activeImg.url" />
       <div class="imgList">
-        <img
+        <ImageShow
           v-for="(item, index) in data.pics"
           class="preImg"
-          :src="'/httpImage/' + item.url"
+          :src="item.url"
           :key="index"
           alt=""
           :class="{ active: activeImg.index == index }"
-          @click="selectImg(index, item.url)"
+          @click.native="selectImg(index, item.url)"
         />
       </div>
     </div>
@@ -19,224 +19,32 @@
       <div class="title">
         <div class="name">{{ data.productName }}</div>
         <div class="tagList">
-          <span class="tag" v-for="(name, index) in labels" :key="index">{{
+          <!-- <span class="tag" v-for="(name, index) in labels" :key="index">{{
             name
-          }}</span>
+          }}</span> -->
+          <span class="tag red" v-if="data.productType == 1">杞欢</span>
+          <span class="tag orange" v-if="data.productType == 4">搴旂敤</span>
+          <span class="tag lightBlue" v-if="data.productType == 3">SDK</span>
+          <span class="tag" v-if="data.productType == 2">杞‖涓�浣�</span>
+          <span class="tag blue" v-if="data.productType == 5">浜у搧瀵嗛挜</span>
         </div>
       </div>
       <div class="des">{{ data.description }}</div>
       <div class="typeVersion">
         <div class="label">鍨嬪彿:</div>
-        <div class="typeVersionContent">{{ data.productModel }}</div>
+        <div class="typeVersionContent">
+          {{ data.productModel ? data.productModel : "-" }}
+        </div>
         <div class="label">鐗堟湰:</div>
-        <div class="typeVersionContent">{{ data.productVersion }}</div>
+        <div class="typeVersionContent">
+          {{ data.productVersion ? data.productVersion : "-" }}
+        </div>
       </div>
 
       <div class="price">
         <div class="label">浠锋牸</div>
-        <div class="number">锟{ data.priceBase }}.00</div>
+        <div class="number">锟{ this.totalMoney }}.00</div>
       </div>
-      <!-- 
-      <div class="row">
-        <div class="label">璐拱鏁伴噺</div>
-        <el-input-number
-          v-model="cartItem.devCount"
-          :disabled="data.productType == 5"
-          size="small"
-          :min="1"
-          label="鎻忚堪鏂囧瓧"
-        ></el-input-number>
-      </div>
-
-      <div class="row">
-        <div class="label">鏈嶅姟鏃堕暱</div>
-        <el-button-group class="serviceYearOpt">
-          <el-button
-            type="default"
-            size="small"
-            :class="cartItem.timeLength == 1 ? 'selected' : ''"
-            @click="selectYear(1)"
-            >涓�骞�</el-button
-          >
-          <el-button
-            type="default"
-            size="small"
-            :class="cartItem.timeLength == 2 ? 'selected' : ''"
-            @click="selectYear(2)"
-            >涓ゅ勾</el-button
-          >
-          <el-button
-            type="default"
-            size="small"
-            :class="cartItem.timeLength == 3 ? 'selected' : ''"
-            @click="selectYear(3)"
-            >涓夊勾</el-button
-          >
-        </el-button-group>
-      </div>
-
-      <div class="row">
-        <div class="label">閰嶇疆妯″潡</div>
-        <div class="check-component">
-          <div class="check-list">
-            <div
-              class="check-item"
-              v-for="(item, index) in cartItem.modules"
-              :key="index + 'c'"
-              :style="isSmartCalDot ? { cursor: 'default' } : {}"
-              :class="item.selected ? 'selected' : ''"
-              @click="selectModel(index)"
-            >
-              {{ item.moduleName }}
-            </div>
-          </div>
-          <div class="checked-list">
-            <div class="label">宸查��</div>
-            <div class="list">
-              <div
-                class="checked-item"
-                v-for="(item, index) in cartItem.modules"
-                v-show="item.selected"
-                :key="index + 'd'"
-              >
-                {{ item.moduleName }}
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="row">
-        <div class="label">璇锋眰鐮�</div>
-        <el-input
-          type="textarea"
-          autosize
-          placeholder="璇疯緭鍏ヨ姹傜爜"
-          v-model="cartItem.requestCode"
-        >
-        </el-input>
-      </div>
-
-      <div class="row">
-        <div class="label">閫氶亾鏁伴噺</div>
-        <el-input-number
-          v-model="cartItem.chCount"
-          @change="handleChangeCh"
-          :disabled="!data.hasChUnitPrice"
-          size="small"
-          :min="1"
-          :max="16"
-          label="鎻忚堪鏂囧瓧"
-        ></el-input-number>
-        <span class="desText">鏈�澶ф敮鎸�16璺�</span>
-      </div>
-
-      <div class="row">
-        <div class="label">鎺堟潈鏁伴噺</div>
-        <el-input-number
-          v-model="cartItem.chCount"
-          @change="handleChangeCh"
-          :disabled="!data.hasChUnitPrice"
-          size="small"
-          :min="1"
-          :max="16"
-          label="鎻忚堪鏂囧瓧"
-        ></el-input-number>
-        <span class="desText">鏈�澶ф敮鎸�16璺�</span>
-        <el-input-number
-          v-model="cartItem.authCount"
-          @change="handleChangeAuth"
-          :disabled="!data.hasAuthPrice"
-          size="small"
-          :min="this.cartItem.chCount"
-          label="鎻忚堪鏂囧瓧"
-        ></el-input-number>
-        <span class="desText">鍙敮鎸佺殑杞璺暟</span>
-      </div>
-
-      <div class="row">
-        <div class="label">閰嶇疆绠楁硶</div>
-        <div class="check-component">
-          <div class="check-list">
-            <div
-              class="check-item"
-              v-for="(item, index) in cartItem.sdks"
-              :key="index + 'c'"
-              :class="item.selected ? 'selected' : ''"
-              @click="selectAlgorithm(index)"
-            >
-              {{ item.sdkName }}
-            </div>
-          </div>
-          <div class="checked-list">
-            <div class="label">宸查��</div>
-            <div class="list">
-              <div
-                class="checked-item"
-                v-for="(item, index) in cartItem.sdks"
-                v-show="item.selected"
-                :key="index + 'd'"
-              >
-                {{ item.sdkName }}
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="row">
-        <div class="label">鑺墖鏋舵瀯</div>
-        <el-select
-          v-model="cartItem.targetPlatform"
-          placeholder="璇烽�夋嫨浣跨敤鑺墖"
-          style="
-            width: 329px;
-            height: 40px;
-            border-color: #ddd;
-            border-radius: 0;
-          "
-        >
-          <el-option
-            v-for="item in data.productBaseDetail &&
-            data.productBaseDetail.platforms"
-            style="font-size: 12px"
-            :key="item.id"
-            :label="item.id"
-            :value="item.id"
-            :title="item.name"
-          ></el-option>
-        </el-select>
-      </div>
-
-      <div class="row">
-        <div class="label">璁惧ID</div>
-        <el-select
-          collapse-tags
-          multiple
-          :multiple-limit="cartItem.devCount"
-          v-model="cartItem.devIdList"
-          placeholder="璇烽�夋嫨璁惧ID"
-          :popper-append-to-body="false"
-          style="
-            width: 329px;
-            height: 40px;
-            border-color: #ddd;
-            border-radius: 0;
-          "
-        >
-          <el-option
-            v-for="item in devList"
-            style="font-size: 12px"
-            :key="item.id"
-            :label="item.id"
-            :value="item.id"
-            :title="item.id"
-          >
-            <span class="option-lt" :title="item.id">{{ item.id }}</span>
-            <span class="option-rt" :title="item.name">{{ item.name }}</span>
-          </el-option>
-        </el-select>
-      </div> -->
 
       <div class="row">
         <div class="label">璐拱鏁伴噺</div>
@@ -344,16 +152,6 @@
       >
         <div class="label">鎺堟潈鏁伴噺</div>
         <el-input-number
-          v-model="cartItem.chCount"
-          @change="handleChangeCh"
-          :disabled="!data.hasChUnitPrice"
-          size="small"
-          :min="1"
-          :max="16"
-          label="鎻忚堪鏂囧瓧"
-        ></el-input-number>
-        <span class="desText">鏈�澶ф敮鎸�16璺�</span>
-        <el-input-number
           v-model="cartItem.authCount"
           @change="handleChangeAuth"
           :disabled="!data.hasAuthPrice"
@@ -370,7 +168,8 @@
           data.productBaseDetail &&
           data.productBaseDetail.hasPriceBase &&
           data.productType != 5 &&
-          !isSmartCalDot
+          !isSmartCalDot &&
+          cartItem.sdks.length > 0
         "
       >
         <div class="label">閰嶇疆绠楁硶</div>
@@ -441,6 +240,40 @@
         v-if="
           data.productType != 2 &&
           data.productType != 1 &&
+          data.productType != 5 &&
+          data.productType == 3 &&
+          (cartItem.targetPlatform.includes('x86') ||
+            cartItem.targetPlatform.includes('X86'))
+        "
+      >
+        <div class="label">鏄惧崱鍨嬪彿</div>
+        <el-select
+          v-model="cartItem.vGpu"
+          style="
+            width: 329px;
+            height: 40px;
+            border-color: #ddd;
+            border-radius: 0;
+          "
+          placeholder="璇烽�夋嫨鏄惧崱鍨嬪彿"
+        >
+          <el-option
+            v-for="item in data.productBaseDetail &&
+            data.productBaseDetail.vGpus"
+            style="font-size: 12px"
+            :key="item.id"
+            :label="item.id"
+            :value="item.id"
+            :title="item.name"
+          ></el-option>
+        </el-select>
+      </div>
+
+      <div
+        class="row"
+        v-if="
+          data.productType != 2 &&
+          data.productType != 1 &&
           data.productType != 5
         "
       >
@@ -475,22 +308,39 @@
       </div>
 
       <div class="btns">
-        <div class="button addCar">鍔犲叆璐墿杞�</div>
-        <div class="button pay">绔嬪嵆璐拱</div>
+        <!-- <div class="button addCar">鍔犲叆璐墿杞�</div> -->
+        <div class="button pay" @click="confirmNow">
+          {{ totalMoney ? "绔嬪嵆璐拱" : "鍏嶈垂璇曠敤" }}
+        </div>
       </div>
     </div>
+
+    <ConfirmOrder
+      v-if="showOrder"
+      :orderId="orderId"
+      @close="showOrder = false"
+    ></ConfirmOrder>
   </div>
 </template>
 
 <script>
 import { findDevListByUser } from "@/api/device";
 import { getReleaseProduct } from "@/api/product";
+import { resumeOrder } from "@/api/shopcart";
+import ConfirmOrder from "@/views/productDetail/components/ConfirmOrder";
+import { resumePay } from "@/api/order";
 
 export default {
   props: {
     dataInfo: {},
   },
+  components: {
+    ConfirmOrder,
+  },
   created() {
+    this.data = this.dataInfo.data;
+    this.labels = this.dataInfo.labels;
+    this.cartItem.id = this.data.id;
     this.getDevList();
     if (this.dataInfo.data.pics.length > 0) {
       this.activeImg.url = this.dataInfo.data.pics[0].url;
@@ -499,8 +349,8 @@
   },
   data() {
     return {
-      data: this.dataInfo.data,
-      labels: this.dataInfo.labels,
+      data: {},
+      labels: [],
       cartItem: {
         id: "",
         productName: "",
@@ -528,7 +378,31 @@
         index: 0,
         url: "",
       },
+      showOrder: false,
+      orderId: "",
     };
+  },
+  computed: {
+    totalMoney() {
+      let modulesPrice = 0;
+      this.cartItem.moduleIds.forEach((id) => {
+        this.data.modulePriceSet.forEach((module) => {
+          if (module.moduleId === id) {
+            modulesPrice += module.modulePrice;
+          }
+        });
+      });
+
+      let priceSingle =
+        this.data.priceBase +
+        this.data.authPrice * this.cartItem.authCount +
+        this.data.chUnitPrice * this.cartItem.chCount +
+        modulesPrice;
+
+      console.log(this.data);
+
+      return priceSingle * this.cartItem.devCount * this.cartItem.timeLength;
+    },
   },
   methods: {
     getInfo() {
@@ -610,8 +484,6 @@
       this.cartItem.timeLength = year;
     },
     selectModel(index) {
-      console.log("-----");
-      console.log(this.isSmartCalDot);
       if (this.isSmartCalDot) {
         return;
       }
@@ -671,6 +543,58 @@
     selectImg(index, url) {
       this.activeImg.index = index;
       this.activeImg.url = url;
+    },
+    confirmNow() {
+      let products = [
+        {
+          activateCode: this.cartItem.requestCode,
+          authCount: this.cartItem.authCount,
+          chCount: this.cartItem.chCount,
+          devCount: this.cartItem.devCount,
+          devIdList: this.cartItem.devIdList,
+          moduleIds: this.cartItem.moduleIds,
+          productId: this.cartItem.id,
+          productPrice: this.cartItem.totalPrice,
+          quantity: 1,
+          sdkIds: this.cartItem.sdkIds,
+          serveYear: this.cartItem.timeLength,
+          targetPlatform: this.cartItem.targetPlatform,
+          vGpu: this.cartItem.vGpu,
+        },
+      ];
+      resumeOrder({
+        orderMoney: this.numeral(this.totalMoney).value(),
+        payMethod: 0,
+        products,
+        status: 0,
+        userId: JSON.parse(sessionStorage.getItem("userInfo")).id,
+      }).then((res) => {
+        if (res.success) {
+          this.orderId = res.data.orderId;
+
+          if (this.totalMoney == 0) {
+            resumePay({ orderId: this.orderId, payMethod: 5 }).then((res) => {
+              if (res.success) {
+                this.$router.push({
+                  path: "/personalCenter",
+                  query: {
+                    id: 0,
+                  },
+                });
+                this.$notify({
+                  type: "success",
+                  message: "鎴愬姛璇曠敤",
+                  duration: 2500,
+                  offset: 57,
+                });
+              }
+            });
+            return;
+          } else {
+            this.showOrder = true;
+          }
+        }
+      });
     },
   },
 };
@@ -735,6 +659,26 @@
           padding: 2px 5px;
           border: 1px solid #ff5033;
           color: #ff5033;
+
+          &.red {
+            color: #ff4f32;
+            border-color: #ff4f32;
+          }
+
+          &.orange {
+            color: #ff9500;
+            border-color: #ff9500;
+          }
+
+          &.lightBlue {
+            color: #00bee7;
+            border-color: #00bee7;
+          }
+
+          &.blue {
+            color: #0064ff;
+            border-color: #0064ff;
+          }
         }
       }
     }
@@ -871,6 +815,14 @@
           border: 1px solid #c0c5cc;
           border-radius: 0;
         }
+
+        .el-tag {
+          margin-top: 0;
+        }
+
+        .el-select__tags-text {
+          color: #999;
+        }
       }
     }
 

--
Gitblit v1.8.0