<!DOCTYPE HTML> 
 | 
<html xmlns:th="http://www.thymeleaf.org"> 
 | 
<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}"> 
 | 
    <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> 
 | 
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> 
 | 
  
 | 
    <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/MJsBase.js}"></script> 
 | 
    <script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.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> 
 | 
</head> 
 | 
<body> 
 | 
<div id="app" class="ibox-content"> 
 | 
        <el-form :model="ruleForm" :rules="rules"  class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px"> 
 | 
            <input autocomplete="off" v-model="ruleForm.id"  type="hidden" name="id"> 
 | 
  
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-4 col-sm-offset-1"> 
 | 
                    <el-form-item label="活动名称" prop="actName"> 
 | 
                        <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
  
 | 
                <div class="col-sm-4 col-sm-offset-1"> 
 | 
                    <el-form-item label="参与门店" prop="shopIdsArr"> 
 | 
                        <el-select v-model="ruleForm.shopIdsArr" multiple filterable placeholder="请选择" style="width:100%"> 
 | 
                            <el-option v-for="item in shopList" :key="item.id" :label="item.shopName" :value="item.id" ></el-option> 
 | 
                        </el-select> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-3 col-sm-offset-1"> 
 | 
                    <el-form-item label="选择产品" prop="goodsName"> 
 | 
                        <el-input v-model="ruleForm.goodsName" :disabled="true"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
                <div class="col-sm-1"> 
 | 
                    <el-button @click="openSelectGoods">选择产品</el-button> 
 | 
                </div> 
 | 
                <div class="col-sm-4 col-sm-offset-1"> 
 | 
                    <el-form-item label="活动时间" prop="actTime"> 
 | 
                        <el-date-picker v-model="ruleForm.actTime" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="至" 
 | 
                                start-placeholder="开始日期" end-placeholder="结束日期"> 
 | 
                        </el-date-picker> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-4 col-sm-offset-1"> 
 | 
                    <el-form-item label="最大开团数量" prop="actMax"> 
 | 
                        <el-input v-model.number="ruleForm.actMax" placeholder="请输入最大开团数量"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
  
 | 
                <div class="col-sm-4 col-sm-offset-1"> 
 | 
                    <el-form-item label="每人限购" prop="giLimitBuy"> 
 | 
                        <el-input v-model.number="ruleForm.giLimitBuy" placeholder="填写0则无限制"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-8 col-sm-offset-1"> 
 | 
                    <el-form-item label="团长优惠"> 
 | 
                        <el-switch v-model="ruleForm.giHeadDiscount"></el-switch> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-8 col-sm-offset-1"> 
 | 
                    <el-form-item label="虚拟拼团"> 
 | 
                        <el-switch v-model="ruleForm.giVirtualGroup"></el-switch> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-8 col-sm-offset-1"> 
 | 
                    <el-form-item label="组团要求" prop="giType"> 
 | 
                        <el-radio-group v-model="ruleForm.giType"> 
 | 
                            <el-radio value="1" :label="1">老带新</el-radio> 
 | 
                            <el-radio value="2" :label="2">老会员</el-radio> 
 | 
                            <el-radio value="3" :label="3">新会员</el-radio> 
 | 
                        </el-radio-group> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-8 col-sm-offset-1"> 
 | 
                    <el-form-item label="拼团价"> 
 | 
                        <el-button type="primary" @click="addGroupPrice">新增价位(最多3个价位)</el-button> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group" v-for="(item,index) in ruleForm.groupInfo.groupPriceList" :key="index"> 
 | 
                <div class="col-sm-2 col-sm-offset-2"> 
 | 
                    <el-form-item label="拼团人数" :prop="'groupInfo.groupPriceList.'+index+'.gpCount'" :rules="rules.gpCount"> 
 | 
                        <el-input v-model.number="item.gpCount"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
                <div class="col-sm-3"> 
 | 
                    <el-form-item label="拼团价" :prop="'groupInfo.groupPriceList.'+index+'.gpPrice'" :rules="rules.gpPrice"> 
 | 
                        <el-input v-model="item.gpPrice"> 
 | 
                            <template slot="append">元/人</template> 
 | 
                        </el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
                <div class="col-sm-3" v-if="ruleForm.giHeadDiscount == 1"> 
 | 
                    <el-form-item label="团长价" :prop="'groupInfo.groupPriceList.'+index+'.gpHeadPrice'" :rules="rules.gpPrice"> 
 | 
                        <el-input v-model="item.gpHeadPrice"> 
 | 
                            <template slot="append">元</template> 
 | 
                        </el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
                <div class="col-sm-1" v-show="ruleForm.groupInfo.groupPriceList.length > 1" > 
 | 
                    <el-button @click="removePrice(item,index)">删除</el-button> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group"> 
 | 
                <div class="col-sm-8 col-sm-offset-1"> 
 | 
                    <el-form-item label="活动说明" prop="actRemark"> 
 | 
                        <el-input type="textarea" v-model="ruleForm.actRemark"></el-input> 
 | 
                    </el-form-item> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <div class="form-group "> 
 | 
                <div class="col-sm-12 text-center"> 
 | 
                    <el-button type="primary" @click="dataSubmit('ruleForm')">保存</el-button> 
 | 
                    <el-button type="danger" @click="closeForm">关闭</el-button> 
 | 
                </div> 
 | 
            </div> 
 | 
    </el-form> 
 | 
    </div> 
 | 
