previewStrategy.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  1. <style lang="scss" scoped>
  2. .previewStrategy{
  3. .moduler {
  4. .opt {
  5. text-align: right;
  6. }
  7. width: 100%;
  8. background: #fff;
  9. margin-bottom: 16px;
  10. position: relative;
  11. padding: 32px 24px 48px 32px;
  12. // border-radius: 4px;
  13. // box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.05);
  14. .moduler-title {
  15. display: flex;
  16. align-items: center;
  17. font-size: 22px;
  18. margin-bottom: 20px;
  19. }
  20. .extraClass{
  21. .row-item {
  22. margin-bottom: 20px;
  23. }
  24. }
  25. .row-item {
  26. display: flex;
  27. justify-content: flex-start;
  28. align-items: center;
  29. margin-bottom: 25px;
  30. }
  31. .row-item:last-of-type {
  32. margin-bottom: 0;
  33. }
  34. .row-item .hint-item {
  35. width: 24px;
  36. min-width: 24px;
  37. align-self: flex-start;
  38. line-height: 20px;
  39. height: 20px;
  40. margin-top: 9px;
  41. }
  42. .row-item .label-item {
  43. position: relative;
  44. align-items: flex-start;
  45. align-self: flex-start;
  46. line-height: 20px;
  47. height: 20px;
  48. margin-top: 10px;
  49. width: 80px;
  50. min-width: 80px;
  51. .text-item {
  52. font-size: 14px;
  53. width: 60px;
  54. }
  55. }
  56. .row-item .required-item {
  57. width: 4px;
  58. height: 4px;
  59. border-radius: 2px;
  60. background: #f45858;
  61. position: absolute;
  62. right: 10px;
  63. top: 50%;
  64. transform: translateY(-50%);
  65. }
  66. .row-item .input-item {
  67. min-width: 480px;
  68. position: relative;
  69. // height: 35px;
  70. .tip {
  71. font-size: 12px;
  72. color: tomato;
  73. }
  74. }
  75. .adName{
  76. display: flex;
  77. .nameList{
  78. width: 90%;
  79. }
  80. .item{
  81. display: inline-block;
  82. width: 30%;
  83. margin-left: 15px;
  84. margin-bottom: 10px;
  85. }
  86. }
  87. }
  88. .toolbox-automate-rules-create-body {
  89. margin: 16px 0 16px ;
  90. padding: 32px 32px 16px;
  91. background-color: #fff;
  92. border-radius: 4px;
  93. }
  94. .toolbox-automate-rules-create-content_title {
  95. background-color: #fff;
  96. display: flex;
  97. flex-flow: row nowrap;
  98. justify-content: flex-start;
  99. align-items: center;
  100. margin-bottom: 28px;
  101. h3 {
  102. font-size: 22px;
  103. margin: 0;
  104. font-weight: 400;
  105. height: 30px;
  106. line-height: 30px;
  107. }
  108. }
  109. .toolbox-automate-rules-create-content {
  110. padding-left: 28px;
  111. }
  112. ul,li{
  113. margin: 0;
  114. padding: 0;
  115. }
  116. width: 100%;
  117. .topBody{
  118. width: 100%;
  119. background: #FFFFFF;
  120. margin-bottom: 12px;
  121. padding: 20px;
  122. box-sizing: border-box;
  123. .breadcrumb{
  124. height: 22px;
  125. font-size: 12px;
  126. font-family: PingFangSC-Regular, PingFang SC;
  127. font-weight: 400;
  128. color: #000000;
  129. line-height: 22px;
  130. }
  131. .bottom{
  132. display: flex;
  133. position: relative;
  134. justify-content: space-between;
  135. // padding: 20px;
  136. .orderIcon{
  137. width: 28px;
  138. height: 28px;
  139. margin-right: 15px;
  140. img{
  141. width: 100%;
  142. }
  143. }
  144. .tip{
  145. .greet{
  146. width: 300px;
  147. height: 28px;
  148. font-size: 20px;
  149. font-family: PingFangSC-Medium, PingFang SC;
  150. font-weight: 500;
  151. color: rgba(0, 0, 0, 0.85);
  152. line-height: 28px;
  153. margin-bottom: 5px;
  154. }
  155. .descPosition{
  156. font-size: 14px;
  157. font-family: PingFangSC-Regular, PingFang SC;
  158. font-weight: 400;
  159. color: rgba(0, 0, 0, 0.45);
  160. overflow: hidden;
  161. margin-bottom: 0;
  162. li{
  163. height: 22px;
  164. line-height: 22px;
  165. margin-top:3px ;
  166. }
  167. span{
  168. width: 250px;
  169. display: inline-block;
  170. }
  171. }
  172. }
  173. .optBody{
  174. width: 200px;
  175. flex-shrink:0;
  176. // justify-content: flex-end;
  177. text-align: right;
  178. .btnBody{
  179. margin-bottom: 10px;
  180. }
  181. .orderInfo{
  182. display: flex;
  183. justify-content: space-between;
  184. text-align: right;
  185. p{
  186. margin-bottom: 0;
  187. }
  188. .markName{
  189. height: 22px;
  190. font-size: 14px;
  191. font-family: PingFangSC-Regular, PingFang SC;
  192. font-weight: 400;
  193. color: rgba(0, 0, 0, 0.45);
  194. line-height: 22px;
  195. }
  196. .big{
  197. height: 28px;
  198. font-size: 20px;
  199. font-family: PingFangSC-Regular, PingFang SC;
  200. font-weight: 400;
  201. color: rgba(0, 0, 0, 0.85);
  202. line-height: 28px;
  203. }
  204. }
  205. }
  206. }
  207. }
  208. .section{
  209. background: white;
  210. padding:20px ;
  211. .breadcrumb{
  212. height: 22px;
  213. font-size: 12px;
  214. font-family: PingFangSC-Regular, PingFang SC;
  215. font-weight: 400;
  216. color: #000000;
  217. line-height: 22px;
  218. }
  219. .sectionBody{
  220. p{
  221. margin-bottom: 0;
  222. }
  223. .section-item{
  224. background: white;
  225. margin-bottom: 20px;
  226. }
  227. .tabBox{
  228. padding: 15px 20px 0;
  229. display: flex;
  230. flex-wrap: wrap;
  231. position: relative;
  232. .search-item{
  233. margin-bottom: 12px;
  234. width: 30%;
  235. }
  236. .opt-item{
  237. position: absolute;
  238. right: 20px;
  239. top: 16px;
  240. }
  241. }
  242. .sectionHead{
  243. padding: 15px 20px;
  244. // height: 24px;
  245. font-size: 16px;
  246. font-family: PingFangSC-Medium, PingFang SC;
  247. font-weight: 500;
  248. color: rgba(0, 0, 0, 0.85);
  249. line-height: 24px;
  250. border-bottom: 1px solid #E9E9E9;;
  251. .allOrder{
  252. float: right;
  253. }
  254. }
  255. .section-box{
  256. margin-top: 30px;
  257. padding: 20px 20px;
  258. border: 1px solid #E9E9E9;
  259. .description{
  260. margin-top: 10px;
  261. .time{
  262. height: 32px;
  263. line-height: 32px;
  264. }
  265. }
  266. ul{
  267. display: flex;
  268. flex-wrap: wrap;
  269. // justify-content: space-around;
  270. }
  271. li{
  272. width: 30%;
  273. height: 22px;
  274. font-size: 14px;
  275. font-family: PingFangSC-Regular, PingFang SC;
  276. font-weight: 400;
  277. color: rgba(0, 0, 0, 0.85);
  278. line-height: 22px;
  279. text-align: left;
  280. margin-bottom: 15px;
  281. }
  282. .top{
  283. margin-bottom: 25px;
  284. }
  285. .bottom{
  286. h4{
  287. font-size: 15px;
  288. font-family: PingFangSC-Medium, PingFang SC;
  289. font-weight: 600;
  290. color: rgba(0, 0, 0, 0.85);
  291. margin-bottom: 25px;
  292. }
  293. }
  294. .shenhe{
  295. width: 6px;
  296. height: 6px;
  297. display: inline-block;
  298. background: #52C41A;
  299. border-radius: 50%;
  300. position: relative;
  301. top: -2px;
  302. }
  303. .wancheng{
  304. width: 6px;
  305. height: 6px;
  306. display: inline-block;
  307. background: #1890FF;
  308. border-radius: 50%;
  309. // margin-right: 3px;
  310. position: relative;
  311. top: -2px;
  312. }
  313. .bohui{
  314. width: 6px;
  315. height: 6px;
  316. display: inline-block;
  317. background: #F5222D;
  318. border-radius: 50%;
  319. position: relative;
  320. top: -2px;
  321. }
  322. }
  323. }
  324. }
  325. }
  326. .videoBox{
  327. height: 240px;
  328. }
  329. .imgBox{
  330. width: 90%;
  331. }
  332. .videomarterialInfo{
  333. position: relative;
  334. height: 800px;
  335. }
  336. .marterialInfo{
  337. overflow: auto;
  338. height: 800px;
  339. position: relative;
  340. p{margin-bottom: 0;}
  341. ul,li{
  342. margin: 0;
  343. padding: 0;
  344. }
  345. .info-item{
  346. margin-bottom: 20px;
  347. display: flex;
  348. // justify-content: center;
  349. align-items: flex-start;
  350. span{
  351. display: inline-block;
  352. width: 70px;
  353. text-align: left;
  354. flex-shrink: 0;
  355. }
  356. .ant-tag{
  357. width: auto;
  358. min-width: 50px;
  359. text-align: center;
  360. }
  361. }
  362. .info{
  363. ul{
  364. width: 100%;
  365. display: flex;
  366. justify-content: space-between;
  367. flex-wrap: wrap;
  368. }
  369. li{
  370. width: 33.3%;
  371. margin-bottom: 20px;
  372. }
  373. margin-bottom: 0;
  374. }
  375. // .btnBody{
  376. // width: 100%;
  377. // height: 80px;
  378. // position: relative;
  379. // }
  380. .bottom-btn{
  381. width: 100%;
  382. text-align: center;
  383. position: absolute;
  384. bottom: 0px;
  385. left: 0;
  386. // margin-top: 20px;
  387. }
  388. .scriptbottom-btn{
  389. width: 100%;
  390. // height: 60px;
  391. line-height: 60px;
  392. text-align: center;
  393. position: absolute;
  394. bottom: 0px;
  395. left: 0;
  396. }
  397. }
  398. </style>
  399. <style lang="less">
  400. .previewStrategy{
  401. .ant-timeline-item-head{
  402. background: rgb(240,242,245);
  403. }
  404. .muen{
  405. cursor: pointer;
  406. }
  407. .muen:hover{
  408. color: #1890ff;
  409. }
  410. }
  411. </style>
  412. <template>
  413. <div class="previewStrategy ">
  414. <a-spin :spinning="spinning">
  415. <div class="toolbox-automate-rules-create-body">
  416. <div class="toolbox-automate-rules-create-content_title"><h3>策略预览</h3></div>
  417. <div class="toolbox-automate-rules-create-content">
  418. <a-table
  419. size="middle"
  420. :columns="columns"
  421. :dataSource="data"
  422. id="outTable"
  423. :pagination="ipagination"
  424. :loading="loading"
  425. @change="sort"
  426. style="word-break: break-all;"
  427. :bordered='true'
  428. >
  429. <div slot="materialStatus" slot-scope="text" >
  430. <span class="wancheng" v-if="text==7"> </span>
  431. <span class="bohui" v-else-if="text==6||text==3"> </span>
  432. <span class="shenhe" v-else> </span>
  433. {{text | handlerMaterialStatus}}
  434. </div>
  435. <div slot="scriptStatus" slot-scope="text,record">
  436. <span v-if="record.materialStatus==0&&role=='design'">-</span>
  437. <a href="javascript:;" v-if="record.materialStatus==0&&role=='designLeader'" @click="scriptAssign(record)">指派</a>
  438. <span v-else>
  439. <a href="javascript:;" @click="scriptViewDetails(record)">{{record.planName}}</a>
  440. </span>
  441. </div>
  442. <div slot="videoStatus" slot-scope="text,record">
  443. <span v-if="record.materialStatus==0&&role=='design'">-</span>
  444. <a href="javascript:;" v-if="record.materialStatus==0&&role=='designLeader'" @click="videoAssign(record)">指派</a>
  445. <span v-else>
  446. <a href="javascript:;" @click="viewDetails(record)">{{record.clipName}}</a>
  447. </span>
  448. </div>
  449. <div slot="operator" slot-scope="text,record">
  450. <a href="javascript:;" @click="goDetail(record)">查看详情</a>
  451. </div>
  452. </a-table>
  453. <a-drawer
  454. title="视频详情"
  455. width="800"
  456. :placement="placement"
  457. :closable="false"
  458. :visible="visible"
  459. @close="onClose"
  460. >
  461. <a-tabs
  462. default-active-key="1"
  463. tab-position="top"
  464. :style="{ height: '200px' }"
  465. @prevClick="callback"
  466. @nextClick="callback"
  467. >
  468. <a-tab-pane v-for="i in 30" :key="i" :tab="`Tab-${i}`"> </a-tab-pane>
  469. </a-tabs>
  470. <a-spin :spinning="visibleLoading">
  471. <div class="marterialInfo videomarterialInfo">
  472. <div class="info-item">
  473. <span>素材类型:</span>
  474. <p>{{ currentVideo.videoStatus | handlerVideoStatus }}</p>
  475. </div>
  476. <div class="info-item">
  477. <span>视频预览:</span>
  478. <div class="videoBox">
  479. <video style="height:100%" :src="currentVideo.url" controls v-if="currentVideo.url"></video>
  480. <img :src="defaultPic" alt="" style="width:100px;margin:0 10px 8px 0" v-else>
  481. </div>
  482. </div>
  483. <div class="info-item">
  484. <span>封面预览:</span>
  485. <div class="imgBox">
  486. <div >
  487. <template v-if="currentVideo.imgList&&currentVideo.imgList.length">
  488. <img alt="" style="width:100px;margin:0 10px 8px 0" v-for="(item,index) in currentVideo.imgList" :key='index' :src="item">
  489. </template>
  490. <span v-else>暂无封面</span>
  491. </div>
  492. </div>
  493. </div>
  494. <div class="info-item" >
  495. <span>创意标题:</span>
  496. <p>
  497. </p>
  498. </div>
  499. <div class="info-item" >
  500. <span>广告语:</span>
  501. <p>
  502. </p>
  503. </div>
  504. <div class="info-item" >
  505. <span>行动号召:</span>
  506. <p>
  507. </p>
  508. </div>
  509. <div class="info-item" >
  510. <span>监测链接</span>
  511. <p>
  512. </p>
  513. </div>
  514. <div class="bottom-btn">
  515. <a-button type='default' @click="onClose">关闭</a-button>
  516. </div>
  517. </div>
  518. </a-spin>
  519. </a-drawer>
  520. </div>
  521. </div>
  522. <div class="moduler">
  523. <!-- <div class="moduler-title">计划名称</div> -->
  524. <div class="opt">
  525. <a-button type="default" style="margin-right:15px" @click="goBack">取消创建</a-button>
  526. <a-button type="primary" style="margin-right:15px" @click="saveHandler" :loading="saveLoading">确认创建</a-button>
  527. </div>
  528. </div>
  529. </a-spin>
  530. </div>
  531. </template>
  532. <script>
  533. import moment from 'moment';
  534. import qs from 'qs'
  535. import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
  536. import Vue from 'vue'
  537. import {ACCESS_TOKEN} from "@/store/mutation-types"
  538. import BMF from 'browser-md5-file'
  539. import { fileCheck, fileCheckImage, fileEdit, fileEditAll,orderFileInsert} from '@/api/actor'
  540. import uploadFile from '@/components/uploadFile.vue'
  541. import { closeAllVideoFun, stopOtherVideo } from '@/utils/videoControl'
  542. import UploadToAli from '@femessage/upload-to-ali'
  543. import { mapGetters } from 'vuex'
  544. import TrendVue from '../../../components/Trend/Trend.vue';
  545. let listColumns=[
  546. {
  547. title: '广告组',
  548. dataIndex: 'materialName',
  549. align: 'center',
  550. key: 'materialName',
  551. scopedSlots: { customRender: 'materialName' }
  552. },
  553. {
  554. title: '所属计划',
  555. dataIndex: 'materialId',
  556. align: 'center',
  557. key: 'tag',
  558. scopedSlots: { customRender: 'materialId' }
  559. },
  560. {
  561. title: '优化目标',
  562. dataIndex: 'materialStatus',
  563. align: 'center',
  564. key: 'materialStatus',
  565. scopedSlots: { customRender: 'materialStatus' }
  566. },
  567. {
  568. title: '出价',
  569. dataIndex: 'scriptStatus',
  570. align: 'center',
  571. key: 'scriptStatus',
  572. scopedSlots: { customRender: 'scriptStatus' }
  573. },
  574. {
  575. title: '深度优化目标',
  576. dataIndex: 'videoStatus',
  577. align: 'center',
  578. key: 'videoStatus',
  579. width:250,
  580. scopedSlots: { customRender: 'videoStatus' }
  581. },
  582. {
  583. title: '深度优化出价',
  584. dataIndex: 'orderTitle',
  585. align: 'center',
  586. key: 'orderTitle',
  587. scopedSlots: { customRender: 'orderTitle' }
  588. },
  589. {
  590. title: '广告位置',
  591. dataIndex: 'position',
  592. align: 'center',
  593. key: 'position',
  594. scopedSlots: { customRender: 'position' }
  595. },
  596. {
  597. title: '创意',
  598. dataIndex: 'operator',
  599. align: 'center',
  600. key: 'operator',
  601. scopedSlots: { customRender: 'operator' }
  602. },
  603. ]
  604. export default {
  605. name:'preview-strategy',
  606. data() {
  607. return {
  608. spinning:false,
  609. currentVideo:{},
  610. visible: false,
  611. visibleLoading:false,
  612. placement: 'right',
  613. loading:false,
  614. data:[],
  615. columns:[...listColumns],
  616. url:{
  617. assgin:'/platform/designer/assign',
  618. scriptDetail:'/platform/material/scriptDetail',
  619. videoDetail:'/platform/material/videoDetail',
  620. scriptAccept:'/platform/material/script/accept',
  621. scriptReject:'/platform/material/script/reject',
  622. videoAccept:'/platform/material/video/accept',
  623. videoReject:'/platform/material/video/reject',
  624. },
  625. ipagination: {
  626. current: 1,
  627. pageSize: 10,
  628. // pageSizeOptions: ['10', '20', '30'],
  629. showTotal: (total, range) => {
  630. return range[0] + "-" + range[1] + " 共" + total + "条"
  631. },
  632. showQuickJumper: true,
  633. showSizeChanger:true,
  634. pageSizeOptions: ['10', '30', '50'],
  635. total: 0,
  636. onChange: (current, pageSize) => {
  637. // 切换分页时的回调,
  638. // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
  639. this.ipagination.current = current;
  640. this.ipagination.pageSize= pageSize;
  641. }
  642. },
  643. }
  644. },
  645. methods: {
  646. goDetail(record){
  647. consoel.log(record);
  648. this.visible=true;
  649. },
  650. callback(val) {
  651. console.log(val);
  652. },
  653. onClose() {
  654. this.visible = false;
  655. },
  656. sort(pagination, filters, sorter, { currentDataSource }){
  657. this.ipagination.current=pagination.current;
  658. this.ipagination.pageSize=pagination.pageSize;
  659. this.materialHttp(this.activeKey)
  660. },
  661. // 请求列表
  662. getListHttp(type){
  663. this.loading=true;
  664. this.data=[];
  665. let params=this.handlerParams(type)
  666. params={
  667. ...params,
  668. pageNo:this.ipagination.current,
  669. pageSize:this.ipagination.pageSize
  670. }
  671. getAction('/platform/material/listByRole',params).then(res=>{
  672. console.log(res);
  673. if(res.success){
  674. this.loading=false;
  675. this.data=res.result.list;
  676. this.ipagination.total=res.result.total;
  677. }
  678. })
  679. },
  680. saveHandler(){
  681. this.$refs.ruleForm.validate(valid=> {
  682. if (valid) {
  683. // this.form.rulesList=this.rulesList;
  684. console.log(valid,this.form);
  685. this.saveLoading=true;
  686. if(this.currentRuleId){
  687. let ruleList=this.form.ruleList.filter(item=>{
  688. return !item.groupId
  689. })
  690. console.log(ruleList)
  691. if(ruleList.length>0){
  692. postAction(this.url.createRuleGroup,{
  693. templateId:this.currentRuleId,
  694. ruleList
  695. }).then(res=>{
  696. console.log(res);
  697. this.saveLoading=false;
  698. if(res.success){
  699. this.$router.push('/earlyWarningRules/index')
  700. this.$bus.$emit('remove', `/earlyWarningRules/configRules?id=${this.currentRuleId}`)
  701. }else{
  702. this.$message.error(res.message)
  703. }
  704. })
  705. }else{
  706. this.$router.push('/earlyWarningRules/index')
  707. this.$bus.$emit('remove', `/earlyWarningRules/configRules?id=${this.currentRuleId}`)
  708. }
  709. }else{
  710. postAction(this.url.creativeTemplate,this.form).then(res=>{
  711. console.log(res);
  712. this.saveLoading=false;
  713. if(res.success){
  714. this.$router.push('/earlyWarningRules/index')
  715. this.$bus.$emit('remove', '/earlyWarningRules/configRules')
  716. }else{
  717. this.$message.error(res.message)
  718. }
  719. })
  720. }
  721. } else {
  722. console.log('error submit!!');
  723. this.$message.error('请按提示填写必填项目!')
  724. return false;
  725. }
  726. });
  727. },
  728. goBack() {
  729. this.$router.push('/earlyWarningRules/index')
  730. this.$bus.$emit('remove', '/earlyWarningRules/configRules')
  731. },
  732. },
  733. mounted(){
  734. },
  735. activated() {
  736. },
  737. filters:{
  738. handlerMaterialStatus(val){
  739. let str='';
  740. switch(val){
  741. case 0:
  742. str= '待指派'
  743. break;
  744. case 1:
  745. str= '脚本待上传'
  746. break;
  747. case 2:
  748. str= '脚本待审核'
  749. break;
  750. case 3:
  751. str= '脚本被驳回'
  752. break;
  753. case 4:
  754. str= '视频待上传'
  755. break;
  756. case 5:
  757. str= '视频待审核'
  758. break;
  759. case 6:
  760. str= '视频被驳回'
  761. break;
  762. case 7:
  763. str= '物料已完结'
  764. break;
  765. default:
  766. str='出错了'
  767. break;
  768. }
  769. return str
  770. },
  771. handlerVideoStatus(val){
  772. let str='';
  773. switch(val){
  774. case 0:
  775. str= '待上传'
  776. break;
  777. case 1:
  778. str= '待审核'
  779. break;
  780. case 2:
  781. str= '被驳回'
  782. break;
  783. case 3:
  784. str= '已审核'
  785. break;
  786. default:
  787. str='出错了'
  788. break;
  789. }
  790. return str
  791. },
  792. },
  793. }
  794. </script>