Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

26 changed files with 6 additions and 3845 deletions

View File

@ -5,4 +5,4 @@ VUE_APP_TITLE = 魔创未来
ENV = 'production'
# 魔创未来/生产环境
VUE_APP_BASE_API = 'http://113.45.190.154:8080/'
VUE_APP_BASE_API = '/prod-api'

View File

@ -1,47 +0,0 @@
import request from '@/utils/request'
// 查询
export function list(data) {
return request({
url: '/ToActivity/list',
method: 'post',
data: data
})
}
// 添加
export function add(data) {
return request({
url: '/ToActivity/add',
method: 'post',
data: data
})
}
// 删除
export function deleteActivity(data) {
return request({
url: '/ToActivity/delete',
method: 'post',
data: data
})
}
// 批量删除
export function deleteAllActivity(data) {
return request({
url: '/ToActivity/deleteByIds',
method: 'post',
data: data
})
}
// 修改
export function update(data) {
return request({
url: '/ToActivity/update',
method: 'post',
data: data
})
}

View File

@ -1,7 +0,0 @@
import request from '@/utils/request'
export function getDict(data) {
return request({
url: `/system/dict/data/type/${data.type}`,
method: 'get',
})
}

View File

@ -1,24 +0,0 @@
import request from '@/utils/request'
// 平台收益
export function getIncome() {
return request({
url: '/platformData/getIncome',
method: 'get'
})
}
//收益趋势
export function getTrend() {
return request({
url: '/platformData/getTrend',
method: 'get'
})
}
//用户数据
export function getUserData() {
return request({
url: '/platformData/getUserData',
method: 'get'
})
}

View File

@ -1,16 +0,0 @@
import request from '@/utils/request'
// 查询
export function commissionRatio() {
return request({
url: '/commissionRatio/list',
method: 'get',
})
}
export function update(params) {
return request({
url: '/commissionRatio/update',
method: 'get',
params
})
}

View File

@ -1,49 +0,0 @@
import request from '@/utils/request'
export function list() {
return request({
url: '/memberLevel/list',
method: 'get',
})
}
export function deleteList(id) {
return request({
url: '/memberLevel/deleteMemberLevel?id=' + id,
method: 'get',
})
}
export function updateList(data) {
return request({
url: `/memberLevel/updateMemberLevel`,
method: 'post',
data: data
})
}
export function add(data) {
return request({
url: `/memberLevel/addMemberLevel`,
method: 'post',
data: data
})
}
//绑定会员权益
export function addMemberBenefit(data) {
return request({
url: `/memberBenefit/addMemberBenefit`,
method: 'post',
data: data
})
}
//获取当前会员的权益
export function getMemberBenefit(data) {
return request({
url: '/memberBenefit/getMemberBenefit?memberLevelId=' + data.id,
method: 'get',
})
}

View File

@ -1,39 +0,0 @@
import request from '@/utils/request'
export function list(data) {
return request({
url: '/app/list',
method: 'get',
data: data
})
}
export function update(data) {
return request({
url: '/app/update',
method: 'post',
data: data
})
}
export function add(data) {
return request({
url: '/app/insert',
method: 'post',
data: data
})
}
export function handleDeletet(jobId) {
return request({
url: '/app/delete?id=' + jobId,
method: 'get'
})
}
// 用户公众号
export function UrlFile(data) {
return request({
url: '/app/UrlFile',
method: 'post',
headers: { 'Content-Type': 'multipart/form-data', },
data: data
})
}

View File

@ -1,31 +0,0 @@
import request from '@/utils/request'
export function list(data) {
return request({
url: '/promotion/promotionList',
method: 'post',
data
})
}
export function deleteList(id) {
return request({
url: '/promotion/deletePromotion?promotionId=' + id,
method: 'get',
})
}
export function updateList(data) {
return request({
url: `/memberLevel/updateMemberLevel`,
method: 'post',
data: data
})
}
export function add(data) {
return request({
url: `/promotion/createPromotion`,
method: 'post',
data: data
})
}

View File

@ -1,24 +0,0 @@
import request from '@/utils/request'
export function list(data) {
return request({
url: '/report/selectReport',
method: 'post',
data: data
})
}
export function deleteReport(jobId) {
return request({
url: '/report/deleteReport?id=' + jobId,
method: 'get'
})
}
export function updateStatus(data) {
const {productId, type, status, text } = data
//status 0未处理 1驳回 2通过
return request({
url: `/report/updateStatus?productId=${productId}&type=${type}&status=${status}&text=${text}`,
method: 'get'
})
}

View File

@ -1,49 +0,0 @@
import request from '@/utils/request'
export function rightList() {
return request({
url: '/benefitName/list',
method: 'get',
})
}
export function deleteList(id) {
return request({
url: '/benefitName/delete?id=' + id,
method: 'get',
})
}
export function updateList(data) {
return request({
url: `/benefitName/update`,
method: 'post',
data: data
})
}
export function add(data) {
return request({
url: `/benefitName/add`,
method: 'post',
data: data
})
}
// 根据权益名称id查询权益
export function getBenefitByBenefitId() {
return request({
url: '/benefit/getBenefitByBenefitId',
method: 'get',
})
}
// 添加权益
export function addBenefit(data) {
return request({
url: `/benefit/add`,
method: 'post',
data: data
})
}

View File

