Bläddra i källkod

feat: applet order

Casper Dai 2 år sedan
förälder
incheckning
15bdd258f0
3 ändrade filer med 82 tillägg och 16 borttagningar
  1. 18 0
      src/constant.js
  2. 32 8
      src/views/ad/applet/history/index.vue
  3. 32 8
      src/views/ad/applet/review-order/index.vue

+ 18 - 0
src/constant.js

@@ -326,3 +326,21 @@ export const Dataset = {
   FILL: 0,
   COMMON: 1
 }
+
+export const AppletOrderType = {
+  PACKAGE: 1,
+  SOON: 2,
+  DAILY: 3
+}
+
+export const AppletOrderKeyMap = {
+  [AppletOrderType.PACKAGE]: 'orders',
+  [AppletOrderType.SOON]: 'directOrders',
+  [AppletOrderType.DAILY]: 'injectOrders'
+}
+
+export const AppletOrderAssetKeyMap = {
+  [AppletOrderType.PACKAGE]: 'assets',
+  [AppletOrderType.SOON]: 'directAssets',
+  [AppletOrderType.DAILY]: 'injectAssets'
+}

+ 32 - 8
src/views/ad/applet/history/index.vue

@@ -20,7 +20,12 @@
 </template>
 
 <script>
-import { SCREEN_TIME_KEY } from '@/constant'
+import {
+  SCREEN_TIME_KEY,
+  AppletOrderType,
+  AppletOrderKeyMap,
+  AppletOrderAssetKeyMap
+} from '@/constant'
 import { transformOrderAssetToAsset } from '@/utils'
 import { getOrders } from '../api'
 
