Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec76caf424 | ||
|
|
a680f19222 | ||
|
|
ed06b15e70 | ||
|
|
618a8bc2e0 | ||
|
|
f369993880 | ||
|
|
3bd2e85f01 | ||
| 8a0b0aae88 | |||
|
|
4ecf713414 | ||
| 10125160d3 | |||
|
|
b208def4cf | ||
| 36564630cc | |||
|
|
6a6ead9995 | ||
|
|
8400759adc | ||
| 25be4ddd57 | |||
| d9b202e6bd | |||
| b3a05def01 | |||
| 1af3692c69 | |||
| 06b6abdea7 | |||
|
|
69f1a1a96e | ||
|
|
80948d6d59 | ||
| be61850df2 | |||
| cd13e8635a | |||
| 6d86045a40 | |||
| 36c5476b36 | |||
|
|
efa7981828 | ||
|
|
c4e7dce7e3 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -19,4 +19,6 @@ selenium-debug.log
|
|||||||
|
|
||||||
# common
|
# common
|
||||||
common/common.vue
|
common/common.vue
|
||||||
dist.zip
|
/src/views/common/common.vue
|
||||||
|
package-lock.json
|
||||||
|
config/index.js
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Various Dev Server settings
|
// Various Dev Server settings
|
||||||
host: '192.168.110.162', // can be overwritten by process.env.HOST
|
host: 'localhost', // can be overwritten by process.env.HOST
|
||||||
port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
||||||
autoOpenBrowser: true,
|
autoOpenBrowser: true,
|
||||||
errorOverlay: true,
|
errorOverlay: true,
|
||||||
|
|||||||
2153
package-lock.json
generated
2153
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const baseUrl = "http://192.168.110.100:9200/pb"; //张川川后端
|
// const baseUrl = "http://192.168.110.100:9200/pb"; //张川川后端
|
||||||
// const baseUrl = 'http://59.110.212.44:9100/pb'
|
// const baseUrl = 'http://59.110.212.44:9100/pb'
|
||||||
// const baseUrl = "https://testapi.nuttyreading.com";
|
// const baseUrl = "https://testapi.nuttyreading.com";
|
||||||
// const baseUrl = 'https://api.nuttyreading.com'
|
const baseUrl = 'https://api.nuttyreading.com'
|
||||||
// function commonFun() {
|
// function commonFun() {
|
||||||
// console.log("公共方法")
|
// console.log("公共方法")
|
||||||
// }
|
// }
|
||||||
|
|||||||
258
src/views/components/courseList/commont.vue
Normal file
258
src/views/components/courseList/commont.vue
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
<template>
|
||||||
|
<div style="width: 100%;height: 100%;">
|
||||||
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="query"
|
||||||
|
@keyup.enter.native="getList()"
|
||||||
|
style="position: relative;"
|
||||||
|
>
|
||||||
|
<el-form-item label="评论内容">
|
||||||
|
<el-input
|
||||||
|
style="width: 100%;"
|
||||||
|
v-model="query.content"
|
||||||
|
placeholder="请输入评论内容"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item style="width: 120px;">
|
||||||
|
<el-button
|
||||||
|
@click="
|
||||||
|
pageIndex = 1;
|
||||||
|
getList();
|
||||||
|
"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button
|
||||||
|
v-if="tableData.length > 0"
|
||||||
|
style="position: absolute;right: 0;"
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
@click="deleteHandle('all')"
|
||||||
|
>批量删除</el-button
|
||||||
|
>
|
||||||
|
<!-- <el-button type="text"
|
||||||
|
@click="changeDefalutExpand()"
|
||||||
|
style="position: absolute;right: 0;"
|
||||||
|
:style="`color:${defaultExpand?'#17B3A3':'#333'}`"
|
||||||
|
>{{ !defaultExpand ? "收起" : "展开" }}全部评论
|
||||||
|
<i class="el-icon-s-comment" ></i
|
||||||
|
></el-button> -->
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
<el-table
|
||||||
|
row-key="id"
|
||||||
|
v-if="refreshTable"
|
||||||
|
:default-expand-all="defaultExpand"
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
height="calc(100% - 40px)"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
:default-sort="{ prop: 'date', order: 'descending' }"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55"> </el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
fixed
|
||||||
|
prop="createTime"
|
||||||
|
label="日期"
|
||||||
|
width="200"
|
||||||
|
sortable
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label="姓名" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>
|
||||||
|
<el-tooltip placement="top" v-if="scope.row.user">
|
||||||
|
<div slot="content">
|
||||||
|
<div>
|
||||||
|
<p v-if="scope.row.user.nickname">
|
||||||
|
昵称:{{ scope.row.user.nickname }}
|
||||||
|
</p>
|
||||||
|
<p v-if="scope.row.user.name">
|
||||||
|
姓名:{{ scope.row.user.name }}
|
||||||
|
</p>
|
||||||
|
<p v-if="scope.row.user.email">
|
||||||
|
邮箱:{{ scope.row.user.email }}
|
||||||
|
</p>
|
||||||
|
<p v-if="scope.row.user.tel">
|
||||||
|
手机号:{{ scope.row.user.tel }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="avatar">
|
||||||
|
<img
|
||||||
|
:src="scope.row.user ? scope.row.user.avatar : ''"
|
||||||
|
alt=""
|
||||||
|
v-if="scope.row.user && scope.row.user.avatar"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
|
<div class="avatar" v-else></div>
|
||||||
|
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="评论内容">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div v-html="scope.row.content"></div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="操作" width="60">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span
|
||||||
|
style="color: red;cursor: pointer;"
|
||||||
|
@click="deleteHandle('one', scope.row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="totalPage"
|
||||||
|
style="padding: 30px 0; text-align: center;"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: ["courseId"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
selectData: [],
|
||||||
|
query: {
|
||||||
|
content: ""
|
||||||
|
},
|
||||||
|
pageIndex: 1,
|
||||||
|
defaultExpand: false,
|
||||||
|
refreshTable: true,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
handleSelectionChange(data) {
|
||||||
|
console.log("data at line 141:", data);
|
||||||
|
this.selectData = data;
|
||||||
|
},
|
||||||
|
changeDefalutExpand() {
|
||||||
|
this.refreshTable = false;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.refreshTable = true;
|
||||||
|
this.defaultExpand = !this.defaultExpand;
|
||||||
|
});
|
||||||
|
this.$forceUpdate();
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.pageIndex = val;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(
|
||||||
|
"/master/courseGuestbook/getCourseGuestbookList"
|
||||||
|
),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
limit: this.pageSize,
|
||||||
|
page: this.pageIndex,
|
||||||
|
type: 0, //类型0课程1章节
|
||||||
|
courseId: this.courseId ? this.courseId : "",
|
||||||
|
|
||||||
|
chapterId: "",
|
||||||
|
content: this.query.content //内容
|
||||||
|
})
|
||||||
|
}).then(res => {
|
||||||
|
console.log("res at line 68:", res);
|
||||||
|
|
||||||
|
if (res.data.code == 0 && res.data.page.records.length > 0) {
|
||||||
|
this.tableData = res.data.page.records ? res.data.page.records : [];
|
||||||
|
this.totalPage = res.data.page.total;
|
||||||
|
this.$forceUpdate();
|
||||||
|
} else {
|
||||||
|
this.tableData = [];
|
||||||
|
this.totalPage = 0;
|
||||||
|
this.$forceUpdate();
|
||||||
|
}
|
||||||
|
// console.log(row, "row" , res.data.resList,this.resList);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
deleteHandle(type, id) {
|
||||||
|
if (type == "all") {
|
||||||
|
if (this.selectData.length == 0) {
|
||||||
|
this.$message.error("请至少选择一条评论");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.$confirm(`请确认是否${type == "all" ? "批量" : ""}删除?`, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
var ids = this.selectData.map(e => e.id).join(",");
|
||||||
|
console.log("ids at line 205:", ids);
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(
|
||||||
|
`/master/courseGuestbook/delCourseGuestbook`
|
||||||
|
),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
ids: type == "all" ? ids : id
|
||||||
|
})
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.avatar {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 40px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
:default-active="menuActiveName || 'home'"
|
:default-active="menuActiveName || 'home'"
|
||||||
:collapse="sidebarFold"
|
:collapse="sidebarFold"
|
||||||
:collapseTransition="false"
|
:collapseTransition="false"
|
||||||
class="site-sidebar__menu">
|
class="site-sidebar__menu"
|
||||||
|
>
|
||||||
<el-menu-item index="home" @click="$router.push({ name: 'home' })">
|
<el-menu-item index="home" @click="$router.push({ name: 'home' })">
|
||||||
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
|
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
|
||||||
<span slot="title">首页</span>
|
<span slot="title">首页</span>
|
||||||
@@ -28,7 +29,8 @@
|
|||||||
v-for="menu in menuList"
|
v-for="menu in menuList"
|
||||||
:key="menu.menuId"
|
:key="menu.menuId"
|
||||||
:menu="menu"
|
:menu="menu"
|
||||||
:dynamicMenuRoutes="dynamicMenuRoutes">
|
:dynamicMenuRoutes="dynamicMenuRoutes"
|
||||||
|
>
|
||||||
</sub-menu>
|
</sub-menu>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,77 +38,114 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import SubMenu from './main-sidebar-sub-menu'
|
import SubMenu from "./main-sidebar-sub-menu";
|
||||||
import { isURL } from '@/utils/validate'
|
import { isURL } from "@/utils/validate";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dynamicMenuRoutes: []
|
dynamicMenuRoutes: []
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
SubMenu
|
SubMenu
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
sidebarLayoutSkin: {
|
sidebarLayoutSkin: {
|
||||||
get () { return this.$store.state.common.sidebarLayoutSkin }
|
get() {
|
||||||
|
return this.$store.state.common.sidebarLayoutSkin;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
sidebarFold: {
|
sidebarFold: {
|
||||||
get () { return this.$store.state.common.sidebarFold }
|
get() {
|
||||||
|
return this.$store.state.common.sidebarFold;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
menuList: {
|
menuList: {
|
||||||
get () { return this.$store.state.common.menuList },
|
get() {
|
||||||
set (val) { this.$store.commit('common/updateMenuList', val) }
|
return this.$store.state.common.menuList;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("common/updateMenuList", val);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
menuActiveName: {
|
menuActiveName: {
|
||||||
get () { return this.$store.state.common.menuActiveName },
|
get() {
|
||||||
set (val) { this.$store.commit('common/updateMenuActiveName', val) }
|
return this.$store.state.common.menuActiveName;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("common/updateMenuActiveName", val);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mainTabs: {
|
mainTabs: {
|
||||||
get () { return this.$store.state.common.mainTabs },
|
get() {
|
||||||
set (val) { this.$store.commit('common/updateMainTabs', val) }
|
return this.$store.state.common.mainTabs;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("common/updateMainTabs", val);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mainTabsActiveName: {
|
mainTabsActiveName: {
|
||||||
get () { return this.$store.state.common.mainTabsActiveName },
|
get() {
|
||||||
set (val) { this.$store.commit('common/updateMainTabsActiveName', val) }
|
return this.$store.state.common.mainTabsActiveName;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("common/updateMainTabsActiveName", val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
$route: 'routeHandle'
|
$route: "routeHandle"
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
|
this.menuList = JSON.parse(sessionStorage.getItem("menuList") || "[]");
|
||||||
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
|
this.dynamicMenuRoutes = JSON.parse(
|
||||||
this.routeHandle(this.$route)
|
sessionStorage.getItem("dynamicMenuRoutes") || "[]"
|
||||||
|
);
|
||||||
|
this.routeHandle(this.$route);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 路由操作
|
// 路由操作
|
||||||
routeHandle(route) {
|
routeHandle(route) {
|
||||||
|
console.log("route at line 12384:", route);
|
||||||
if (route.meta.isTab) {
|
if (route.meta.isTab) {
|
||||||
// tab选中, 不存在先添加
|
// tab选中, 不存在先添加
|
||||||
var tab = this.mainTabs.filter(item => item.name === route.name)[0]
|
var tab = this.mainTabs.filter(item => item.name === route.name)[0];
|
||||||
|
var tabIndex = this.mainTabs.findIndex(item => item.name === route.name);
|
||||||
|
console.log('tabIndex at line 113:', tabIndex)
|
||||||
if (!tab) {
|
if (!tab) {
|
||||||
if (route.meta.isDynamic) {
|
if (route.meta.isDynamic) {
|
||||||
route = this.dynamicMenuRoutes.filter(item => item.name === route.name)[0]
|
route = this.dynamicMenuRoutes.filter(
|
||||||
|
item => item.name === route.name
|
||||||
|
)[0];
|
||||||
if (!route) {
|
if (!route) {
|
||||||
return console.error('未能找到可用标签页!')
|
return console.error("未能找到可用标签页!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tab = {
|
tab = {
|
||||||
menuId: route.meta.menuId || route.name,
|
menuId: route.meta.menuId || route.name,
|
||||||
name: route.name,
|
name: route.name,
|
||||||
title: route.meta.title,
|
title: route.meta.title,
|
||||||
type: isURL(route.meta.iframeUrl) ? 'iframe' : 'module',
|
type: isURL(route.meta.iframeUrl) ? "iframe" : "module",
|
||||||
iframeUrl: route.meta.iframeUrl || '',
|
iframeUrl: route.meta.iframeUrl || "",
|
||||||
params: route.params,
|
params: route.params,
|
||||||
query: route.query
|
query: route.query
|
||||||
|
};
|
||||||
|
this.mainTabs = this.mainTabs.concat(tab);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// this.mainTabs = this.mainTabs.concat({
|
||||||
|
// ...tab,
|
||||||
|
// params: route.params,
|
||||||
|
// query: route.query
|
||||||
|
// });
|
||||||
|
this.mainTabs[tabIndex].query=route.query
|
||||||
|
this.mainTabs[tabIndex].params=route.query
|
||||||
|
console.log("at line 107:", "存在先添加",tab);
|
||||||
}
|
}
|
||||||
this.mainTabs = this.mainTabs.concat(tab)
|
this.menuActiveName = tab.menuId + "";
|
||||||
}
|
this.mainTabsActiveName = tab.name;
|
||||||
this.menuActiveName = tab.menuId + ''
|
|
||||||
this.mainTabsActiveName = tab.name
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -18,7 +18,11 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="优惠卷类型" prop="couponType">
|
<el-form-item label="优惠卷类型" prop="couponType">
|
||||||
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
|
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
|
||||||
<el-select v-model="dataForm.couponType" placeholder="请选择">
|
<el-select
|
||||||
|
v-model="dataForm.couponType"
|
||||||
|
placeholder="请选择"
|
||||||
|
:disabled="!isEdit"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in options"
|
v-for="item in options"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -32,6 +36,7 @@
|
|||||||
<el-col :span="8"
|
<el-col :span="8"
|
||||||
><el-form-item label="使用门槛" prop="useLevel">
|
><el-form-item label="使用门槛" prop="useLevel">
|
||||||
<el-input
|
<el-input
|
||||||
|
:disabled="!isEdit"
|
||||||
v-model="dataForm.useLevel"
|
v-model="dataForm.useLevel"
|
||||||
placeholder=""
|
placeholder=""
|
||||||
oninput="value=value.replace(/[^\d.]/g,'')"
|
oninput="value=value.replace(/[^\d.]/g,'')"
|
||||||
@@ -43,6 +48,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="面额:" prop="couponAmount">
|
<el-form-item label="面额:" prop="couponAmount">
|
||||||
<el-input
|
<el-input
|
||||||
|
:disabled="!isEdit"
|
||||||
v-model="dataForm.couponAmount"
|
v-model="dataForm.couponAmount"
|
||||||
placeholder="面额"
|
placeholder="面额"
|
||||||
oninput="value=value.replace(/[^\d.]/g,'')"
|
oninput="value=value.replace(/[^\d.]/g,'')"
|
||||||
@@ -56,6 +62,7 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="优惠券名称" prop="couponName">
|
<el-form-item label="优惠券名称" prop="couponName">
|
||||||
<el-input
|
<el-input
|
||||||
|
:disabled="!isEdit"
|
||||||
v-model="dataForm.couponName"
|
v-model="dataForm.couponName"
|
||||||
placeholder="名称"
|
placeholder="名称"
|
||||||
></el-input>
|
></el-input>
|
||||||
@@ -90,6 +97,7 @@
|
|||||||
<el-form-item label="优惠卷范围" prop="couponRange">
|
<el-form-item label="优惠卷范围" prop="couponRange">
|
||||||
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
|
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
|
||||||
<el-select
|
<el-select
|
||||||
|
:disabled="!isEdit"
|
||||||
v-model="dataForm.couponRange"
|
v-model="dataForm.couponRange"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
@change="changeRange"
|
@change="changeRange"
|
||||||
@@ -122,13 +130,18 @@
|
|||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span v-if="showCateError" style="color:red; font-size:12px">请选择绑定类目</span>
|
<span v-if="showCateError" style="color:red; font-size:12px"
|
||||||
|
>请选择绑定类目</span
|
||||||
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24" v-if="dataForm.couponRange == 1">
|
<el-col :span="24" v-if="dataForm.couponRange == 1">
|
||||||
<el-form-item label="" prop="rangeInfo" width="100%">
|
<el-form-item label="" prop="rangeInfo" width="100%">
|
||||||
<div class="flexBox">
|
<div class="flexBox">
|
||||||
<el-table v-if="proSelectLinkList.length > 0" :data="proSelectLinkList">
|
<el-table
|
||||||
|
v-if="proSelectLinkList.length > 0"
|
||||||
|
:data="proSelectLinkList"
|
||||||
|
>
|
||||||
<el-table-column label="课程名称">
|
<el-table-column label="课程名称">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.title }}
|
{{ scope.row.title }}
|
||||||
@@ -141,23 +154,30 @@
|
|||||||
style="width:100%;display: flex;
|
style="width:100%;display: flex;
|
||||||
align-items: center;justify-content: center;"
|
align-items: center;justify-content: center;"
|
||||||
>
|
>
|
||||||
<img :src="scope.row.image" alt="" width="40px" height="40px" />
|
<img
|
||||||
|
:src="scope.row.image"
|
||||||
|
alt=""
|
||||||
|
width="40px"
|
||||||
|
height="40px"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="100px">
|
<el-table-column label="操作" width="100px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="danger" @click="delCourse(scope.row.id)" size="mini"
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
@click="delCourse(scope.row.id)"
|
||||||
|
size="mini"
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div
|
<div style="text-align:center; margin-top: 20px">
|
||||||
style="text-align:center; margin-top: 20px"
|
<el-button type="primary" @click="addLinkPro"
|
||||||
|
>添加绑定</el-button
|
||||||
>
|
>
|
||||||
<el-button type="primary" @click="addLinkPro">添加绑定</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -166,7 +186,7 @@
|
|||||||
<el-row ::gutter="10">
|
<el-row ::gutter="10">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="生效方式" prop="effectType">
|
<el-form-item label="生效方式" prop="effectType">
|
||||||
<el-radio-group v-model="dataForm.effectType">
|
<el-radio-group v-model="dataForm.effectType" :disabled="!isEdit">
|
||||||
<el-radio :label="0">长期有效</el-radio>
|
<el-radio :label="0">长期有效</el-radio>
|
||||||
<el-radio :label="1">领取生效</el-radio>
|
<el-radio :label="1">领取生效</el-radio>
|
||||||
<el-radio :label="2">自定义</el-radio>
|
<el-radio :label="2">自定义</el-radio>
|
||||||
@@ -182,6 +202,7 @@
|
|||||||
v-if="dataForm.effectType == '2'"
|
v-if="dataForm.effectType == '2'"
|
||||||
>
|
>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
:disabled="!isEdit"
|
||||||
v-model="dataForm.effectTime"
|
v-model="dataForm.effectTime"
|
||||||
@change="datePicked"
|
@change="datePicked"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
@@ -195,6 +216,7 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="结束时间"
|
label="结束时间"
|
||||||
|
:disabled="!isEdit"
|
||||||
prop="expireTime"
|
prop="expireTime"
|
||||||
v-if="dataForm.effectType == '2'"
|
v-if="dataForm.effectType == '2'"
|
||||||
>
|
>
|
||||||
@@ -212,6 +234,7 @@
|
|||||||
<el-col :span="8" v-show="dataForm.effectType == '1'">
|
<el-col :span="8" v-show="dataForm.effectType == '1'">
|
||||||
<el-form-item label="时效" prop="validity">
|
<el-form-item label="时效" prop="validity">
|
||||||
<el-input
|
<el-input
|
||||||
|
:disabled="!isEdit"
|
||||||
placeholder=""
|
placeholder=""
|
||||||
v-model="dataForm.validity"
|
v-model="dataForm.validity"
|
||||||
oninput="value=value.replace(/[^\d.]/g,'')"
|
oninput="value=value.replace(/[^\d.]/g,'')"
|
||||||
@@ -225,6 +248,7 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="封面图" prop="couponUrl">
|
<el-form-item label="封面图" prop="couponUrl">
|
||||||
<el-upload
|
<el-upload
|
||||||
|
:disabled="!isEdit"
|
||||||
:limit="1"
|
:limit="1"
|
||||||
class="el-uploadfeng"
|
class="el-uploadfeng"
|
||||||
:action="baseUrl + '/oss/fileoss'"
|
:action="baseUrl + '/oss/fileoss'"
|
||||||
@@ -246,6 +270,7 @@
|
|||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="dataForm.remark"
|
v-model="dataForm.remark"
|
||||||
|
:disabled="!isEdit"
|
||||||
placeholder="备注"
|
placeholder="备注"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:rows="3"
|
:rows="3"
|
||||||
@@ -261,19 +286,26 @@
|
|||||||
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<selectPro ref="selectPro" v-if="showSelectPro" @close="selectProClose" :requesturl = "requesturl" :oldData="proSelectLinkList"></selectPro>
|
<selectPro
|
||||||
|
ref="selectPro"
|
||||||
|
v-if="showSelectPro"
|
||||||
|
@close="selectProClose"
|
||||||
|
:requesturl="requesturl"
|
||||||
|
:oldData="proSelectLinkList"
|
||||||
|
></selectPro>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import selectPro from '../../../components/selectPro.vue'
|
import selectPro from "../../../components/selectPro.vue";
|
||||||
import global from "../../common/common.vue"; //引入共用组间
|
import global from "../../common/common.vue"; //引入共用组间
|
||||||
export default {
|
export default {
|
||||||
baseUrl: global.baseUrl,
|
baseUrl: global.baseUrl,
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
isEdit: true,
|
||||||
showCateError: false,
|
showCateError: false,
|
||||||
requesturl:'', // 课程的请求地址
|
requesturl: "", // 课程的请求地址
|
||||||
showSelectPro: false,
|
showSelectPro: false,
|
||||||
baseUrl: global.baseUrl,
|
baseUrl: global.baseUrl,
|
||||||
visible: true,
|
visible: true,
|
||||||
@@ -388,25 +420,27 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
selectProClose(data) {
|
selectProClose(data) {
|
||||||
console.log('data', data)
|
console.log("data", data);
|
||||||
this.showSelectPro = false
|
this.showSelectPro = false;
|
||||||
this.requesturl = ''
|
this.requesturl = "";
|
||||||
if (data.length > 0) {
|
if (data.length > 0) {
|
||||||
this.proSelectLinkList = this.proSelectLinkList.concat(data)
|
this.proSelectLinkList = this.proSelectLinkList.concat(data);
|
||||||
var list = [...this.proSelectLinkList]
|
var list = [...this.proSelectLinkList];
|
||||||
this.proSelectLinkList = [...new Map(list.map(item => [item.id, item])).values()];
|
this.proSelectLinkList = [
|
||||||
|
...new Map(list.map(item => [item.id, item])).values()
|
||||||
|
];
|
||||||
// this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',')
|
// this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',')
|
||||||
console.log('去重后', this.proSelectLinkList)
|
console.log("去重后", this.proSelectLinkList);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addLinkPro() {
|
addLinkPro() {
|
||||||
this.showSelectPro = true
|
this.showSelectPro = true;
|
||||||
this.requesturl = '/common/coupon/getCourseList'
|
this.requesturl = "/common/coupon/getCourseList";
|
||||||
},
|
},
|
||||||
changeCate(e) {
|
changeCate(e) {
|
||||||
console.log("e", e);
|
console.log("e", e);
|
||||||
this.cateSelectLinkList = e;
|
this.cateSelectLinkList = e;
|
||||||
this.showCateError = false
|
this.showCateError = false;
|
||||||
// this.dataForm.rangeInfo = e.join(",");
|
// this.dataForm.rangeInfo = e.join(",");
|
||||||
},
|
},
|
||||||
async changeRange(e) {
|
async changeRange(e) {
|
||||||
@@ -438,9 +472,10 @@ export default {
|
|||||||
},
|
},
|
||||||
init(id) {
|
init(id) {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
console.log('没有传值')
|
console.log("没有传值");
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
return
|
this.isEdit = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
this.dataForm.id = id || 0;
|
this.dataForm.id = id || 0;
|
||||||
this.getCouponInfoLoad = true;
|
this.getCouponInfoLoad = true;
|
||||||
@@ -451,12 +486,18 @@ export default {
|
|||||||
url: this.$http.adornUrl(`/common/coupon/getCouponInfo`),
|
url: this.$http.adornUrl(`/common/coupon/getCouponInfo`),
|
||||||
method: "post",
|
method: "post",
|
||||||
data: this.$http.adornData({ id: this.dataForm.id })
|
data: this.$http.adornData({ id: this.dataForm.id })
|
||||||
}).then(({ data }) => {
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
if (data.code !== 0) return this.$message.error(data.msg);
|
if (data.code !== 0) return this.$message.error(data.msg);
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
|
|
||||||
this.getCouponInfoLoad = false;
|
this.getCouponInfoLoad = false;
|
||||||
if (data && data.code == 0) {
|
if (data && data.code == 0) {
|
||||||
this.dataForm = data.couponEntity;
|
this.dataForm = data.couponEntity;
|
||||||
|
|
||||||
|
if (this.dataForm.grantCount > 0) {
|
||||||
|
this.isEdit = false;
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
this.dataForm.effectTime &&
|
this.dataForm.effectTime &&
|
||||||
this.dataForm.effectTime != null
|
this.dataForm.effectTime != null
|
||||||
@@ -464,7 +505,10 @@ export default {
|
|||||||
this.dataForm.effectTime = new Date(
|
this.dataForm.effectTime = new Date(
|
||||||
data.couponEntity.effectTime
|
data.couponEntity.effectTime
|
||||||
).getTime();
|
).getTime();
|
||||||
console.log("this.dataForm.effectTime", this.dataForm.effectTime );
|
console.log(
|
||||||
|
"this.dataForm.effectTime",
|
||||||
|
this.dataForm.effectTime
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
this.dataForm.effectTime = null;
|
this.dataForm.effectTime = null;
|
||||||
}
|
}
|
||||||
@@ -482,27 +526,33 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
this.dataForm.expireTime = null;
|
this.dataForm.expireTime = null;
|
||||||
}
|
}
|
||||||
if(data.couponEntity.rangeList && data.couponEntity.rangeList.length > 0){
|
if (
|
||||||
this.selectLinkList = data.couponEntity.rangeList
|
data.couponEntity.rangeList &&
|
||||||
|
data.couponEntity.rangeList.length > 0
|
||||||
|
) {
|
||||||
|
this.selectLinkList = data.couponEntity.rangeList;
|
||||||
} else {
|
} else {
|
||||||
this.selectLinkList = []
|
this.selectLinkList = [];
|
||||||
}
|
}
|
||||||
if(this.dataForm.couponRange == 2 && this.dataForm.rangeInfo.length > 0 ){
|
if (
|
||||||
|
this.dataForm.couponRange == 2 &&
|
||||||
|
this.dataForm.rangeInfo.length > 0
|
||||||
|
) {
|
||||||
// var list1 = [...this.selectLinkList]
|
// var list1 = [...this.selectLinkList]
|
||||||
// list1.forEach( item => {
|
// list1.forEach( item => {
|
||||||
// item.label = item.name
|
// item.label = item.name
|
||||||
// })
|
// })
|
||||||
// this.cateSelectLinkList = this.selectLinkList
|
// this.cateSelectLinkList = this.selectLinkList
|
||||||
var ss = this.dataForm.rangeInfo.split(',')
|
var ss = this.dataForm.rangeInfo.split(",");
|
||||||
|
|
||||||
this.cateSelectLinkList = ss.map(element => parseInt(element) );
|
|
||||||
|
|
||||||
|
this.cateSelectLinkList = ss.map(element =>
|
||||||
|
parseInt(element)
|
||||||
|
);
|
||||||
} else if (this.dataForm.couponRange == 1) {
|
} else if (this.dataForm.couponRange == 1) {
|
||||||
this.proSelectLinkList = this.selectLinkList
|
this.proSelectLinkList = this.selectLinkList;
|
||||||
} else {
|
} else {
|
||||||
this.cateSelectLinkList = []
|
this.cateSelectLinkList = [];
|
||||||
this.proSelectLinkList = []
|
this.proSelectLinkList = [];
|
||||||
}
|
}
|
||||||
// this.dataForm.couponUrl = {name:'', url:}
|
// this.dataForm.couponUrl = {name:'', url:}
|
||||||
if (this.dataForm.couponUrl && this.dataForm.couponUrl != "") {
|
if (this.dataForm.couponUrl && this.dataForm.couponUrl != "") {
|
||||||
@@ -511,13 +561,14 @@ export default {
|
|||||||
attr.push(img);
|
attr.push(img);
|
||||||
this.fileList = attr;
|
this.fileList = attr;
|
||||||
} else {
|
} else {
|
||||||
this.fileList = []
|
this.fileList = [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
})
|
||||||
|
.catch(err => {
|
||||||
this.$message.error(err.msg);
|
this.$message.error(err.msg);
|
||||||
this.getCouponInfoLoad = false;
|
this.getCouponInfoLoad = false;
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -540,9 +591,9 @@ export default {
|
|||||||
console.log(this.dataForm.startTime);
|
console.log(this.dataForm.startTime);
|
||||||
},
|
},
|
||||||
delCourse(id) {
|
delCourse(id) {
|
||||||
console.log('id',id)
|
console.log("id", id);
|
||||||
let index = this.proSelectLinkList.findIndex(item => item.id === id);
|
let index = this.proSelectLinkList.findIndex(item => item.id === id);
|
||||||
this.proSelectLinkList.splice(index,1)
|
this.proSelectLinkList.splice(index, 1);
|
||||||
},
|
},
|
||||||
closeDia() {
|
closeDia() {
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
@@ -565,17 +616,22 @@ export default {
|
|||||||
couponRange: "", //优惠卷范围 0无限制 1课程卷 2课程品类卷
|
couponRange: "", //优惠卷范围 0无限制 1课程卷 2课程品类卷
|
||||||
rangeInfo: "" //范围详情(课程卷是课程id,分割 课程品类卷是课程分类根id,分割)
|
rangeInfo: "" //范围详情(课程卷是课程id,分割 课程品类卷是课程分类根id,分割)
|
||||||
};
|
};
|
||||||
this.proSelectLinkList = []
|
this.proSelectLinkList = [];
|
||||||
this.cateSelectLinkList = []
|
this.cateSelectLinkList = [];
|
||||||
this.selectLinkList = []
|
this.selectLinkList = [];
|
||||||
this.fileList = []
|
this.fileList = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
// 表单提交
|
// 表单提交
|
||||||
dataFormSubmit() {
|
dataFormSubmit() {
|
||||||
this.$refs["dataForm"].validate(valid => {
|
this.$refs["dataForm"].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if(!this.dataForm.id && this.dataForm.effectType == 2 && this.dataForm.effectTime < new Date().getTime()) return this.$message.error("生效时间不能小于当前时间")
|
if (
|
||||||
|
!this.dataForm.id &&
|
||||||
|
this.dataForm.effectType == 2 &&
|
||||||
|
this.dataForm.effectTime < new Date().getTime()
|
||||||
|
)
|
||||||
|
return this.$message.error("生效时间不能小于当前时间");
|
||||||
if (this.dataForm.effectType == 2) {
|
if (this.dataForm.effectType == 2) {
|
||||||
if (
|
if (
|
||||||
this.dataForm.effectTime == null ||
|
this.dataForm.effectTime == null ||
|
||||||
@@ -595,7 +651,6 @@ export default {
|
|||||||
this.$message.error("生效时间不能大于截止时间");
|
this.$message.error("生效时间不能大于截止时间");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (this.dataForm.effectType == 1) {
|
if (this.dataForm.effectType == 1) {
|
||||||
if (
|
if (
|
||||||
@@ -609,8 +664,11 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.dataForm.couponRange == 2) {
|
if (this.dataForm.couponRange == 2) {
|
||||||
if(this.cateSelectLinkList.length == 0) {this.showCateError = true; return this.$message.error("请选择课程品类");}
|
if (this.cateSelectLinkList.length == 0) {
|
||||||
this.dataForm.rangeInfo = this.cateSelectLinkList.join(',')
|
this.showCateError = true;
|
||||||
|
return this.$message.error("请选择课程品类");
|
||||||
|
}
|
||||||
|
this.dataForm.rangeInfo = this.cateSelectLinkList.join(",");
|
||||||
// if (
|
// if (
|
||||||
// this.dataForm.rangeInfo == null ||
|
// this.dataForm.rangeInfo == null ||
|
||||||
// this.dataForm.rangeInfo == ""
|
// this.dataForm.rangeInfo == ""
|
||||||
@@ -618,11 +676,13 @@ export default {
|
|||||||
// this.$message.error("请选择课程品类");
|
// this.$message.error("请选择课程品类");
|
||||||
// return false;
|
// return false;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
if (this.dataForm.couponRange == 1) {
|
if (this.dataForm.couponRange == 1) {
|
||||||
if(this.proSelectLinkList.length == 0) return this.$message.error("请选择课程");
|
if (this.proSelectLinkList.length == 0)
|
||||||
this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',')
|
return this.$message.error("请选择课程");
|
||||||
|
this.dataForm.rangeInfo = this.proSelectLinkList
|
||||||
|
.map(item => item.id)
|
||||||
|
.join(",");
|
||||||
// if (
|
// if (
|
||||||
// this.dataForm.rangeInfo == null ||
|
// this.dataForm.rangeInfo == null ||
|
||||||
// this.dataForm.rangeInfo == ""
|
// this.dataForm.rangeInfo == ""
|
||||||
@@ -631,8 +691,11 @@ export default {
|
|||||||
// return false;
|
// return false;
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
if(this.dataForm.useLevel < this.dataForm.couponAmount) return this.$message.error("优惠券面额不能大于使用门槛");
|
if (Number(this.dataForm.useLevel) <= Number(this.dataForm.couponAmount)) {
|
||||||
console.log('this.dataForm', this.dataForm)
|
this.$message.error("优惠券面额不能大于使用门槛");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
console.log("this.dataForm", this.dataForm);
|
||||||
|
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl(
|
url: this.$http.adornUrl(
|
||||||
|
|||||||
@@ -1,16 +1,35 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mod-config">
|
<div class="mod-config">
|
||||||
<el-radio-group v-model="currentState" style="margin-bottom: 15px;" @tab-click="handleClick">
|
<el-radio-group
|
||||||
|
v-model="currentState"
|
||||||
|
style="margin-bottom: 15px;"
|
||||||
|
@tab-click="handleClick"
|
||||||
|
>
|
||||||
<el-radio-button label="">全部</el-radio-button>
|
<el-radio-button label="">全部</el-radio-button>
|
||||||
<el-radio-button label="0">生效中</el-radio-button>
|
<el-radio-button label="0">生效中</el-radio-button>
|
||||||
<el-radio-button label="1">已过期</el-radio-button>
|
<el-radio-button label="1">已过期</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="dataForm"
|
||||||
|
@keyup.enter.native="getDataList()"
|
||||||
|
>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="dataForm.couponName" placeholder="参数名" clearable></el-input>
|
<el-input
|
||||||
|
v-model="dataForm.couponName"
|
||||||
|
placeholder="参数名"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="优惠券范围">
|
<el-form-item label="优惠券范围">
|
||||||
<el-select v-model="dataForm.couponRange" placeholder="请选择" @change="pageIndex = 1; getDataList()">
|
<el-select
|
||||||
|
v-model="dataForm.couponRange"
|
||||||
|
placeholder="请选择"
|
||||||
|
@change="
|
||||||
|
pageIndex = 1;
|
||||||
|
getDataList();
|
||||||
|
"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in rangList"
|
v-for="item in rangList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -21,7 +40,14 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="优惠券类型">
|
<el-form-item label="优惠券类型">
|
||||||
<el-select v-model="dataForm.TypeList" placeholder="请选择" @change="pageIndex = 1; getDataList()">
|
<el-select
|
||||||
|
v-model="dataForm.TypeList"
|
||||||
|
placeholder="请选择"
|
||||||
|
@change="
|
||||||
|
pageIndex = 1;
|
||||||
|
getDataList();
|
||||||
|
"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in TypeList"
|
v-for="item in TypeList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -33,7 +59,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="getDataList()">查询</el-button>
|
<el-button @click="getDataList()">查询</el-button>
|
||||||
<el-button v-if="isAuth('book:coupon:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
|
<el-button
|
||||||
|
v-if="isAuth('book:coupon:save')"
|
||||||
|
type="primary"
|
||||||
|
@click="addOrUpdateHandle()"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
<!-- <el-button v-if="isAuth('book:coupon:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
<!-- <el-button v-if="isAuth('book:coupon:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -42,7 +73,8 @@
|
|||||||
border
|
border
|
||||||
v-loading="dataListLoading"
|
v-loading="dataListLoading"
|
||||||
@selection-change="selectionChangeHandle"
|
@selection-change="selectionChangeHandle"
|
||||||
style="width: 100%;">
|
style="width: 100%;"
|
||||||
|
>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
type="selection"
|
type="selection"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
@@ -53,18 +85,23 @@
|
|||||||
prop="id"
|
prop="id"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="序号" width="50">
|
label="序号"
|
||||||
|
width="50"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="couponName"
|
prop="couponName"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="优惠券名称">
|
label="优惠券名称"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="优惠券类型" width="100px">
|
label="优惠券类型"
|
||||||
|
width="100px"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.effectType | getType }}
|
{{ scope.row.effectType | getType }}
|
||||||
</template>
|
</template>
|
||||||
@@ -73,35 +110,55 @@
|
|||||||
prop="couponAmount"
|
prop="couponAmount"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="面值" width="90px">
|
label="面值"
|
||||||
|
width="90px"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="expirationDate"
|
prop="expirationDate"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="时间">
|
label="时间"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.createTime">创建时间:{{scope.row.createTime}}</span>
|
<span v-if="scope.row.createTime"
|
||||||
<span v-if="scope.row.effectTime"><br/>生效时间:{{scope.row.effectTime}}</span>
|
>创建时间:{{ scope.row.createTime }}</span
|
||||||
<span v-if="scope.row.expireTime"><br/>结束时间:{{scope.row.expireTime}}</span>
|
>
|
||||||
|
<span v-if="scope.row.effectTime"
|
||||||
|
><br />生效时间:{{ scope.row.effectTime }}</span
|
||||||
|
>
|
||||||
|
<span v-if="scope.row.expireTime"
|
||||||
|
><br />结束时间:{{ scope.row.expireTime }}</span
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="couponRange"
|
prop="couponRange"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="优惠券范围">
|
label="优惠券范围"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.couponRange | getRange }}
|
{{ scope.row.couponRange | getRange }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="totalCirculation"
|
prop="totalCirculation"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="发行数量" width="90px">
|
label="发行数量"
|
||||||
|
width="90px"
|
||||||
|
>
|
||||||
|
</el-table-column><el-table-column
|
||||||
|
prop="grantCount"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="已领取数量"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.grantCount }}
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
prop="useCount"
|
prop="useCount"
|
||||||
@@ -119,15 +176,17 @@
|
|||||||
prop="receiveCount"
|
prop="receiveCount"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="操作">
|
label="操作"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="scope.row.currentState"
|
v-model="scope.row.currentState"
|
||||||
:active-value="0"
|
:active-value="0"
|
||||||
:inactive-value='1'
|
:inactive-value="1"
|
||||||
@change="changeStateHandle(scope.row.id, scope.row.currentState)"
|
@change="changeStateHandle(scope.row.id, scope.row.currentState)"
|
||||||
active-text="发放中"
|
active-text="发放中"
|
||||||
inactive-text="暂停发放">
|
inactive-text="暂停发放"
|
||||||
|
>
|
||||||
</el-switch>
|
</el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -136,10 +195,23 @@
|
|||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
width="150"
|
width="150"
|
||||||
label="操作">
|
label="操作"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="primary" size="small" plain @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
<el-button
|
||||||
<el-button type="danger" size="small" plain @click="deleteHandle(scope.row.id)">删除</el-button>
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
plain
|
||||||
|
@click="addOrUpdateHandle(scope.row.id)"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
plain
|
||||||
|
@click="deleteHandle(scope.row.id)"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -150,27 +222,32 @@
|
|||||||
:page-sizes="[10, 20, 50, 100]"
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
:page-size="pageSize"
|
:page-size="pageSize"
|
||||||
:total="totalPage"
|
:total="totalPage"
|
||||||
layout="total, sizes, prev, pager, next, jumper">
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
>
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
<add-or-update
|
||||||
|
v-if="addOrUpdateVisible"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="getDataList"
|
||||||
|
></add-or-update>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import global from "@/views/common/common.vue"; //引入共用组间
|
import global from "@/views/common/common.vue"; //引入共用组间
|
||||||
|
|
||||||
import AddOrUpdate from './coupon-add-or-update'
|
import AddOrUpdate from "./coupon-add-or-update";
|
||||||
import commentsListVue from '../book/commentsList.vue'
|
import commentsListVue from "../book/commentsList.vue";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dataForm: {
|
dataForm: {
|
||||||
couponName: '',
|
couponName: "",
|
||||||
couponRange: '',
|
couponRange: "",
|
||||||
couponType:''
|
couponType: ""
|
||||||
},
|
},
|
||||||
currentState:'', // "currentState":""//当前状态 0 发放中 1结束
|
currentState: "", // "currentState":""//当前状态 0 发放中 1结束
|
||||||
dataList: [],
|
dataList: [],
|
||||||
rangList: global.rangList,
|
rangList: global.rangList,
|
||||||
TypeList: global.TypeList,
|
TypeList: global.TypeList,
|
||||||
@@ -181,29 +258,28 @@ import commentsListVue from '../book/commentsList.vue'
|
|||||||
dataListSelections: [],
|
dataListSelections: [],
|
||||||
addOrUpdateVisible: false,
|
addOrUpdateVisible: false,
|
||||||
courseCateList: []
|
courseCateList: []
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
filters: {
|
filters: {
|
||||||
// 格式化时间
|
// 格式化时间
|
||||||
getType(value) {
|
getType(value) {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0:
|
case 0:
|
||||||
return '长期有效'
|
return "长期有效";
|
||||||
case 1:
|
case 1:
|
||||||
return '领取生效'
|
return "领取生效";
|
||||||
case 2:
|
case 2:
|
||||||
return '自定义'
|
return "自定义";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getRange(value) {
|
getRange(value) {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0:
|
case 0:
|
||||||
|
return "无限制";
|
||||||
return '无限制'
|
|
||||||
case 1:
|
case 1:
|
||||||
return '课程券'
|
return "课程券";
|
||||||
case 2:
|
case 2:
|
||||||
return '课程品类券'
|
return "课程品类券";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -211,133 +287,137 @@ import commentsListVue from '../book/commentsList.vue'
|
|||||||
AddOrUpdate
|
AddOrUpdate
|
||||||
},
|
},
|
||||||
activated() {
|
activated() {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 修改优惠券状态
|
// 修改优惠券状态
|
||||||
changeStateHandle(id, state) {
|
changeStateHandle(id, state) {
|
||||||
console.log('进来了')
|
console.log("进来了");
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl('/common/coupon/updateCouponState'),
|
url: this.$http.adornUrl("/common/coupon/updateCouponState"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData({
|
data: this.$http.adornData({
|
||||||
id: id,
|
id: id,
|
||||||
currentState: state
|
currentState: state
|
||||||
})
|
})
|
||||||
}).then(({data}) => {
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: '操作成功',
|
message: "操作成功",
|
||||||
type:'success',
|
type: "success",
|
||||||
duration: 1500,
|
duration: 1500,
|
||||||
onClose: () => {
|
onClose: () => {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(data.msg)
|
this.$message.error(data.msg);
|
||||||
}
|
}
|
||||||
}).catch((e) => {
|
|
||||||
this.$message.error(e.msg)
|
|
||||||
})
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.$message.error(e.msg);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
handleClick() {
|
handleClick() {
|
||||||
console.log(this.currentState)
|
console.log(this.currentState);
|
||||||
this.pageIndex = 1
|
this.pageIndex = 1;
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
|
|
||||||
},
|
},
|
||||||
// 获取数据列表
|
// 获取数据列表
|
||||||
getDataList() {
|
getDataList() {
|
||||||
this.dataListLoading = true
|
this.dataListLoading = true;
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl('/common/coupon/getCouponList'),
|
url: this.$http.adornUrl("/common/coupon/getCouponList"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData({
|
data: this.$http.adornData({
|
||||||
'page': this.pageIndex,
|
page: this.pageIndex,
|
||||||
'limit': this.pageSize,
|
limit: this.pageSize,
|
||||||
'couponName': this.dataForm.couponName,
|
couponName: this.dataForm.couponName,
|
||||||
'currentState': this.currentState, //当前状态 0 发放中 1结束
|
currentState: this.currentState, //当前状态 0 发放中 1结束
|
||||||
"couponType": this.dataForm.couponType,//优惠券类型 0现金 1折扣
|
couponType: this.dataForm.couponType, //优惠券类型 0现金 1折扣
|
||||||
"couponRange":this.dataForm.couponRange,//优惠卷范围 0无限制 1课程卷 2课程品类卷
|
couponRange: this.dataForm.couponRange //优惠卷范围 0无限制 1课程卷 2课程品类卷
|
||||||
})
|
})
|
||||||
}).then(({data}) => {
|
})
|
||||||
if(data.code !==0) return this.$message.error(data.msg)
|
.then(({ data }) => {
|
||||||
|
if (data.code !== 0) return this.$message.error(data.msg);
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.dataList = data.couponPage.records
|
this.dataList = data.couponPage.records;
|
||||||
this.totalPage = data.couponPage.total
|
this.totalPage = data.couponPage.total;
|
||||||
} else {
|
} else {
|
||||||
this.dataList = []
|
this.dataList = [];
|
||||||
this.totalPage = 0
|
this.totalPage = 0;
|
||||||
}
|
}
|
||||||
this.dataListLoading = false
|
this.dataListLoading = false;
|
||||||
}).catch((e) => {
|
|
||||||
this.$message.error(e.msg)
|
|
||||||
this.dataListLoading = false
|
|
||||||
})
|
})
|
||||||
|
.catch(e => {
|
||||||
|
this.$message.error(e.msg);
|
||||||
|
this.dataListLoading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 每页数
|
// 每页数
|
||||||
sizeChangeHandle(val) {
|
sizeChangeHandle(val) {
|
||||||
this.pageSize = val
|
this.pageSize = val;
|
||||||
this.pageIndex = 1
|
this.pageIndex = 1;
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
// 当前页
|
// 当前页
|
||||||
currentChangeHandle(val) {
|
currentChangeHandle(val) {
|
||||||
this.pageIndex = val
|
this.pageIndex = val;
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
// 多选
|
// 多选
|
||||||
selectionChangeHandle(val) {
|
selectionChangeHandle(val) {
|
||||||
this.dataListSelections = val
|
this.dataListSelections = val;
|
||||||
},
|
},
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
addOrUpdateHandle(id) {
|
addOrUpdateHandle(id) {
|
||||||
this.addOrUpdateVisible = true
|
this.addOrUpdateVisible = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id)
|
this.$refs.addOrUpdate.init(id);
|
||||||
// this.addOrUpdateVisible = true
|
// this.addOrUpdateVisible = true
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 删除
|
// 删除
|
||||||
deleteHandle(id) {
|
deleteHandle(id) {
|
||||||
// var ids = id ? [id] : this.dataListSelections.map(item => {
|
// var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||||
// return item.id
|
// return item.id
|
||||||
// })
|
// })
|
||||||
this.$confirm(`确定对[id=${id}]进行删除操作?`, '提示', {
|
this.$confirm(`确定对[id=${id}]进行删除操作?`, "提示", {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: "取消",
|
||||||
type: 'warning'
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl('/common/coupon/delCoupon'),
|
url: this.$http.adornUrl("/common/coupon/delCoupon"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData({
|
data: this.$http.adornData({
|
||||||
id: id
|
id: id
|
||||||
})
|
})
|
||||||
}).then(({ data }) => {
|
}).then(({ data }) => {
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: '操作成功',
|
message: "操作成功",
|
||||||
type: 'success',
|
type: "success",
|
||||||
duration: 1500,
|
duration: 1500,
|
||||||
onClose: () => {
|
onClose: () => {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(data.msg)
|
this.$message.error(data.msg);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
},watch:{
|
},
|
||||||
|
watch: {
|
||||||
currentState: {
|
currentState: {
|
||||||
handler(val, oldVal) {
|
handler(val, oldVal) {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
deep: true
|
deep: true
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
49
src/views/modules/course/commontList.vue
Normal file
49
src/views/modules/course/commontList.vue
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mod-config">
|
||||||
|
<div
|
||||||
|
style="padding:0 20px;box-sizing: border-box;height:calc(100% - 100px);"
|
||||||
|
>
|
||||||
|
<common-commont
|
||||||
|
ref="commonCommont"
|
||||||
|
|
||||||
|
|
||||||
|
></common-commont>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import commonCommont from "@/views/components/courseList/commont.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
aaa:111,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
|
||||||
|
commonCommont
|
||||||
|
},
|
||||||
|
activated() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.commonCommont.init();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.commonCommont.init();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.mod-config{
|
||||||
|
height: 80vh;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -24,7 +24,13 @@
|
|||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input v-model="dataForm.sort" placeholder="排序"></el-input>
|
<el-input v-model="dataForm.sort" placeholder="排序"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="自考开关" prop="canzk">
|
||||||
|
<el-switch
|
||||||
|
v-model="dataForm.canzk"
|
||||||
|
active-text="开启"
|
||||||
|
inactive-text="关闭">
|
||||||
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
label="课程图"
|
label="课程图"
|
||||||
prop="image"
|
prop="image"
|
||||||
@@ -243,7 +249,8 @@ export default {
|
|||||||
id: 0,
|
id: 0,
|
||||||
title: "",
|
title: "",
|
||||||
etitle:'',
|
etitle:'',
|
||||||
titleAbbr:''
|
titleAbbr:'',
|
||||||
|
canzk: false, // 是否开启自考
|
||||||
// publisherName: '',
|
// publisherName: '',
|
||||||
// splits: 0,
|
// splits: 0,
|
||||||
// authorId: [],
|
// authorId: [],
|
||||||
@@ -421,6 +428,7 @@ export default {
|
|||||||
attr.push(img);
|
attr.push(img);
|
||||||
this.fileList = attr;
|
this.fileList = attr;
|
||||||
}
|
}
|
||||||
|
data.canzk = data.canzk == '1' ? true : false
|
||||||
this.dataForm = { ...data };
|
this.dataForm = { ...data };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -462,6 +470,7 @@ export default {
|
|||||||
data: this.$http.adornData({
|
data: this.$http.adornData({
|
||||||
id: this.dataForm.id || undefined,
|
id: this.dataForm.id || undefined,
|
||||||
title: this.dataForm.title,
|
title: this.dataForm.title,
|
||||||
|
canzk: this.dataForm.canzk ? '1' : '0', // 是否可以自考 0/ 1 0 否 1 是
|
||||||
sort: this.dataForm.sort,
|
sort: this.dataForm.sort,
|
||||||
image: this.dataForm.image,
|
image: this.dataForm.image,
|
||||||
content: this.dataForm.content,
|
content: this.dataForm.content,
|
||||||
@@ -479,6 +488,8 @@ export default {
|
|||||||
this.visible = false;
|
this.visible = false;
|
||||||
this.relationProductIds = []
|
this.relationProductIds = []
|
||||||
this.relationProducts = []
|
this.relationProducts = []
|
||||||
|
this.dataForm.canzk = false
|
||||||
|
|
||||||
this.$emit("refreshDataList");
|
this.$emit("refreshDataList");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -169,11 +169,17 @@
|
|||||||
fixed="right"
|
fixed="right"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
width="300"
|
width="280"
|
||||||
label="操作"
|
label="操作"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>
|
<div>
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="addOrUpdateHandle(scope.row)"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{
|
:to="{
|
||||||
path: 'course-courseCatalogue',
|
path: 'course-courseCatalogue',
|
||||||
@@ -182,22 +188,25 @@
|
|||||||
>
|
>
|
||||||
<el-button type="text" size="small">目录管理</el-button>
|
<el-button type="text" size="small">目录管理</el-button>
|
||||||
</router-link>
|
</router-link>
|
||||||
<el-button
|
|
||||||
type="text"
|
|
||||||
size="small"
|
|
||||||
@click="addOrUpdateHandle(scope.row)"
|
|
||||||
>修改</el-button
|
|
||||||
>
|
|
||||||
<el-button
|
<el-button
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="handleQuestionBank(scope.row)"
|
@click="handleQuestionBank(scope.row)"
|
||||||
>题库管理</el-button
|
>题库管理</el-button
|
||||||
>
|
>
|
||||||
|
<!-- <el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="showLinkComment(scope.row)"
|
||||||
|
>评论管理<i class="el-icon-s-comment"></i
|
||||||
|
></el-button> -->
|
||||||
<el-button type="text" size="small" @click="showLinkTags(scope.row)"
|
<el-button type="text" size="small" @click="showLinkTags(scope.row)"
|
||||||
>查看引用</el-button
|
>查看引用</el-button
|
||||||
>
|
>
|
||||||
|
|
||||||
<el-button
|
<el-button
|
||||||
|
style="color: red;"
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="deleteHandle(scope.row.id)"
|
@click="deleteHandle(scope.row.id)"
|
||||||
@@ -298,6 +307,25 @@
|
|||||||
<el-button type="primary" @click="closeLink">好 的</el-button>
|
<el-button type="primary" @click="closeLink">好 的</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<el-drawer
|
||||||
|
title="课程评论一览"
|
||||||
|
:visible.sync="commontListVisible"
|
||||||
|
size="60%"
|
||||||
|
@close="closeCommontLink"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style="padding:0 20px;box-sizing: border-box;height:calc(100% - 120px);"
|
||||||
|
>
|
||||||
|
<common-commont
|
||||||
|
ref="commonCommont"
|
||||||
|
:courseId="courseId"
|
||||||
|
v-if="commontListVisible"
|
||||||
|
></common-commont>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="closeLink">好 的</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
<!-- 教务主任设置 -->
|
<!-- 教务主任设置 -->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="教务主任管理"
|
title="教务主任管理"
|
||||||
@@ -358,16 +386,17 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-drawer title="" size="80%" :visible.sync="showQuestionBank" destroy-on-close>
|
<el-drawer
|
||||||
<div slot="title">
|
title=""
|
||||||
<p
|
size="80%"
|
||||||
style="margin: 0;font-size: 18px;"
|
:visible.sync="showQuestionBank"
|
||||||
|
destroy-on-close
|
||||||
>
|
>
|
||||||
|
<div slot="title">
|
||||||
|
<p style="margin: 0;font-size: 18px;">
|
||||||
<span style="font-weight: bold;">题库管理</span
|
<span style="font-weight: bold;">题库管理</span
|
||||||
><span style="margin-left: 20px;">[ {{ selectCourse.title }} ]</span>
|
><span style="margin-left: 20px;">[ {{ selectCourse.title }} ]</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style="padding:0 20px;box-sizing: border-box;">
|
<div style="padding:0 20px;box-sizing: border-box;">
|
||||||
<question-bank
|
<question-bank
|
||||||
@@ -381,6 +410,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import commonShopTable from "./shopproductTable.vue";
|
import commonShopTable from "./shopproductTable.vue";
|
||||||
|
import commonCommont from "@/views/components/courseList/commont.vue";
|
||||||
import AddOrUpdate from "./course-add-or-update";
|
import AddOrUpdate from "./course-add-or-update";
|
||||||
import questionBank from "./examination/questionBank";
|
import questionBank from "./examination/questionBank";
|
||||||
export default {
|
export default {
|
||||||
@@ -388,6 +418,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
selectCourse: {},
|
selectCourse: {},
|
||||||
showQuestionBank: false,
|
showQuestionBank: false,
|
||||||
|
commontListVisible: false,
|
||||||
selectType: [],
|
selectType: [],
|
||||||
director: {
|
director: {
|
||||||
director: null,
|
director: null,
|
||||||
@@ -446,7 +477,8 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
AddOrUpdate,
|
AddOrUpdate,
|
||||||
commonShopTable,
|
commonShopTable,
|
||||||
questionBank
|
questionBank,
|
||||||
|
commonCommont
|
||||||
},
|
},
|
||||||
activated() {
|
activated() {
|
||||||
if (this.$route.query.upPageInde != null) {
|
if (this.$route.query.upPageInde != null) {
|
||||||
@@ -638,6 +670,9 @@ export default {
|
|||||||
this.resListVisible = false;
|
this.resListVisible = false;
|
||||||
this.resList = [];
|
this.resList = [];
|
||||||
},
|
},
|
||||||
|
closeCommontLink() {
|
||||||
|
this.commontListVisible = false;
|
||||||
|
},
|
||||||
showLinkTags(row) {
|
showLinkTags(row) {
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl("/master/course/getCourseLableLinkList"),
|
url: this.$http.adornUrl("/master/course/getCourseLableLinkList"),
|
||||||
@@ -653,6 +688,27 @@ export default {
|
|||||||
// console.log(row, "row" , res.data.resList,this.resList);
|
// console.log(row, "row" , res.data.resList,this.resList);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
showLinkComment(row) {
|
||||||
|
this.courseId = row.id;
|
||||||
|
this.commontListVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.commonCommont.init();
|
||||||
|
});
|
||||||
|
|
||||||
|
// this.$http({
|
||||||
|
// url: this.$http.adornUrl("/master/courseGuestbook/getCourseGuestbookList"),
|
||||||
|
// method: "post",
|
||||||
|
// data: this.$http.adornData({
|
||||||
|
// courseId: row.id
|
||||||
|
// })
|
||||||
|
// }).then(res => {
|
||||||
|
|
||||||
|
// if (res.data.code == 0 && res.data.resList.length > 0) {
|
||||||
|
// this.resList = res.data.resList;
|
||||||
|
// }
|
||||||
|
// // console.log(row, "row" , res.data.resList,this.resList);
|
||||||
|
// });
|
||||||
|
},
|
||||||
handleChange(value) {
|
handleChange(value) {
|
||||||
console.log(value, "989999999");
|
console.log(value, "989999999");
|
||||||
},
|
},
|
||||||
@@ -904,5 +960,6 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
/deep/.el-drawer__header {
|
/deep/.el-drawer__header {
|
||||||
background-color: #f0f0f0 !important;}
|
background-color: #f0f0f0 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -533,13 +533,13 @@ export default {
|
|||||||
examTime:parseInt(this.ClassModelForm.examTime), // 考试时长
|
examTime:parseInt(this.ClassModelForm.examTime), // 考试时长
|
||||||
})
|
})
|
||||||
}).then(({ data }) => {
|
}).then(({ data }) => {
|
||||||
this.flag = false;
|
|
||||||
if (data && data.code == 0) {
|
if (data && data.code == 0) {
|
||||||
this.$message.success("操作成功");
|
this.$message.success("操作成功");
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.handleClose();
|
this.handleClose();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
this.flag = false;
|
||||||
this.$message.error(data.msg);
|
this.$message.error(data.msg);
|
||||||
}
|
}
|
||||||
}).catch(e =>{
|
}).catch(e =>{
|
||||||
@@ -637,6 +637,7 @@ export default {
|
|||||||
this.$refs["ClassModelForm"].resetFields();
|
this.$refs["ClassModelForm"].resetFields();
|
||||||
this.userList = [];
|
this.userList = [];
|
||||||
this.courseList = [];
|
this.courseList = [];
|
||||||
|
this.flag = false;
|
||||||
});
|
});
|
||||||
this.$emit("handleClose");
|
this.$emit("handleClose");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination @size-change="sheetSizeChangeHandle" @current-change="currentSheetChangeHandle"
|
<el-pagination @size-change="sheetSizeChangeHandle" @current-change="currentSheetChangeHandle"
|
||||||
:current-page="sheetPageIndex" :page-sizes="[40, 60, 100, 150]" :page-size="sheetPageSize" :total="MDtotal"
|
:current-page="sheetPageIndex" :page-sizes="[20,40, 60, 100, 150]" :page-size="sheetPageSize" :total="MDtotal"
|
||||||
layout="total, sizes, prev, pager, next, jumper">
|
layout="total, sizes, prev, pager, next, jumper">
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
</div>
|
</div>
|
||||||
@@ -269,19 +269,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="td5 flexbox" style="justify-content: center; align-items: center; width: 150px;">
|
<div class="td5 flexbox" style="justify-content: center; align-items: center; width: 150px; text-align:center">
|
||||||
|
<!-- <div class="tabName" style="">备注信息:
|
||||||
|
<br/>
|
||||||
|
<span :style="fitem.remark != '' ? 'color: red' : 'color: #999'">{{ fitem.remark != '' ? fitem.remark : '无' }}</span></div> -->
|
||||||
<div style="margin-bottom: 15px; text-align: center;">
|
<div style="margin-bottom: 15px; text-align: center;">
|
||||||
<div class="tabContent">
|
<div class="tabContent">
|
||||||
<span class="tabName">备注</span>
|
<span class="tabName">备注</span>
|
||||||
<!-- <div >备注信息</div> -->
|
|
||||||
<el-button v-if="fitem.remark" size="mini" type="text"
|
<!-- <el-button v-if="fitem.remark" size="mini" type="text"
|
||||||
@click="openShutManager(this, 'box' + index)">查看</el-button>
|
@click="openShutManager(this, 'box' + index)">查看</el-button> -->
|
||||||
<span @click="editBeizhu(fitem)">
|
<span @click="editBeizhu(fitem)">
|
||||||
<icon-svg name="beizhu"
|
<icon-svg name="beizhu"
|
||||||
style="width: 14px; height:14px; margin-left: 10px; cursor: pointer;"></icon-svg>
|
style="width: 14px; height:14px; margin-left: 10px; cursor: pointer;"></icon-svg>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="beizhu tabContent" :id="'box' + index" style="display:none">{{ fitem.remark }}</div>
|
<div class="beizhu tabContent" style="color: red">{{ fitem.remark }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -512,7 +515,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-pagination v-if="tabChange.isPrint != 1" @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
|
<el-pagination v-if="tabChange.isPrint != 1" @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
|
||||||
:current-page="pageIndex" :page-sizes="[40, 60, 100, 150]" :page-size="pageSize" :total="totalPage"
|
:current-page="pageIndex" :page-sizes="[20, 40, 60, 100, 150]" :page-size="pageSize" :total="totalPage"
|
||||||
layout="total, sizes, prev, pager, next, jumper">
|
layout="total, sizes, prev, pager, next, jumper">
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
@@ -600,8 +603,8 @@
|
|||||||
},
|
},
|
||||||
pageIndex: 1,
|
pageIndex: 1,
|
||||||
sheetPageIndex: 1,
|
sheetPageIndex: 1,
|
||||||
pageSize: 40,
|
pageSize: 20,
|
||||||
sheetPageSize: 40,
|
sheetPageSize: 20,
|
||||||
totalPage: 0,
|
totalPage: 0,
|
||||||
dataListLoading: false,
|
dataListLoading: false,
|
||||||
dataListSelections: [],
|
dataListSelections: [],
|
||||||
|
|||||||
@@ -1,20 +1,41 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mod-config">
|
<div class="mod-config">
|
||||||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
|
<el-form
|
||||||
|
:inline="true"
|
||||||
|
:model="dataForm"
|
||||||
|
@keyup.enter.native="getDataList()"
|
||||||
|
>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="dataForm.key" placeholder="参数名" clearable>
|
<el-input v-model="dataForm.key" placeholder="参数名" clearable>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="pageIndex = 1;getDataList()">查询</el-button>
|
<el-button
|
||||||
<el-button v-if="isAuth('book:user:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
|
@click="
|
||||||
<el-button type="primary" @click="addOrUpdateHandle()">合并账号</el-button>
|
pageIndex = 1;
|
||||||
|
getDataList();
|
||||||
|
"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="isAuth('book:user:save')"
|
||||||
|
type="primary"
|
||||||
|
@click="addOrUpdateHandle()"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="addOrUpdateHandle()"
|
||||||
|
>合并账号</el-button
|
||||||
|
>
|
||||||
<!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()"
|
<!-- <el-button v-if="isAuth('book:user:delete')" type="danger" @click="deleteHandle()"
|
||||||
:disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
:disabled="dataListSelections.length <= 0">批量删除</el-button> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table :data="dataList" border v-loading="dataListLoading"
|
<el-table
|
||||||
style="width: 100%;">
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
<!-- <el-table-column type="selection" header-align="center" align="center" width="50">
|
<!-- <el-table-column type="selection" header-align="center" align="center" width="50">
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<!-- <el-table-column label="序号" width="70" align="center">
|
<!-- <el-table-column label="序号" width="70" align="center">
|
||||||
@@ -26,11 +47,20 @@
|
|||||||
prop="id"
|
prop="id"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
label="用户ID">
|
label="用户ID"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="nickname" header-align="center" align="center" label="姓名">
|
<el-table-column
|
||||||
|
prop="nickname"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="姓名"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{scope.row.nickname ? scope.row.nickname : '暂无用户名'}}</span>-
|
<span>{{
|
||||||
|
scope.row.nickname ? scope.row.nickname : "暂无用户名"
|
||||||
|
}}</span
|
||||||
|
>-
|
||||||
<span v-if="scope.row.vip == 0">普通用户</span>
|
<span v-if="scope.row.vip == 0">普通用户</span>
|
||||||
<span v-else-if="scope.row.vip == 2">(吴门医述VIP)</span>
|
<span v-else-if="scope.row.vip == 2">(吴门医述VIP)</span>
|
||||||
<span v-else-if="scope.row.vip == 1">(超级VIP)</span>
|
<span v-else-if="scope.row.vip == 1">(超级VIP)</span>
|
||||||
@@ -44,18 +74,49 @@
|
|||||||
<span v-if="scope.row.sex == 0">女</span><span v-if="scope.row.sex == 1">男</span><span v-if="scope.row.sex == 2">保密</span>
|
<span v-if="scope.row.sex == 0">女</span><span v-if="scope.row.sex == 1">男</span><span v-if="scope.row.sex == 2">保密</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<el-table-column prop="avatar" header-align="center" align="center" label="头像">
|
<el-table-column
|
||||||
|
prop="avatar"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="头像"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="50" height="50" class="tableImg" />
|
<img
|
||||||
<img v-else src="../../../../static/img/morenAvavter.png" width="50" height="50" class="tableImg">
|
v-if="scope.row.avatar && scope.row.avatar != ''"
|
||||||
|
:src="scope.row.avatar"
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
class="tableImg"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else
|
||||||
|
src="../../../../static/img/morenAvavter.png"
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
class="tableImg"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="nickname" header-align="center" align="center" label="昵称">
|
<el-table-column
|
||||||
|
prop="nickname"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="昵称"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="tel" header-align="center" align="center" label="电话">
|
<el-table-column
|
||||||
|
prop="tel"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="电话"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="email" header-align="center" align="center" label="邮箱">
|
<el-table-column
|
||||||
|
prop="email"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="邮箱"
|
||||||
|
>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
prop="password"
|
prop="password"
|
||||||
@@ -75,7 +136,41 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="vip 有效期">
|
label="vip 有效期">
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<el-table-column prop="peanutCoin" header-align="center" align="center" label="天医币">
|
<el-table-column
|
||||||
|
prop="peanutCoin"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="天医币"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="peanutCoin"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="VIP 办理"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-popover
|
||||||
|
placement="right"
|
||||||
|
width="300"
|
||||||
|
trigger="click"
|
||||||
|
@show="getVipMoney(scope.row)"
|
||||||
|
>
|
||||||
|
<el-table :data="vipList">
|
||||||
|
<el-table-column
|
||||||
|
width="150"
|
||||||
|
property="title"
|
||||||
|
label="VIP名称"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="100"
|
||||||
|
property="lastFee"
|
||||||
|
label="开通金额"
|
||||||
|
></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-button slot="reference" size="small">办理金额</el-button>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
prop="readTime"
|
prop="readTime"
|
||||||
@@ -95,25 +190,78 @@
|
|||||||
align="center"
|
align="center"
|
||||||
label="删除标记">
|
label="删除标记">
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
|
<el-table-column
|
||||||
|
fixed="right"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="150"
|
||||||
|
label="操作"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
<el-button
|
||||||
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="addOrUpdateHandle(scope.row.id)"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="deleteHandle(scope.row.id)"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
<el-dropdown>
|
<el-dropdown>
|
||||||
<span class="el-dropdown-link" style="font-size:12px; color:#17B3A3; cursor: pointer;">
|
<span
|
||||||
|
class="el-dropdown-link"
|
||||||
|
style="font-size:12px; color:#17B3A3; cursor: pointer;"
|
||||||
|
>
|
||||||
更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
||||||
</span>
|
</span>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item><el-button type="text" size="small" @click="ck(scope.row)">充/扣天医币</el-button></el-dropdown-item>
|
<el-dropdown-item
|
||||||
|
><el-button type="text" size="small" @click="ck(scope.row)"
|
||||||
|
>充/扣天医币</el-button
|
||||||
|
></el-dropdown-item
|
||||||
|
>
|
||||||
<el-dropdown-item>
|
<el-dropdown-item>
|
||||||
<router-link :to="{ path: 'user-point-memery', query: {'tel':scope.row.tel, 'id':scope.row.id, 'userName':scope.row.nickname} }">
|
<router-link
|
||||||
<el-button type="text" size="small">充/扣天医币记录</el-button>
|
:to="{
|
||||||
|
path: 'user-point-memery',
|
||||||
|
query: {
|
||||||
|
tel: scope.row.tel,
|
||||||
|
id: scope.row.id,
|
||||||
|
userName: scope.row.nickname
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<el-button type="text" size="small"
|
||||||
|
>充/扣天医币记录</el-button
|
||||||
|
>
|
||||||
</router-link>
|
</router-link>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item><el-button type="text" size="small" @click=" thisUserID = scope.row.id; youVisible = true">优惠券管理</el-button></el-dropdown-item>
|
<el-dropdown-item
|
||||||
<el-dropdown-item><el-button type="text" size="small" @click="resetPassword(scope.row)">修改密码</el-button></el-dropdown-item>
|
><el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="
|
||||||
|
thisUserID = scope.row.id;
|
||||||
|
youVisible = true;
|
||||||
|
"
|
||||||
|
>优惠券管理</el-button
|
||||||
|
></el-dropdown-item
|
||||||
|
>
|
||||||
|
<el-dropdown-item
|
||||||
|
><el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="resetPassword(scope.row)"
|
||||||
|
>修改密码</el-button
|
||||||
|
></el-dropdown-item
|
||||||
|
>
|
||||||
<el-dropdown-item>
|
<el-dropdown-item>
|
||||||
<router-link :to="{ path: '/userCourse', query: {id:scope.row.id} }">
|
<router-link
|
||||||
|
:to="{ path: '/userCourse', query: { id: scope.row.id } }"
|
||||||
|
>
|
||||||
<el-button type="text" size="small">
|
<el-button type="text" size="small">
|
||||||
用户课程管理
|
用户课程管理
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -125,18 +273,45 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex"
|
<el-pagination
|
||||||
:page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="total"
|
@size-change="sizeChangeHandle"
|
||||||
layout="total, sizes, prev, pager, next, jumper">
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
>
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
<!-- 弹窗, 新增 / 修改 -->
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
<add-or-update
|
||||||
<el-dialog title="充/扣天医币" :close-on-click-modal="false" :visible.sync="adc" append-to-body width="30%" :before-close="closeDia">
|
v-if="addOrUpdateVisible"
|
||||||
<el-form :model="pointForm" label-width="100px" :rules="pointFormRules" ref="pointForm">
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="getDataList"
|
||||||
|
></add-or-update>
|
||||||
|
<el-dialog
|
||||||
|
title="充/扣天医币"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:visible.sync="adc"
|
||||||
|
append-to-body
|
||||||
|
width="30%"
|
||||||
|
:before-close="closeDia"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
:model="pointForm"
|
||||||
|
label-width="100px"
|
||||||
|
:rules="pointFormRules"
|
||||||
|
ref="pointForm"
|
||||||
|
>
|
||||||
<el-form-item label="用户">
|
<el-form-item label="用户">
|
||||||
{{pointForm.tel}} <span v-if="pointForm.name!=''">({{pointForm.name}})</span>
|
{{ pointForm.tel }}
|
||||||
<span>账户余额:<em style="font-style: normal; font-size: 16px; color: #17B3A3;">{{pointForm.peanutCoin}}</em></span>
|
<span v-if="pointForm.name != ''">({{ pointForm.name }})</span>
|
||||||
|
<span
|
||||||
|
>账户余额:<em
|
||||||
|
style="font-style: normal; font-size: 16px; color: #17B3A3;"
|
||||||
|
>{{ pointForm.peanutCoin }}</em
|
||||||
|
></span
|
||||||
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="充/扣主题">
|
<!-- <el-form-item label="充/扣主题">
|
||||||
<el-input v-model="pointForm.title"></el-input>
|
<el-input v-model="pointForm.title"></el-input>
|
||||||
@@ -145,58 +320,83 @@
|
|||||||
<!-- <el-input v-model="pointForm.pointType" placeholder="0-普通 1-vip"></el-input>
|
<!-- <el-input v-model="pointForm.pointType" placeholder="0-普通 1-vip"></el-input>
|
||||||
-->
|
-->
|
||||||
<el-select v-model="pointForm.pointType" placeholder="请选择">
|
<el-select v-model="pointForm.pointType" placeholder="请选择">
|
||||||
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="金额" prop="pointAmount">
|
<el-form-item label="金额" prop="pointAmount">
|
||||||
<el-input-number v-model="pointForm.pointAmount" :placeholder="pointForm.peanutCoin+'可用'">
|
<el-input-number
|
||||||
|
v-model="pointForm.pointAmount"
|
||||||
|
:placeholder="pointForm.peanutCoin + '可用'"
|
||||||
|
>
|
||||||
</el-input-number>
|
</el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="充扣明细">
|
<el-form-item label="充扣明细">
|
||||||
<el-input type="textarea" rows="5" v-model="pointForm.remark" placeholder="操作说明">
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
rows="5"
|
||||||
|
v-model="pointForm.remark"
|
||||||
|
placeholder="操作说明"
|
||||||
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="closeDia">取消</el-button>
|
<el-button @click="closeDia">取消</el-button>
|
||||||
<el-button type="primary" @click="huaSheng(pointForm.peanutCoin)">确定</el-button>
|
<el-button type="primary" @click="huaSheng(pointForm.peanutCoin)"
|
||||||
|
>确定</el-button
|
||||||
|
>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<userCouponList v-if="youVisible" ref="userCouponList" :userId='thisUserID' @close="closeCoupon"></userCouponList>
|
<userCouponList
|
||||||
|
v-if="youVisible"
|
||||||
|
ref="userCouponList"
|
||||||
|
:userId="thisUserID"
|
||||||
|
@close="closeCoupon"
|
||||||
|
></userCouponList>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import userCouponList from '../coupon/userCouponList'
|
import userCouponList from "../coupon/userCouponList";
|
||||||
import AddOrUpdate from './user-add-or-update'
|
import AddOrUpdate from "./user-add-or-update";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dataForm: {
|
dataForm: {
|
||||||
key: ''
|
key: ""
|
||||||
},
|
},
|
||||||
pointFormRules: {
|
pointFormRules: {
|
||||||
pointAmount: [
|
pointAmount: [
|
||||||
{ required: true, message: '请输入金额', trigger: 'blur' },
|
{ required: true, message: "请输入金额", trigger: "blur" }
|
||||||
],
|
],
|
||||||
pointType:{ required: true, message: '请选择操作类型', trigger: 'blur' }
|
pointType: {
|
||||||
|
required: true,
|
||||||
|
message: "请选择操作类型",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
options: [{
|
vipList: [],
|
||||||
|
options: [
|
||||||
|
{
|
||||||
value: 0,
|
value: 0,
|
||||||
label: '充天医币'
|
label: "充天医币"
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
label: '扣天医币'
|
label: "扣天医币"
|
||||||
}],
|
}
|
||||||
|
],
|
||||||
adc: false,
|
adc: false,
|
||||||
pointForm: {
|
pointForm: {
|
||||||
pointType: 0,
|
pointType: 0,
|
||||||
remark:'',
|
remark: "",
|
||||||
// title:'',
|
// title:'',
|
||||||
pointAmount: 0
|
pointAmount: 0
|
||||||
},
|
},
|
||||||
@@ -211,81 +411,114 @@ import userCouponList from '../coupon/userCouponList'
|
|||||||
youVisible: false,
|
youVisible: false,
|
||||||
youForm: {},
|
youForm: {},
|
||||||
courperList: [],
|
courperList: [],
|
||||||
courperHistList: [],
|
courperHistList: []
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
AddOrUpdate,
|
AddOrUpdate,
|
||||||
userCouponList
|
userCouponList
|
||||||
},
|
},
|
||||||
activated() {
|
activated() {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
closeCoupon(val){
|
getVipMoney(data) {
|
||||||
this.youVisible = false
|
console.log("data at line 420:", data.id);
|
||||||
},
|
|
||||||
// 用户课程
|
|
||||||
userCourse(val){
|
|
||||||
|
|
||||||
},
|
|
||||||
// 获取数据列表
|
|
||||||
getDataList() {
|
|
||||||
this.dataListLoading = true
|
|
||||||
this.$http({
|
this.$http({
|
||||||
// url: this.$http.adornUrl('/book/user/list'),
|
// url: this.$http.adornUrl('/book/user/list'),
|
||||||
url: this.$http.adornUrl('/book/user/getUserList'),
|
url: this.$http.adornUrl("/master/userVip/getVipProductForUser"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData({
|
data: this.$http.adornData({
|
||||||
'page': this.pageIndex,
|
uid: data.id
|
||||||
'limit': this.pageSize,
|
})
|
||||||
'key': this.dataForm.key
|
|
||||||
}),
|
|
||||||
// params: this.$http.adornParams({
|
// params: this.$http.adornParams({
|
||||||
// 'page': 1,
|
// 'page': 1,
|
||||||
// 'limit': this.pageSize,
|
// 'limit': this.pageSize,
|
||||||
// 'key': this.dataForm.key
|
// 'key': this.dataForm.key
|
||||||
// })
|
// })
|
||||||
}).then(({
|
}).then(({ data }) => {
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.dataList = data.user.records
|
var list=[]
|
||||||
this.totalPage = data.user.pages
|
console.log("data at line 436:", data.list);
|
||||||
this.total = data.user.total
|
for(let i in data.list){
|
||||||
this.dataListLoading = false
|
if (data.list[i].length > 0) {
|
||||||
|
list.push([...data.list[i]]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.vipList=list.flat(Infinity)
|
||||||
|
|
||||||
|
console.log("this.vipList at line 440:", this.vipList);
|
||||||
|
}else{
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
this.vipList=[]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closeCoupon(val) {
|
||||||
|
this.youVisible = false;
|
||||||
|
},
|
||||||
|
// 用户课程
|
||||||
|
userCourse(val) {},
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
this.$http({
|
||||||
|
// url: this.$http.adornUrl('/book/user/list'),
|
||||||
|
url: this.$http.adornUrl("/book/user/getUserList"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
key: this.dataForm.key
|
||||||
})
|
})
|
||||||
|
// params: this.$http.adornParams({
|
||||||
|
// 'page': 1,
|
||||||
|
// 'limit': this.pageSize,
|
||||||
|
// 'key': this.dataForm.key
|
||||||
|
// })
|
||||||
|
}).then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataList = data.user.records;
|
||||||
|
this.totalPage = data.user.pages;
|
||||||
|
this.total = data.user.total;
|
||||||
|
this.dataListLoading = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 重置密码
|
// 重置密码
|
||||||
resetPassword(row) {
|
resetPassword(row) {
|
||||||
console.log(row,'row')
|
console.log(row, "row");
|
||||||
this.$prompt('请输入新密码', '提示', {
|
this.$prompt("请输入新密码", "提示", {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: "取消"
|
||||||
// inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
|
// inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
|
||||||
// inputErrorMessage: '邮箱格式不正确'
|
// inputErrorMessage: '邮箱格式不正确'
|
||||||
}).then(({ value }) => {
|
|
||||||
this.$http({
|
|
||||||
url: this.$http.adornUrl('/book/user/updateUserPassword'),
|
|
||||||
method: 'post',
|
|
||||||
data: this.$http.adornData({
|
|
||||||
'id':row.id,
|
|
||||||
'password': value
|
|
||||||
}),
|
|
||||||
}).then(({data}) => {
|
|
||||||
if (data && data.code === 0) {
|
|
||||||
this.$message.success('修改密码成功')
|
|
||||||
}
|
|
||||||
}).catch(({e}) => {
|
|
||||||
console.log(e,'e')
|
|
||||||
})
|
})
|
||||||
|
.then(({ value }) => {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/book/user/updateUserPassword"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: row.id,
|
||||||
|
password: value
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(({ data }) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message.success("修改密码成功");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(({ e }) => {
|
||||||
|
console.log(e, "e");
|
||||||
|
});
|
||||||
// this.$message({
|
// this.$message({
|
||||||
// type: 'success',
|
// type: 'success',
|
||||||
// message: '你的邮箱是: ' + value
|
// message: '你的邮箱是: ' + value
|
||||||
// });
|
// });
|
||||||
}).catch(() => {
|
})
|
||||||
|
.catch(() => {
|
||||||
// this.$message({
|
// this.$message({
|
||||||
// type: 'info',
|
// type: 'info',
|
||||||
// message: '取消输入'
|
// message: '取消输入'
|
||||||
@@ -295,88 +528,92 @@ import userCouponList from '../coupon/userCouponList'
|
|||||||
|
|
||||||
// 每页数
|
// 每页数
|
||||||
sizeChangeHandle(val) {
|
sizeChangeHandle(val) {
|
||||||
this.pageSize = val
|
this.pageSize = val;
|
||||||
this.pageIndex = 1
|
this.pageIndex = 1;
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
// 当前页
|
// 当前页
|
||||||
currentChangeHandle(val) {
|
currentChangeHandle(val) {
|
||||||
this.pageIndex = val
|
this.pageIndex = val;
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
},
|
},
|
||||||
// 多选
|
// 多选
|
||||||
selectionChangeHandle(val) {
|
selectionChangeHandle(val) {
|
||||||
this.dataListSelections = val
|
this.dataListSelections = val;
|
||||||
},
|
},
|
||||||
// 新增 / 修改
|
// 新增 / 修改
|
||||||
addOrUpdateHandle(id) {
|
addOrUpdateHandle(id) {
|
||||||
this.addOrUpdateVisible = true
|
this.addOrUpdateVisible = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.addOrUpdate.init(id)
|
this.$refs.addOrUpdate.init(id);
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
closeDia() {
|
closeDia() {
|
||||||
this.adc = false
|
this.adc = false;
|
||||||
this.$refs.pointForm.resetFields();
|
this.$refs.pointForm.resetFields();
|
||||||
// this.pointForm.pointType == 0
|
// this.pointForm.pointType == 0
|
||||||
},
|
},
|
||||||
// 删除
|
// 删除
|
||||||
deleteHandle(id) {
|
deleteHandle(id) {
|
||||||
var ids = id ? [id] : this.dataListSelections.map(item => {
|
var ids = id
|
||||||
return item.id
|
? [id]
|
||||||
})
|
: this.dataListSelections.map(item => {
|
||||||
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
return item.id;
|
||||||
confirmButtonText: '确定',
|
});
|
||||||
cancelButtonText: '取消',
|
this.$confirm(
|
||||||
type: 'warning'
|
`确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
|
||||||
}).then(() => {
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl('/book/user/delete'),
|
url: this.$http.adornUrl("/book/user/delete"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData(ids, false)
|
data: this.$http.adornData(ids, false)
|
||||||
}).then(({
|
}).then(({ data }) => {
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: '操作成功',
|
message: "操作成功",
|
||||||
type: 'success',
|
type: "success",
|
||||||
duration: 1500,
|
duration: 1500,
|
||||||
onClose: () => {
|
onClose: () => {
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(data.msg)
|
this.$message.error(data.msg);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 充值扣款天医币
|
// 充值扣款天医币
|
||||||
ck(e) {
|
ck(e) {
|
||||||
this.pointForm=e
|
this.pointForm = e;
|
||||||
this.adc = true
|
this.adc = true;
|
||||||
},
|
},
|
||||||
huaSheng(point) {
|
huaSheng(point) {
|
||||||
// console.log(this.pointForm.pointAmount, point)
|
// console.log(this.pointForm.pointAmount, point)
|
||||||
if (this.pointForm.pointAmount > point && this.pointForm.pointType == 1) {
|
if (this.pointForm.pointAmount > point && this.pointForm.pointType == 1) {
|
||||||
return this.$message.error('扣除金额不能大于总金额')
|
return this.$message.error("扣除金额不能大于总金额");
|
||||||
}
|
}
|
||||||
this.$refs['pointForm'].validate((valid) => {
|
this.$refs["pointForm"].validate(valid => {
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl(`/book/user/pointChange?pointType=${this.pointForm.pointType}¬e=${this.pointForm.remark}&pointAmount=${this.pointForm.pointAmount}&id=${this.pointForm.id}`),
|
url: this.$http.adornUrl(
|
||||||
method: 'get',
|
`/book/user/pointChange?pointType=${this.pointForm.pointType}¬e=${this.pointForm.remark}&pointAmount=${this.pointForm.pointAmount}&id=${this.pointForm.id}`
|
||||||
|
),
|
||||||
|
method: "get",
|
||||||
params: this.$http.adornParams()
|
params: this.$http.adornParams()
|
||||||
}).then(({
|
}).then(({ data }) => {
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.$message.success('操作成功')
|
this.$message.success("操作成功");
|
||||||
this.getDataList()
|
this.getDataList();
|
||||||
this.adc = false
|
this.adc = false;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// async getUserCouponList(userId) {
|
// async getUserCouponList(userId) {
|
||||||
// var obj = undefined
|
// var obj = undefined
|
||||||
@@ -422,26 +659,24 @@ import userCouponList from '../coupon/userCouponList'
|
|||||||
|
|
||||||
// 删除优惠券
|
// 删除优惠券
|
||||||
courDelete(e) {
|
courDelete(e) {
|
||||||
let arrList = []
|
let arrList = [];
|
||||||
arrList.push(e.id)
|
arrList.push(e.id);
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl('/book/couponhistory/delete'),
|
url: this.$http.adornUrl("/book/couponhistory/delete"),
|
||||||
method: 'post',
|
method: "post",
|
||||||
data: this.$http.adornData(arrList, false)
|
data: this.$http.adornData(arrList, false)
|
||||||
}).then(({
|
}).then(({ data }) => {
|
||||||
data
|
|
||||||
}) => {
|
|
||||||
if (data && data.code === 0) {
|
if (data && data.code === 0) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: '删除成功',
|
message: "删除成功",
|
||||||
type: 'success',
|
type: "success",
|
||||||
duration: 1500,
|
duration: 1500
|
||||||
})
|
});
|
||||||
this.youhui(this.youForm)
|
this.youhui(this.youForm);
|
||||||
this.youVisible = true
|
this.youVisible = true;
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -193,8 +193,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="开通时长:" v-if="youForm.courseId" prop="days">
|
<el-form-item label="开通时长:" v-if="youForm.courseId" prop="days" style="width:400px">
|
||||||
<el-select v-model="youForm.days" placeholder="请选择开通时长">
|
<el-input v-model="youForm.days" placeholder="请选择开通时长"><template slot="append">天</template></el-input>
|
||||||
|
<!-- <el-select v-model="youForm.days" placeholder="请选择开通时长">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in timeOptions"
|
v-for="item in timeOptions"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -202,7 +203,7 @@
|
|||||||
:value="item.value"
|
:value="item.value"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开通原因:" prop="come" style="width: 400px">
|
<el-form-item label="开通原因:" prop="come" style="width: 400px">
|
||||||
<el-input v-model="youForm.come" type="textarea" :rows="2" placeholder="请输入内容"></el-input>
|
<el-input v-model="youForm.come" type="textarea" :rows="2" placeholder="请输入内容"></el-input>
|
||||||
@@ -329,11 +330,14 @@ export default {
|
|||||||
// AddOrUpdate
|
// AddOrUpdate
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
this.userId=this.$route.query.id
|
||||||
console.log(this.$route.query);
|
console.log(this.$route.query);
|
||||||
console.log(this.userId, "onsole.log(this.$route.query)");
|
console.log(this.userId, "onsole.log(this.$route.query)");
|
||||||
this.init();
|
this.init();
|
||||||
},
|
},
|
||||||
activated() {
|
activated() {
|
||||||
|
this.userId=this.$route.query.id
|
||||||
|
this.init();
|
||||||
// this.getDataList()
|
// this.getDataList()
|
||||||
// this.getcourpeList()
|
// this.getcourpeList()
|
||||||
},
|
},
|
||||||
@@ -482,11 +486,11 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
if (!this.userId) {
|
// if (!this.userId) {
|
||||||
setTimeout(() => {
|
// setTimeout(() => {
|
||||||
this.init();
|
// this.init();
|
||||||
}, 1000);
|
// }, 1000);
|
||||||
}
|
// }
|
||||||
this.$http({
|
this.$http({
|
||||||
url: this.$http.adornUrl(`/book/user/info/${this.userId}`),
|
url: this.$http.adornUrl(`/book/user/info/${this.userId}`),
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|||||||
244
src/views/modules/vip/personnel-management.vue
Normal file
244
src/views/modules/vip/personnel-management.vue
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
<template>
|
||||||
|
<div class="vip-personnel">
|
||||||
|
<el-form :inline="true" :model="dataForm">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="dataForm.userName" placeholder="用户名称" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="dataForm.tel" placeholder="手机号码" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="dataForm.email" placeholder="邮箱" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select v-model="dataForm.type" placeholder="请选择类型">
|
||||||
|
<el-option label="超v" value=1></el-option>
|
||||||
|
<el-option label="吴门医述v(原简易超v)" value=2></el-option>
|
||||||
|
<el-option label="众秒之门vip" value=3></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-select v-model="dataForm.state" placeholder="请选择状态">
|
||||||
|
<el-option label="有效" value=0></el-option>
|
||||||
|
<el-option label="失效" value=1></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button @click="pageIndex = 1;getDataList()">查询</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
style="width: 100%;">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="id"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="70"
|
||||||
|
label="ID">
|
||||||
|
<template slot-scope="scope">{{scope.row.user.id}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
label="用户名称">
|
||||||
|
<template slot-scope="scope">{{scope.row.user.name}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="tel"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
label="手机号码">
|
||||||
|
<template slot-scope="scope">{{scope.row.user.tel}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="email"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
label="邮箱">
|
||||||
|
<template slot-scope="scope">{{scope.row.user.email}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="type"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="120"
|
||||||
|
label="类型">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.type==1">超v</span>
|
||||||
|
<span v-if="scope.row.type==2">吴门医述v(原简易超v)</span>
|
||||||
|
<span v-if="scope.row.type==3">众秒之门vip</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="state"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.state==0">有效</span>
|
||||||
|
<span v-if="scope.row.state==1" style=" color: red;">失效</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="createTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="160"
|
||||||
|
label="开始时间">
|
||||||
|
<template slot-scope="scope">{{scope.row.startTime}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="endTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="160"
|
||||||
|
label="结束时间">
|
||||||
|
<template slot-scope="scope">{{scope.row.endTime}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
fixed="right"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="130"
|
||||||
|
label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-popover
|
||||||
|
placement="right"
|
||||||
|
width="300"
|
||||||
|
trigger="click"
|
||||||
|
@show="getVipMoney(scope.row)"
|
||||||
|
>
|
||||||
|
<el-table :data="vipList" class="vip-list-table">
|
||||||
|
<el-table-column
|
||||||
|
width="150"
|
||||||
|
property="title"
|
||||||
|
label="VIP名称"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="100"
|
||||||
|
property="lastFee"
|
||||||
|
label="开通金额"
|
||||||
|
></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-button slot="reference" size="small">办理金额</el-button>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="totalPage"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper">
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
dataForm: {
|
||||||
|
userName: '',
|
||||||
|
tel: '',
|
||||||
|
email: '',
|
||||||
|
type: '',
|
||||||
|
state: ''
|
||||||
|
},
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
vipList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取列表数据
|
||||||
|
getDataList () {
|
||||||
|
this.dataListLoading = true
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/userVip/listByPage'),
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
current: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
userName: this.dataForm.userName,
|
||||||
|
tel: this.dataForm.tel,
|
||||||
|
email: this.dataForm.email,
|
||||||
|
type: this.dataForm.type,
|
||||||
|
state: this.dataForm.state
|
||||||
|
}
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataList = data.result.records
|
||||||
|
this.totalPage = data.result.total
|
||||||
|
} else {
|
||||||
|
this.dataList = []
|
||||||
|
this.totalPage = 0
|
||||||
|
}
|
||||||
|
this.dataListLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle (val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.pageIndex = 1
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle (val) {
|
||||||
|
this.pageIndex = val
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// VIP办理
|
||||||
|
getVipMoney (data) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/userVip/getVipProductForUser'),
|
||||||
|
method: 'POST',
|
||||||
|
data: this.$http.adornData({
|
||||||
|
uid: data.userId
|
||||||
|
})
|
||||||
|
}).then(({data}) => {
|
||||||
|
let list = []
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
for (let i in data.list) {
|
||||||
|
if (data.list[i].length > 0) {
|
||||||
|
list.push([...data.list[i]])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.vipList = list.flat(Infinity)
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg)
|
||||||
|
this.vipList = []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
activated () {
|
||||||
|
this.getDataList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.vip-personnel .el-form-item:last-child{
|
||||||
|
margin-right:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
214
src/views/modules/vip/product-configuration.vue
Normal file
214
src/views/modules/vip/product-configuration.vue
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
<template>
|
||||||
|
<div class="vip-product">
|
||||||
|
<el-form :inline="true">
|
||||||
|
<el-form-item class="el-form-item">
|
||||||
|
<el-button type="primary" @click="addProduct()">新增</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
style="width: 100%;">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="50">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="type"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="类型">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.type==1">超级vip</span>
|
||||||
|
<span v-if="scope.row.type==2">医学vip</span>
|
||||||
|
<span v-if="scope.row.type==3">国学vip</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="title"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="140"
|
||||||
|
label="title">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="year"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="有效期">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.year }}年 </span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="dateType"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="有效时长">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.dateType==0">长期有效</span>
|
||||||
|
<span v-if="scope.row.dateType==1">短期有效</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="fee"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="价格">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="rebateFee"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
label="折扣价格">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="startTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="160"
|
||||||
|
label="开始时间">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="endTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="160"
|
||||||
|
label="结束时间">
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column-->
|
||||||
|
<!-- prop="delFlag"-->
|
||||||
|
<!-- header-align="center"-->
|
||||||
|
<!-- align="center"-->
|
||||||
|
<!-- label="状态">-->
|
||||||
|
<!-- <template slot-scope="scope">-->
|
||||||
|
<!-- <span v-if="scope.row.delFlag==0">正常</span>-->
|
||||||
|
<!-- <span v-if="scope.row.delFlag!=0">--</span>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<el-table-column
|
||||||
|
fixed="right"
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="150"
|
||||||
|
label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" size="small" @click="updateHandle(scope.row.id)">修改</el-button>
|
||||||
|
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="totalPage"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper">
|
||||||
|
</el-pagination>
|
||||||
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
|
<update-product v-if="updateState" ref="updateProduct" @refreshDataList="getDataList"></update-product>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import UpdateProduct from './update-product'
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
updateState: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
UpdateProduct
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取列表数据
|
||||||
|
getDataList () {
|
||||||
|
this.dataListLoading = true
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/BuyConfig/getVipBuyConfigList'),
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize
|
||||||
|
}
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataList = data.result.records
|
||||||
|
this.totalPage = data.result.total
|
||||||
|
} else {
|
||||||
|
this.dataList = []
|
||||||
|
this.totalPage = 0
|
||||||
|
}
|
||||||
|
this.dataListLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle (val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.pageIndex = 1
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle (val) {
|
||||||
|
this.pageIndex = val
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 新增
|
||||||
|
addProduct () {
|
||||||
|
this.updateState = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.updateProduct.init()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 修改
|
||||||
|
updateHandle (id) {
|
||||||
|
this.updateState = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.updateProduct.init(id)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
deleteHandle (id) {
|
||||||
|
this.$confirm(`确定对[id=${id}]进行[删除]操作?`, '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/BuyConfig/delVipBuyConfig'),
|
||||||
|
method: 'POST',
|
||||||
|
data: {id: id}
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
this.getDataList()
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
activated () {
|
||||||
|
this.getDataList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
188
src/views/modules/vip/update-product.vue
Normal file
188
src/views/modules/vip/update-product.vue
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:visible.sync="visible">
|
||||||
|
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="80px">
|
||||||
|
<el-form-item label="类型" prop="type">
|
||||||
|
<el-select v-model="dataForm.type" placeholder="请选择商品类型">
|
||||||
|
<el-option label="超级vip" value=1></el-option>
|
||||||
|
<el-option label="医学vip" value=2></el-option>
|
||||||
|
<el-option label="国学vip" value=3></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="title" prop="title">
|
||||||
|
<el-input v-model="dataForm.title" placeholder="请输入title"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="有效期" prop="year">
|
||||||
|
<el-input v-model="dataForm.year" placeholder="请输入有效期"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="有效时长" prop="dateType">
|
||||||
|
<el-radio v-model="dataForm.dateType" :label='0'>长期有效</el-radio>
|
||||||
|
<el-radio v-model="dataForm.dateType" :label='1'>短期有效</el-radio>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="价格" prop="fee">
|
||||||
|
<el-input v-model="dataForm.fee" placeholder="请输入价格"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="折扣价格" prop="rebateFee">
|
||||||
|
<el-input v-model="dataForm.rebateFee" placeholder="请输入折扣价格"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="开始时间" prop="startTime" v-if="dataForm.dateType==1">
|
||||||
|
<el-date-picker
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
v-model="dataForm.startTime"
|
||||||
|
type="datetime"
|
||||||
|
placeholder="选择开始时间">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="结束时间" prop="endTime" v-if="dataForm.dateType==1">
|
||||||
|
<el-date-picker
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
v-model="dataForm.endTime"
|
||||||
|
type="datetime"
|
||||||
|
placeholder="选择结束时间">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
dataForm: {
|
||||||
|
id: 0,
|
||||||
|
type: '',
|
||||||
|
title: '',
|
||||||
|
year: '',
|
||||||
|
dateType: 0,
|
||||||
|
fee: '',
|
||||||
|
rebateFee: '',
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
|
},
|
||||||
|
type: 1,
|
||||||
|
year: 0,
|
||||||
|
dataRule: {
|
||||||
|
type: [
|
||||||
|
{ required: true, message: '类型不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
title: [
|
||||||
|
{ required: true, message: 'title不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
year: [
|
||||||
|
{ required: true, message: '有效期不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
fee: [
|
||||||
|
{ required: true, message: '价格不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
rebateFee: [
|
||||||
|
{ required: true, message: '折扣价格不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
startTime: [
|
||||||
|
{ required: true, message: '开始时间不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
endTime: [
|
||||||
|
{ required: true, message: '结束时间不能为空', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init (id) {
|
||||||
|
this.visible = true
|
||||||
|
this.dataForm.id = id
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/BuyConfig/getVipBuyConfigById'),
|
||||||
|
method: 'POST',
|
||||||
|
data: {id: id}
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataForm.type = this.setType(data.data.type)
|
||||||
|
this.dataForm.title = data.data.title
|
||||||
|
this.dataForm.year = data.data.year + '年'
|
||||||
|
this.dataForm.fee = data.data.fee
|
||||||
|
this.dataForm.rebateFee = data.data.rebateFee
|
||||||
|
this.dataForm.startTime = data.data.startTime
|
||||||
|
this.dataForm.endTime = data.data.endTime
|
||||||
|
this.dataForm.dateType = data.data.dateType
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$refs['dataForm'].resetFields()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 设置类型字符串
|
||||||
|
setType (type) {
|
||||||
|
if (type === 1) {
|
||||||
|
return '1'
|
||||||
|
} else if (type === 2) {
|
||||||
|
return '2'
|
||||||
|
} else {
|
||||||
|
return '3'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 数字
|
||||||
|
extractNumbers (str) {
|
||||||
|
return str.replace(/\D/g, '')
|
||||||
|
},
|
||||||
|
// 提交表单
|
||||||
|
dataFormSubmit () {
|
||||||
|
if (this.dataForm.type === '1') {
|
||||||
|
this.type = 1
|
||||||
|
} else if (this.dataForm.type === '2') {
|
||||||
|
this.type = 2
|
||||||
|
} else {
|
||||||
|
this.type = 3
|
||||||
|
}
|
||||||
|
// 数字
|
||||||
|
if (this.dataForm.year) {
|
||||||
|
this.year = this.extractNumbers(this.dataForm.year)
|
||||||
|
}
|
||||||
|
this.$refs['dataForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl('/master/BuyConfig/saveOrUpdateVipBuyConfig'),
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
id: this.dataForm.id,
|
||||||
|
type: this.type,
|
||||||
|
title: this.dataForm.title,
|
||||||
|
year: Number(this.year),
|
||||||
|
dateType: this.dataForm.dateType,
|
||||||
|
fee: Number(this.dataForm.fee),
|
||||||
|
rebateFee: Number(this.dataForm.rebateFee),
|
||||||
|
startTime: this.dataForm.startTime,
|
||||||
|
endTime: this.dataForm.endTime
|
||||||
|
}
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
onClose: () => {
|
||||||
|
this.visible = false
|
||||||
|
this.$emit('refreshDataList')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user