</body> 
 | 
<script> 
 | 
  
 | 
    const priceValidator = (rule, value, callback) =>{ 
 | 
        const reg =  /(?!^0*(\.0{1,2})?$)^\d{1,13}(\.\d{1,2})?$/; 
 | 
        const flag = reg.test(value); 
 | 
        if (flag) { 
 | 
            callback() 
 | 
        } else { 
 | 
            callback(new Error('请输入保留两位以内的小数')) 
 | 
        } 
 | 
    } 
 | 
  
 | 
    var vm = new Vue({ 
 | 
        el : "#app", 
 | 
        data : { 
 | 
            ruleForm : { 
 | 
                id : '', 
 | 
                actName : '', 
 | 
                shopIds : '', 
 | 
                shopIdsArr : '', 
 | 
                actTime : '', 
 | 
                actMax : '', 
 | 
                giLimitBuy : 0, // 表单验证需在ruleForm下 
 | 
                giHeadDiscount : false, // 表单验证需在ruleForm下 
 | 
                giVirtualGroup : false, // 表单验证需在ruleForm下 
 | 
                giType : '', // 表单验证需在ruleForm下 
 | 
                goodsName : '', 
 | 
                beginTime : '', 
 | 
                endTime : '', 
 | 
                groupInfo : { 
 | 
                    giLimitBuy : 0, 
 | 
                    giHeadDiscount : '', 
 | 
                    giType : '', 
 | 
                    giVirtualGroup : '', 
 | 
                    goodsId : '', 
 | 
                    groupPriceList : [ 
 | 
                        { 
 | 
                            gpCount : '', 
 | 
                            gpPrice : '', 
 | 
                            gpHeadPrice : '' 
 | 
                        } 
 | 
                    ] 
 | 
                } 
 | 
            }, 
 | 
            rules : { 
 | 
                shopIdsArr : [ 
 | 
                    { required: true, message: '请选择参与门店', trigger: 'change' } 
 | 
                ], 
 | 
                actName : [ 
 | 
                    { required: true, message: '请输入活动名称', trigger: 'blur' } 
 | 
                ], 
 | 
                actTime : [ 
 | 
                    { required: true, message: '请选择日期', trigger: 'blur' } 
 | 
                ], 
 | 
                actMax : [ 
 | 
                    { required: true, message: '请输入最大开团数量', trigger: 'blur' }, 
 | 
                    { type : 'number', message: '请输入数字', trigger: 'blur' } 
 | 
                ], 
 | 
                giLimitBuy : [ 
 | 
                    { required: true, message: '请输入最大开团数量', trigger: 'blur' }, 
 | 
                    { type : 'number', message: '请输入数字', trigger: 'blur' } 
 | 
                ], 
 | 
                gpCount : [ 
 | 
                    { required: true, message: '拼团人数不能为空', trigger: 'blur' }, 
 | 
                    { type : 'number', message: '请输入数字', trigger: 'blur' } 
 | 
                ], 
 | 
                gpPrice : [ 
 | 
                    { required: true, message: '请输入保留两位以内的小数', trigger: 'blur' }, 
 | 
                    { validator : priceValidator, trigger: 'blur' } 
 | 
                ], 
 | 
                giType : [ 
 | 
                    { required: true, message: '请选择组团要求', trigger: 'blur' } 
 | 
                ], 
 | 
                goodsName : [ 
 | 
                    { required: true, message: '请选择关联产品', trigger: 'blur' } 
 | 
                ] 
 | 
            }, 
 | 
            shopList : [], 
 | 
        }, 
 | 
        created : function() { 
 | 
            this.initForm(); 
 | 
        }, 
 | 
        methods : { 
 | 
            initForm : function() { 
 | 
                var _this = this; 
 | 
                $.AjaxProxy().invoke(basePath + "/admin/shopInfo/findShops", function(loj){ 
 | 
                    _this.shopList = loj[0].result.rows; 
 | 
                    var id = $.query.get("id"); 
 | 
                    console.log("----<>", id) 
 | 
                    if (id != null && id!='') { 
 | 
                        _this.ruleForm.id = id; 
 | 
                        _this.initData(id); 
 | 
                    } 
 | 
                }); 
 | 
            }, 
 | 
            initData : function (id) { 
 | 
                var _this = this; 
 | 
                var ruleForm = _this.ruleForm; 
 | 
                $.AjaxProxy().invoke(basePath + "/admin/shopActivities/findShopActivitiesById/" + id, function(loj){ 
 | 
                    console.log(loj[0].result); 
 | 
                    const result = loj[0].result; 
 | 
                    const activityInfo = result.mapInfo.shopActivities; 
 | 
                    const prices = result.mapInfo.groupPrices; 
 | 
                    ruleForm.actName = activityInfo.actName; 
 | 
                    ruleForm.actRemark = activityInfo.actRemark; 
 | 
                    ruleForm.actMax = activityInfo.actMax; 
 | 
                    ruleForm.giType = activityInfo.groupInfo.giType; 
 | 
                    ruleForm.goodsName = activityInfo.groupInfo.goodsName; 
 | 
                    ruleForm.groupInfo.goodsId = activityInfo.groupInfo.goodsId; 
 | 
                    ruleForm.giHeadDiscount = activityInfo.groupInfo.giHeadDiscount === 1; 
 | 
                    ruleForm.giVirtualGroup = activityInfo.groupInfo.giVirtualGroup === 1; 
 | 
                    ruleForm.giLimitBuy = activityInfo.groupInfo.giLimitBuy; 
 | 
                    ruleForm.shopIdsArr = activityInfo.shopIds.split(",").map(Number); 
 | 
                    ruleForm.groupInfo.groupPriceList = prices; 
 | 
                    var timeArr = new Array(); 
 | 
                    timeArr.push(activityInfo.actBeginTime); 
 | 
                    timeArr.push(activityInfo.actEndTime); 
 | 
                    ruleForm.actTime = timeArr; 
 | 
                }) 
 | 
            }, 
 | 
            addGroupPrice : function () { 
 | 
                const _this = this; 
 | 
                const size = _this.ruleForm.groupInfo.groupPriceList.length; 
 | 
                if (size >= 3) { 
 | 
                    _this.$notify({ 
 | 
                        title: '提示', 
 | 
                        message: '最多可添加3个价位', 
 | 
                        type: 'warning' 
 | 
                    }); 
 | 
                    return; 
 | 
                } 
 | 
                _this.ruleForm.groupInfo.groupPriceList.push( 
 | 
                        { 
 | 
                            gpCount : '', 
 | 
                            gpPrice : '', 
 | 
                            gpHeadPrice : '' 
 | 
                        } 
 | 
                ); 
 | 
            }, 
 | 
            removePrice : function (item,index) { 
 | 
                const _this = this; 
 | 
                _this.ruleForm.groupInfo.groupPriceList.splice(index, 1); 
 | 
            }, 
 | 
            openSelectGoods : function () { 
 | 
                layer.full(layer.open({ 
 | 
                    type : 2, 
 | 
                    title : "选择产品", 
 | 
                    area : [ MUI.SIZE_L, '400px' ], 
 | 
                    maxmin : true, 
 | 
                    content : [ basePath + '/admin/redirect/shop/activities/select-product-list' ] 
 | 
                })); 
 | 
            }, 
 | 
            selectGoods : function (item) { 
 | 
                const _this = this; 
 | 
                console.log(item); 
 | 
                _this.ruleForm.goodsName=item.title; 
 | 
                _this.ruleForm.groupInfo.goodsId=item.id; 
 | 
            }, 
 | 
            dataSubmit : function (formName) { 
 | 
                const _this = this; 
 | 
                var result = _this.ruleForm; 
 | 
                var flag = false; 
 | 
                _this.$refs[formName].validate((valid) => { 
 | 
                    if (!valid) { 
 | 
                        console.log('error submit!!'); 
 | 
                        flag = true; 
 | 
                        return; 
 | 
                    } 
 | 
                }); 
 | 
                if (flag) { 
 | 
                    return; 
 | 
                } 
 | 
  
 | 
                if (_this.ruleForm.giHeadDiscount) { 
 | 
                    _this.ruleForm.groupInfo.giHeadDiscount = 1; 
 | 
                } else { 
 | 
                    _this.ruleForm.groupInfo.giHeadDiscount = 2; 
 | 
                } 
 | 
  
 | 
                if (_this.ruleForm.giVirtualGroup) { 
 | 
                    _this.ruleForm.groupInfo.giVirtualGroup = 1; 
 | 
                } else { 
 | 
                    _this.ruleForm.groupInfo.giVirtualGroup = 2; 
 | 
                } 
 | 
  
 | 
                result.groupInfo.giType = result.giType; 
 | 
                result.groupInfo.giLimitBuy = result.giLimitBuy; 
 | 
                result.shopIds = result.shopIdsArr.toString(); 
 | 
                result.beginTime = result.actTime[0]; 
 | 
                result.endTime = result.actTime[1]; 
 | 
                console.log(result); 
 | 
                AjaxProxy.requst({ 
 | 
                    app: _this, 
 | 
                    data: result, 
 | 
                    url: basePath + '/admin/shopActivities/addGroupActivities', 
 | 
                    callback: function (data) { 
 | 
                        parent.layer.close(parent.layer.getFrameIndex(window.name)); 
 | 
                        parent.myGrid.serchData(); 
 | 
                    } 
 | 
                }); 
 | 
            }, 
 | 
            resetSubmit : function (formName) { 
 | 
                this.$refs[formName].resetFields(); 
 | 
            }, 
 | 
            closeForm : function() { 
 | 
                parent.layer.close(parent.layer.getFrameIndex(window.name)); 
 | 
            } 
 | 
        }, 
 | 
    }); 
 | 
</script> 
 | 
</body> 
 | 
</html> 
 |