@@ -42,6 +47,7 @@ export default {
         ],
         cols: [
           { prop: 'statusTag', type: 'tag', 'align': 'center' },
+          { label: '类型', render: ({ type }) => ['', '套餐', '即刻', '插入'][type], width: 80, align: 'center' },
           { prop: 'startDate', label: '上刊日期', width: 100 },
           { prop: 'range', label: '时段', width: 140 },
           { prop: 'deviceName', label: '设备' },
@@ -61,8 +67,8 @@ export default {
         cols: [
           { prop: 'typeInfo', label: '资源', width: 100, align: 'center' },
           { prop: 'file', label: '', type: 'asset', on: this.onViewAsset },
-          { prop: 'ratio', label: '分辨率' },
           { prop: 'adDuration', label: '上播时长', align: 'center' },
+          { prop: 'ratio', label: '分辨率', align: 'right' },
           { prop: 'statusTag', type: 'tag' },
           { type: 'invoke', render: [
             { label: '查看', allow: ({ file }) => !!file, on: this.onViewAsset }
@@ -72,10 +78,31 @@ export default {
     }
   },
   methods: {
-    transformOrder ({ id, price, status, expand, orders, assets, phoneNumber, createTime, auditTime }) {
+    getInfo (type, orders, assets) {
+      const { startDate, startTime, endTime, day, duration, count } = orders[0]
+      switch (type) {
+        case AppletOrderType.PACKAGE:
+          return {
+            startDate,
+            range: startTime === SCREEN_TIME_KEY && endTime === SCREEN_TIME_KEY ? '开机期间' : `${startTime}-${endTime}`,
+            freq: `${day}天 x ${duration}秒 x ${count}次`
+          }
+        case AppletOrderType.SOON:
+          return {
+            freq: `${assets.reduce((total, { adDuration }) => total + adDuration, 0)}秒`
+          }
+        default:
+          return null
+      }
+    },
+    transformOrder (order) {
+      const { id, type, price, status, expand, phoneNumber, createTime, auditTime } = order
+      const orders = order[AppletOrderKeyMap[type]]
+      const assets = order[AppletOrderAssetKeyMap[type]]
       if (!orders.length) {
         return {
           id,
+          type,
           statusTag: this.getOrderTag(status, expand),
           startDate: '异常数据',
           price: (price / 100).toFixed(2),
@@ -85,14 +112,11 @@ export default {
           assets
         }
       }
-      const { name, startDate, startTime, endTime, day, duration, count } = orders[0]
       return {
+        ...this.getInfo(type, orders, assets),
         id,
-        deviceName: name,
+        type,
         statusTag: this.getOrderTag(status, expand),
-        startDate,
-        range: startTime === SCREEN_TIME_KEY && endTime === SCREEN_TIME_KEY ? '开机期间' : `${startTime}-${endTime}`,
-        freq: `${day}天 x ${duration}秒 x ${count}次`,
         price: (price / 100).toFixed(2),
         phoneNumber,
         createTime,

+ 32 - 8
src/views/ad/applet/review-order/index.vue

@@ -53,7 +53,10 @@
 <script>
 import {
   State,
-  SCREEN_TIME_KEY
+  SCREEN_TIME_KEY,
+  AppletOrderType,
+  AppletOrderKeyMap,
+  AppletOrderAssetKeyMap
 } from '@/constant'
 import { transformOrderAssetToAsset } from '@/utils'
 import {
@@ -72,6 +75,7 @@ export default {
         condition: { status: State.SUBMITTED },
         cols: [
           { type: 'refresh' },
+          { label: '类型', render: ({ type }) => ['', '套餐', '即刻', '插入'][type], width: 80, align: 'center' },
           { prop: 'startDate', label: '上刊日期', width: 100 },
           { prop: 'range', label: '时段', width: 140 },
           { prop: 'deviceName', label: '设备' },
@@ -81,7 +85,7 @@ export default {
           { prop: 'createTime', label: '提交时间', width: 160, align: 'right' },
           { type: 'invoke', width: 180, render: [
             { label: '上播内容', on: this.onView },
-            { label: '通过', allow: ({ invalid }) => !invalid, on: this.onResolve },
+            { label: '通过'/* , allow: ({ invalid }) => !invalid */, on: this.onResolve },
             { label: '拒绝', on: this.onReject }
           ] }
         ]
@@ -112,10 +116,32 @@ export default {
     }
   },
   methods: {
-    transformOrder ({ id, price, createTime, orders, assets, phoneNumber }) {
+    getInfo (type, orders, assets) {
+      const { startDate, startTime, endTime, day, duration, count } = orders[0]
+      switch (type) {
+        case AppletOrderType.PACKAGE:
+          return {
+            startDate,
+            range: startTime === SCREEN_TIME_KEY && endTime === SCREEN_TIME_KEY ? '开机期间' : `${startTime}-${endTime}`,
+            freq: `${day}天 x ${duration}秒 x ${count}次`
+          }
+        case AppletOrderType.SOON:
+          return {
+            range: '即刻',
+            freq: `${assets.reduce((total, { adDuration }) => total + adDuration, 0)}秒`
+          }
+        default:
+          return null
+      }
+    },
+    transformOrder (order) {
+      const { id, type, price, createTime, phoneNumber } = order
+      const orders = order[AppletOrderKeyMap[type]]
+      const assets = order[AppletOrderAssetKeyMap[type]]
       if (!orders.length) {
         return {
           id,
+          type,
           startDate: '异常数据',
           price: (price / 100).toFixed(2),
           phoneNumber,
@@ -124,14 +150,12 @@ export default {
           invalid: true
         }
       }
-      const { name, startDate, startTime, endTime, day, duration, count } = orders[0]
       return {
+        ...this.getInfo(type, orders, assets),
         id,
-        deviceName: name,
-        startDate,
-        range: startTime === SCREEN_TIME_KEY && endTime === SCREEN_TIME_KEY ? '开机期间' : `${startTime}-${endTime}`,
+        type,
+        deviceName: orders.length > 1 ? `${orders[0].name}等` : orders[0].name,
         price: (price / 100).toFixed(2),
-        freq: `${day}天 x ${duration}秒 x ${count}次`,
         phoneNumber,
         createTime,
         assets,