<template>
|
<!--
|
作者:luoyiming
|
时间:2019-10-25
|
描述:供应商-年卡管理-编辑年卡
|
-->
|
<div v-loading="loading">
|
<!--form表单-->
|
<el-form size="small" ref="form" :model="form" label-width="180px">
|
<!--年卡-->
|
<div class="common-form">编辑年卡</div>
|
<el-form-item label="年卡名称:" prop="name" :rules="[{ required: true, message: ' ' }]">
|
<el-input v-model="form.name" placeholder="请输入年卡名称" class="max-w460"></el-input>
|
</el-form-item>
|
<el-form-item label="年卡价格:" prop="price" :rules="[{ required: true, message: ' ' }]">
|
<el-input v-model="form.price" placeholder="请输入价格" class="max-w460"><template slot="append">元</template> </el-input>
|
</el-form-item>
|
<el-form-item label="有效期" prop="duration">
|
<el-input v-model="form.duration" placeholder="请输入有效期" class="max-w460">
|
<template slot="append">天</template>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="赠送积分" prop="bonus_points">
|
<el-input v-model="form.bonus_points" placeholder="请输入赠送积分数量" class="max-w460"></el-input>
|
</el-form-item>
|
<el-form-item label="排序" prop="sort">
|
<el-input v-model="form.sort" placeholder="请输入排序值,越小越靠前" class="max-w460"></el-input>
|
</el-form-item>
|
<el-form-item label="状态" prop="status">
|
<el-radio-group v-model="form.status">
|
<el-radio :label="1">启用</el-radio>
|
<el-radio :label="0">禁用</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="年卡详情" prop="particulars">
|
<el-input type="textarea" v-model="form.particulars" placeholder="请输入年卡详情" class="max-w460"></el-input>
|
</el-form-item>
|
<el-form-item label="排序:"><el-input type="number" v-model="form.sort" placeholder="请输入排序" class="max-w460"></el-input></el-form-item>
|
<el-form-item label="权限列表:" v-model="form.access_id">
|
<el-tree :data="data" show-checkbox node-key="access_id" :default-expand-all="true" :default-checked-keys="checkedAccesses" :props="defaultProps" @check="handleCheckChange"></el-tree>
|
</el-form-item>
|
|
<!--提交-->
|
<div class="common-button-wrapper">
|
<el-button size="small" type="info" @click="goBack">取消</el-button>
|
<el-button type="primary" size="small" @click="submit" :loading="loading">提交</el-button>
|
</div>
|
</el-form>
|
</div>
|
</template>
|
|
<script>
|
import MemberApi from '@/api/supplier/member.js';
|
|
export default {
|
data() {
|
return {
|
loading: false,
|
form: {
|
status: 1,
|
sort: 100,
|
duration: 365,
|
access_id: []
|
},
|
defaultProps: {
|
children: 'children',
|
label: 'name'
|
},
|
data: [],
|
checkedAccesses: []
|
};
|
},
|
created() {
|
this.plan_id = this.$route.query.plan_id;
|
// 初始化默认值已经在data中设置了
|
this.getData()
|
},
|
methods: {
|
/*获取数据*/
|
getData() {
|
let self = this;
|
MemberApi.getEdit({
|
plan_id: self.plan_id
|
})
|
.then(data => {
|
console.log(data)
|
let obj = self.clearData(data.data.list, data.data.select_menu);
|
self.data = data.data.list;
|
self.form = data.data.model;
|
self.checkedAccesses = self.form.access_id = data.data.select_menu;
|
self.loading = false;
|
})
|
.catch(error => {
|
self.loading = false;
|
});
|
},/*清除数据*/
|
clearData(list, authlist) {
|
let total = 0;
|
let leng = list.length;
|
for (let i = 0; i < leng; i++) {
|
let item = list[i];
|
if (item.children != null) {
|
let flag = this.clearData(item.children, authlist);
|
if (!flag) {
|
let _index = authlist.indexOf(item.access_id);
|
if (_index >= 0) {
|
authlist.splice(_index, 1);
|
}
|
}
|
}
|
if (authlist.indexOf(item.access_id) != -1) {
|
total++;
|
}
|
}
|
if (total < leng) {
|
return false;
|
} else {
|
return true;
|
}
|
},
|
/*提交*/
|
submit() {
|
let self = this;
|
self.$refs.form.validate((valid) => {
|
if (valid) {
|
// 构造权限数据
|
const params = Object.assign({}, self.form, { access_ids: JSON.stringify(self.form.access_id) });
|
|
// 添加
|
MemberApi.editPlan(params, true)
|
.then(data => {
|
self.loading = false;
|
if (data.code == 1) {
|
self.$message({
|
message: '添加成功',
|
type: 'success'
|
});
|
self.goBack();
|
} else {
|
self.$message.error(data.msg);
|
}
|
})
|
.catch(error => {
|
self.loading = false;
|
});
|
}
|
});
|
},//监听选中
|
handleCheckChange(data, checked) {
|
this.form.access_id = checked.checkedKeys.concat(checked.halfCheckedKeys);
|
},
|
goBack() {
|
this.$router.go(-1);
|
}
|
}
|
};
|
</script>
|
|
<style scoped>
|
.add-plan {
|
padding: 20px;
|
}
|
|
.add-plan .el-card {
|
max-width: 800px;
|
margin: 0 auto;
|
}
|
</style>
|