<!DOCTYPE HTML> 
 | 
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> 
 | 
<head> 
 | 
    <meta charset="utf-8"> 
 | 
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
 | 
    <meta name="renderer" content="webkit|ie-comp|ie-stand"> 
 | 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 | 
    <meta name="viewport" 
 | 
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> 
 | 
    <meta http-equiv="Cache-Control" content="no-siteapp"/> 
 | 
    <!-- 本框架基本脚本和样式 --> 
 | 
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> 
 | 
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> 
 | 
    <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> 
 | 
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> 
 | 
  
 | 
    <!-- 富文本编辑器 --> 
 | 
    <script type="text/javascript" charset="utf-8" 
 | 
            th:src="@{/plugin/beditor/ueditor.config.js}"></script> 
 | 
    <script type="text/javascript" charset="utf-8" 
 | 
            th:src="@{/plugin/beditor/ueditor.all.js}"> 
 | 
    </script> 
 | 
    <script type="text/javascript" charset="utf-8" 
 | 
            th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> 
 | 
  
 | 
  
 | 
    <style> 
 | 
  
 | 
        .mform{ 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            margin-top: 10px; 
 | 
        } 
 | 
  
 | 
  
 | 
        .mixSearchBox .searchResultTable { 
 | 
            position: absolute; 
 | 
            padding: 10px; 
 | 
            border: 1px solid #e4e7ed; 
 | 
            border-radius: 4px; 
 | 
            background-color: #fff; 
 | 
            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); 
 | 
            box-sizing: border-box; 
 | 
            margin: 10px 0; 
 | 
            z-index: 99999999; 
 | 
        } 
 | 
        .el-icon-delete{ 
 | 
            cursor: pointer; 
 | 
        } 
 | 
        .el-icon-delete:hover{ 
 | 
            color: #F56C6C; 
 | 
        } 
 | 
        .tabs { 
 | 
            margin-bottom: 80px; 
 | 
        } 
 | 
        .foot_bar2 { 
 | 
            top: 98%; 
 | 
            position: absolute; 
 | 
            width: 98%; 
 | 
            height: 80px; 
 | 
            overflow: hidden; 
 | 
            left: 0px; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            z-index: 99; 
 | 
            justify-content: center; 
 | 
  
 | 
        } 
 | 
        .max-height{ 
 | 
            height: 98%; 
 | 
        } 
 | 
        .orderBox{ 
 | 
            position: relative; 
 | 
            border-left: 1px solid #EFEFEF; 
 | 
            padding-left: 10px; 
 | 
            margin-left:10px ; 
 | 
        } 
 | 
    </style> 
 | 
</head> 
 | 
<body> 
 | 
<div  class="ibox-content max-height" id="app" v-cloak> 
 | 
  
 | 
    <el-row class="max-height"> 
 | 
        <el-col :span="16" > 
 | 
            <el-tabs class="tabs" type="card" v-model="activeName" > 
 | 
                <el-tab-pane label="项目" name="tab1"> 
 | 
  
 | 
                    <el-table 
 | 
                            :data="projList" 
 | 
                            style="width: 98%"> 
 | 
                        <el-table-column 
 | 
                                prop="projName" 
 | 
                                label="项目"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="balance" 
 | 
                                label="余额" 
 | 
                                width="180"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="surplusCount" 
 | 
                                label="余次"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="failTimeStr" 
 | 
                                label="有效期"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="source" 
 | 
                                label="来源"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="address" 
 | 
                                label="操作"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-button v-if="scope.row.surplusCount>0"  type="primary" 
 | 
                                           size="mini" 
 | 
                                           @click="selected(scope.$index, scope.row)">添加 
 | 
                                </el-button> 
 | 
                            </template> 
 | 
                        </el-table-column> 
 | 
                    </el-table> 
 | 
  
 | 
  
 | 
                </el-tab-pane> 
 | 
                <el-tab-pane label="套餐" name="tab2"> 
 | 
                    <template v-for="(item,index) in taocanList" v-if="index > 3 ? tcIsOpen : true"> 
 | 
                        <p class="el-big-title">【{{item.isCourse=='N'?'固定套餐':'任选套餐'}}】{{item.projName}} 
 | 
                            <span style="float: right" v-if="item.failTime != null">有效期:{{item.failTime}}</span> 
 | 
                            <code v-if="item.projInfo.isCourse=='Y'" > 剩余次数:<span v-if="item.projInfo.isInfinite == 'Y'">无限次</span><span v-else>{{item.surplusCount}}</span> </code> 
 | 
                        </p> 
 | 
                        <el-table 
 | 
                                :data="item.taocanProjUse" 
 | 
                                style="width: 98%"> 
 | 
                            <el-table-column 
 | 
                                    prop="projName" 
 | 
                                    label="项目"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="balance" 
 | 
                                    label="余额" 
 | 
                                    width="180"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="surplusCount" 
 | 
                                    label="余次"> 
 | 
                            </el-table-column> 
 | 
