element 升级到 2.3.9;修改密码;砍价设置模块

This commit is contained in:
gooking 2018-05-22 10:29:30 +08:00
parent 38e8adb4e3
commit ab5b37cc92
12 changed files with 526 additions and 3 deletions

View File

@ -14,7 +14,7 @@
},
"dependencies": {
"axios": "0.17.1",
"element-ui": "2.3.8",
"element-ui": "2.3.9",
"js-cookie": "2.2.0",
"normalize.css": "8.0.0",
"nprogress": "0.2.0",

37
src/api/kanjia.js Normal file
View File

@ -0,0 +1,37 @@
import request from '@/utils/request'
export function fetchDataList(page, pageSize, data) {
return request({
url: '/user/kanjiaSet/list',
method: 'post',
data: {
page,
pageSize,
...data
}
})
}
export function info(id) {
return request({
url: '/user/kanjiaSet/info',
method: 'get',
params: { id }
})
}
export function delData(id) {
return request({
url: '/user/kanjiaSet/del',
method: 'post',
data: { id }
})
}
export function saveData(data) {
return request({
url: '/user/kanjiaSet/save',
method: 'post',
data: { ...data }
})
}

View File

@ -64,6 +64,17 @@ export function resetpwd(mobile, pwd, smsCode) {
})
}
export function editPwd(oldPwd, newPwd) {
return request({
url: '/user/editPwd/save',
method: 'post',
data: {
oldPwd,
newPwd
}
})
}
export function checkToken() {
return request({
url: '/user/checkToken',

1
src/icons/svg/kanjia.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1526898390639" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1914" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M344.502857 655.36a18.651429 18.651429 0 0 1-13.165714-5.485714l-161.28-161.645715A17.188571 17.188571 0 0 1 164.571429 475.428571V146.285714a18.285714 18.285714 0 0 1 18.285714-18.285714h329.142857a17.188571 17.188571 0 0 1 12.8 5.485714l179.2 178.834286a18.651429 18.651429 0 0 1 5.485714 13.531429 19.382857 19.382857 0 0 1-6.217143 13.165714l-346.697142 311.588571a20.114286 20.114286 0 0 1-12.068572 4.754286zM201.142857 467.748571l143.725714 144.091429 319.634286-287.085714-160.182857-160.182857H201.142857z m201.142857-10.605714a91.428571 91.428571 0 1 1 91.428572-91.428571 91.428571 91.428571 0 0 1-91.428572 91.428571z m0-146.285714a54.857143 54.857143 0 1 0 54.857143 54.857143A54.857143 54.857143 0 0 0 402.285714 310.857143z" p-id="1915"></path><path d="M603.428571 950.857143a17.188571 17.188571 0 0 1-12.8-5.485714L365.714286 721.554286a17.92 17.92 0 0 1 0-24.868572l311.222857-347.062857a19.017143 19.017143 0 0 1 13.165714-5.851428 20.114286 20.114286 0 0 1 13.531429 5.12l241.371428 241.737142a17.554286 17.554286 0 0 1 0 25.6l-329.142857 329.142858a17.188571 17.188571 0 0 1-12.434286 5.485714z m-198.582857-242.834286l198.582857 198.582857 303.177143-303.177143-214.674285-215.04z" p-id="1916"></path><path d="M250.88 870.034286a18.285714 18.285714 0 0 1-12.8-5.12l-68.022857-68.388572a17.92 17.92 0 0 1-5.485714-13.165714 16.822857 16.822857 0 0 1 6.217142-13.165714L841.142857 169.325714a18.285714 18.285714 0 0 1 25.234286 0 18.651429 18.651429 0 0 1 0 24.868572L264.777143 864.182857a19.017143 19.017143 0 0 1-13.165714 5.851429z m-41.325714-85.577143l40.594285 40.96 360.594286-402.285714z" p-id="1917"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1526898333240" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1737" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M101.344 850.672h237.328V469.328L273.728 424 101.344 570.672zM394.672 850.672H632v-379.12L517.344 568l-122.672-66.672zM688 426.672v424h237.328V429.328L824.016 296z" p-id="1738"></path><path d="M140.544 464.544l129.072-107.968 246.576 150.112 292.416-275.392c1.056-0.992 1.92-2.144 2.816-3.248l49.248 49.808 79.312-223.2-227.52 73.296 54.448 55.072c-0.72 0.56-1.488 1.024-2.176 1.664L507.824 426.656 263.744 278.08 99.488 415.456c-13.568 11.344-15.36 31.52-4.016 45.072s31.536 15.376 45.072 4.016zM920 894.656H100c-17.664 0-32 14.336-32 32s14.336 32 32 32h820c17.664 0 32-14.336 32-32s-14.336-32-32-32z" p-id="1739"></path></svg>

After

Width:  |  Height:  |  Size: 1014 B

View File

@ -27,6 +27,18 @@ export const constantRouterMap = [
{ path: '/resetpwd', component: () => import('@/views/login/resetpwd'), hidden: true },
{ path: '/404', component: () => import('@/views/404'), hidden: true },
{
name: '修改密码',
path: '/editPwd',
hidden: true,
component: Layout,
meta: { title: '修改密码', icon: 'setting' },
children: [{
path: '',
component: () => import('@/views/editPwd/list')
}]
},
{
name: '首页',
path: '',
@ -114,6 +126,26 @@ export const constantRouterMap = [
]
},
{
name: '营销辅助',
path: '/user/kanjiaSet',
component: Layout,
redirect: '/user/kanjiaSet/list',
meta: { title: '营销辅助', icon: 'yingxiao' },
children: [{
name: '砍价设置',
path: 'list',
component: () => import('@/views/kanjiaSet/list'),
meta: { title: '砍价设置', icon: 'kanjia' }
},
{
name: '我的资源包2',
path: 'dashboard3',
component: () => import('@/views/dashboard/index'),
meta: { title: '我的资源包2', icon: 'setting' }
}]
},
{ path: '*', redirect: '/404', hidden: true }
]

View File

@ -54,6 +54,22 @@ service.interceptors.response.use(
})
return Promise.reject('请先绑定代理商')
}
if (res.code === 600) {
Message({
message: '缺少参数:' + (res.data ? res.data : ''),
type: 'error',
duration: 3 * 1000
})
return Promise.reject('缺少参数:' + (res.data ? res.data : ''))
}
if (res.code === -1) {
Message({
message: '服务器内部错误:' + (res.data ? res.data : ''),
type: 'error',
duration: 3 * 1000
})
return Promise.reject('服务器内部错误:' + (res.data ? res.data : ''))
}
return response.data
},
error => {

View File

@ -36,7 +36,7 @@
<el-table-column prop="dateAdd" label="购买时间"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" class='delete' @click="delData(scope.row.id)">删除</el-button>
<el-button type="text" class='delete' @click="delData(scope.row.id)" style="color:red">删除</el-button>
</template>
</el-table-column>
</el-table>

View File

@ -48,7 +48,7 @@
<el-table-column prop="dateAdd" label="购买时间"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" class='delete' @click="delResource(scope.row.id)">删除</el-button>
<el-button type="text" class='delete' @click="delResource(scope.row.id)" style="color:red">删除</el-button>
</template>
</el-table-column>
</el-table>

View File

@ -0,0 +1,85 @@
<template>
<div class="app-container">
<el-form ref="form" label-width="120px">
<el-form-item label="原密码:">
<el-input v-model="oldPwd" clearable type="password"></el-input>
</el-form-item>
<el-form-item label="新密码:">
<el-input v-model="newPwd" clearable type="password"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">修改密码</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { editPwd } from '@/api/login'
import { Message } from 'element-ui'
export default {
data() {
return {
oldPwd:'',
newPwd:''
}
},
methods: {
onSubmit() {
if (!this.oldPwd) {
Message({
message: '请输入原密码',
type: 'error',
duration: 3 * 1000
})
return;
}
if (!this.newPwd) {
Message({
message: '请输入新密码',
type: 'error',
duration: 3 * 1000
})
return;
}
editPwd(this.oldPwd, this.newPwd).then(res => {
if (res.code == 10000) {
Message({
message: '原密码输入有误,请重试',
type: 'error',
duration: 3 * 1000
})
return;
}
if (res.code != 0) {
Message({
message: res.msg,
type: 'error',
duration: 3 * 1000
})
return;
} else {
Message({
message: '修改成功',
type: 'success',
duration: 1 * 1000,
onClose: () => {
this.$router.push({ path: '/' })
}
})
}
}).catch(e => {
console.error(e);
})
}
}
}
</script>
<style scoped>
.line{
text-align: center;
}
</style>

View File

@ -0,0 +1,335 @@
<template>
<div class="app-container">
<div class="filter-container">
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="砍价ID" v-model="searchData.id">
</el-input>
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="商品ID" v-model="searchData.goodsId">
</el-input>
<el-select clearable style="width: 200px" class="filter-item" v-model="searchData.status" placeholder="状态">
<el-option label="正常" value="0"></el-option>
<el-option label="禁用" value="1"></el-option>
</el-select>
<el-date-picker type="date" placeholder="开始时间起" v-model="searchData.dateAddBegin" style="width: 200px;" class="filter-item"></el-date-picker>
<el-date-picker type="date" placeholder="开始时间止" v-model="searchData.dateAddEnd" style="width: 200px;" class="filter-item"></el-date-picker>
<el-date-picker type="date" placeholder="截止时间起" v-model="searchData.dateEndBegin" style="width: 200px;" class="filter-item"></el-date-picker>
<el-date-picker type="date" placeholder="截止时间止" v-model="searchData.dateEndEnd" style="width: 200px;" class="filter-item"></el-date-picker>
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="fetchData">搜索</el-button>
<el-button class="filter-item" style="margin-left: 10px;" @click="handleCreate" type="success" icon="el-icon-edit">添加</el-button>
</div>
<el-table :data="list" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row empty-text="暂无数据" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="55" row-key="id"></el-table-column>
<el-table-column prop="id" label="砍价ID"></el-table-column>
<el-table-column prop="goodsId" label="商品ID"></el-table-column>
<el-table-column prop="number" label="数量(份)"></el-table-column>
<el-table-column prop="originalPrice" label="原价"></el-table-column>
<el-table-column prop="minPrice" label="底价"></el-table-column>
<el-table-column label="砍价金额">
<template slot-scope="scope">
{{ scope.row.helpPriceMin }} - {{ scope.row.helpPriceMax }}
</template>
</el-table-column>
<el-table-column prop="statusStr" label="状态"></el-table-column>
<el-table-column prop="dateAdd" label="开始时间"></el-table-column>
<el-table-column prop="dateEnd" label="截止时间"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleUpdate(scope.row.id)">编辑</el-button>
<el-button type="text" @click="delData(scope.row.id)" style="color:red">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRow" style="margin-top:20px;">
</el-pagination>
<el-dialog :title="pushData.dialogTitle" :visible.sync="pushData.dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :rules="rules" ref="addEditPopForm" :model="pushData" label-position="left" label-width="100px">
<el-form-item label="商品ID" prop="goodsId" >
<el-input v-model.number="pushData.goodsId" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
<el-form-item label="总份数" prop="number" >
<el-input v-model.number="pushData.number" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
<el-form-item label="原价" prop="originalPrice" >
<el-input v-model.number="pushData.originalPrice" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
<el-form-item label="底价" prop="minPrice" >
<el-input v-model.number="pushData.minPrice" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
<el-form-item label="砍价金额">
<el-col :span="6">
<el-form-item prop="helpPriceMin">
<el-input v-model.number="pushData.helpPriceMin" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
</el-col>
<el-col class="line" :span="2" style="text-align:center;">-</el-col>
<el-col :span="6">
<el-form-item prop="helpPriceMax">
<el-input v-model.number="pushData.helpPriceMax" clearable @keyup.enter.native="handleCreateSave"></el-input>
</el-form-item>
</el-col>
<el-col :span="10">&nbsp;&nbsp;&nbsp;砍价一次随机减少的金额范围</el-col>
</el-form-item>
<el-form-item label="状态" prop="status" >
<el-select v-model="pushData.status" placeholder="请选择">
<el-option label="正常" value="0"></el-option>
<el-option label="禁用" value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="开始时间" prop="dateAddStr" >
<el-date-picker v-model="pushData.dateAddStr" clearable type="datetime" placeholder="点击选择" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
<el-form-item label="截止时间" prop="dateEndStr" >
<el-date-picker v-model="pushData.dateEndStr" clearable type="datetime" placeholder="点击选择" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="pushData.dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="handleCreateSave">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { fetchDataList, info, delData, saveData } from '@/api/kanjia'
import { Message, MessageBox } from 'element-ui'
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'centerUserBase'
])
},
data() {
return {
page:1,
pageSize:10,
totalRow:0,
rules: {
goodsId: [
{ required: true, message: '不能为空'},
{ type:'integer', message: '必须为数字'}
],
number: [
{ required: true, message: '不能为空'},
{ type:'integer', message: '必须为数字'}
],
originalPrice: [
{ required: true, message: '不能为空'},
{ type:'number', message: '必须为数字'}
],
minPrice: [
{ required: true, message: '不能为空'},
{ type:'number', message: '必须为数字'}
],
helpPriceMin: [
{ required: true, message: '不能为空'},
{ type:'number', message: '必须为数字'}
],
helpPriceMax: [
{ required: true, message: '不能为空'},
{ type:'number', message: '必须为数字'}
],
status: [
{ required: true, message: '不能为空'}
],
dateAddStr: [
{ required: true, message: '不能为空'}
],
dateEndStr: [
{ required: true, message: '不能为空'}
],
},
searchData:{
id:undefined,
goodsId:undefined,
status:undefined,
dateAddBegin:undefined,
dateAddEnd:undefined,
dateEndBegin:undefined,
dateEndEnd:undefined,
},
pushData: {
dialogTitle : undefined,
dialogFormVisible:false,
id:undefined,
goodsId:undefined,
number:undefined,
originalPrice:undefined,
minPrice:undefined,
helpPriceMin:undefined,
helpPriceMax:undefined,
status:undefined,
dateAddStr:undefined,
dateEndStr:undefined
},
multipleSelection: [],
list: null,
listLoading: true,
statisticsData:{}
}
},
created() {
this.pushDataTmp = Object.assign({}, this.pushData)
this.fetchData()
},
mounted() {
},
methods: {
handleSizeChange(val) {
this.pageSize = val;
this.fetchData();
},
handleCurrentChange(val) {
this.page = val
this.fetchData()
},
handleSelectionChange(val) {
this.multipleSelection = val
},
fetchData() {
this.list = null
this.listLoading = true
fetchDataList(this.page, this.pageSize, this.searchData).then(response => {
if (response.code == 0) {
this.list = response.data.result
this.totalRow = response.data.totalRow
}
this.listLoading = false
})
},
handleCreate(){
this.pushData = Object.assign({}, this.pushDataTmp)
this.pushData.dialogTitle = '增加砍价设置'
this.pushData.dialogFormVisible = true
this.$nextTick(() => {
this.$refs['addEditPopForm'].clearValidate()
})
},
handleUpdate(id){
info(id).then(res => {
if (res.code != 0) {
Message({
message: res.msg,
type: 'error',
duration: 3 * 1000
})
} else {
this.pushData = Object.assign({}, this.pushDataTmp, res.data, {dateAddStr:res.data.dateAdd, dateEndStr:res.data.dateEnd})
this.pushData.dialogTitle = '修改砍价设置'
this.pushData.dialogFormVisible = true
this.$nextTick(() => {
this.$refs['addEditPopForm'].clearValidate()
})
}
}).catch(e=>{
console.error(e);
})
},
handleCreateSave(){
this.$refs['addEditPopForm'].validate((valid) => {
if (valid) {
saveData(this.pushData).then((res) => {
this.pushData.dialogFormVisible = false
if (res.code == 0) {
Message({
message: '操作成功',
type: 'success',
duration: 1 * 1000,
onClose: () => {
this.fetchData()
}
})
} else {
Message({
message: res.msg,
type: 'error',
duration: 3 * 1000
})
}
}).catch(e=>{
console.error(e);
})
}
})
},
statistics(){
statistics().then(res => {
//
this.statisticsData = res.data
})
},
delData(id){
this.$confirm('删除无法恢复, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delData(id).then(res => {
Message({
message: '删除成功',
type: 'success',
duration: 1 * 1000,
onClose: () => {
this.fetchData()
}
})
})
}).catch(() => {});
},
delDataMore(){
if (!this.multipleSelection.length) {
Message({
message: '请先选择需要删除的数据',
type: 'error',
duration: 1 * 1000
})
return
}
this.$confirm('删除无法恢复, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.multipleSelection.forEach(obj => {
delData(obj.id).then(res => {
this.fetchData()
})
})
}).catch(() => {});
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss">
.filter-container {
padding-bottom: 10px;
.filter-item {
display: inline-block;
vertical-align: middle;
margin-bottom: 10px;
}
}
</style>

View File

@ -13,6 +13,11 @@
首页
</el-dropdown-item>
</router-link>
<router-link class="inlineBlock" to="/editPwd">
<el-dropdown-item>
修改密码
</el-dropdown-item>
</router-link>
<el-dropdown-item divided>
<span @click="logout" style="display:block;">退出</span>
</el-dropdown-item>