This commit is contained in:
xvv 2024-07-22 16:05:17 +08:00
parent db0c92e6a5
commit 7239471a95
11 changed files with 233 additions and 109 deletions

View File

@ -0,0 +1,37 @@
import request from '@/utils/request'
// 分页查询所有的订单信息
export function getListApi(query) {
return request({
url: 'messageTemplate',
method: 'get',
params: query
})
}
//
export function deleteApi(ids) {
return request({
url: 'messageTemplate?idList=' + ids,
method: 'delete'
})
}
//
export function saveApi(data) {
return request({
url: 'messageTemplate',
method: 'post',
data: data
})
}
// 保存修改信息
export function updateApi(data) {
return request({
url: 'messageTemplate',
method: 'put',
data: data
})
}

View File

@ -37,8 +37,8 @@
<i class="el-icon-caret-bottom"/> <i class="el-icon-caret-bottom"/>
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="setting = true"> <el-dropdown-item @click.native="prsswrod()">
<span>布局设置</span> <span>修改密码</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.native="logout"> <el-dropdown-item divided @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
@ -59,6 +59,7 @@ import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect' import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch' import Search from '@/components/HeaderSearch'
import FuintDoc from '@/components/Fuint/Doc' import FuintDoc from '@/components/Fuint/Doc'
import confirmLog from "@/views/coupon/confirmLog/index.vue";
export default { export default {
components: { components: {
@ -95,6 +96,9 @@ export default {
} }
}, },
methods: { methods: {
prsswrod(){
console.log('方法')
},
toggleSideBar() { toggleSideBar() {
this.$store.dispatch('app/toggleSideBar') this.$store.dispatch('app/toggleSideBar')
}, },

View File

@ -758,7 +758,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="用户名" prop="accountName"> <el-form-item label="用户名" prop="accountName">
<el-input v-model="form.accountName" placeholder="请输入用户名" maxlength="50" autocomplete="off" /> <el-input v-model="form.accountName" placeholder="请输入用户名" onkeyup="value=value.replace(/[^\x00-\xff]/g, '')" maxlength="50" autocomplete="off" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -593,8 +593,8 @@ export default {
} }
], ],
grid: { grid: {
left: '1%', left: '3%',
right: '1%', right: '3%',
bottom: '3%', bottom: '3%',
containLabel: true containLabel: true
} }

View File

