看效果图是否是你需要的
这是原来没有Element-ui框架的
首先,你要在你的项目里安装Element-ui
yarn命令
yarn add element-ui
npm命令
npm install element-ui --save
好了现在可以粘贴代码
//main.js
import Vue from 'vue'
import Vuex from 'vuex'
import VueRouter from 'vue-router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import store from './tool/store'
import App from './App.vue'
import router from '@/tool/router'
Vue.use(Vuex)
Vue.use(VueRouter)
Vue.use(ElementUI)
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
//store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
goodsList: []
},
mutations: {
addGood(state, { name, price }) {
state.goodsList.push({ id: state.goodsList.length + 1, name, price })
},
delGood(state, id) {
const index = state.goodsList.findIndex(item => item.id === id)
if (index !== -1) {
state.goodsList.splice(index, 1)
}
},
updateGood(state, { id, name, price }) {
const good = state.goodsList.find(item => item.id === id)
if (good) {
good.name = name
good.price = price
}
}
}
})
//router.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import EditStore from '@/components/EditStore.vue'
import IndexStore from '@/components/IndexStore.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
redirect: '/index'
},
{
path: '/index',
component: IndexStore
},
{
path: '/edit/:id',
component: EditStore,
name: 'Edit',
props: true
}
]
const router = new VueRouter({
routes
})
export default router
<!-- EditStore.vue -->
<template>
<div>
<h3>编辑商品</h3>
<el-form :model="form" label-width="80px">
<el-form-item label="商品名称">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="商品价格">
<el-input-number v-model="form.price" controls-position="right" :min="0"></el-input-number>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">提交</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
props: ['id'],
computed: {
goodInfo() {
return this.$store.state.goodsList.find(item => item.id === this.id)
}
},
data() {
return {
form: {
name: '',
price: 0
}
}
},
mounted() {
this.form = {
name: this.goodInfo.name,
price: this.goodInfo.price
}
},
methods: {
submit() {
this.$store.commit({
type: 'updateGood',
id: this.id,
name: this.form.name,
price: this.form.price
})
this.$router.push('/index')
}
}
}
</script>
<!-- IndexStore.vue -->
<template>
<div>
<h3 style="margin-left: 200px">商品列表</h3>
<el-table :data="goodsList" border style="width: 600px; margin-left: 200px">
<el-table-column prop="name" label="商品名称"></el-table-column>
<el-table-column prop="price" label="价格"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="delGood(scope.row.id)">删除</el-button>
<el-button type="primary" size="mini" @click="editGood(scope.row.id)">编辑</el-button>
</template>
</el-table-column>
</el-table>
<el-button style="margin-left: 200px; margin-top: 10px" type="primary" @click="add">添加商品</el-button>
</div>
</template>
<script>
export default {
name: 'IndexStore',
computed: {
goodsList() {
return this.$store.state.goodsList;
}
},
methods: {
add() {
const { name, price } = this.randomGood()
this.$store.commit({ type: 'addGood', name, price })
},
randomGood() {
const goods = [
{ name: '洗衣机', price: 990 },
{ name: '油烟机', price: 2239 },
{ name: '电饭煲', price: 200 },
{ name: '电视机', price: 880 },
{ name: '电冰箱', price: 650 },
{ name: '电脑', price: 4032 },
{ name: '电磁炉', price: 210 }
]
return goods[parseInt(Math.random() * 7)]
},
delGood(id) {
this.$store.commit('delGood', id)
},
editGood(id) {
this.$router.push({ name: 'Edit', params: { id } })
}
}
}
</script>