Эх сурвалжийг харах

feat: single resource audit

adjust directory structure
Casper Dai 3 жил өмнө
parent
commit
cb9fb3fe41
81 өөрчлөгдсөн 169 нэмэгдсэн , 253 устгасан
  1. 5 12
      src/api/base.js
  2. 1 1
      src/api/device.js
  3. 1 1
      src/components/dialog/ProgramDialog/index.vue
  4. 16 14
      src/components/table/Table/Column.vue
  5. 4 3
      src/constant.js
  6. 8 0
      src/icons/svg/am.svg
  7. 74 79
      src/router/index.js
  8. 0 0
      src/views/platform/debug/debug.js
  9. 0 0
      src/views/platform/debug/index.vue
  10. 0 0
      src/views/platform/simulator/index.vue
  11. 0 0
      src/views/platform/simulator/simulate.js
  12. 0 0
      src/views/platform/upgrade/deploy/index.vue
  13. 0 0
      src/views/platform/upgrade/index.vue
  14. 0 125
      src/views/review/components/ReviewPublish.vue
  15. 0 0
      src/views/screen/deploy/index.vue
  16. 1 1
      src/views/screen/material/media/MediaDesigner.vue
  17. 0 0
      src/views/screen/material/media/MediaViewer.vue
  18. 0 0
      src/views/screen/material/media/index.vue
  19. 1 1
      src/views/screen/material/media/mixin.js
  20. 0 0
      src/views/screen/material/program/Program.vue
  21. 0 0
      src/views/screen/material/program/ProgramDesigner.vue
  22. 0 0
      src/views/screen/material/program/ProgramViewer.vue
  23. 0 0
      src/views/screen/material/program/ast/Designer.vue
  24. 0 0
      src/views/screen/material/program/ast/Previewer.vue
  25. 0 0
      src/views/screen/material/program/ast/Viewer.vue
  26. 0 0
      src/views/screen/material/program/ast/components/ContentMenu.vue
  27. 0 0
      src/views/screen/material/program/ast/components/DynamicItem.vue
  28. 0 0
      src/views/screen/material/program/ast/components/Volume.vue
  29. 0 0
      src/views/screen/material/program/ast/components/WidgetShortcut.vue
  30. 0 0
      src/views/screen/material/program/ast/core/components/Draggable.vue
  31. 0 0
      src/views/screen/material/program/ast/core/config-json/base.js
  32. 0 0
      src/views/screen/material/program/ast/core/config-json/canvas.js
  33. 0 0
      src/views/screen/material/program/ast/core/config-json/image.js
  34. 0 0
      src/views/screen/material/program/ast/core/config-json/live.js
  35. 0 0
      src/views/screen/material/program/ast/core/config-json/marquee.js
  36. 0 0
      src/views/screen/material/program/ast/core/config-json/media.js
  37. 0 0
      src/views/screen/material/program/ast/core/config-json/text.js
  38. 0 0
      src/views/screen/material/program/ast/core/config-json/time.js
  39. 0 0
      src/views/screen/material/program/ast/core/config-json/video.js
  40. 0 0
      src/views/screen/material/program/ast/core/config-json/weather.js
  41. 0 0
      src/views/screen/material/program/ast/core/config-json/web.js
  42. 0 0
      src/views/screen/material/program/ast/core/constant.js
  43. 0 0
      src/views/screen/material/program/ast/core/utils.js
  44. 0 0
      src/views/screen/material/program/ast/core/widget/CImage.vue
  45. 0 0
      src/views/screen/material/program/ast/core/widget/CLive.vue
  46. 0 0
      src/views/screen/material/program/ast/core/widget/CMarquee.vue
  47. 0 0
      src/views/screen/material/program/ast/core/widget/CMedia.vue
  48. 0 0
      src/views/screen/material/program/ast/core/widget/CText.vue
  49. 0 0
      src/views/screen/material/program/ast/core/widget/CTime.vue
  50. 0 0
      src/views/screen/material/program/ast/core/widget/CVideo.vue
  51. 0 0
      src/views/screen/material/program/ast/core/widget/CWeather.vue
  52. 0 0
      src/views/screen/material/program/ast/core/widget/CWeb.vue
  53. 0 0
      src/views/screen/material/program/ast/core/widget/Widget.vue
  54. 0 0
      src/views/screen/material/program/ast/core/widget/WidgetViewer.vue
  55. 0 0
      src/views/screen/material/program/ast/core/widget/widget.js
  56. 0 0
      src/views/screen/material/program/ast/index.vue
  57. 0 0
      src/views/screen/material/program/ast/mixin.js
  58. 0 0
      src/views/screen/material/program/index.vue
  59. 0 0
      src/views/screen/material/program/mixin.js
  60. 0 0
      src/views/screen/material/schedule/ScheduleDesigner.vue
  61. 0 0
      src/views/screen/material/schedule/ScheduleViewer.vue
  62. 0 0
      src/views/screen/material/schedule/designer/index.vue
  63. 0 0
      src/views/screen/material/schedule/index.vue
  64. 0 0
      src/views/screen/material/schedule/mixin.js
  65. 0 0
      src/views/screen/review/history/index.vue
  66. 54 3
      src/views/screen/review/single/components/ReviewAsset.vue
  67. 1 1
      src/views/screen/review/single/components/ReviewProgram.vue
  68. 1 1
      src/views/screen/review/single/components/ReviewProgramRecur.vue
  69. 1 1
      src/views/screen/review/single/components/ReviewSchedule.vue
  70. 0 0
      src/views/screen/review/single/components/mixin.js
  71. 1 10
      src/views/screen/review/single/index.vue
  72. 0 0
      src/views/screen/review/workflow/detail/components/ReviewAssets.vue
  73. 0 0
      src/views/screen/review/workflow/detail/components/ReviewDialog.vue
  74. 0 0
      src/views/screen/review/workflow/detail/components/ReviewPrograms.vue
  75. 0 0
      src/views/screen/review/workflow/detail/components/ReviewPublish.vue
  76. 0 0
      src/views/screen/review/workflow/detail/components/ReviewRecurPrograms.vue
  77. 0 0
      src/views/screen/review/workflow/detail/components/ReviewSchedule.vue
  78. 0 0
      src/views/screen/review/workflow/detail/components/mixin.js
  79. 0 0
      src/views/screen/review/workflow/detail/index.vue
  80. 0 0
      src/views/screen/review/workflow/index.vue
  81. 0 0
      src/views/screen/review/workflow/mine/index.vue