<!--                            <el-table-column--> 
 | 
<!--                                    prop="failTimeStr"--> 
 | 
<!--                                    label="有效期">--> 
 | 
<!--                            </el-table-column>--> 
 | 
                            <el-table-column 
 | 
                                    prop="source" 
 | 
                                    label="来源"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="address" 
 | 
                                    label="操作"> 
 | 
                                <template slot-scope="scope"> 
 | 
                                    <el-button v-if="scope.row.surplusCount>0"  type="primary" 
 | 
                                               size="mini" 
 | 
                                               @click="selected(scope.$index, scope.row, item.projName)">添加 
 | 
                                    </el-button> 
 | 
                                </template> 
 | 
                            </el-table-column> 
 | 
                        </el-table> 
 | 
                    </template> 
 | 
                    <el-row style="text-align: center; margin-top: 5px;"> 
 | 
                        <el-link type="primary" v-if="!tcIsOpen && taocanList.length > 0" @click="tcIsOpen = true">点击展开</el-link> 
 | 
                        <el-link type="primary" v-if="tcIsOpen" @click="tcIsOpen = false">点击隐藏</el-link> 
 | 
                    </el-row> 
 | 
                </el-tab-pane> 
 | 
  
 | 
            </el-tabs> 
 | 
        </el-col> 
 | 
        <el-col :span="7" class="orderBox max-height"  > 
 | 
            <p class="el-big-title">服务开单</p> 
 | 
            <el-row class="mform"  v-for="(item,index) in orderItemList" > 
 | 
                <el-col :span="16" >{{item.projUse.projName}}</el-col> 
 | 
                <el-col :span="6" > 
 | 
                    <el-input @blur="checkCount(item)"  type="number"  v-model="item.count"> 
 | 
                    </el-input> 
 | 
                </el-col> 
 | 
                <el-col :offset="1" :span="1" > 
 | 
                    <i @click="remove(index)" class="el-icon-delete "></i> 
 | 
                </el-col> 
 | 
            </el-row> 
 | 
            <el-row class="foot_bar2"> 
 | 
                <el-button :loading="submiting" type="primary" @click="submitForm('form')" >添加</el-button> 
 | 
                <el-button @click="closeFram()">取消</el-button> 
 | 
            </el-row> 
 | 
        </el-col> 
 | 
    </el-row> 
 | 
  
 | 
  
 | 
  
 | 
</div> 
 | 
</body> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> 
 | 
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.umd.min.js"></script> 
 | 
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@^0.4.0/dist/vue-treeselect.min.css"> 
 | 
  
 | 
  
 | 