@ -387,7 +387,6 @@ export default {
}; };
const option3 = { const option3 = {
color: ['#FF9655', '#0DC291', '#409EFF'],
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
@ -399,25 +398,13 @@ export default {
}, },
legend: { legend: {
data: ['交易金额', '交易笔数', '活跃油站数'] data: ['Evaporation','油品交易额','非油品交易额', '会员充值金额','会员消费金额', '会员余额']
}, },
xAxis: [ xAxis: [
{ {
type: 'category', type: 'category',
data: [ // data: ['广1', '广2', '广3', '广4', '广5', '广6', '广7'],
'00:00', data: storeNameList,
'02:00',
'04:00',
'06:00',
'08:00',
'10:00',
'12:00',
'14:00',
'16:00',
'18:00',
'20:00',
'22:00'
],
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow'
} }
@ -427,76 +414,133 @@ export default {
{ {
type: 'value', type: 'value',
name: '金额(元)', name: '金额(元)',
// min: 0,
min: 0, // max: 10000,
max: 250, // interval: 2000,
interval: 50,
axisLabel: {
formatter: '{value} '
}
},
{
type: 'value',
name: '笔数',
min: 0,
max: 25,
interval: 5,
axisLabel: { axisLabel: {
formatter: '{value}' formatter: '{value}'
} }
} }
// {
// type: 'value',
// name: '',
// min: 0,
// max: 25,
// interval: 5,
// axisLabel: {
// formatter: '{value} '
// }
// }
], ],
series: [ series: [
{ {
name: '活跃油站数', name: '油品交易额',
color: '#FF9655',
type: 'bar', type: 'bar',
tooltip: { tooltip: {
valueFormatter: function (value) { valueFormatter: function (value) {
return value + ' ml'; return value;
} }
}, },
barWidth: 13, barWidth: 13,
itemStyle: { itemStyle: {
normal: { normal: {
// 5]
barBorderRadius: [50, 50, 0, 0] barBorderRadius: [50, 50, 0, 0]
} }
}, },
data: [ barGap: '60%',
30.0, 31.9, 71.0, 23.2, 41.6, 31.7, 21.6, 30.0, 31.9, 71.0, 23.2, 41.6 // data: [
] // 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
}, // ]
data: oilAmountList
{
name: '交易金额',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + ' °C';
}
},
data: [3.0, 3.9, 7.0, 2.2, 4.6, 3.7, 2.6, 3.0, 3.9, 7.0, 3.2, 4.6]
}, },
{ {
name: '交易笔数', name: '非油品交易额',
type: 'line', color: '#55F3FF',
yAxisIndex: 1, type: 'bar',
tooltip: { tooltip: {
valueFormatter: function (value) { valueFormatter: function (value) {
return value + ' °C'; return value;
} }
}, },
data: [2.0, 3.9, 4.0, 5.2, 4.6, 6.7, 7.6, 6.0, 5.9, 4.0, 4.2, 2.6] barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
// data: [
// 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// ]
data: noOilAmountList
},
{
name: '会员充值金额',
color: '#0DC291',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value;
}
},
barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
// data: [
// 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// ]
data: rechargeBalanceList
},
{
name: '会员消费金额',
color: '#409EFF',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value;
}
},
barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
// data: [
// 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// ]
data: consumeBalanceList
},
{
name: '会员余额',
color: '#D55F5F',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value;
}
},
barWidth: 13,
itemStyle: {
normal: {
barBorderRadius: [50, 50, 0, 0]
}
},
// data: [
// 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
// ]
data: userBalanceList
} }
], ],
grid: { grid: {
left: '1%', left: '3%',
right: '1%', right: '3%',
bottom: '3%', bottom: '3%',
containLabel: true containLabel: true
} }
}; };
chart.setOption(option) chart.setOption(option)

View File