@ -17,15 +17,6 @@ export function getType(dictId) {
})
}
// 查询二级字典类型详细
export function getSubType(dictId) {
return request({
url: '/system/dict/data/type/' + dictId,
method: 'get'
})
}
// 新增字典类型
export function addType(data) {
return request({

View File

@ -14,9 +14,8 @@ export let isRelogin = { show: false };
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
baseURL: process.env.NODE_ENV === "production" ? '/api' : process.env.VUE_APP_BASE_API,
// axios中请求配置有baseURL选项表示请求URL公共部分
// baseURL: process.env.VUE_APP_BASE_API,
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 10000
})

View File

@ -1,420 +0,0 @@
<template>
<div class="app-container">
<!-- <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="登录地址" prop="ipaddr">
<el-input
v-model="queryParams.ipaddr"
placeholder="请输入登录地址"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="登录状态"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="登录时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleAllDelete"
>删除</el-button
>
</el-col>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClean"
v-hasPermi="['monitor:logininfor:remove']"
>清空</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-unlock"
size="mini"
:disabled="single"
@click="handleUnlock"
v-hasPermi="['monitor:logininfor:unlock']"
>解锁</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['monitor:logininfor:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<!-- <el-table-column label="举报人" align="center" prop="nickName" width="100" /> -->
<!-- <el-table-column
label="举报时间"
align="center"
prop="createTime"
width="200"
:show-overflow-tooltip="true"
/> -->
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="名称"
align="center"
width="200"
prop="activityName"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column label="状态" align="center" prop="status" width="100">
<template slot-scope="scope">
{{
scope.row.status === 0 ? "未审核" : scope.row.status === 1 ? "驳回" : "通过"
}}
</template>
</el-table-column>
<el-table-column
label="举报标题"
align="center"
prop="productName"
:show-overflow-tooltip="true"
/> -->
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-close"
@click="shwoEdite(scope.row)"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
<!-- <pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNumber"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/> -->
<el-dialog title="添加活动" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="活动名称" required>
<el-input
v-model="form.addtext"
type="input"
placeholder="请输入活动名称"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onUpdateStatus"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="编辑活动" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="编辑活动名称" required>
<el-input
v-model="editForm.activityName"
type="input"
placeholder="请输入活动名称"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { list, add, deleteActivity, deleteAllActivity, update } from "@/api/activity/index";
export default {
name: "report",
dicts: ["sys_common_status"],
data() {
return {
open: false,
editOpen: false,
form: {
addtext: "",
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
selectName: "",
//
showSearch: true,
//
total: 0,
//
list: [],
//
dateRange: [],
//
defaultSort: { prop: "loginTime", order: "descending" },
//
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
deleteAllParams:[],
editForm:{
"activityName": "",
"id": 0
}
};
},
created() {
this.getList();
},
methods: {
cancelEdit(){
this.editOpen = false
this.editForm.activityName = ''
this.editForm.id = ''
},
handleEdit(){
update(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit()
});
},
shwoEdite(row){
this.editOpen = true
this.editForm.activityName = row.activityName
this.editForm.id = row.id
},
handleSelectionChange(selection) {
this.deleteAllParams = selection
},
handleAdd(){
this.open = true
},
cancel() {
this.form.addtext = "";
this.open = false;
},
handleUpdateStatus(row, status) {
this.form.productId = row.productId;
this.form.type = row.type;
this.form.status = status;
if (status === 1) {
this.open = true;
} else {
updateStatus(this.addDateRange(this.form)).then((response) => {
this.$modal.msgSuccess("已通过");
this.getList();
});
}
},
onUpdateStatus() {
add(this.addDateRange({activityName: this.form.addtext})).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNumber = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.queryParams.pageNumber = 1;
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
},
/** 多选框选中数据 */
// handleSelectionChange(selection) {
// this.ids = selection.map((item) => item.infoId);
// this.single = selection.length != 1;
// this.multiple = !selection.length;
// this.selectName = selection.map((item) => item.userName);
// },
/** 排序触发事件 */
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteActivity({id:row.id, activityName:row.activityName });
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
handleAllDelete() {
if(this.deleteAllParams.length === 0 ) {
return this.$modal.msgSuccess("请选择需要删除的内容");
}
this.$modal
.confirm("是否确认批量删除?")
.then( () =>{
debugger
return deleteAllActivity(this.deleteAllParams);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
/** 解锁按钮操作 */
handleUnlock() {
const username = this.selectName;
this.$modal
.confirm('是否确认解锁用户"' + username + '"数据项?')
.then(function () {
return unlockLogininfor(username);
})
.then(() => {
this.$modal.msgSuccess("用户" + username + "解锁成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"monitor/logininfor/export",
{
...this.queryParams,
},
`logininfor_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -1,431 +0,0 @@
<template>
<div class="conatiner">
<!-- <div>
<div>
<div>
<div style="padding: 20px 10px;">平台收益</div>
<div style="display:flex;padding: 20px 10px;">
<div>
本月收益总额{{ incomeData.monthIncome }}
</div>
<div>
今日收益总额:{{ incomeData.todayIncome }}
</div>
<div>
收益总额:{{ incomeData.totalIncome }}
</div>
<div>
年度收益总额:{{ incomeData.yearIncome }}
</div>
</div>
</div>
<div>
<div style="padding: 20px 10px;">收益趋势</div>
<div style="display:flex; padding: 20px 10px;">
<div>
收益环比增长{{ trendData.momTrend }}
</div>
<div>
收益同比增长:{{ trendData.yoyTrend }}
</div>
</div>
</div>
<div>
<div style="padding: 20px 10px;">用户数据</div>
<div style="display:flex; padding: 20px 10px;">
<div>
本月新增用户数{{userData.monthUserCount }}
</div>
<div>
用户总数:{{ userData.userCount }}
</div>
</div>
</div>
</div>
</div> -->
<template>
<div class="dashboard">
<div class="dashboard__container">
<!-- 平台收益 -->
<div class="dashboard__section">
<div class="dashboard__title">平台收益</div>
<div class="dashboard__cards">
<div class="income-card">
<div class="income-card__icon income-card__icon--blue">
¥
</div>
<div class="income-card__content">
<div class="income-card__label">本月收益总额</div>
<div class="income-card__value">{{ incomeData.monthIncome }}</div>
</div>
</div>
<div class="income-card">
<div class="income-card__icon income-card__icon--green">
¥
</div>
<div class="income-card__content">
<div class="income-card__label">今日收益总额</div>
<div class="income-card__value">{{ incomeData.todayIncome }}</div>
</div>
</div>
<div class="income-card">
<div class="income-card__icon income-card__icon--purple">
¥
</div>
<div class="income-card__content">
<div class="income-card__label">收益总额</div>
<div class="income-card__value">{{ incomeData.totalIncome }}</div>
</div>
</div>
<div class="income-card">
<div class="income-card__icon income-card__icon--orange">
¥
</div>
<div class="income-card__content">
<div class="income-card__label">年度收益总额</div>
<div class="income-card__value">{{ incomeData.yearIncome }}</div>
</div>
</div>
</div>
</div>
<!-- 收益趋势 -->
<div class="dashboard__section">
<div class="dashboard__title">收益趋势</div>
<div class="trend-cards">
<div class="trend-card">
<div class="trend-card__icon">
<span class="trend-arrow" :class="{'trend-arrow--down': trendData.momTrend < 0}"></span>
</div>
<div class="trend-card__content">
<div class="trend-card__label">收益环比增长</div>
<div class="trend-card__value" :class="{'trend-card__value--negative': trendData.momTrend < 0}">
{{ trendData.momTrend }}%
</div>
</div>
</div>
<div class="trend-card">
<div class="trend-card__icon">
<span class="trend-arrow" :class="{'trend-arrow--down': trendData.yoyTrend < 0}"></span>
</div>
<div class="trend-card__content">
<div class="trend-card__label">收益同比增长</div>
<div class="trend-card__value" :class="{'trend-card__value--positive': trendData.yoyTrend > 0}">
{{ trendData.yoyTrend }}%
</div>
</div>
</div>
</div>
</div>
<!-- 用户数据 -->
<div class="dashboard__section">
<div class="dashboard__title">用户数据</div>
<div class="user-cards">
<div class="user-card">
<div class="user-card__icon">
<span class="user-icon"></span>
</div>
<div class="user-card__content">
<div class="user-card__label">本月新增用户数</div>
<div class="user-card__value">{{ userData.monthUserCount }}</div>
</div>
</div>
<div class="user-card">
<div class="user-card__icon">
<span class="users-icon"></span>
</div>
<div class="user-card__content">
<div class="user-card__label">用户总数</div>
<div class="user-card__value">{{ userData.userCount }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</div>
</template>
<script>
import { getIncome, getTrend, getUserData } from "@/api/dataStatistics/index";
export default {
name: "dataStatistics",
data() {
return {
incomeData:{},
trendData:{},
userData:{}
};
},
created() {
this.onGetIncome()
this.onGetTrend()
this.onGetUserData()
},
methods: {
onGetIncome() {
getIncome({}).then((res) => {
this.incomeData = res.data
});
},
onGetTrend() {
getTrend({}).then((res) => {
this.trendData = res.data
});
},
onGetUserData() {
getUserData({}).then((res) => {
this.userData = res.data
});
},
},
};
</script>
<style lang="scss" scoped>
//
$primary-blue: #1e88e5;
$primary-green: #43a047;
$primary-purple: #8e24aa;
$primary-orange: #fb8c00;
$text-primary: #2c3e50;
$text-secondary: #666;
$background-light: #f5f6fa;
$card-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
// Mixins
@mixin card-base {
background: #fff;
border-radius: 12px;
box-shadow: $card-shadow;
}
@mixin flex-center {
display: flex;
align-items: center;
justify-content: center;
}
.dashboard {
min-height: 100vh;
background-color: $background-light;
padding: 24px;
&__container {
max-width: 1200px;
margin: 0 auto;
}
&__section {
@include card-base;
margin-bottom: 24px;
overflow: hidden;
}
&__title {
padding: 20px;
font-size: 18px;
font-weight: 600;
color: $text-primary;
border-bottom: 1px solid #eee;
}
&__cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 20px;
padding: 20px;
}
}
.income-card {
display: flex;
align-items: center;
padding: 20px;
@include card-base;
transition: transform 0.3s ease;
&:hover {
transform: translateY(-2px);
}
&__icon {
width: 48px;
height: 48px;
border-radius: 50%;
@include flex-center;
margin-right: 16px;
font-size: 24px;
color: #fff;
font-weight: bold;
&--blue { background: $primary-blue; }
&--green { background: $primary-green; }
&--purple { background: $primary-purple; }
&--orange { background: $primary-orange; }
}
&__content {
flex: 1;
}
&__label {
font-size: 14px;
color: $text-secondary;
margin-bottom: 4px;
}
&__value {
font-size: 24px;
font-weight: 600;
color: $text-primary;
}
}
.trend-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
padding: 20px;
}
.trend-card {
display: flex;
align-items: center;
padding: 20px;
@include card-base;
&__icon {
width: 48px;
height: 48px;
@include flex-center;
margin-right: 16px;
}
&__content {
flex: 1;
}
&__label {
font-size: 14px;
color: $text-secondary;
margin-bottom: 8px;
}
&__value {
font-size: 24px;
font-weight: 600;
&--positive { color: $primary-green; }
&--negative { color: #ff4757; }
}
}
.trend-arrow {
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-bottom: 16px solid $primary-green;
&--down {
transform: rotate(180deg);
border-bottom-color: #ff4757;
}
}
.user-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
padding: 20px;
}
.user-card {
display: flex;
align-items: center;
padding: 20px;
@include card-base;
&__icon {
width: 48px;
height: 48px;
border-radius: 50%;
background: $primary-blue;
@include flex-center;
margin-right: 16px;
}
&__content {
flex: 1;
}
&__label {
font-size: 14px;
color: $text-secondary;
margin-bottom: 4px;
}
&__value {
font-size: 24px;
font-weight: 600;
color: $text-primary;
}
}
.user-icon, .users-icon {
width: 24px;
height: 24px;
background: #fff;
border-radius: 50%;
position: relative;
&::after {
content: '';
position: absolute;
top: -8px;
left: 50%;
transform: translateX(-50%);
width: 12px;
height: 12px;
background: #fff;
border-radius: 50%;
}
}
.users-icon {
&::before {
content: '';
position: absolute;
top: -4px;
left: -8px;
width: 12px;
height: 12px;
background: #fff;
border-radius: 50%;
}
}
@media (max-width: 768px) {
.dashboard {
padding: 16px;
&__cards,
.trend-cards,
.user-cards {
grid-template-columns: 1fr;
}
}
}
</style>

View File

@ -1,138 +0,0 @@
<template>
<div class="app-container">
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleAllDelete"
>删除</el-button
>
</el-col>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-row> -->
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column
label="比例名称"
align="center"
width="200"
prop="ratioName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="比例"
align="center"
width="200"
prop="ratio"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="shwoEdite(scope.row)"
>修改比例</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog title="修改" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="editForm" label-width="60px">
<el-row>
<el-col :span="24">
<el-form-item label="比例" required>
<el-input
v-model="editForm.ratio"
type="number"
placeholder="请输入修改比例"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="color: red;margin-top: 10px;margin-left: 10px;">请输入0-1之间的数字</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { commissionRatio,update } from "@/api/deduct/index";
export default {
name: "report",
dicts: ["sys_common_status"],
data() {
return {
open: false,
editOpen: false,
//
loading: true,
//
total: 0,
//
list: [],
//
//
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
editForm:{
"ratio": "",
"id": null
}
};
},
created() {
this.getList();
},
methods: {
cancelEdit(){
this.editOpen = false
this.editForm.ratio = ''
this.editForm.id = ''
},
handleEdit(){
update(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit()
});
},
shwoEdite(row){
this.editOpen = true
this.editForm.ratio = row.ratio
this.editForm.id = row.id
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
commissionRatio(this.addDateRange({})).then((response) => {
this.list = response.data;
this.loading = false;
});
},
},
};
</script>

View File

@ -994,7 +994,7 @@
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="8">
<!-- <el-card class="update-log">
<el-card class="update-log">
<div slot="header" class="clearfix">
<span>捐赠支持</span>
</div>
@ -1008,7 +1008,7 @@
>你可以请作者喝杯咖啡表示鼓励</span
>
</div>
</el-card> -->
</el-card>
</el-col>
</el-row>
</div>

View File

@ -1,335 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>新增</el-button
>
</el-row>
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column
label="会员名称"
align="center"
width="200"
prop="memberName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="会员原价"
align="center"
width="200"
prop="originalPrice"
:show-overflow-tooltip="true"
/>
<el-table-column
label="订阅周期"
align="center"
width="200"
prop="subscriptionPeriod"
:show-overflow-tooltip="true"
/>
<el-table-column
label="会员价格"
align="center"
width="200"
prop="unitPrice"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-close"
@click="shwoEdite(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="shwRights(scope.row.id)"
>权益权限</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog title="添加会员等级" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="会员名称" required>
<el-input
v-model="form.memberName"
type="input"
placeholder="请输入会员名称"
></el-input>
</el-form-item>
<el-form-item label="原价格" required>
<el-input
v-model="form.originalPrice"
type="number"
placeholder="请输入原价格"
></el-input>
</el-form-item>
<el-form-item label="订阅周期" prop="subscriptionPeriod" required>
<el-select
v-model="form.subscriptionPeriod"
placeholder="选择订阅周期"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_subscription_period"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="会员价格" required>
<el-input
v-model="form.unitPrice"
type="number"
placeholder="请输入会员价格"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onAdd"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 编辑 -->
<el-dialog title="编辑会员等级" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="editForm" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="会员名称" required>
<el-input
v-model="editForm.memberName"
type="input"
placeholder="请输入会员名称"
></el-input>
</el-form-item>
<el-form-item label="原价格" required>
<el-input
v-model="editForm.originalPrice"
type="number"
placeholder="请输入原价格"
></el-input>
</el-form-item>
<el-form-item label="订阅周期" prop="subscriptionPeriod" required>
<el-select
v-model="editForm.subscriptionPeriod"
placeholder="选择订阅周期"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_subscription_period"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="会员价格" required>
<el-input
v-model="editForm.unitPrice"
type="number"
placeholder="请输入会员价格"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
<!-- 权益 -->
<el-dialog title="配置权益" :visible.sync="rightVisible" width="700px" append-to-body>
<el-form ref="form" :model="editForm" label-width="120px">
<el-transfer
:titles="['未有的', '已有的']"
v-model="hasRight"
:data="allRight"
:props="{
key: 'id',
label: 'benefitName',
}"
></el-transfer>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEditRight"></el-button>
<el-button @click="cancelEditRight"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
list,
add,
deleteList,
updateList,
getMemberBenefit,
addMemberBenefit,
} from "@/api/member/index";
import { rightList } from "@/api/rights/index";
import { getDict } from "@/api/common/index";
export default {
name: "report",
dicts: ["member_subscription_period"],
data() {
return {
allRight: [],
hasRight: [],
noRight: [],
currentSelectMemberId:null,
rightVisible: false,
open: false,
editOpen: false,
form: {},
//
loading: true,
list: [],
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
editForm: {},
};
},
created() {
this.getList();
this.onGetDict();
},
mounted() {
// console.log(dict.type.member_benefit_type)
},
methods: {
handleEditRight() {
addMemberBenefit(this.addDateRange({benefitIds:this.hasRight, memberLevelId: this.currentSelectMemberId})).then((response) => {
this.$modal.msgSuccess("操作成功");
this.cancelEditRight();
});
},
cancelEditRight() {
this.rightVisible = false;
this.hasRight = []
this.noRight = []
},
//
cancelEdit() {
this.editOpen = false;
this.editForm = {};
},
handleEdit() {
this.$refs["form"].validate((valid) => {
if (valid) {
updateList(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit();
});
}
});
},
shwoEdite(row) {
this.editOpen = true;
this.editForm = JSON.parse(JSON.stringify(row));
},
//
handleAdd() {
this.open = true;
},
cancel() {
this.form = {};
this.open = false;
},
onAdd() {
this.$refs["form"].validate((valid) => {
if (valid) {
add(this.addDateRange({ ...this.form })).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
}
});
},
//
onGetDict() {
rightList(this.addDateRange({})).then((response) => {
this.allRight = response.data;
});
},
//
shwRights(id) {
this.currentSelectMemberId = id
this.rightVisible = true;
getMemberBenefit(this.addDateRange({ id })).then((response) => {
this.hasRight = response.data.memberBenefitList.map((item) => item.id);
// const excludeNames = this.hasRight.map(item => item.id)
this.noRight = this.allRight.filter((item) => !this.hasRight.includes(item.id));
});
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.data;
this.loading = false;
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteList(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
},
};
</script>

View File

@ -1,312 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleAllDelete"
>删除</el-button
>
</el-col> -->
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>新增</el-button
>
</el-row>
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column
label="权益名称"
align="center"
width="200"
prop="benefitName"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column
label="权益描述"
align="center"
width="200"
prop="benefitDesc"
:show-overflow-tooltip="true"
/>
<el-table-column
label="权益类型"
align="center"
width="200"
prop="benefitType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="权益折扣"
align="center"
width="200"
prop="benefitDiscount"
:show-overflow-tooltip="true"
/> -->
<el-table-column
label="排序"
align="center"
width="200"
prop="benefitOrder"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-close"
@click="shwoEdite(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-plus"
@click="handleToSubData(scope.row)"
>添加</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog title="添加权益" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="权益名称" required>
<el-input
v-model="form.benefitName"
type="input"
placeholder="请输入权益名称"
></el-input>
</el-form-item>
<!-- <el-form-item label="权益描述" required>
<el-input
v-model="form.benefitDesc"
type="input"
placeholder="请输入权益描述"
></el-input>
</el-form-item>
<el-form-item label="权益类型" prop="benefitType" required>
<el-select
v-model="form.benefitType"
placeholder="选择权益类型"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_benefit_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="权益折扣" required>
<el-input
v-model="form.benefitDiscount"
type="number"
placeholder="请输入权益折扣"
></el-input>
</el-form-item> -->
<el-form-item label="排序" required>
<el-input
v-model="form.benefitOrder"
type="number"
placeholder="请输入排序"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onAdd"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="编辑权益" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="editForm" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="权益名称" required>
<el-input
v-model="editForm.benefitName"
type="input"
placeholder="请输入权益名称"
></el-input>
</el-form-item>
<!-- <el-form-item label="权益描述" required>
<el-input
v-model="editForm.benefitDesc"
type="input"
placeholder="请输入权益描述"
></el-input>
</el-form-item>
<el-form-item label="权益类型" prop="benefitType" required>
<el-select
v-model="editForm.benefitType"
placeholder="选择权益类型"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_benefit_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="权益折扣" required>
<el-input
v-model="editForm.benefitDiscount"
type="number"
placeholder="请输入权益折扣"
></el-input>
</el-form-item> -->
<el-form-item label="排序" required>
<el-input
v-model="editForm.benefitOrder"
type="number"
placeholder="请输入排序"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { rightList, add, deleteList, updateList } from "@/api/rights/index";
import { getDict } from "@/api/common/index";
export default {
name: "report",
dicts: ["member_benefit_type"],
data() {
return {
open: false,
editOpen: false,
form: {},
//
loading: true,
list: [],
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
editForm: {},
};
},
created() {
this.getList();
// this.onGetDict()
},
methods: {
handleToSubData(row){
this.$router.push({ path: '/memberRights/subRight/', query: { id: row.id } })
},
//
cancelEdit() {
this.editOpen = false;
this.editForm = {};
},
handleEdit() {
this.$refs["form"].validate((valid) => {
if (valid) {
updateList(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit();
});
}
});
},
shwoEdite(row) {
this.editOpen = true;
this.editForm = JSON.parse(JSON.stringify(row)) ;
},
//
handleAdd() {
this.open = true;
},
cancel() {
this.form = {};
this.open = false;
},
onAdd() {
this.$refs["form"].validate((valid) => {
if (valid) {
add(this.addDateRange({ ...this.form })).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
}
});
},
//
// onGetDict() {
// getDict(this.addDateRange({type:'memberBenefitType'})).then((response) => {
// });
// },
/** 查询登录日志列表 */
getList() {
this.loading = true;
rightList(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.data;
// this.total = response.total;
this.loading = false;
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteList(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
},
};
</script>

View File

@ -1,314 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleAllDelete"
>删除</el-button
>
</el-col> -->
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>新增</el-button
>
</el-row>
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column
label="权益名称"
align="center"
width="200"
prop="benefitName"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column
label="权益描述"
align="center"
width="200"
prop="benefitDesc"
:show-overflow-tooltip="true"
/>
<el-table-column
label="权益类型"
align="center"
width="200"
prop="benefitType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="权益折扣"
align="center"
width="200"
prop="benefitDiscount"
:show-overflow-tooltip="true"
/> -->
<el-table-column
label="排序"
align="center"
width="200"
prop="benefitOrder"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-close"
@click="shwoEdite(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-plus"
@click="handleToSubData(scope.row)"
>添加</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog title="添加权益" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="权益名称" required>
<el-input
v-model="form.benefitName"
type="input"
placeholder="请输入权益名称"
></el-input>
</el-form-item>
<!-- <el-form-item label="权益描述" required>
<el-input
v-model="form.benefitDesc"
type="input"
placeholder="请输入权益描述"
></el-input>
</el-form-item>
<el-form-item label="权益类型" prop="benefitType" required>
<el-select
v-model="form.benefitType"
placeholder="选择权益类型"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_benefit_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="权益折扣" required>
<el-input
v-model="form.benefitDiscount"
type="number"
placeholder="请输入权益折扣"
></el-input>
</el-form-item> -->
<el-form-item label="排序" required>
<el-input
v-model="form.benefitOrder"
type="number"
placeholder="请输入排序"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onAdd"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="编辑权益" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="editForm" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="权益名称" required>
<el-input
v-model="editForm.benefitName"
type="input"
placeholder="请输入权益名称"
></el-input>
</el-form-item>
<!-- <el-form-item label="权益描述" required>
<el-input
v-model="editForm.benefitDesc"
type="input"
placeholder="请输入权益描述"
></el-input>
</el-form-item>
<el-form-item label="权益类型" prop="benefitType" required>
<el-select
v-model="editForm.benefitType"
placeholder="选择权益类型"
clearable
style="width: 100%"
>
<el-option
v-for="dict in dict.type.member_benefit_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="权益折扣" required>
<el-input
v-model="editForm.benefitDiscount"
type="number"
placeholder="请输入权益折扣"
></el-input>
</el-form-item> -->
<el-form-item label="排序" required>
<el-input
v-model="editForm.benefitOrder"
type="number"
placeholder="请输入排序"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getBenefitByBenefitId } from "@/api/rights/index";
import { getDict } from "@/api/common/index";
export default {
name: "report",
dicts: ["member_benefit_type"],
data() {
return {
open: false,
editOpen: false,
form: {},
//
loading: true,
list: [],
queryParams: {
parentId:null,
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
editForm: {},
};
},
created() {
this.queryParams.parentId = this.$route.query && this.$route.query.id;
this.getList();
// this.onGetDict()
},
methods: {
handleToSubData(row){
this.$router.push({ path: '/system/subDict/', query: { id: row.dictCode } })
},
//
cancelEdit() {
this.editOpen = false;
this.editForm = {};
},
handleEdit() {
this.$refs["form"].validate((valid) => {
if (valid) {
updateList(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit();
});
}
});
},
shwoEdite(row) {
this.editOpen = true;
this.editForm = JSON.parse(JSON.stringify(row)) ;
},
//
handleAdd() {
this.open = true;
},
cancel() {
this.form = {};
this.open = false;
},
onAdd() {
this.$refs["form"].validate((valid) => {
if (valid) {
add(this.addDateRange({ ...this.form })).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
}
});
},
//
// onGetDict() {
// getDict(this.addDateRange({type:'memberBenefitType'})).then((response) => {
// });
// },
/** 查询登录日志列表 */
getList() {
this.loading = true;
getBenefitByBenefitId(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.data;
// this.total = response.total;
this.loading = false;
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteList(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
},
};
</script>

View File

@ -1,522 +0,0 @@
<template>
<div class="app-container">
<!-- <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="登录地址" prop="ipaddr">
<el-input
v-model="queryParams.ipaddr"
placeholder="请输入登录地址"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="登录状态"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="登录时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>新增</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-upload
class="upload-demo"
accept="image/*"
ref="upload"
:auto-upload="false"
action="#"
:show-file-list="false"
:limit="1"
:on-change="handleChange"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-col> -->
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClean"
v-hasPermi="['monitor:logininfor:remove']"
>清空</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-unlock"
size="mini"
:disabled="single"
@click="handleUnlock"
v-hasPermi="['monitor:logininfor:unlock']"
>解锁</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['monitor:logininfor:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
<el-table ref="tables" v-loading="loading" :data="list">
<!-- <el-table-column label="举报人" align="center" prop="nickName" width="100" /> -->
<!-- <el-table-column
label="举报时间"
align="center"
prop="createTime"
width="200"
:show-overflow-tooltip="true"
/> -->
<el-table-column
label="名称"
align="center"
width="200"
prop="name"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column
label="地址"
align="center"
width="200"
prop="url"
:show-overflow-tooltip="true"
/> -->
<el-table-column label="二维码" align="center" prop="status" width="100">
<template slot-scope="scope">
<img style="width: 100px; height:100px" :src="scope.row.url" alt="">
</template>
</el-table-column>
<!-- <el-table-column
label="举报标题"
align="center"
prop="productName"
:show-overflow-tooltip="true"
/> -->
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="onDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-close"
@click="shwoEdite(scope.row)"
>修改</el-button
>
</template>
</el-table-column>
</el-table>
<!-- <pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNumber"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/> -->
<el-dialog title="添加信息" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="名称">
<el-input
v-model="form.name"
type="input"
placeholder="请输入名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="地址">
<el-upload
class="upload-demo"
accept="image/*"
ref="upload"
:auto-upload="false"
action="#"
:show-file-list="false"
:limit="1"
:on-change="handleChange"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24" v-if="form.url">
<div style="padding: 4px 20px;">
<div style="font-size: 18px;">
当前图片
</div>
<div>
<img class="addImg" :src="form.url" alt="" />
</div>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onAdd"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="编辑活动" :visible.sync="editOpen" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="名称">
<el-input
v-model="editForm.name"
type="input"
placeholder="请输入名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="地址">
<el-upload
class="upload-demo"
accept="image/*"
ref="upload"
:auto-upload="false"
action="#"
:show-file-list="false"
:limit="1"
:on-change="handleEditChange"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-col>
<!-- <el-col :span="24">
<el-form-item label="地址">
<el-input
v-model="editForm.url"
type="input"
placeholder="请输入地址"
></el-input>
</el-form-item>
</el-col> -->
<el-col :span="24" v-if="editForm.url">
<div style="padding: 4px 20px;">
<div style="font-size: 18px;">
当前图片
</div>
<div>
<img class="addImg" :src="editForm.url" alt="" />
</div>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleEdit"></el-button>
<el-button @click="cancelEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { list, add, handleDeletet, update, UrlFile } from "@/api/official/index";
import { Loading } from "element-ui";
export default {
name: "report",
data() {
return {
open: false,
editOpen: false,
form: {
name: "",
url: "",
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
selectName: "",
//
showSearch: true,
//
total: 0,
//
list: [],
//
dateRange: [],
//
defaultSort: { prop: "loginTime", order: "descending" },
//
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
deleteAllParams: [],
editForm: {
name: "",
url: "",
id: "",
},
};
},
created() {
this.getList();
},
methods: {
handleChange(file) {
let loadingInstance = Loading.service({text:'正在上传图片'});
const formData = new FormData();
formData.append("file", file.raw); // `file`
UrlFile(formData).then((response) => {
if (response.code === 200) {
this.form.url = response.data;
}
}).finally(()=>{
loadingInstance.close();
})
this.$refs.upload.clearFiles();
},
handleEditChange(file) {
let loadingInstance = Loading.service({text:'正在上传图片'});
const formData = new FormData();
formData.append("file", file.raw); // `file`
UrlFile(formData).then((response) => {
if (response.code === 200) {
this.editForm.url = response.data;
}
}).finally(()=>{
loadingInstance.close();
})
this.$refs.upload.clearFiles();
},
cancelEdit() {
this.editOpen = false;
this.editForm.name = "";
this.editForm.url = "";
this.editForm.id = "";
},
handleEdit() {
update(this.addDateRange(this.editForm)).then((response) => {
this.$modal.msgSuccess("编辑成功");
this.getList();
this.cancelEdit();
});
},
shwoEdite(row) {
this.editForm.name = row.name;
this.editForm.url = row.url;
this.editForm.id = row.id;
this.$nextTick(()=>{
this.editOpen = true;
})
},
handleAdd() {
this.open = true;
},
cancel() {
this.form.name = "";
this.form.url = "";
this.open = false;
},
handleUpdateStatus(row, status) {
this.form.productId = row.productId;
this.form.type = row.type;
this.form.status = status;
if (status === 1) {
this.open = true;
} else {
updateStatus(this.addDateRange(this.form)).then((response) => {
this.$modal.msgSuccess("已通过");
this.getList();
});
}
},
onAdd() {
add(this.addDateRange(this.form)).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.data;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNumber = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.queryParams.pageNumber = 1;
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
},
/** 多选框选中数据 */
// handleSelectionChange(selection) {
// this.ids = selection.map((item) => item.infoId);
// this.single = selection.length != 1;
// this.multiple = !selection.length;
// this.selectName = selection.map((item) => item.userName);
// },
/** 排序触发事件 */
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 删除按钮操作 */
onDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return handleDeletet(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
handleAllDelete() {
if (this.deleteAllParams.length === 0) {
return this.$modal.msgSuccess("请选择需要删除的内容");
}
this.$modal
.confirm("是否确认批量删除?")
.then(() => {
debugger;
return deleteAllActivity(this.deleteAllParams);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
/** 解锁按钮操作 */
handleUnlock() {
const username = this.selectName;
this.$modal
.confirm('是否确认解锁用户"' + username + '"数据项?')
.then(function () {
return unlockLogininfor(username);
})
.then(() => {
this.$modal.msgSuccess("用户" + username + "解锁成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"monitor/logininfor/export",
{
...this.queryParams,
},
`logininfor_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
<style>
.addImg {
width: 130px;
height: 130px;
}
</style>

View File

@ -1,210 +0,0 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleAllDelete"
>删除</el-button
>
</el-col> -->
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>新增</el-button
>
</el-row>
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column
label="活动名称"
align="center"
width="200"
prop="activityName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="活动描述"
align="center"
width="200"
prop="description"
:show-overflow-tooltip="true"
/>
<el-table-column
label="开始时间"
align="center"
width="200"
prop="startTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="结束时间"
align="center"
width="200"
prop="endTime"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog title="添加活动" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="活动名称" required>
<el-input
v-model="form.activityName"
type="input"
placeholder="请输入活动名称"
></el-input>
</el-form-item>
<el-form-item label="活动描述" required>
<el-input
v-model="form.description"
type="input"
placeholder="请输入活动描述"
></el-input>
</el-form-item>
<el-form-item label="活动类型">
<el-select style="width: 100%;" v-model="form.activityType" placeholder="请选择活动类型">
<el-option v-for="dict in activityTypeList" :key="dict.dictValue" :label="dict.dictLabel" :value="dict.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="折扣/积分奖励" required>
<el-input
v-model="form.activityValue"
type="number"
placeholder="请输入折扣/积分奖励"
></el-input>
</el-form-item>
<el-form-item label="开始时间" required>
<el-date-picker
v-model="form.time"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onAdd"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { list, add, deleteList, updateList } from "@/api/promotion/index";
import { getDict } from "@/api/common/index";
export default {
name: "report",
data() {
return {
activityTypeList:[],
open: false,
editOpen: false,
form: {
time:''
},
//
loading: true,
list: [],
queryParams: {
pageNum: 1,
pageSize: 100,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
editForm: {},
};
},
created() {
this.getList();
this.onGetDict()
},
methods: {
//
handleAdd() {
this.open = true;
},
cancel() {
this.form = {};
this.open = false;
},
onAdd() {
this.$refs["form"].validate((valid) => {
if (valid) {
const params = JSON.parse(JSON.stringify(this.form))
params.startTime = params.time[0]
params.endTime = params.time[1]
add(this.addDateRange({ ...params })).then((response) => {
this.$modal.msgSuccess("添加成功");
this.getList();
this.cancel();
});
}
});
},
//
onGetDict() {
getDict(this.addDateRange({type:'member_promotion_type'})).then((response) => {
this.activityTypeList = response.data
});
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.rows;
// this.total = response.total;
this.loading = false;
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteList(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
},
};
</script>

View File

@ -1,369 +0,0 @@
<template>
<div class="app-container">
<!-- <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="登录地址" prop="ipaddr">
<el-input
v-model="queryParams.ipaddr"
placeholder="请输入登录地址"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="登录状态"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="登录时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form> -->
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:logininfor:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClean"
v-hasPermi="['monitor:logininfor:remove']"
>清空</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-unlock"
size="mini"
:disabled="single"
@click="handleUnlock"
v-hasPermi="['monitor:logininfor:unlock']"
>解锁</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['monitor:logininfor:export']"
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> -->
<el-table ref="tables" v-loading="loading" :data="list">
<el-table-column label="举报人" align="center" prop="nickName" width="100" />
<el-table-column
label="举报时间"
align="center"
prop="createTime"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
label="举报类型"
align="center"
width="200"
prop="translateType"
:show-overflow-tooltip="true"
/>
<el-table-column label="状态" align="center" prop="status" width="100">
<template slot-scope="scope">
{{ scope.row.status === 0 ? '未审核' : scope.row.status === 1 ? '驳回' : '通过' }}
</template>
</el-table-column>
<el-table-column
label="举报详情"
align="center"
prop="text"
:show-overflow-tooltip="true"
/>
<el-table-column
label="举报名称"
align="center"
prop="productName"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
v-if="scope.row.status === 0"
icon="el-icon-close"
@click="handleUpdateStatus(scope.row, 1)"
>驳回</el-button
>
<el-button
size="mini"
type="text"
v-if="scope.row.status === 0"
icon="el-icon-check"
@click="handleUpdateStatus(scope.row, 2)"
>通过</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNumber"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-dialog title="驳回理由" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" label-width="80px">
<!-- <el-row>
<el-col :span="12">
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row> -->
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.text" type="textarea" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onUpdateStatus"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
list,
deleteReport,
updateStatus
} from "@/api/report/index";
export default {
name: "report",
dicts: ["sys_common_status"],
data() {
return {
open:false,
form:{
text:''
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
selectName: "",
//
showSearch: true,
//
total: 0,
//
list: [],
//
dateRange: [],
//
defaultSort: { prop: "loginTime", order: "descending" },
//
queryParams: {
pageNumber: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined,
},
};
},
created() {
this.getList();
},
methods: {
cancel(){
this.form.text = ''
this.open = false
},
handleUpdateStatus(row, status){
this.form.productId = row.productId
this.form.type = row.type
this.form.status = status
if(status === 1){
this.open = true
}else{
updateStatus(this.addDateRange(this.form)).then((response) => {
this.$modal.msgSuccess("已通过");
this.getList();
});
}
},
onUpdateStatus(){
updateStatus(this.addDateRange(this.form)).then((response) => {
this.$modal.msgSuccess("已驳回");
this.getList();
this.cancel()
});
},
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNumber = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.queryParams.pageNumber = 1;
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
},
/** 多选框选中数据 */
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.infoId);
this.single = selection.length != 1;
this.multiple = !selection.length;
this.selectName = selection.map((item) => item.userName);
},
/** 排序触发事件 */
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal
.confirm("是否确认删除?")
.then(function () {
return deleteReport(row.id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
},
/** 解锁按钮操作 */
handleUnlock() {
const username = this.selectName;
this.$modal
.confirm('是否确认解锁用户"' + username + '"数据项?')
.then(function () {
return unlockLogininfor(username);
})
.then(() => {
this.$modal.msgSuccess("用户" + username + "解锁成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"monitor/logininfor/export",
{
...this.queryParams,
},
`logininfor_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -101,13 +101,6 @@
</el-table-column>
<el-table-column label="字典键值" align="center" prop="dictValue" />
<el-table-column label="字典排序" align="center" prop="dictSort" />
<!-- <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<router-link :to="'/system/dict-subData/index/' + scope.row.dictId" class="link-type">
<span>{{ scope.row.dictType }}</span>
</router-link>
</template>
</el-table-column> -->
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
@ -121,13 +114,6 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleToSubData(scope.row)"
v-hasPermi="['system:dict:edit']"
>编辑二级菜单</el-button>
<el-button
size="mini"
type="text"
@ -291,10 +277,6 @@ export default {
this.getTypeList();
},
methods: {
handleToSubData(row){
this.$router.push({ path: '/system/subDict/', query: { id: row.dictCode } })
},
/** 查询字典类型详细 */
getType(dictId) {
getType(dictId).then(response => {
@ -381,7 +363,6 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.dictCode != undefined) {
this.form.partId = 0
updateData(this.form).then(response => {
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
this.$modal.msgSuccess("修改成功");
@ -389,7 +370,6 @@ export default {
this.getList();
});
} else {
this.form.partId = 0
addData(this.form).then(response => {
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
this.$modal.msgSuccess("新增成功");

View File

@ -1,419 +0,0 @@
<template>
<div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="字典名称" prop="dictType">
<el-select v-model="queryParams.dictType">
<el-option
v-for="item in typeOptions"
:key="item.dictId"
:label="item.dictName"
:value="item.dictType"
/>
</el-select>
</el-form-item>
<el-form-item label="字典标签" prop="dictLabel">
<el-input
v-model="queryParams.dictLabel"
placeholder="请输入字典标签"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="数据状态" clearable>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:dict:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:dict:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:dict:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:dict:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-close"
size="mini"
@click="handleClose"
>关闭</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="字典编码" align="center" prop="dictCode" />
<el-table-column label="字典标签" align="center" prop="dictLabel">
<template slot-scope="scope">
<span v-if="(scope.row.listClass == '' || scope.row.listClass == 'default') && (scope.row.cssClass == '' || scope.row.cssClass == null)">{{ scope.row.dictLabel }}</span>
<el-tag v-else :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass" :class="scope.row.cssClass">{{ scope.row.dictLabel }}</el-tag>
</template>
</el-table-column>
<el-table-column label="字典键值" align="center" prop="dictValue" />
<el-table-column label="字典排序" align="center" prop="dictSort" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:dict:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:dict:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典类型" prop="dictType">
<el-input v-model="form.dictType" placeholder="请输入字典类型" :disabled="dataList.length > 0" />
</el-form-item>
<el-form-item label="数据标签" prop="dictLabel">
<el-input v-model="form.dictLabel" placeholder="请输入数据标签" />
</el-form-item>
<el-form-item label="数据键值" prop="dictValue">
<el-input v-model="form.dictValue" placeholder="请输入数据键值" />
</el-form-item>
<el-form-item label="样式属性" prop="cssClass">
<el-input v-model="form.cssClass" placeholder="请输入样式属性" />
</el-form-item>
<el-form-item label="显示排序" prop="dictSort">
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="回显样式" prop="listClass">
<el-select v-model="form.listClass">
<el-option
v-for="item in listClassOptions"
:key="item.value"
:label="item.label + '(' + item.value + ')'"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listData, getData, delData, addData, updateData } from "@/api/system/dict/data";
import { optionselect as getDictOptionselect, getSubType } from "@/api/system/dict/type";
export default {
name: "Data",
dicts: ['sys_normal_disable'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
dataList: [],
//
defaultDictType: "",
//
title: "",
//
open: false,
//
listClassOptions: [
{
value: "default",
label: "默认"
},
{
value: "primary",
label: "主要"
},
{
value: "success",
label: "成功"
},
{
value: "info",
label: "信息"
},
{
value: "warning",
label: "警告"
},
{
value: "danger",
label: "危险"
}
],
//
typeOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
dictType: undefined,
dictLabel: undefined,
status: undefined,
partId:undefined
},
//
form: {},
partId:null,
//
rules: {
dictType: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
dictLabel: [
{ required: true, message: "数据标签不能为空", trigger: "blur" }
],
dictValue: [
{ required: true, message: "数据键值不能为空", trigger: "blur" }
],
dictSort: [
{ required: true, message: "数据顺序不能为空", trigger: "blur" }
]
}
};
},
created() {
const {id} = this.$route.params && this.$route.query;
this.queryParams.partId = id
this.form.partId = id
this.partId = id
// this.defaultDictType = dictType
// this.queryParams.dictType = dictType
// debugger
// this.form.dictType = dictType
this.getList()
// this.getSubType(dictId);
// this.getTypeList();
},
methods: {
/** 查询字典类型详细 */
// getSubType(dictId) {
// getSubType(dictId).then(response => {
// // this.queryParams.dictType = response.data.dictType;
// // this.defaultDictType = response.data.dictType;
// this.getList();
// });
// },
// /** */
// getTypeList() {
// getDictOptionselect().then(response => {
// this.typeOptions = response.data;
// });
// },
/** 查询字典数据列表 */
getList() {
this.loading = true;
listData(this.queryParams).then(response => {
this.dataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
dictCode: undefined,
dictLabel: undefined,
dictValue: undefined,
cssClass: undefined,
listClass: 'default',
dictSort: 0,
status: "0",
remark: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 返回按钮操作 */
handleClose() {
const obj = { path: "/system/dict" };
this.$tab.closeOpenPage(obj);
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.dictType = this.defaultDictType;
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加字典数据";
if(this.dataList.length !== 0){
this.form.dictType = this.dataList[0].dictType
}
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.dictCode)
this.single = selection.length!=1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const dictCode = row.dictCode || this.ids
getData(dictCode).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改字典数据";
});
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.dictCode != undefined) {
this.form.partId = this.partId
updateData(this.form).then(response => {
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
this.form.partId = this.partId
addData(this.form).then(response => {
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const dictCodes = row.dictCode || this.ids;
this.$modal.confirm('是否确认删除字典编码为"' + dictCodes + '"的数据项?').then(function() {
return delData(dictCodes);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/dict/data/export', {
...this.queryParams
}, `data_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -1,39 +0,0 @@
<template>
<div class="container">
<div class="wallet-gen">
<div>
<div>累计首页金额</div>
<div>23434</div>
</div>
<div>
<div>可提现金额</div>
<div>9321.43</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "Login",
data() {
return {};
},
watch: {
$route: {
// handler: function (route) {
// this.redirect = route.query && route.query.redirect;
// },
// immediate: true,
},
},
created() {},
methods: {},
};
</script>
<style scoped lang="scss">
.container {
padding: 20px;
}
</style>

View File

@ -36,24 +36,14 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://1.13.246.108:8080`,
target: 'http://113.45.190.154:8080', // 线上
// target: 'http://192.168.2.29:8080', // 代
// target: 'http://192.168.2.4:8080', // 嗨
// target:'https://1e312ae8.r27.cpolar.top', // 嗨
// target: 'https://2d1a399f.r27.cpolar.top', // 嗨
target: `http://1.13.246.108:8080`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
},
disableHostCheck: true,
historyApiFallback: {
rewrites: [
{ from: /^\/mcwl\/.*$/, to: '/mcwl/index.html' }
]
}
disableHostCheck: true
},
css: {
loaderOptions: {
@ -63,10 +53,6 @@ module.exports = {
}
},
configureWebpack: {
output: {
filename: 'js/[name].[hash].js',
chunkFilename: 'js/[name].[hash].js'
},
name: name,
resolve: {
alias: {