<script> 
 | 
    var id = $.query.get("id"); 
 | 
    //校验方法 
 | 
    var ValidatorFactory = { 
 | 
        validateUseCount: function (rule, value, callback) { 
 | 
            if ((true)) { 
 | 
                return callback; 
 | 
            } else { 
 | 
                return callback(new Error('请输入套餐最大使用次数')); 
 | 
            } 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    Vue.component('ValidatorFactory', ValidatorFactory); 
 | 
    Vue.component('treeselect', VueTreeselect.Treeselect) 
 | 
  
 | 
    var app = new Vue({ 
 | 
        el: '#app', 
 | 
        data: { 
 | 
            submiting:false, 
 | 
            activeName:"tab1", 
 | 
            orderItemList:[], 
 | 
            projList:[], 
 | 
            taocanList:[], 
 | 
            tcIsOpen : false, 
 | 
            yyTime:new Date(), 
 | 
  
 | 
  
 | 
        }, 
 | 
  
 | 
        /** 
 | 
         * 初始化数据表 
 | 
         */ 
 | 
        created: function () { 
 | 
            this.loadinfo(); 
 | 
        }, 
 | 
  
 | 
        methods: { 
 | 
            /** 
 | 
             * 提交表单 
 | 
             * */ 
 | 
            submitForm(formName) { 
 | 
                let _this=this; 
 | 
                _this.submiting = true; 
 | 
                if(_this.orderItemList.length<1){ 
 | 
                    _this.$message.error('请选择下单项目'); 
 | 
                    return false; 
 | 
                } 
 | 
                 let formData={ 
 | 
                     vipId:id, 
 | 
                     serviceItems:[], 
 | 
                 } 
 | 
  
 | 
                parent.app.addProjItems(_this.orderItemList); 
 | 
                _this.closeFram(); 
 | 
            }, 
 | 
            open(data) { 
 | 
                let _this=this; 
 | 
                this.$confirm('服务创建成功是否马上排班?', '确认信息', { 
 | 
                    distinguishCancelAndClose: true, 
 | 
                    confirmButtonText: '马上排班', 
 | 
                    cancelButtonText: '暂不排班' 
 | 
                }).then(() => { 
 | 
                            window.location.href=basePath+"/admin/projService/yypb?pageFlae=1&id="+data.rows[0].id; 
 | 
                        }) 
 | 
                        .catch(action => { 
 | 
                             if(action === 'cancel'){ 
 | 
                                 _this.submiting = false; 
 | 
                                 _this.closeFram(); 
 | 
                             } 
 | 
                        }); 
 | 
            }, 
 | 
  
 | 
            remove(index){ 
 | 
                this.orderItemList.splice(index, 1); 
 | 
            }, 
 | 
            checkCount(item){ 
 | 
                if(item.count>item.projUse.surplusCount){ 
 | 
                    item.count=item.projUse.surplusCount; 
 | 
                    this.$message.error('下单次数不能大于余次'); 
 | 
                }else if(item.count<0){ 
 | 
                    item.count=1; 
 | 
                    this.$message.error('下单次数不能小于0'); 
 | 
                } 
 | 
            }, 
 | 
            /** 
 | 
             * 选择产品 
 | 
             * */ 
 | 
            selected(index, row, name) { 
 | 
  
 | 
                    //是否已经被选择了 
 | 
                    let selected = false; 
 | 
                    this.orderItemList.forEach(item => { 
 | 
                        if (item.projUse.id == row.id) { 
 | 
                            selected = true; 
 | 
                            //叠加次数 
 | 
                            if(item.count<item.projUse.surplusCount){ 
 | 
                                item.count=item.count+1; 
 | 
                            }else{ 
 | 
                                this.$message.error('下单次数不能大于余次'); 
 | 
                            } 
 | 
  
 | 
                            return; 
 | 
                        } 
 | 
                    }); 
 | 
                    if (!selected) { 
 | 
                        if(row.surplusCount>0){ 
 | 
                            this.orderItemList.push({ 
 | 
                                projUse: row, 
 | 
                                count: 1, 
 | 
                                name : name 
 | 
                            }); 
 | 
                        } 
 | 
  
 | 
                    } 
 | 
  
 | 
            }, 
 | 
            loadinfo(){ 
 | 
                let _this=this; 
 | 
                AjaxProxy.requst({ 
 | 
                    app: _this, 
 | 
                    url: basePath + "/admin/projService/getUserProjInfo?vipId="+id, 
 | 
                    callback: function (data) { 
 | 
                        _this.projList = data.mapInfo.projList; 
 | 
                        _this.taocanList = data.mapInfo.taoCanList; 
 | 
                    } 
 | 
                }); 
 | 
            }, 
 | 
            closeFram: function () { 
 | 
                parent.layer.close(parent.layer.getFrameIndex(window.name)); 
 | 
            }, 
 | 
  
 | 
        } 
 | 
  
 | 
    }) 
 | 
</script> 
 | 
  
 | 
</body> 
 | 
</html> 
 |