@ -16,7 +16,7 @@ import shopowner from "@/views/homeComponents/shopowner.vue"
export default { export default {
data(){ data(){
return{ return{
power:3 power:2
} }
}, },
created() { created() {

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-card > <el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="90px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="180px">
<el-form-item label="" prop="name"> <el-form-item label="" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"
@ -41,28 +41,30 @@
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAdd" @click="handleAdd"
>新增商品</el-button> >新增短信模板</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" border style="width: 100%">
<el-table-column type="index" label="序号"></el-table-column> <el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="name" label="商品名称"></el-table-column> <el-table-column prop="messageId" label="短信模板ID"></el-table-column>
<el-table-column prop="categoryName" label="商品分类"></el-table-column> <el-table-column prop="name" label="短信名称"></el-table-column>
<el-table-column prop="image" label="商品图片"> <el-table-column prop="content" label="短信模板内容"></el-table-column>
<template slot-scope="scope"> <!-- <el-table-column prop="image" label="短信图片">-->
<ImagePreview :src="scope.row.image"></ImagePreview> <!-- <template slot-scope="scope">-->
</template> <!-- <ImagePreview :src="scope.row.image"></ImagePreview>-->
</el-table-column> <!-- </template>-->
<el-table-column prop="formStore" label="采购商家"></el-table-column> <!-- </el-table-column>-->
<el-table-column prop="content" label="商品介绍"></el-table-column> <el-table-column prop="deptIds" label="适用范围"></el-table-column>
<el-table-column prop="status" label="商品状态"> <!-- <el-table-column prop="roleIds" label="接收角色"></el-table-column>-->
<el-table-column prop="status" label="短信状态">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.status==0"> <div v-if="scope.row.status==0">
未上架 停用
</div> </div>
<div v-else> <div v-else>
已上架 启用
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -95,31 +97,42 @@
</el-card> </el-card>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="50%" append-to-body> <el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="35%" append-to-body>
<el-form ref="form" :rules="rules" :model="form" label-width="80px"> <el-form ref="form" :rules="rules" :model="form" label-width="120px">
<el-form-item label="商品名称" prop="name"> <el-form-item label="短信模板ID" prop="messageId">
<el-input v-model="form.messageId" style="width: 300px"></el-input>
</el-form-item>
<el-form-item label="短信名称" prop="name">
<el-input v-model="form.name" style="width: 300px"></el-input> <el-input v-model="form.name" style="width: 300px"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="商品分类" prop="categoryName"> <el-form-item label="适用范围" prop="storeId">
<el-select v-model="form.categoryName" style="width: 150px" placeholder="全部"> <el-select v-model="form.deptIds" placeholder="请选择所属机构" style="width: 300px" >
<el-option <el-option
v-for="dict in dict.type.hardware_type" v-for="item in deptListSelect"
:key="dict.label" :key="item.deptId"
:label="dict.label" :label="item.deptName"
:value="dict.label" :value="item.deptId"
/> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="采购商家" prop="formStore">
<el-input v-model="form.formStore" style="width: 300px"></el-input> <el-form-item label="即时配送">
</el-form-item> <el-switch v-model="form.status"></el-switch>
<el-form-item label="图片" prop="image">
<ImageUpload v-model="form.image"></ImageUpload>
</el-form-item> </el-form-item>
<el-form-item label="商品介绍" prop="content"> <!-- <el-form-item label="适用角色" prop="categoryName">-->
<el-input type="textarea" v-model="form.content"></el-input> <!-- <el-select v-model="form.roleIds" style="width: 300px" placeholder="全部">-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.role_ids"-->
<!-- :key="dict.label"-->
<!-- :label="dict.label"-->
<!-- :value="dict.label"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="短信内容" prop="content" >
<el-input type="textarea" v-model="form.content" style="width: 300px"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="submitForm('form')">提交</el-button> <el-button type="primary" @click="submitForm('form')">提交</el-button>
@ -133,18 +146,18 @@
<script> <script>
import {deleteApi, getListApi, saveApi, updateApi} from "@/api/setting/hardware"; import {deleteApi, getListApi, saveApi, updateApi} from "@/api/setting/message";
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import {selectChildByDeptId} from "@/api/system/Site/site";
export default { export default {
name: "printIndex", name: "printIndex",
dicts: ['hardware_type','hardware_status'], dicts: ['dept_ids','role_ids'],
data() { data() {
return { return {
tableData: [], tableData: [],
form: { form: {},
deptListSelect:[],
},
systemPositionList:[{ systemPositionList:[{
value: '首页', value: '首页',
label: '首页' label: '首页'
@ -178,28 +191,38 @@ export default {
hideUpload: false, hideUpload: false,
// //
rules: { rules: {
messageId: [
{ required: true, message: "短信模板id不能为空", trigger: "blur" }
],
name: [ name: [
{ required: true, message: "商品名称不能为空", trigger: "blur" } { required: true, message: "短信名称不能为空", trigger: "blur" }
], ],
categoryName: [ categoryName: [
{ required: true, message: "商品分类不能为空", trigger: "blur" } { required: true, message: "短信分类不能为空", trigger: "blur" }
], ],
formStore: [ formStore: [
{ required: true, message: "采购商家不能为空", trigger: "blur" } { required: true, message: "采购商家不能为空", trigger: "blur" }
], ],
image: [ image: [
{ required: true, message: "商品图片不能为空", trigger: "blur" } { required: true, message: "短信图片不能为空", trigger: "blur" }
], ],
content: [ content: [
{ required: true, message: "商品介绍不能为空", trigger: "blur" } { required: true, message: "短信介绍不能为空", trigger: "blur" }
] ]
} }
}; };
}, },
created() { created() {
this.getList() this.getList()
this.selectChildByDeptIdApi()
}, },
methods: { methods: {
selectChildByDeptIdApi() {
selectChildByDeptId().then(res => {
this.deptListSelect = res.data
})
},
getList(){ getList(){
getListApi(this.queryParams).then(res=>{ getListApi(this.queryParams).then(res=>{
this.tableData = res.data.records; this.tableData = res.data.records;
@ -226,7 +249,6 @@ export default {
this.getList() this.getList()
this.open = false this.open = false
} }
}) })
}else { }else {
saveApi(this.form).then(res=>{ saveApi(this.form).then(res=>{
@ -268,16 +290,16 @@ export default {
handleAdd(e) { handleAdd(e) {
this.clean() this.clean()
this.open = true; this.open = true;
this.title = "新增商品" this.title = "新增短信"
}, },
edit(e) { edit(e) {
this.clean() this.clean()
this.open = true; this.open = true;
this.title = "修改商品" this.title = "修改短信"
this.form = e this.form = e
}, },
del(e) { del(e) {
this.$confirm('此操作将永久删除该商品, 是否继续?', '提示', { this.$confirm('此操作将永久删除该短信, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
@ -303,7 +325,7 @@ export default {
this.form= { this.form= {
id: null, // id id: null, // id
bannerName: '', // Banner bannerName: '', // Banner
productImage: '', // productImage: '', //
systemPosition: '', // systemPosition: '', //
sortOrder: null, // sortOrder: null, //
bannerLink: '', // Banner bannerLink: '', // Banner

View File

@ -21,6 +21,8 @@ export default {
<div class="tab-box"> <div class="tab-box">
<div class="f-box" v-for="(item,index) in tablist" :key="index" @click="activeindex=index" :class="{ 'active' :activeindex==index}">{{item.name}}</div> <div class="f-box" v-for="(item,index) in tablist" :key="index" @click="activeindex=index" :class="{ 'active' :activeindex==index}">{{item.name}}</div>
</div> </div>
<div class="tabder-box" ></div>
</div> </div>
</template> </template>
@ -48,5 +50,10 @@ export default {
.container{ .container{
background: #F4F5F9; background: #F4F5F9;
height: 100vh; height: 100vh;
box-sizing: border-box;
padding: 20px;
}
.tabder-box{
width: 85%;
} }
</style> </style>

View File

@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.setting.entity.MessageTemplate; import com.fuint.business.setting.entity.MessageTemplate;
import com.fuint.business.setting.service.MessageTemplateService; import com.fuint.business.setting.service.MessageTemplateService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import com.fuint.framework.web.BaseController; import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject; import com.fuint.framework.web.ResponseObject;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -60,6 +62,8 @@ public class MessageTemplateController extends BaseController {
*/ */
@PostMapping @PostMapping
public ResponseObject insert(@RequestBody MessageTemplate messageTemplate) { public ResponseObject insert(@RequestBody MessageTemplate messageTemplate) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
messageTemplate.setCreateName(nowAccountInfo.getRealName());
return getSuccessResult(this.messageTemplateService.save(messageTemplate)); return getSuccessResult(this.messageTemplateService.save(messageTemplate));
} }

View File

@ -1,6 +1,9 @@
package com.fuint.business.setting.entity; package com.fuint.business.setting.entity;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data; import lombok.Data;
@ -15,6 +18,7 @@ import java.io.Serializable;
@Data @Data
public class MessageTemplate extends Model<MessageTemplate> { public class MessageTemplate extends Model<MessageTemplate> {
//主键 //主键
@TableId(type = IdType.AUTO)
private Integer id; private Integer id;
//短信名称 //短信名称
private String name; private String name;
@ -36,6 +40,8 @@ public class MessageTemplate extends Model<MessageTemplate> {
private Date updateTime; private Date updateTime;
//更新人 //更新人
private String updateBy; private String updateBy;
//短信模板id
private Integer messageId;
} }

View File

@ -23,7 +23,7 @@ const mutations = {
} }
const actions = { const actions = {
// 修改布局设置 // 修改
changeSetting({ commit }, data) { changeSetting({ commit }, data) {
commit('CHANGE_SETTING', data) commit('CHANGE_SETTING', data)
}, },