<!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"/>
|
<LINK rel="Bookmark" th:href="@{/images/favicon.ico}">
|
<!-- 本框架基本脚本和样式 -->
|
<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>
|
<style>
|
.ui-table .el-form-item__content { margin-left: 0 !important; }
|
</style>
|
</head>
|
|
<body>
|
<div id="app" class="ibox-content">
|
<el-form :model="ruleForm" :rules="rules" class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px">
|
<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-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-8 col-sm-offset-1">
|
<el-form-item label="">
|
<el-button type="primary" @click="openSelectGoods">新增秒杀产品</el-button>
|
</el-form-item>
|
</div>
|
</div>
|
|
<div class="form-group ui-table">
|
<div class="col-sm-8 col-sm-offset-2">
|
<template>
|
<el-table :data="ruleForm.tableData" height="350" style="width: 100%">
|
<el-table-column label="产品名称" width="180" prop="name">
|
</el-table-column>
|
<el-table-column label="原价" width="100" prop="originPrice">
|
</el-table-column>
|
<el-table-column label="秒杀价" width="180">
|
<template slot-scope="scope">
|
<el-form-item :prop="'tableData.'+ scope.$index +'.siPrice'" :rules="rules.price">
|
<el-input v-model="scope.row.siPrice"></el-input>
|
</el-form-item>
|
</template>
|
</el-table-column>
|
<el-table-column label="最大秒杀数量" width="180">
|
<template slot-scope="scope">
|
<el-form-item :prop="'tableData.'+ scope.$index +'.siCount'" :rules="rules.count">
|
<el-input v-model.number="scope.row.siCount"></el-input>
|
</el-form-item>
|
</template>
|
</el-table-column>
|
<el-table-column label="每人限购数量" width="170">
|
<template slot-scope="scope">
|
<el-form-item :prop="'tableData.'+ scope.$index +'.siLimitCnt'" :rules="rules.count">
|
<el-input v-model.number="scope.row.siLimitCnt"></el-input>
|
</el-form-item>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" width="100">
|
<template slot-scope="scope">
|
<el-button size="mini" type="danger"
|
@click="deleteTableRow(scope.$index, ruleForm.tableData)">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</template>
|
</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>
|
<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 : '',
|
beginTime : '',
|
endTime : '',
|
actRemark : '',
|
tableData: []
|
},
|
rules : {
|
shopIdsArr : [
|
{ required: true, message: '请选择参与门店', trigger: 'change' }
|
],
|
actName : [
|
{ required: true, message: '请输入活动名称', trigger: 'blur' }
|
],
|
actTime : [
|
{ required: true, message: '请选择日期', trigger: 'blur' }
|
],
|
price : [
|
{ required: true, message: '请输入保留两位以内的小数', trigger: 'blur' },
|
{ validator : priceValidator, trigger: 'blur' }
|
],
|
count : [
|
{ required: true, message: '请输入信息', trigger: 'blur' },
|
{ type : 'number', 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");
|
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/findSecKillActivitiesById/" + id, function(loj){
|
const result = loj[0].result;
|
console.log(result);
|
const activity = result.mapInfo.activities;
|
const secKills = result.mapInfo.seckill;
|
|
ruleForm.actName = activity.actName;
|
ruleForm.actRemark = activity.actRemark;
|
ruleForm.shopIdsArr = activity.shopIds.split(",").map(Number);
|
var timeArr = [];
|
timeArr.push(activity.actBeginTime);
|
timeArr.push(activity.actEndTime);
|
ruleForm.actTime = timeArr;
|
|
for (var i = 0, length = secKills.length; i < length; i++) {
|
var secKill = {};
|
secKill.goodsId = secKills[i].goodsId;
|
secKill.name = secKills[i].goods.title;
|
secKill.originPrice = secKills[i].goods.price;
|
secKill.siPrice = secKills[i].siPrice;
|
secKill.siCount = secKills[i].siCount;
|
secKill.siLimitCnt = secKills[i].siLimitCnt;
|
ruleForm.tableData.push(secKill);
|
}
|
});
|
},
|
deleteTableRow : function (index, rows) {
|
console.log(index, rows);
|
rows.splice(index, 1);
|
},
|
dataSubmit : function(formName) {
|
const _this = this;
|
var result = _this.ruleForm;
|
|
if (result.tableData.length <= 0) {
|
_this.$notify({
|
title: '提示',
|
message: '请添加秒杀产品',
|
type: 'warning'
|
});
|
return;
|
}
|
|
var flag = false;
|
_this.$refs[formName].validate((valid) => {
|
if (!valid) {
|
console.log('error submit!!');
|
flag = true;
|
return;
|
}
|
});
|
if (flag) {
|
return;
|
}
|
|
result.shopIds = result.shopIdsArr.toString();
|
result.beginTime = result.actTime[0];
|
result.endTime = result.actTime[1];
|
AjaxProxy.requst({
|
app: _this,
|
data: result,
|
url: basePath + '/admin/shopActivities/addSecKillAct',
|
callback: function (data) {
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.myGrid.serchData();
|
}
|
});
|
},
|
closeForm : function () {
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
},
|
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?type=secKill' ]
|
}));
|
},
|
selectGoods : function(goods) {
|
// {
|
// name : "面膜",
|
// originPrice : 12.5,
|
// secPrice : 10,
|
// maxSecCnt : 10,
|
// maxLimitCnt : 12
|
// }
|
const _this = this;
|
var tableData = _this.ruleForm.tableData;
|
for (var i = 0, length = goods.length; i < length; i++) {
|
var flag = true;
|
const rowData = {};
|
rowData.goodsId = goods[i].id;
|
rowData.name = goods[i].title;
|
rowData.originPrice = goods[i].price;
|
for (var j = 0, dataLength = tableData.length; j < dataLength; j++) {
|
if (tableData[j].id === rowData.goodsId) {
|
flag = false;
|
break;
|
}
|
}
|
if (flag) {
|
_this.ruleForm.tableData.push(rowData);
|
}
|
}
|
}
|
}
|
});
|
</script>
|
</body>
|
</html>
|