Przeglądaj źródła

'暂存下单制'

魏志佳 4 lat temu
rodzic
commit
0f99d3e70e

+ 8 - 5
src/views/modules/earlyWarningRules/configRules.vue

@@ -164,7 +164,7 @@
                                         <div class="title">                                            
                                             <a-form-model-item ref="ruleRelationship"  prop="ruleRelationship">
                                                 <span class="condition-title">如果</span>
-                                                <a-select  style="width: 300px" v-model="item.ruleRelationship">
+                                                <a-select  style="width: 300px" v-model="item.ruleRelationship" :disabled="!!item.groupId">
                                                     <a-select-option  value='and'>满足以下所有条件</a-select-option>
                                                     <a-select-option  value='or'>满足以下任意条件</a-select-option>
                                                 </a-select>
@@ -240,7 +240,7 @@
                                                     
                                             </div>
                                                
-                                            <div class="add-rule" @click="addCondition(item,index)" > 添加条件</div>
+                                            <div class="add-rule" @click="addCondition(item,index)" v-show="item.ruleType=='group'"> 添加条件</div>
                                         </div>
                                     </div>
                                     <div class="toolbox-automate-rules-create-content_rules-and-condition_rules">
@@ -385,11 +385,14 @@ export default {
     methods: {
         
         ruleTypeChange(item){
-            
+            console.log(item)
             if(item.ruleType=='base'){
-                item.isCopy=0
+                item.isCopy=0;
+                item.ruleDetail=item.ruleDetail.filter((item,index)=>{
+                    return index==0
+                })
             }
-            
+            console.log(item)
         },
         inputCheck(val){
             console.log(val)

+ 24 - 7
src/views/modules/workBench/designLeader/platForm.vue

@@ -98,8 +98,8 @@
                                         <div style="display:flex;width:80%; align-items: center;" >
                                             <span class="item-icon"></span>
                                             <div class="content">
-                                                <p class="name">我是一个任务名称嗷嗷嗷啊</p>
-                                                <p class="desc">这是对这个任务的简介,所以得好好寻…</p>
+                                                <p class="name">{{item.orderTitle}}</p>
+                                                <p class="desc">{{item.orderRemark}}</p>
                                             </div>
                                         </div>
                                         
@@ -187,9 +187,7 @@ export default {
             touxiang:'@/assets/touxiang.png',
             // 订单进度
             orderProgressList:[
-                {},
-                {},
-                {}
+               
             ],
 
             // 操作记录
@@ -224,12 +222,31 @@ export default {
         },
         // 分页页码改变
         pageChange(page, pageSize){
-
+             this.currentPage=page;
+            this.getOrderList()
         },
         // 全部订单
         allOrder() {
             this.$router.push('/workBench/orderList')
         },
+        // 获取订单列表
+        getOrderList(){
+          
+            let params={
+                design:this.userInfo.id,
+                pageNo:this.currentPage,
+                pageSize:10,
+            }
+            getAction('/platform/order/listByCreatorOrDesignLeader',params).then(res=>{
+                console.log(res);
+                this.loading=false;
+                if(res.success){
+                    this.orderProgressList=res.result.records;
+                    this.totalPage=res.result.total;
+
+                }
+            })
+        },
         
     },
     mounted(){
@@ -238,7 +255,7 @@ export default {
             this.userInfo=JSON.parse(userInfo).value
         }
         this.roleCode=localStorage.getItem('roleCode')
-        
+        this.getOrderList()
         
     }
 }

+ 168 - 54
src/views/modules/workBench/operator/materialList.vue

@@ -355,30 +355,16 @@
                                 {{text | handleMaterialStatus}}
                             </div>
                             <div slot="scriptStatus" slot-scope="text,record">
-                                <div v-if="text==0||text==2">脚本未上传</div>
-                                <div v-if="text==1">
-                                    <a href="javascript:;" @click="scriptViewDetails(record)">预览</a>
-                                    <a-divider type="vertical" />
-                                    <a href="javascript:;" @click="scriptApproved(record)">通过</a>
-                                    <a-divider type="vertical" />
-                                    <a href="javascript:;" @click="scriptReject(record)">驳回</a>
-                                </div>
-                                <div v-if="text==3">
-                                     <a href="javascript:;" @click="scriptViewDetails(record)">预览</a>
-                                </div>
+                                <span v-if="record.materialStatus==0">-</span>
+                                <span v-else>
+                                     <a href="javascript:;" @click="scriptViewDetails(record)">{{record.plan}}</a>
+                                </span>
                             </div>
                             <div slot="videoStatus" slot-scope="text,record">
-                                <div v-if="text==0||text==2">视频未上传</div>
-                                <div v-if="text==1">
-                                    <a href="javascript:;" @click="viewDetails(record)">预览</a>
-                                    <a-divider type="vertical" />
-                                    <a href="javascript:;" @click="approved(record)">通过</a>
-                                    <a-divider type="vertical" />
-                                    <a href="javascript:;" @click="reject(record)">驳回</a>
-                                </div>
-                                <div v-if="text==3">
-                                     <a href="javascript:;" @click="viewDetails(record)">预览</a>
-                                </div>
+                                <span v-if="record.materialStatus==0">-</span>
+                                <span v-else>
+                                     <a href="javascript:;" @click="viewDetails(record)">{{record.plan}}</a>
+                                </span>
                             </div>
                            
 
@@ -443,49 +429,41 @@
                     </a-drawer>
                     <a-drawer
                     title="脚本详情"
-                    width="640"
+                    width="800"
                     :placement="placement"
                     :closable="false"
                     :visible="scriptVisible"
                     @close="scriptClose"
                     >
-                        <div class="videoBody">
-                            <div class="videoBox">
-                                <video :src="currentMaterial.src" ></video>
-                            </div>
-                            
-                            <div class="imgBox">
-                                <img src="" alt="">
-                                <img src="" alt="">
-                            </div>
-                        </div>
+                        
                         <div class="marterialInfo">
                             <div class="info-item">
                                 <span>脚本状态:</span>
-                                <p>未审核</p>
+                                <p>{{ currentScript.scriptStatus | handlerVideoStatus }}</p>
                             </div>
                             <div class="info-item">
                                 <span>所属项目:</span>
-                                <p>所属项目:充电得宝 快手 北京汇创思拓有限公司</p>
+                                <p>{{currentScript.projectName}}</p>
                                 
                             </div>
                             <div class="info-item">
                                 <span>所属物料:</span>
-                                <p>所属项目:充电得宝 快手 北京汇创思拓有限公司</p>
+                                <p>{{currentScript.materialName}}</p>
                             </div>
                             <div class="info-item">
                                 <span>编导:</span>
-                                <p>吴永前</p>
+                                <p>{{currentScript.planName}}</p>
                             </div>
                             <div class="info-item">
                                 <span>脚本:</span>
-                                <p></p>
+                                <p v-if="currentScript.scriptStatus==0">暂无</p>
+                                <p v-else><a :href="currentScript.url">{{currentScript.scriptName}}</a></p>
+
                             </div>
                                                        
                             <div class="bottom-btn">
-                                <a-button type='primary' @click="approved" style="margin-right:20px">通过审核</a-button>
-                                <a-button type='default' @click="reject">驳回</a-button>
-                                <a-button type='default' @click="dowmLoadScript">下载脚本</a-button>
+                                <a-button type='primary' @click="scriptApproved" style="margin-right:20px" >通过审核</a-button>
+                                <a-button type='default' @click="scriptReject" style="margin-right:20px" >驳回</a-button>
                                 <a-button type='default' @click="scriptClose">关闭</a-button>
                             </div>
                         </div>
@@ -512,10 +490,10 @@ let columns=[
     },
     {
         title: '物料编号',
-        dataIndex: 'id',
+        dataIndex: 'materialId',
         align: 'center',        
         key: 'tag',
-        scopedSlots: { customRender: 'id' }
+        scopedSlots: { customRender: 'materialId' }
     },
     {
         title: '物料状态',
@@ -559,7 +537,10 @@ export default {
             { title: '视频列表', content: '', key: 2 , },           
         ];
         return {
-            
+            currentScript:{},
+            currentVideo:{},
+
+
             userInfo:{},
             roleCode:'',
 
@@ -603,6 +584,15 @@ export default {
 
             sizeType:[],
             size: "4",
+
+            url:{
+                scriptDetail:'/platform/material/scriptDetail',
+                videoDetail:'/platform/material/videoDetail',
+                scriptAccept:'/platform/material/script/accept',
+                scriptReject:'/platform/material/script/reject',
+                videoAccept:'/platform/material/video/accept',
+                videoReject:'/platform/material/video/reject',
+            }
         }
     },
     methods: {
@@ -638,14 +628,48 @@ export default {
 
         // 查看详情
         viewDetails(record){
-            console.log(record)
            this.visible=true;
+            this.currentMaterial=record
+            this.currentVideo={};
+            if(record.scriptId){
+                getAction(this.url.videoDetail,{
+                    scriptId:record.scriptId
+                }).then(res=>{
+                    console.log(res);
+                    if(res.success){
+                        this.currentVideo=res.result;
+                        this.scriptVisible = true;
+                    }else{
+                        this.currentVideo={};
+                    }
+                })
+            }else{
+                this.currentVideo=record
+                this.scriptVisible = true;
+            }
         },
         // 查看详情
         scriptViewDetails(record){
             console.log(record)
             this.scriptVisible=true;
-            // this.$router.push(`/workBench/orderDetail?orderId=${record.id}`)
+            this.currentMaterial=record
+            this.currentScript={};
+            if(record.scriptId){
+                getAction(this.url.scriptDetail,{
+                    scriptId:record.scriptId
+                }).then(res=>{
+                    console.log(res);
+                    if(res.success){
+                        this.currentScript=res.result;
+                        this.scriptVisible = true;
+                    }else{
+                        this.currentScript={};
+                    }
+                })
+            }else{
+                this.currentScript=record
+                this.scriptVisible = true;
+            }
         },
         
         
@@ -684,21 +708,86 @@ export default {
         },
         // 请求素材
         materialHttp(){
-            // this.loading=true;           
+            this.loading=true;           
             this.data=[];
+            getAction(this.url.materialList,{
+                orderCode:this.currentOrderInfo.orderCode
+            }).then(res=>{
+                console.log(res);
+                if(res.success){
+                    this.data=res.result.records;
+                    this.ipagination.total=res.result.total
+                }
+            })
         },
 
         
 
         
 
+        // 脚本通过审核
+        scriptApproved(){
+            postAction(this.url.scriptAccept,{
+                id:this.currentMaterial.materialId
+            }).then(res=>{
+                console.log(res);
+
+                this.scriptVisible=false;
+                if(res.success){
+                    this.$message.success(res.message);
+                    this.tableHttp(this.$parent.materialStatus)
+                }else{
+                    this.$message.error(res.message)
+                }
+            })
+        },
+        // 脚本驳回
+        scriptReject(){
+            postAction(this.url.scriptReject,{
+                id:this.currentMaterial.materialId
+            }).then(res=>{
+                console.log(res);
+
+                this.scriptVisible=false;
+                if(res.success){
+                    this.$message.success(res.message);
+                    this.tableHttp(this.$parent.materialStatus)
+                }else{
+                    this.$message.error(res.message)
+                }
+            })
+        },
         // 视频通过审核
         approved(){
+           postAction(this.url.videoAccept,{
+                id:this.currentMaterial.materialId
+            }).then(res=>{
+                console.log(res);
 
+                this.vsible=false;
+                if(res.success){
+                    this.$message.success(res.message);
+                    this.tableHttp(this.$parent.materialStatus)
+                }else{
+                    this.$message.error(res.message)
+                }
+            })
         },
         // 视频驳回
         reject(){
+            postAction(this.url.videoReject,{
+                id:this.currentMaterial.materialId
+            }).then(res=>{
+                console.log(res);
 
+                this.scriptVisible=false;
+                if(res.success){
+                    this.$message.success(res.message);
+                    this.tableHttp(this.$parent.materialStatus)
+                }else{
+                    this.$message.error(res.message)
+                }
+            })
         },
         
         search(){
@@ -720,10 +809,10 @@ export default {
                 pageSize:this.ipagination.pageSize
             }
             console.log(params)
-            getAction('/platform/designer/listByOperatorUserId',params).then(res=>{
+            getAction('/platform/material/listByOperatorUserId',params).then(res=>{
                 console.log(res);
                 if(res.success){
-                    this.data=res.result.records;
+                    this.data=res.result.list;
                     this.ipagination.total=res.result.total;
 
                 }
@@ -734,8 +823,7 @@ export default {
             if(this.$parent.role=='operator'){
                 if(status==1){
                     return {
-                        materialStatus:0,
-                        createBy:this.userInfo.id
+                        operatorUserId:this.userInfo.id
                     }
                 }
             }else if(this.$parent.role=='designLeader'){
@@ -784,11 +872,13 @@ export default {
         }
         this.roleCode=localStorage.getItem('roleCode')
         console.log(this.$parent.materialStatus)
+        this.tableHttp(this.$parent.materialStatus)
+        this.activeKey=this.$parent.materialStatus
     },
     activated() {
         
-        this.activeKey=this.$parent.materialStatus
-        this.tableHttp(this.$parent.materialStatus)
+       
+        // this.tableHttp(this.$parent.materialStatus)
     },
     filters:{
         handleMaterialStatus(val){
@@ -827,7 +917,31 @@ export default {
                     break;
             }
             return text
-        }
+        },
+
+        handlerVideoStatus(val){
+            let str='';
+            switch(val){
+                
+                case 0:
+                    str= '待上传'
+                    break;
+                case 1:
+                    str= '待审核'
+                    break;
+                case 2:
+                    str= '被驳回'
+                    break;
+                case 3:
+                    str= '已审核'
+                    break;
+                default:
+                    str='出错了'
+                    break;
+            }
+            return str
+        },
+
     },
 
 }

+ 24 - 7
src/views/modules/workBench/operator/platForm.vue

@@ -90,8 +90,8 @@
                                         <div style="display:flex;width:80%; align-items: center;" >
                                             <span class="item-icon"></span>
                                             <div class="content">
-                                                <p class="name">我是一个任务名称嗷嗷嗷啊</p>
-                                                <p class="desc">这是对这个任务的简介,所以得好好寻…</p>
+                                                <p class="name">{{item.orderTitle}}</p>
+                                                <p class="desc">{{item.orderRemark}}</p>
                                             </div>
                                         </div>
                                         
@@ -179,9 +179,7 @@ export default {
             touxiang:'@/assets/touxiang.png',
             // 订单进度
             orderProgressList:[
-                {},
-                {},
-                {}
+                
             ],
 
             // 操作记录
@@ -216,7 +214,8 @@ export default {
         },
         // 分页页码改变
         pageChange(page, pageSize){
-
+            this.currentPage=page;
+            this.getOrderList()
         },
         
         // 发起订单
@@ -224,6 +223,24 @@ export default {
             this.$parent.currentTabComponent='placeOrder';
             
         },
+        // 获取订单列表
+        getOrderList(){
+          
+            let params={
+                createBy:this.userInfo.id,
+                pageNo:this.currentPage,
+                pageSize:10,
+            }
+            getAction('/platform/order/listByCreatorOrDesignLeader',params).then(res=>{
+                console.log(res);
+                this.loading=false;
+                if(res.success){
+                    this.orderProgressList=res.result.records;
+                    this.totalPage=res.result.total;
+
+                }
+            })
+        },
     },
     mounted(){
         let userInfo=localStorage.getItem('pro__Login_Userinfo');
@@ -231,7 +248,7 @@ export default {
             this.userInfo=JSON.parse(userInfo).value
         }
         this.roleCode=localStorage.getItem('roleCode')
-        
+        this.getOrderList()
         
     }
 }

+ 545 - 96
src/views/modules/workBench/orderDetail.vue

@@ -59,8 +59,11 @@
                         margin-top:3px ;
                     }
                     span{
-                        width: 250px;
+                        width: 400px;
                         display: inline-block;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap;
                     }
                 }
 
@@ -306,20 +309,22 @@
                         <img src="@/assets/orderIcon.png" alt="">
                     </div>  
                     <div class='tip'>
-                        <p class="greet">订单标题</p>
+                        <p class="greet">{{currentOrderInfo.orderTitle}}</p>
                         <p class="descPosition">
                         <ul>
                             <li>
-                                <span>订单发起人:{{}}</span>
-                                <span>关联项目:{{}}</span>
+                                <span>订单编号:{{currentOrderInfo.orderCode}}</span>
+                                <span>订单周期:{{currentOrderInfo.startDate+'~'+currentOrderInfo.endDate}}</span>
                             </li>
                             <li>
-                                <span>创建时间:{{}}</span>
-                                <span>设计负责人:{{}}</span>
+                                <span>订单发起人:{{currentOrderInfo.createBy}}</span>
+                                <span>关联项目:{{}}</span>
                             </li>
                             <li>
-                                <span>订单周期:{{}}</span>
+                                <span>创建时间:{{currentOrderInfo.createTime}}</span>
+                                <span>设计负责人:{{currentOrderInfo.design}}</span>
                             </li>
+                            
                         </ul>
                         </p>
                     </div>
@@ -327,12 +332,10 @@
                
                 <div class="optBody">
                     <div class="btnBody" v-if="role=='designLeader'">
-                        <a-button type='primary' @click="confirmOrder" :loading='confirmOrderBtnLoading' v-if="currentOrderInfo.orderStatus==1">确认订单</a-button>
+                        <a-button type='primary' @click="confirmOrder" :loading='confirmOrderBtnLoading' v-if="currentOrderInfo.orderStatus==0">确认订单</a-button>
                         <a-popover
-                            title="Click title"
+                            title="驳回"
                             trigger="click"
-                            :visible="clicked"
-                            @visibleChange="handleClickChange"
                             >
                             <div slot="content">
                                <a-textarea
@@ -342,7 +345,7 @@
                                 />
                                 <a @click="rejectOrder">确定驳回</a>
                             </div>
-                             <a-button type='default'   :loading='rejectOrderBtnLoading' v-if="currentOrderInfo.orderStatus==1">驳回订单</a-button>
+                             <a-button type='default'   :loading='rejectOrderBtnLoading' v-if="currentOrderInfo.orderStatus==0">驳回订单</a-button>
                         </a-popover>
                        
                     </div>
@@ -359,11 +362,12 @@
                         
                         
                         <a-button type='default'  @click="editOrder" :loading='editOrderBtnLoading' v-if="currentOrderInfo.orderStatus==0||currentOrderInfo.orderStatus==2">修改订单</a-button>
+                        
                     </div>
                     <div class="orderInfo">
                         <div>
                             <p class="markName">状态</p>
-                            <p class="big">{{ orderInfo.status || '待确定'}}</p>
+                            <p class="big">{{ currentOrderInfo.orderStatus | handlerOrderStatus}}</p>
                         </div>
                         <div>
                             <p class="markName">订单进度</p>
@@ -383,38 +387,32 @@
                         <a-steps progress-dot :current="currentStep">
                             <a-step title="创建订单"  >
                                 <div class="description" slot="description" v-if="currentStep>=0">
-                                    <p class="people">吴永前</p>
-                                    <p class="time">2020-10-16 12:20</p>
+                                    <p class="people">{{currentOrderInfo.createTime}}</p>
+                                    <p class="time">{{currentOrderInfo.createTime}}</p>
                                 </div>
                                 
                             </a-step>
                             <a-step title="设计组长接单"  >
                                 <div class="description" slot="description" v-if="currentStep>=1">
-                                    <p class="people">王垒</p>
-                                    <p class="time" v-if="currentStep==1">
-                                        <a-button type='link' @click="hurryUp">催一下</a-button>
-                                    </p>
-                                    <p class="time" v-else>2020-10-16 12:20</p>
+                                    <p class="people">{{currentOrderInfo.createTime}}</p>
+                                    
+                                    <p class="time" v-if="currentStep>1">{{currentOrderInfo.createTime}}</p>
                                 </div>
                                 
                             </a-step>
                             <a-step title="素材制作"  >
                                 <div class="description" slot="description" v-if="currentStep>=2">
-                                    <p class="people">王垒</p>
-                                    <p class="time" v-if="currentStep==2">
-                                        <a-button type='link'  @click="hurryUp">催一下</a-button>
-                                    </p>
-                                    <p class="time" v-else>2020-10-16 12:20</p>
+                                    <p class="people">{{currentOrderInfo.createTime}}</p>
+                                   
+                                    <p class="time" v-if="currentStep>2">2020-10-16 12:20</p>
                                 </div>
                                 
                             </a-step>
                             <a-step title="订单完成"  >
                                 <div class="description" slot="description" v-if="currentStep>=3">
                                     <p class="people">吴永前</p>
-                                    <p class="time" v-if="currentStep==3">
-                                        <a-button type='link'  @click="checkAccept">待验收</a-button>
-                                    </p>
-                                    <p class="time" v-else>2020-10-16 12:20</p>
+                                    
+                                    <p class="time" v-if="currentStep==3">{{currentOrderInfo.createTime}}</p>
                                 </div>
                                 
                             </a-step>
@@ -429,22 +427,22 @@
                         <div class="top">
                             <ul>
                                 <li>
-                                    订单所含物料总数:<span>20</span>
+                                    订单所含物料总数:<span>{{currentOrderInfo.materialAmount}}</span>
                                 </li>
                                 <li>
-                                    真人物料数<span>10</span>
+                                    真人物料数:<span>{{currentOrderInfo.realAmount}}</span>
                                 </li>
                                 <li>
-                                    投放系统<span>安卓</span>
+                                    投放系统:<span>{{currentOrderInfo.sysName|handlerSysName}}</span>
                                 </li>
                                 <li>
-                                    要求日更物料数:<span>4</span>
+                                    要求日更物料数:<span>{{currentOrderInfo.materialAmountDay}}</span>
                                 </li>
                                 <li>
-                                    剪辑物料数:<span>10</span>
+                                    剪辑物料数:<span>{{currentOrderInfo.cutAmount}}</span>
                                 </li>
                                 <li>
-                                    APK包<span>https://down.xmiles.cn/down/18205/1873295</span>
+                                    APK包:<span>{{currentOrderInfo.sysPackage || '未填写'}}</span>
                                 </li>
                                
                             </ul>
@@ -463,19 +461,19 @@
                         </div>
                         <div class="bottom">
                             <h4>备注</h4>
-                            <p>我是北方的方式发送到发送到发送到地方个梵蒂冈地方滚滚滚的方法滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答</p>
+                            <p>{{currentOrderInfo.orderRemark}}</p>
                         </div>
                     </div>
 
                 </div>
                 <!-- 素材列表 -->
-                <div class="section-item">
-                    <div class="tabBox">
+                <div class="section-item" v-if="currentOrderInfo.orderStatus==1||currentOrderInfo.orderStatus==3">
+                    <!-- <div class="tabBox">
                         <a-tabs v-model="tabKey" @change="tabChange">
                             <a-tab-pane :key='1' tab="真人物料"></a-tab-pane>
                             <a-tab-pane :key='2' tab="剪辑物料"></a-tab-pane>
                         </a-tabs>
-                    </div>
+                    </div> -->
                         
                     
                     <div class="section-box">
@@ -506,12 +504,10 @@
 
                                 <a href="javascript:;" @click="viewDetails(record)">详情</a>
                                 <a-divider type="vertical" />
-                                <a href="javascript:;" @click="hurryUp(record)">催一下</a>
-                                <a-divider type="vertical" />
                                 <a href="javascript:;" @click="viewDetails(record)">通过</a>
                                 <a-divider type="vertical" />
                                 <a href="javascript:;" @click="viewDetails(record)">驳回</a>
-                                <a-divider type="vertical" />
+                                <!-- <a-divider type="vertical" /> -->
 
                                 <!-- <a-divider type="vertical" />
                                 <a href="javascript:;" @click="recordsRule(record)">计划分析</a>
@@ -523,18 +519,34 @@
                                     <a href="javascript:;" >删除</a>
                                 </a-popconfirm> -->                                
                             </span>
-                            <span slot="scriptOptions" slot-scope="text,record">
-                                <a href="javascript:;" @click="viewDetails(record)">预览脚本</a>                                   
+                            <span slot="scriptStatus" slot-scope="text,record">
+                                
+                                <span v-if="record.materialStatus==0">
+                                    <a href="javascript:;" v-if="role=='designLeader'" @click="scriptAssign(record)">指派</a>
+                                    <span v-else>-</span>
+                                </span>
+                                <span v-else>
+                                     <a href="javascript:;" @click="scriptViewDetails(record)">{{record.plan}}</a>
+                                </span>
+                                                       
+                                                                   
                             </span>
-                            <span slot="scriptOptions" slot-scope="text,record">
-                                <a href="javascript:;" @click="viewDetails(record)">预览视频</a>                                            
+                            <span slot="videoStatus" slot-scope="text,record">
+                                <span v-if="record.materialStatus==0">
+                                    <a href="javascript:;" v-if="role=='designLeader'" @click="scriptAssign(record)">指派</a>
+                                    <span v-else>-</span>
+                                </span>
+                                <span v-else>
+                                     <a href="javascript:;" @click="viewDetails(record)">{{record.shot}}</a>
+                                </span>                                    
                             </span>
 
                         </a-table>
                     </div>
+
                     <a-drawer
-                    title="素材详情"
-                    width="640"
+                    title="视频详情"
+                    width="800"
                     :placement="placement"
                     :closable="false"
                     :visible="visible"
@@ -552,8 +564,8 @@
                         </div>
                         <div class="marterialInfo">
                             <div class="info-item">
-                                <span>素材状态:</span>
-                                <p>未审核</p>
+                                <span>视频状态:</span>
+                                <p>{{ currentMaterial.videoStatus | handlerVideoStatus }}</p>
                             </div>
                             <div class="info-item">
                                 <span>生成水印:</span>
@@ -589,7 +601,137 @@
                             </div>
                         </div>
                     </a-drawer>
+                    
+
+                    <a-drawer
+                    title="脚本详情"
+                    width="800"
+                    :placement="placement"
+                    :closable="false"
+                    :visible="scriptVisible"
+                    @close="scriptClose"
+                    >
+                        
+                        <div class="marterialInfo">
+                            <div class="info-item">
+                                <span>脚本状态:</span>
+                                <p>{{ currentScript.scriptStatus | handlerVideoStatus }}</p>
+                            </div>
+                            <div class="info-item">
+                                <span>所属项目:</span>
+                                <p>{{currentScript.projectName}}</p>
+                                
+                            </div>
+                            <div class="info-item">
+                                <span>所属物料:</span>
+                                <p>{{currentScript.materialName}}</p>
+                            </div>
+                            <div class="info-item">
+                                <span>编导:</span>
+                                <p>{{currentScript.planName}}</p>
+                            </div>
+                            <div class="info-item">
+                                <span>脚本:</span>
+                               
+                                <div v-if="currentScript.scriptStatus==0||currentScript.scriptStatus==2">
+                                   
+                                    <p v-if="currentMaterial.plan==userInfo.id">
+                                        <a-upload
+                                            name="file"
+                                            :multiple="false"
+                                            :action="uploadAction"
+                                            :headers="tokenHeader"
+                                            :showUploadList="false"
+                                            :beforeUpload="beforeUpload"
+                                            @change="handleChange"
+                                            style="margin-right:20px"
+                                            
+                                        >
+                                            <a-button :disabled="loadDisabled">
+                                            <a-icon type="upload" />
+                                            {{loadDisabled?'上传中,请稍后':'文件上传'}}
+                                            </a-button>
+                                        </a-upload>
+                                    </p>
+                                    <p v-else>                                       
+                                        <a-upload
+                                        name="file"
+                                        :multiple="false"
+                                        :action="uploadAction"
+                                        :headers="tokenHeader"
+                                        :showUploadList="false"
+                                        :beforeUpload="beforeUpload"
+                                        @change="handleChange"
+                                        style="margin-right:20px"
+                                            
+                                        >
+                                            <a-button :disabled="true">
+                                            <a-icon type="upload" />文件上传</a-button>
+                                        </a-upload>
+                                    </p>
+                                    
+                                </div>
+                                <div v-else>
+                                    <a :href="currentScript.url">{{currentScript.scriptName}}</a>
+                                </div>
+                            </div>
+                                                       
+                            <div class="bottom-btn">
+                                <a-button type='primary' @click="scriptApproved" style="margin-right:20px" v-if="role=='operator'&&currentMaterial.materialStatus==2">通过审核</a-button>
+                                <a-button type='default' @click="scriptReject" style="margin-right:20px" v-if="role=='operator'&&currentMaterial.materialStatus==2">驳回</a-button>
+                                <a-button type='primary' @click="dowmLoadScript" style="margin-right:20px">下载脚本</a-button>
+                                <a-button type='default' @click="scriptClose">关闭</a-button>
+                            </div>
+                        </div>
+                    </a-drawer>
+                    
                 </div>
+
+                <!-- 指派 -->
+                <a-modal v-model="assignVisible" title="物料指派"  width='600px'>
+                     <template slot="footer">
+                        <a-button key="back" @click="quxiao">取消</a-button>
+                        <a-button type="primary"  @click="handleOk" :loading="loadingElse">确定</a-button>
+                    </template>
+                    <a-form-model :model="formPerson" :label-col="labelCol" :wrapper-col="wrapperCol">
+
+                        <a-form-model-item  label="编导" >
+                            <a-select
+                                v-model="formPerson.plan"
+                                showSearch
+                                optionFilterProp="children"
+                                :filterOption="filterOption"
+                            >
+                            <a-select-option :value="item.userId" v-for="item of ascription" :key="item.userId">{{item.userName}}</a-select-option>
+                            </a-select>
+                        </a-form-model-item>
+                        <a-form-model-item  label="拍摄" >
+                            <a-select
+                                
+                                v-model="formPerson.shot"
+                                showSearch
+                                optionFilterProp="children"
+                                :filterOption="filterOption"
+                            >
+                            <a-select-option :value="item.userId" v-for="item of ascription" :key="item.userId">{{item.userName}}</a-select-option>
+                            </a-select>
+                        </a-form-model-item>
+                        <a-form-model-item label="剪辑">
+                            <a-select
+                                v-model="formPerson.clip"
+                                showSearch
+                                optionFilterProp="children"
+                                :filterOption="filterOption"
+                            >
+                            <a-select-option :value="item.userId" v-for="item of ascription" :key="item.userId">
+                                {{item.userName}}
+                            </a-select-option>
+                            </a-select>
+                        </a-form-model-item>
+                    </a-form-model>
+
+                </a-modal>
+                
             </div>
         </div>
         </a-spin>
@@ -599,44 +741,74 @@
 <script>
 import moment from 'moment';
 import { getAction, postAction, downFile, downFilePost } from '@/api/manage';
-
+import Vue from 'vue'
+import {ACCESS_TOKEN} from "@/store/mutation-types"
+const fileSuffix = [
+  'xls',
+  'xlt',
+  'et',
+  'xlsx',
+  'xltx',
+  'csv',
+  'xlsm',
+  'xltm',
+  'doc',
+  'dot',
+  'wps',
+  'wpt',
+  'docx',
+  'dotx',
+  'docm',
+  'dotm',
+  'ppt',
+  'pptx',
+  'pptm',
+  'ppsx',
+  'ppsm',
+  'pps',
+  'potx',
+  'potm',
+  'dpt',
+  'dps',
+  'pdf',
+]
 let realColumns=[
     {
         title: '物料标题',
-        dataIndex: 'name',
+        dataIndex: 'materialName',
         align: 'center',        
-        key: 'name',
-        scopedSlots: { customRender: 'name' }
+        key: 'materialName',
+        scopedSlots: { customRender: 'materialName' }
     },
     {
         title: '物料编号',
-        dataIndex: 'type',
+        dataIndex: 'id',
         align: 'center',        
-        key: 'type',
-        scopedSlots: { customRender: 'type' }
+        key: 'id',
+        scopedSlots: { customRender: 'id' }
     },
     {
         title: '物料进度',
-        dataIndex: 'status',
+        dataIndex: 'materialStatus',
         align: 'center',        
-        key: 'status',
-        scopedSlots: { customRender: 'status' }
+        key: 'materialStatus',
+        scopedSlots: { customRender: 'materialStatus' }
     },
     {
         title: '脚本',
-        dataIndex: 'scriptOptions',
+        dataIndex: 'scriptStatus',
         align: 'center',        
-        key: 'options',
+        key: 'scriptStatus',
         width:250,
-        scopedSlots: { customRender: 'scriptOptions' }
+        scopedSlots: { customRender: 'scriptStatus' }
     },
     {
         title: '视频',
-        dataIndex: 'videoOptions',
+        dataIndex: 'videoStatus',
         align: 'center',        
-        key: 'options',
+        key: 'videoStatus',
         width:250,
-        scopedSlots: { customRender: 'videoOptions' }
+        scopedSlots: { customRender: 'videoStatus' }
     },
 ]
 
@@ -674,15 +846,34 @@ let marterialData=[
 ]
 export default {
     name:'order-detail',
+    
     data() {
         return {
+            currentScript:{},
+            currentVideo:{},
+
+            tokenHeader: {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)},
+            uploadAction:'',
+
+            loadDisabled:false,
+            labelCol: { span: 4 },
+            wrapperCol: { span: 14 },
+            loadingElse: false,
+            formPerson:{
+                plan:'',
+                shot:'',
+                clip:'',
+            },
+            ascription: [],
+            assignVisible:false,
+
             pageSpinning:false,
             userInfo:{},
             roleCode:'',
             tabKey:1,
 
-            columns:[...materialColumns],
-            data:[...marterialData],
+            columns:[...realColumns],
+            data:[],
             loading:false,
             ipagination: {
                 current: 1,
@@ -710,6 +901,8 @@ export default {
             currentStep:1,
 
             visible: false,
+            scriptVisible:false,
+           
             placement: 'right',
             currentMaterial:{},
 
@@ -725,6 +918,12 @@ export default {
                 rejectOrder:'/platform/designer/reject',
 
                 withdrawOrder:'/platform/operator/destroy',
+
+                materialList:'/platform/material/listByOrderCode',
+                assgin:'/platform/designer/assign',
+
+                scriptDetail:'/platform/material/scriptDetail',
+                videoDetail:'/platform/material/videoDetail',
             },
 
             confirmOrderBtnLoading:false,
@@ -738,6 +937,76 @@ export default {
         }
     },
     methods: {
+        quxiao(){
+            this.assignVisible=false;
+        },
+
+        getProjectId(id) {
+            this.ascription=[];
+            getAction('/ctop/projectMember/getMemberList', {
+                projectId: id,
+            }).then((res) => {
+                if (res.code == 0) {
+                    this.ascription = res.result.filter((item) => {
+                        if (
+                        item.roleCode == 'clip' ||
+                        item.roleCode == 'plan' ||
+                        item.roleCode == 'designTeamLeader' ||
+                        item.roleCode == 'shot' ||
+                        item.roleCode == 'plane'
+                        ) {
+                        return {
+                            userId: item.userId,
+                            userName: item.userName,
+                        }
+                        }
+                    })
+                }
+            })
+        },
+        filterOption(input, option) {
+            return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+        },
+        // 脚本指派
+        scriptAssign(record){
+            console.log(record)
+            this.currentMaterial=record;
+            this.assignVisible=true;
+            this.formPerson={
+                plan:'',
+                shot:'',
+                clip:'',
+            },
+            this.getProjectId(record.projectId)
+        },
+        // 视频指派
+        videoAssign(record){
+            console.log(record)
+             this.formPerson={
+                plan:'',
+                shot:'',
+                clip:'',
+            },
+            this.currentMaterial=record;
+            this.assignVisible=true;
+            this.getProjectId(record.projectId)
+        },
+        handleOk(e) {
+            console.log(e);
+            this.loadingElse=true;
+            postAction(this.url.assgin,{
+                id:this.currentMaterial.id,
+               ...this.formPerson
+            }).then(res=>{
+                if(res.success){
+                    this.loadingElse=false;
+                    this.assignVisible = false;
+                    this.$message.success(res.message);
+                    this.materialHttp()
+                }
+            })
+            
+        },
         goPlantForm(){
             if(this.$parent.role=='operator'){
                 this.$parent.currentTabComponent='operatorPlatform'
@@ -750,7 +1019,10 @@ export default {
         // 确认订单
         confirmOrder(){
             this.confirmOrderBtnLoading=true;
-            postAction(this.url.confirmOrder,this.currentOrderInfo).then(res=>{
+            postAction(this.url.confirmOrder,{
+                designPassTime:moment().format('YYYY-MM-DD HH:mm:ss'),
+                ...this.currentOrderInfo
+            }).then(res=>{
                 console.log(res)
                 this.confirmOrderBtnLoading=false;
                 if(res.success){
@@ -809,27 +1081,42 @@ export default {
         // 查看详情
         viewDetails(record){
             console.log(record)
+            this.currentMaterial=record
+            this.currentVideo={};
             this.visible = true;
         },
-        
+        scriptViewDetails(record){
+            console.log(record)
+            this.currentMaterial=record
+            this.currentScript={};
+            if(record.scriptId){
+                getAction(this.url.scriptDetail,{
+                    scriptId:record.scriptId
+                }).then(res=>{
+                    console.log(res);
+                    if(res.success){
+                        this.currentScript=res.result;
+                        this.scriptVisible = true;
+                    }else{
+                        this.currentScript={};
+                    }
+                })
+            }else{
+                this.currentScript=record
+                this.scriptVisible = true;
+            }
+            
+        },
         onClose() {
             this.visible = false;
         },
-        // 撤回订单
-        withdrawOrder(){
-
+        scriptClose() {
+            this.scriptVisible = false;
         },
         
 
-        // 催一下
-        hurryUp(){
-
-        },
-
-        // 验收
-        checkAccept(){
-
-        },
+        
+       
 
         // 上传素材
         uploadMaterial(){
@@ -845,8 +1132,18 @@ export default {
         },
         // 请求素材
         materialHttp(){
-            // this.loading=true;           
+            this.loading=true;           
             this.data=[];
+            getAction(this.url.materialList,{
+                orderCode:this.currentOrderInfo.orderCode
+            }).then(res=>{
+                console.log(res);
+                if(res.success){
+                    this.data=res.result.records;
+                    this.ipagination.total=res.result.total
+                    this.loading=false
+                }
+            })
         },
 
         
@@ -854,20 +1151,36 @@ export default {
         // tabqiehuan
         tabChange(key){
             console.log(key);
-            if(key==1){
-                this.columns=[...materialColumns]
-            }else{
-                this.columns=[...scriptColumns]
-            }
+            
         },
 
-        // 素材通过审核
-        approved(){
-
+        // shipin通过审核
+        approved(record){
+            console.log(record);
+            if(record){
+                this.currentMaterial=record
+            }
         },
-        // 素材驳回
-        reject(){
-
+        // 视频驳回
+        reject(record){
+            console.log(record);
+            if(record){
+                this.currentMaterial=record
+            }
+        },
+        // 脚本通过审核
+        scriptApproved(record){
+            console.log(record);
+            if(record){
+                this.currentMaterial=record
+            }
+        },
+        // 脚本驳回
+        scriptReject(record){
+            console.log(record);
+            if(record){
+                this.currentMaterial=record
+            }
         },
         // 生成水印
         getWater() {
@@ -900,10 +1213,28 @@ export default {
                 this.pageSpinning=false;
                 if(res.success){
                     this.currentOrderInfo=res.result;
+                    if(res.result.orderStatus){
+                        switch(res.result.orderStatus){
+                            case 0:
+                                this.currentStep=1;
+                                break
+                            case 1:
+                                this.currentStep=2;
+                                break
+                            case 2:
+                                this.currentStep=0;
+                                break
+                            case 3:
+                                this.currentStep=3;
+                                break
+                        }
+                    }
+
+                    this.materialHttp()
                 }
             })
         },
-        // 请求物料列表数据
+        
         
 
         roleJudgement(role){
@@ -921,6 +1252,54 @@ export default {
                 return 4
             }
         },
+
+        // 下载脚本
+        dowmLoadScript(){
+
+        },
+
+
+        beforeUpload(file) {
+            this.uploadAction= `http://192.168.1.43:8098/jeecg-boot/platform/file/uploadScript?materialId=${this.currentMaterial.id}&projectId=${this.currentMaterial.projectId}`
+            this.loadDisabled = true
+            const size = (Number(file.size) / (1024 * 1024)).toFixed(2)
+            const fileName = file.name
+            const fileStrArr = fileName.split('.')
+            const suffix = fileStrArr[fileStrArr.length - 1]
+
+            let result = fileSuffix.some((item) => {
+                return item === suffix
+            })
+
+            if (!result) {
+                this.$message.error('不支持该文件类型')
+                this.loadDisabled = false
+                return false
+            }
+
+            if (size > 10) {
+                this.$message.error('文件不能大于10MB')
+                this.loadDisabled = false
+                return false
+            }
+            
+        },
+        handleChange(info) {
+            if (info.file.status !== 'uploading') {
+                console.log(info.file, info.fileList)
+            }
+            if (info.file.status === 'done') {
+                this.$message.success(`${info.file.name} 上传成功`)
+                this.loadDisabled = false
+                this.scriptVisible=false;
+                this.materialHttp()
+            } else if (info.file.status === 'error') {
+                this.$message.error(`${info.file.name} file upload failed.`)
+                this.loadDisabled = false
+                this.scriptVisible=false;
+            }
+        },
+
     },
     created(){
         
@@ -942,12 +1321,82 @@ export default {
         console.log(this.$parent.orderId)
         this.currentOrderId=this.$parent.orderId;
         this.role=this.$parent.role;  
-        
+        if(this.currentOrderId){
+            this.orderDetailHttp()
+        } 
     },
     activated() {
+        this.currentOrderId=this.$parent.orderId;
+        this.role=this.$parent.role;  
         if(this.currentOrderId){
             this.orderDetailHttp()
         } 
     },
+    filters:{
+        handlerSysName(val){
+            let str='';
+            switch(val){
+                
+                case '1':
+                    str= 'IOS'
+                    break;
+                case '2':
+                    str= '安卓'
+                    break;
+                case '3':
+                    str= '不限'
+                    break;
+                default:
+                    str='出错的'
+                    break;
+            }
+            return str
+            
+        },
+        handlerOrderStatus(val){
+            let str='';
+            switch(val){
+                
+                case 0:
+                    str= '待确定'
+                    break;
+                case 1:
+                    str= '制作中'
+                    break;
+                case 2:
+                    str= '已驳回'
+                    break;
+                case 3:
+                    str= '已完成'
+                    break;
+                default:
+                    str='出错了'
+                    break;
+            }
+            return str
+        },
+        handlerVideoStatus(val){
+            let str='';
+            switch(val){
+                
+                case 0:
+                    str= '待上传'
+                    break;
+                case 1:
+                    str= '待审核'
+                    break;
+                case 2:
+                    str= '被驳回'
+                    break;
+                case 3:
+                    str= '已审核'
+                    break;
+                default:
+                    str='出错了'
+                    break;
+            }
+            return str
+        }
+    }
 }
 </script>

+ 1 - 1
src/views/modules/workBench/orderList.vue

@@ -726,7 +726,7 @@ export default {
             this.panes=this.designLeaderPanes
         }
         this.activeKey=this.$parent.orderStatus
-
+        this.tableHttp(this.$parent.orderStatus)
 
     },
     filters:{

+ 9 - 5
src/views/modules/workBench/placeOrder.vue

@@ -511,9 +511,7 @@ export default {
             this.form.cutAmount=this.form.materialAmount-this.form.realAmount
         },
         goBack() {
-            this.$router.replace('/autoRules')
-            this.$bus.$emit('remove', '/newBlankRule')
-           
+            this.$parent.currentTabComponent='operatorPlatform';
         },
 
         saveHandler(){
@@ -532,8 +530,14 @@ export default {
                     postAction('/platform/operator/payout',params).then(res=>{
                         console.log(res);
                         if(res.success){
-                             this.$router.push('/workBench')
-                            this.$bus.$emit('remove', '/workBench/placeOrder')
+                            this.$parent.currentTabComponent='operatorPlatform';
+                            // if(this.$parent.role=='operator'){
+                            //     this.$parent.currentTabComponent='operatorPlatform'
+                            // }else if(this.$parent.role=='designLeader'){
+                            //     this.$parent.currentTabComponent='designleaderPlatform'
+                            // }else if(this.$parent.role=='design'){
+                            //     this.$parent.currentTabComponent='operatorPlatform'
+                            // }
                         }else{
                             this.$message.error(res.success)
                         }

+ 2 - 2
vue.config.js

@@ -68,11 +68,11 @@ module.exports = {
     open : true,
     proxy: {
       '/jeecg-boot': {
-         target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+        //  target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.188:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
-        // target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+        target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.1.43:8888', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