+ 5 - 12
src/api/base.js

@@ -3,10 +3,7 @@ import {
   MessageBox,
   Message
 } from 'element-ui'
-import {
-  Access,
-  State
-} from '@/constant'
+import { State } from '@/constant'
 import request from '@/utils/request'
 import {
   showLoading,
@@ -26,7 +23,8 @@ const Status = {
   [State.SUBMITTED]: [1],
   [State.RESOLVED]: [2],
   [State.REJECTED]: [3, 4, 5],
-  [State.REVIEW]: [1],
+  [State.REVIEW]: [0, 1],
+  [State.REVIEW_SUBMITTED]: [1],
   [State.AVAILABLE]: [0, 1, 2],
   [State.AVAILABLE_ASSET]: [-1, 0, 1]
 }
@@ -36,6 +34,7 @@ export function addStatusScope ({ status, ...data }) {
       data.tenant = store.getters.tenant
       break
     case State.REVIEW:
+    case State.REVIEW_SUBMITTED:
       if (store.getters.isGroupAdmin) {
         if (store.getters.isTopGroupAdmin) {
           data.tenant = store.getters.tenant
@@ -98,19 +97,13 @@ export function canDel ({ status, org, createBy }) {
   if (store.getters.isSuperAdmin) {
     return true
   }
-  if (status === State.SUBMITTED) {
-    return false
-  }
   if (store.getters.isGroupAdmin) {
     if (store.getters.isTopGroupAdmin) {
       return true
     }
     return new RegExp(`^${store.getters.org}`).test(org)
   }
-  if (store.getters.accesses.has(Access.MANAGE_CALENDAR)) {
-    return createBy === store.getters.userId
-  }
-  return false
+  return createBy === store.getters.userId
 }
 
 export function send (config, service = request) {

+ 1 - 1
src/api/device.js

@@ -129,7 +129,7 @@ export function getDevicesByAdmin (query, options) {
 
 export function getBoundDevices (query, options) {
   const { pageNum: pageIndex, pageSize, ...params } = query
-  return send({
+  return request({
     url: '/device/allocate/page',
     method: 'GET',
     params: {

+ 1 - 1
src/components/dialog/ProgramDialog/index.vue

@@ -21,7 +21,7 @@
 
 <script>
 import { getProgram } from '@/api/program'
-import Program from '@/views/bigscreen/ast/Previewer'
+import Program from '@/views/screen/material/program/ast/Previewer'
 
 export default {
   name: 'ProgramDialog',

+ 16 - 14
src/components/table/Table/Column.vue

@@ -78,12 +78,27 @@ export default {
         return '-'
       }
       const { on } = this.schema
+      let svgIcon = null
+      switch (value.type) {
+        case AssetType.VIDEO:
+        case AssetType.PPT:
+        case AssetType.PDF:
+        case AssetType.DOC:
+          svgIcon = 'video-thumb'
+          break
+        case AssetType.AUDIO:
+          svgIcon = 'audio-thumb'
+          break
+        default:
+          svgIcon = 'image-broken'
+          break
+      }
       if (value.thumbnail) {
         return this.$createElement('auto-image', {
           staticClass: `o-thumbnail${on ? ' u-pointer' : ''}`,
           props: {
             src: value.origin ? getAssetUrl(value.thumbnail) : getThumbnailUrl(value.thumbnail, '64,fit'),
-            broken: value.type === AssetType.VIDEO ? 'video-broken' : 'image-broken'
+            broken: svgIcon
           },
           nativeOn: on && { click: $event => {
             $event.stopPropagation()
@@ -91,19 +106,6 @@ export default {
           } }
         })
       }
-      let svgIcon = 'video-thumb'
-      switch (value.type) {
-        case AssetType.VIDEO:
-          if (value.thumbnail === '') {
-            svgIcon = 'video-broken'
-          }
-          break
-        case AssetType.AUDIO:
-          svgIcon = 'audio-thumb'
-          break
-        default:
-          break
-      }
       return this.$createElement('SvgIcon', {
         staticClass: `o-thumbnail${on ? ' u-pointer' : ''}`,
         props: { 'icon-class': svgIcon },

+ 4 - 3
src/constant.js

@@ -32,9 +32,10 @@ export const State = {
   REJECTED: 3,
   CANCEL: 7,
   // 占位值
-  REVIEW: 99,
-  AVAILABLE: 100,
-  AVAILABLE_ASSET: 101
+  REVIEW: 100,
+  REVIEW_SUBMITTED: 101,
+  AVAILABLE: 110,
+  AVAILABLE_ASSET: 111
 }
 
 export const ScheduleType = {

+ 8 - 0
src/icons/svg/am.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 34 34" style="enable-background:new 0 0 34 34;" xml:space="preserve">
+<path d="M29.7,20.4v-15c0-1.7-1.3-3-3-3h-13c-1.7,0-3,1.3-3,3v1h-2c-1.7,0-3,1.3-3,3v11h-2v7c0,2.8,2.2,5,5,5h18c2.8,0,5-2.2,5-5v-7
+	H29.7z M12.7,5.4c0-0.5,0.4-1,1-1h13c0.5,0,1,0.5,1,1v15h-6.4L17.7,24l-3.6-3.6h-1.4V5.4z M7.7,9.4c0-0.5,0.4-1,1-1h2v12h-3V9.4z
+	 M29.7,27.4c0,1.7-1.3,3-3,3h-18c-1.7,0-3-1.3-3-3v-5h7.6l4.4,4.4l4.5-4.4h7.6V27.4z"/>
+</svg>

+ 74 - 79
src/router/index.js

@@ -62,33 +62,33 @@ export const asyncRoutes = [
     ]
   },
   {
-    path: '/cm',
+    path: '/am',
     component: Layout,
-    meta: { title: '智能信发', icon: 'cm' },
+    meta: { title: '素材管理', icon: 'am' },
     children: [
       {
-        name: 'asset-list',
-        path: 'asset',
-        component: () => import('@/views/platform/media/index'),
+        name: 'media-list',
+        path: 'media',
+        component: () => import('@/views/screen/material/media/index'),
         access: [Access.MANAGE_CALENDAR, Access.MANAGE_GROUP],
-        meta: { title: '媒资管理' }
+        meta: { title: '媒资' }
       },
       {
         name: 'program-list',
         path: 'program',
-        component: () => import('@/views/bigscreen/index'),
+        component: () => import('@/views/screen/material/program/index'),
         access: [Access.MANAGE_CALENDAR, Access.MANAGE_GROUP],
-        meta: { title: '节目管理' }
+        meta: { title: '节目' }
       },
       {
         path: 'recur',
         component: Solo,
-        meta: { title: '轮播管理' },
+        meta: { title: '轮播' },
         children: [
           {
             name: 'recur-list',
             path: '',
-            component: () => import('@/views/schedule/index'),
+            component: () => import('@/views/screen/material/schedule/index'),
             access: [Access.MANAGE_CALENDAR, Access.MANAGE_GROUP],
             meta: { cache: 'ScheduleList' },
             props: { type: ScheduleType.RECUR, redirect: 'recur-design' }
@@ -97,7 +97,7 @@ export const asyncRoutes = [
             hidden: true,
             name: 'recur-design',
             path: ':id',
-            component: () => import('@/views/schedule/designer/index'),
+            component: () => import('@/views/screen/material/schedule/designer/index'),
             access: Access.MANAGE_CALENDAR,
             meta: { title: '编辑', cache: 'ScheduleList' },
             props: { redirect: 'recur-list' }
@@ -107,12 +107,12 @@ export const asyncRoutes = [
       {
         path: 'schedule',
         component: Solo,
-        meta: { title: '排期管理' },
+        meta: { title: '排期' },
         children: [
           {
             name: 'schedule-list',
             path: '',
-            component: () => import('@/views/schedule/index'),
+            component: () => import('@/views/screen/material/schedule/index'),
             access: [Access.MANAGE_CALENDAR, Access.MANAGE_GROUP],
             meta: { cache: 'ScheduleList' },
             props: { type: ScheduleType.COMPLEX, redirect: 'schedule-design' }
@@ -121,7 +121,7 @@ export const asyncRoutes = [
             hidden: true,
             name: 'schedule-design',
             path: ':id',
-            component: () => import('@/views/schedule/designer/index'),
+            component: () => import('@/views/screen/material/schedule/designer/index'),
             access: Access.MANAGE_CALENDAR,
             meta: { title: '编辑', cache: 'ScheduleList' },
             props: { redirect: 'schedule-list' }
@@ -129,17 +129,30 @@ export const asyncRoutes = [
         ]
       },
       {
-        name: 'schedule-deploy',
+        path: 'review',
+        component: () => import('@/views/screen/review/single/index'),
+        access: Access.MANAGE_GROUP,
+        meta: { title: '审核' }
+      }
+    ]
+  },
+  {
+    path: '/cm',
+    component: Layout,
+    meta: { title: '智能信发', icon: 'cm' },
+    children: [
+      {
+        name: 'deploy',
         path: 'deploy',
-        component: () => import('@/views/schedule/deploy/index'),
+        component: () => import('@/views/screen/deploy/index'),
         access: Access.MANAGE_CALENDAR,
-        meta: { title: '排期发布' }
+        meta: { title: '发布' }
       },
       {
-        path: 'review',
-        component: () => import('@/views/review/index'),
-        access: Access.MANAGE_GROUP,
-        meta: { title: '审核管理' }
+        path: 'mine',
+        component: () => import('@/views/screen/review/workflow/mine/index'),
+        access: Access.MANAGE_CALENDAR,
+        meta: { title: '我的流程' }
       },
       {
         path: 'workflow',
@@ -150,28 +163,22 @@ export const asyncRoutes = [
           {
             name: 'workflow-list',
             path: '',
-            component: () => import('@/views/review/workflow/index'),
+            component: () => import('@/views/screen/review/workflow/index'),
             meta: { cache: 'WorkflowList' }
           },
           {
             hidden: true,
             name: 'workflow-detail',
             path: ':id',
-            component: () => import('@/views/review/workflow/detail/index'),
+            component: () => import('@/views/screen/review/workflow/detail/index'),
             meta: { title: '审核', cache: 'WorkflowList' }
           }
         ]
       },
-      {
-        path: 'mine',
-        component: () => import('@/views/review/workflow/mine/index'),
-        access: Access.MANAGE_CALENDAR,
-        meta: { title: '我的流程' }
-      },
       {
         name: 'deploy-history',
         path: 'history',
-        component: () => import('@/views/review/history/index'),
+        component: () => import('@/views/screen/review/history/index'),
         access: [Access.MANAGE_CALENDAR, Access.MANAGE_GROUP],
         meta: { title: '发布历史' }
       }
@@ -182,12 +189,6 @@ export const asyncRoutes = [
     component: Layout,
     meta: { title: '大屏设备', icon: 'dm' },
     children: [
-      {
-        name: 'device-timeline',
-        path: 'timeline',
-        component: () => import('@/views/device/timeline/index'),
-        meta: { title: '排期预览' }
-      },
       {
         path: 'device',
         component: Solo,
@@ -209,36 +210,22 @@ export const asyncRoutes = [
         ]
       },
       {
-        name: 'group',
-        path: 'group',
-        component: () => import('@/views/device/group/index'),
-        meta: { title: '分组管理' }
+        name: 'device-timeline',
+        path: 'timeline',
+        component: () => import('@/views/device/timeline/index'),
+        meta: { title: '排期预览' }
       },
       {
         name: 'record',
         path: 'record',
         component: () => import('@/views/device/record/index'),
         meta: { title: '视频回采' }
-      }
-    ]
-  },
-  {
-    path: '/dashboard',
-    component: Solo,
-    meta: { title: '大数据', icon: 'dm' },
-    access: [Access.MANAGE_TENANTS, Access.MANAGE_TENANT],
-    children: [
-      {
-        name: 'dashboard-v0',
-        path: 'v0',
-        component: () => import('@/views/dashboard/v0/index'),
-        meta: { title: 'V0' }
       },
       {
-        name: 'dashboard-v1',
-        path: 'v1',
-        component: () => import('@/views/dashboard/v1/index'),
-        meta: { title: 'V1' }
+        name: 'group',
+        path: 'group',
+        component: () => import('@/views/device/group/index'),
+        meta: { title: '分组管理' }
       }
     ]
   },
@@ -395,35 +382,43 @@ export const asyncRoutes = [
     ]
   },
   {
-    path: '/l',
+    path: '/d',
     component: Layout,
-    access: Access.VIEW_LOGS,
-    meta: { icon: 'logger' },
+    meta: { icon: 'logger', title: '调试' },
     children: [
       {
-        path: '',
+        path: 'logger',
         name: 'logger',
         component: () => import('@/views/platform/logger/index'),
+        access: Access.VIEW_LOGS,
         meta: { title: '操作日志' }
-      }
-    ]
-  },
-  {
-    path: '/d',
-    component: Layout,
-    access: Access.MANAGE_TENANTS,
-    meta: { icon: 'bug', title: '调试' },
-    children: [
+      },
       {
-        path: 'logger',
-        name: 'debug',
-        component: () => import('@/views/realm/debug/index'),
-        meta: { title: '日志' }
+        name: 'dashboard-v0',
+        path: 'v0',
+        component: () => import('@/views/dashboard/v0/index'),
+        access: [Access.MANAGE_TENANTS, Access.MANAGE_TENANT],
+        meta: { title: '大数据V0' }
+      },
+      {
+        name: 'dashboard-v1',
+        path: 'v1',
+        component: () => import('@/views/dashboard/v1/index'),
+        access: [Access.MANAGE_TENANTS, Access.MANAGE_TENANT],
+        meta: { title: '大数据V1' }
+      },
+      {
+        path: 'mqtt',
+        name: 'mqtt',
+        component: () => import('@/views/platform/debug/index'),
+        access: Access.MANAGE_TENANTS,
+        meta: { title: 'MQTT' }
       },
       {
         path: 'simulator',
         name: 'simulator',
-        component: () => import('@/views/realm/debug/simulator/index'),
+        component: () => import('@/views/platform/simulator/index'),
+        access: Access.MANAGE_TENANTS,
         meta: { title: '模拟器' }
       }
     ]
@@ -437,13 +432,13 @@ export const asyncRoutes = [
       {
         path: 'apk',
         name: 'upgrade-apk',
-        component: () => import('@/views/realm/upgrade/index'),
+        component: () => import('@/views/platform/upgrade/index'),
         meta: { title: '版本管理' }
       },
       {
         path: 'deploy',
         name: 'upgrade-deploy',
-        component: () => import('@/views/realm/upgrade/deploy/index'),
+        component: () => import('@/views/platform/upgrade/deploy/index'),
         meta: { title: '发布升级' }
       }
     ]
@@ -452,7 +447,7 @@ export const asyncRoutes = [
     hidden: true,
     name: 'program',
     path: '/cm/program/:id',
-    component: () => import('@/views/bigscreen/ast/index'),
+    component: () => import('@/views/screen/material/program/ast/index'),
     props: true
   },
   {

+ 0 - 0
src/views/realm/debug/debug.js → src/views/platform/debug/debug.js


+ 0 - 0
src/views/realm/debug/index.vue → src/views/platform/debug/index.vue


+ 0 - 0
src/views/realm/debug/simulator/index.vue → src/views/platform/simulator/index.vue


+ 0 - 0
src/views/realm/debug/simulator/simulate.js → src/views/platform/simulator/simulate.js


+ 0 - 0
src/views/realm/upgrade/deploy/index.vue → src/views/platform/upgrade/deploy/index.vue


+ 0 - 0
src/views/realm/upgrade/index.vue → src/views/platform/upgrade/index.vue


+ 0 - 125
src/views/review/components/ReviewPublish.vue

@@ -1,125 +0,0 @@
-<template>
-  <schema-table
-    ref="table"
-    :schema="schema"
-    @row-click="onToggle"
-  >
-    <program-dialog ref="programDialog" />
-    <schedule-dialog ref="scheduleDialog" />
-  </schema-table>
-</template>
-
-<script>
-import {
-  getPublishes,
-  resolvePublish
-} from '@/api/platform'
-import {
-  State,
-  EventPriority,
-  EventPriorityDescription,
-  EventTarget,
-  PublishType
-} from '@/constant'
-import { getEventDescription } from '@/utils/event'
-import mixin from './mixin'
-
-export default {
-  name: 'ReviewPublish',
-  mixins: [mixin],
-  data () {
-    return {
-      schema: {
-        condition: { status: State.SUBMITTED },
-        list: getPublishes,
-        transform: this.transform,
-        cols: [
-          { prop: 'expand', type: 'expand', render (data, h) {
-            return h('div', {
-              staticClass: 'o-info'
-            }, [
-              h('div', null, data.desc),
-              h('div', null, `设备:${data.device}`)
-            ])
-          } },
-          { prop: 'type', label: '类型', width: 100 },
-          { prop: 'name', label: '名称', 'min-width': 100 },
-          { prop: 'resolutionRatio', label: '分辨率' },
-          { prop: 'createBy', label: '申请人' },
-          { prop: 'createTime', label: '提交时间' },
-          { type: 'invoke', width: 160, render: [
-            { label: '查看', on: this.onView },
-            { label: '通过', on: this.onResolve },
-            { label: '驳回', on: this.onReject }
-          ] }
-        ]
-      }
-    }
-  },
-  methods: {
-    resolve: resolvePublish,
-    transform (item) {
-      const same = this.getSame(item)
-      const diff = this.getDiff(item)
-      return { ...same, ...diff }
-    },
-    getSame ({ id, programCalendarName, resolutionRatio, createBy, createByUsername, createTime, calendarReleaseDeviceList }) {
-      return {
-        id,
-        name: programCalendarName,
-        resolutionRatio,
-        createBy: createByUsername || createBy,
-        createTime,
-        device: calendarReleaseDeviceList?.map(item => item.deviceName).join(',')
-      }
-    },
-    getDiff (item) {
-      const target = JSON.parse(item.target)
-      let type = ''
-      switch (target.type) {
-        case PublishType.CALENDAR:
-          type = EventPriorityDescription[EventPriority.NORMAL]
-          break
-        case PublishType.EVENT:
-          type = EventPriorityDescription[target.detail.priority]
-          break
-        default:
-          break
-      }
-      return {
-        type,
-        target,
-        desc: this.getDesc(target)
-      }
-    },
-    getDesc (target) {
-      if (target.type === PublishType.EVENT && target.detail.priority === EventPriority.INSERTED) {
-        return getEventDescription(target.detail)
-      }
-      return ''
-    },
-    onToggle (row) {
-      this.$refs.table.getInst().toggleRowExpansion(row)
-    },
-    onView ({ target: { type, detail } }) {
-      switch (type) {
-        case PublishType.CALENDAR:
-          this.viewSchedule(detail)
-          break
-        case PublishType.EVENT:
-          if (detail.target.type === EventTarget.RECUR) {
-            this.viewSchedule(detail.target.id)
-          } else {
-            this.$refs.programDialog.show(detail.target.id)
-          }
-          break
-        default:
-          break
-      }
-    },
-    viewSchedule (id) {
-      this.$refs.scheduleDialog.show(id)
-    }
-  }
-}
-</script>

+ 0 - 0
src/views/schedule/deploy/index.vue → src/views/screen/deploy/index.vue


+ 1 - 1
src/views/platform/media/MediaDesigner.vue → src/views/screen/material/media/MediaDesigner.vue

@@ -7,7 +7,7 @@
     >
       <el-tab-pane
         label="待审核"
-        name="101"
+        name="111"
       />
       <el-tab-pane
         label="已审核"

+ 0 - 0
src/views/platform/media/MediaViewer.vue → src/views/screen/material/media/MediaViewer.vue


+ 0 - 0
src/views/platform/media/index.vue → src/views/screen/material/media/index.vue


+ 1 - 1
src/views/platform/media/mixin.js → src/views/screen/material/media/mixin.js

@@ -69,7 +69,7 @@ export default {
           this.isVideo || this.isAudio ? { prop: 'duration', label: '时长' } : null,
           { prop: 'size', label: '文件大小' },
           { prop: 'createTime', label: '上传时间' },
-          { prop: 'ai', label: 'AI审核', type: 'tag', width: 100 },
+          this.active === `${State.RESOLVED}` ? null : { prop: 'ai', label: 'AI审核', type: 'tag', width: 100 },
           { type: 'invoke', align: 'center', width: 140, render: [
             { label: '查看', on: this.onView },
             { label: '删除', render ({ del }) { return del }, on: this.onDel }

+ 0 - 0
src/views/bigscreen/Program.vue → src/views/screen/material/program/Program.vue


+ 0 - 0
src/views/bigscreen/ProgramDesigner.vue → src/views/screen/material/program/ProgramDesigner.vue


+ 0 - 0
src/views/bigscreen/ProgramViewer.vue → src/views/screen/material/program/ProgramViewer.vue


+ 0 - 0
src/views/bigscreen/ast/Designer.vue → src/views/screen/material/program/ast/Designer.vue


+ 0 - 0
src/views/bigscreen/ast/Previewer.vue → src/views/screen/material/program/ast/Previewer.vue


+ 0 - 0
src/views/bigscreen/ast/Viewer.vue → src/views/screen/material/program/ast/Viewer.vue


+ 0 - 0
src/views/bigscreen/ast/components/ContentMenu.vue → src/views/screen/material/program/ast/components/ContentMenu.vue


+ 0 - 0
src/views/bigscreen/ast/components/DynamicItem.vue → src/views/screen/material/program/ast/components/DynamicItem.vue


+ 0 - 0
src/views/bigscreen/ast/components/Volume.vue → src/views/screen/material/program/ast/components/Volume.vue


+ 0 - 0
src/views/bigscreen/ast/components/WidgetShortcut.vue → src/views/screen/material/program/ast/components/WidgetShortcut.vue


+ 0 - 0
src/views/bigscreen/ast/core/components/Draggable.vue → src/views/screen/material/program/ast/core/components/Draggable.vue


+ 0 - 0
src/views/bigscreen/ast/core/config-json/base.js → src/views/screen/material/program/ast/core/config-json/base.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/canvas.js → src/views/screen/material/program/ast/core/config-json/canvas.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/image.js → src/views/screen/material/program/ast/core/config-json/image.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/live.js → src/views/screen/material/program/ast/core/config-json/live.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/marquee.js → src/views/screen/material/program/ast/core/config-json/marquee.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/media.js → src/views/screen/material/program/ast/core/config-json/media.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/text.js → src/views/screen/material/program/ast/core/config-json/text.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/time.js → src/views/screen/material/program/ast/core/config-json/time.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/video.js → src/views/screen/material/program/ast/core/config-json/video.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/weather.js → src/views/screen/material/program/ast/core/config-json/weather.js


+ 0 - 0
src/views/bigscreen/ast/core/config-json/web.js → src/views/screen/material/program/ast/core/config-json/web.js


+ 0 - 0
src/views/bigscreen/ast/core/constant.js → src/views/screen/material/program/ast/core/constant.js


+ 0 - 0
src/views/bigscreen/ast/core/utils.js → src/views/screen/material/program/ast/core/utils.js


+ 0 - 0
src/views/bigscreen/ast/core/widget/CImage.vue → src/views/screen/material/program/ast/core/widget/CImage.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CLive.vue → src/views/screen/material/program/ast/core/widget/CLive.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CMarquee.vue → src/views/screen/material/program/ast/core/widget/CMarquee.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CMedia.vue → src/views/screen/material/program/ast/core/widget/CMedia.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CText.vue → src/views/screen/material/program/ast/core/widget/CText.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CTime.vue → src/views/screen/material/program/ast/core/widget/CTime.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CVideo.vue → src/views/screen/material/program/ast/core/widget/CVideo.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CWeather.vue → src/views/screen/material/program/ast/core/widget/CWeather.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/CWeb.vue → src/views/screen/material/program/ast/core/widget/CWeb.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/Widget.vue → src/views/screen/material/program/ast/core/widget/Widget.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/WidgetViewer.vue → src/views/screen/material/program/ast/core/widget/WidgetViewer.vue


+ 0 - 0
src/views/bigscreen/ast/core/widget/widget.js → src/views/screen/material/program/ast/core/widget/widget.js


+ 0 - 0
src/views/bigscreen/ast/index.vue → src/views/screen/material/program/ast/index.vue


+ 0 - 0
src/views/bigscreen/ast/mixin.js → src/views/screen/material/program/ast/mixin.js


+ 0 - 0
src/views/bigscreen/index.vue → src/views/screen/material/program/index.vue


+ 0 - 0
src/views/bigscreen/mixin.js → src/views/screen/material/program/mixin.js


+ 0 - 0
src/views/schedule/ScheduleDesigner.vue → src/views/screen/material/schedule/ScheduleDesigner.vue


+ 0 - 0
src/views/schedule/ScheduleViewer.vue → src/views/screen/material/schedule/ScheduleViewer.vue


+ 0 - 0
src/views/schedule/designer/index.vue → src/views/screen/material/schedule/designer/index.vue


+ 0 - 0
src/views/schedule/index.vue → src/views/screen/material/schedule/index.vue


+ 0 - 0
src/views/schedule/mixin.js → src/views/screen/material/schedule/mixin.js


+ 0 - 0
src/views/review/history/index.vue → src/views/screen/review/history/index.vue


+ 54 - 3
src/views/review/components/ReviewAsset.vue → src/views/screen/review/single/components/ReviewAsset.vue

@@ -32,8 +32,9 @@ export default {
           { prop: 'typeName', label: '类型', align: 'center', width: 80 },
           { prop: 'file', type: 'asset', on: this.onViewAsset },
           { prop: 'originalName', label: '' },
-          { prop: 'duration', label: '时长' },
           { prop: 'size', label: '文件大小' },
+          { prop: 'duration', label: '其他' },
+          { prop: 'ai', label: 'AI审核', type: 'tag', width: 100 },
           { prop: 'createBy', label: '申请人' },
           { prop: 'createTime', label: '提交时间', 'min-width': 100 },
           { type: 'invoke', width: 160, render: [
@@ -49,17 +50,67 @@ export default {
     resolve: resolveAsset,
     transform (asset) {
       const { type } = asset
-      asset.typeName = [null, '图片', '视频', '音频'][type]
+      asset.typeName = [null, '图片', '视频', '音频', 'PPT', 'PDF', 'WORD'][type]
       asset.file = {
         type: asset.type,
         url: asset.keyName,
-        thumbnail: asset.thumbnail
+        thumbnail: asset.thumbnail,
+        files: (asset.childrenData || []).map(({ type, keyName }) => {
+          return { type, url: keyName }
+        })
       }
       asset.duration = parseDuration(asset.duration)
       asset.size = parseByte(asset.size)
+      asset.ai = this.getAIState(asset)
       asset.createBy = asset.userName || asset.createBy
       return asset
     },
+    getAIState ({ aiAuditState: status, aiAuditMsg: msg }) {
+      switch (status) {
+        case 1:
+          return {
+            type: 'danger',
+            label: '不合规'
+          }
+        case 2:
+          return {
+            type: 'warning',
+            label: '疑似',
+            msg
+          }
+        case 3:
+          return {
+            type: 'info',
+            label: '审核失败',
+            msg
+          }
+        case 4:
+        case 5:
+        case 6:
+          return {
+            type: 'primmary',
+            label: '审核中'
+          }
+        case 7:
+          return {
+            type: 'success',
+            label: '通过'
+          }
+        case 8:
+          return {
+            type: 'info',
+            label: '无法审核',
+            msg
+          }
+        case 9:
+          return {
+            type: 'info',
+            label: '未开启'
+          }
+        default:
+          return null
+      }
+    },
     onView ({ file }) {
       this.onViewAsset(file)
     },

+ 1 - 1
src/views/review/components/ReviewProgram.vue → src/views/screen/review/single/components/ReviewProgram.vue

@@ -21,7 +21,7 @@ export default {
   data () {
     return {
       schema: {
-        condition: { status: State.REVIEW },
+        condition: { status: State.SUBMITTED },
         list: getPrograms,
         transform: this.transform,
         cols: [

+ 1 - 1
src/views/review/components/ReviewProgramRecur.vue → src/views/screen/review/single/components/ReviewProgramRecur.vue

@@ -26,7 +26,7 @@ export default {
       schema: {
         condition: {
           type: ScheduleType.RECUR,
-          status: State.REVIEW
+          status: State.REVIEW_SUBMITTED
         },
         list: getSchedules,
         cols: [

+ 1 - 1
src/views/review/components/ReviewSchedule.vue → src/views/screen/review/single/components/ReviewSchedule.vue

@@ -26,7 +26,7 @@ export default {
       schema: {
         condition: {
           type: ScheduleType.COMPLEX,
-          status: State.REVIEW
+          status: State.REVIEW_SUBMITTED
         },
         list: getSchedules,
         cols: [

+ 0 - 0
src/views/review/components/mixin.js → src/views/screen/review/single/components/mixin.js


+ 1 - 10
src/views/review/index.vue → src/views/screen/review/single/index.vue

@@ -25,10 +25,6 @@
         label="排期审核"
         name="ReviewSchedule"
       />
-      <el-tab-pane
-        label="发布审核"
-        name="ReviewPublish"
-      />
     </el-tabs>
     <component
       :is="active"
@@ -75,13 +71,11 @@
 import { rejectAsset } from '@/api/asset'
 import { rejectProgram } from '@/api/program'
 import { rejectSchedule } from '@/api/calendar'
-import { rejectPublish } from '@/api/platform'
 import { cancelRequest } from '@/utils/request'
 import ReviewAsset from './components/ReviewAsset'
 import ReviewProgram from './components/ReviewProgram'
 import ReviewProgramRecur from './components/ReviewProgramRecur'
 import ReviewSchedule from './components/ReviewSchedule'
-import ReviewPublish from './components/ReviewPublish'
 
 export default {
   name: 'Review',
@@ -89,8 +83,7 @@ export default {
     ReviewAsset,
     ReviewProgram,
     ReviewProgramRecur,
-    ReviewSchedule,
-    ReviewPublish
+    ReviewSchedule
   },
   data () {
     return {
@@ -116,8 +109,6 @@ export default {
         case 'ReviewProgramRecur':
         case 'ReviewSchedule':
           return rejectSchedule
-        case 'ReviewPublish':
-          return rejectPublish
         default:
           return () => Promise.reject()
       }

+ 0 - 0
src/views/review/workflow/detail/components/ReviewAssets.vue → src/views/screen/review/workflow/detail/components/ReviewAssets.vue


+ 0 - 0
src/views/review/workflow/detail/components/ReviewDialog.vue → src/views/screen/review/workflow/detail/components/ReviewDialog.vue


+ 0 - 0
src/views/review/workflow/detail/components/ReviewPrograms.vue → src/views/screen/review/workflow/detail/components/ReviewPrograms.vue


+ 0 - 0
src/views/review/workflow/detail/components/ReviewPublish.vue → src/views/screen/review/workflow/detail/components/ReviewPublish.vue


+ 0 - 0
src/views/review/workflow/detail/components/ReviewRecurPrograms.vue → src/views/screen/review/workflow/detail/components/ReviewRecurPrograms.vue


+ 0 - 0
src/views/review/workflow/detail/components/ReviewSchedule.vue → src/views/screen/review/workflow/detail/components/ReviewSchedule.vue


+ 0 - 0
src/views/review/workflow/detail/components/mixin.js → src/views/screen/review/workflow/detail/components/mixin.js


+ 0 - 0
src/views/review/workflow/detail/index.vue → src/views/screen/review/workflow/detail/index.vue


+ 0 - 0
src/views/review/workflow/index.vue → src/views/screen/review/workflow/index.vue


+ 0 - 0
src/views/review/workflow/mine/index.vue → src/views/screen/review/workflow/mine/index.vue