| @ -0,0 +1,44 @@ | |||||
| import request from '@/utils/request' | |||||
| // 查询轮播图列表 | |||||
| export function listAppletBanner(query) { | |||||
| return request({ | |||||
| url: '/model/order/banner/list', | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| // 查询轮播图详细 | |||||
| export function getAppletBanner(id) { | |||||
| return request({ | |||||
| url: '/model/order/banner/' + id, | |||||
| method: 'get' | |||||
| }) | |||||
| } | |||||
| // 新增轮播图 | |||||
| export function addAppletBanner(data) { | |||||
| return request({ | |||||
| url: '/model/order/banner', | |||||
| method: 'post', | |||||
| data: data | |||||
| }) | |||||
| } | |||||
| // 修改轮播图 | |||||
| export function updateAppletBanner(data) { | |||||
| return request({ | |||||
| url: '/model/order/banner', | |||||
| method: 'put', | |||||
| data: data | |||||
| }) | |||||
| } | |||||
| // 删除轮播图 | |||||
| export function delAppletBanner(id) { | |||||
| return request({ | |||||
| url: '/model/order/banner/' + id, | |||||
| method: 'delete' | |||||
| }) | |||||
| } | |||||
| @ -0,0 +1,291 @@ | |||||
| <template> | |||||
| <div class="app-container"> | |||||
| <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form"> | |||||
| <el-form-item label="跳转链接" prop="url"> | |||||
| <el-input | |||||
| v-model="queryParams.url" | |||||
| placeholder="请输入跳转链接" | |||||
| clearable | |||||
| size="small" | |||||
| @keyup.enter.native="handleQuery" | |||||
| /> | |||||
| </el-form-item> | |||||
| <el-form-item class="flex_one tr"> | |||||
| <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="['model:AppletBanner: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="['model:AppletBanner: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="['model:AppletBanner:remove']" | |||||
| >删除</el-button> | |||||
| </el-col> | |||||
| <!-- <el-col :span="1.5">--> | |||||
| <!-- <el-button--> | |||||
| <!-- type="warning"--> | |||||
| <!-- plain--> | |||||
| <!-- icon="el-icon-download"--> | |||||
| <!-- size="mini"--> | |||||
| <!-- :loading="exportLoading"--> | |||||
| <!-- @click="handleExport"--> | |||||
| <!-- v-hasPermi="['model:AppletBanner:export']"--> | |||||
| <!-- >导出</el-button>--> | |||||
| <!-- </el-col>--> | |||||
| <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> | |||||
| </el-row> | |||||
| <el-table v-loading="loading" :data="AppletBannerList" @selection-change="handleSelectionChange"> | |||||
| <el-table-column type="selection" width="55" align="center" /> | |||||
| <el-table-column label="唯一标识" align="center" prop="id" /> | |||||
| <el-table-column label="轮播图图片" align="center" prop="image"> | |||||
| <template slot-scope="scope"> | |||||
| <image-preview :src="scope.row.image"/> | |||||
| </template> | |||||
| </el-table-column> | |||||
| <el-table-column label="跳转链接" align="center" prop="url"/> | |||||
| <el-table-column label="排序" align="center" prop="sort"/> | |||||
| <el-table-column label="备注" align="center" prop="remark"/> | |||||
| <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="['model:AppletBanner:edit']" | |||||
| >修改</el-button> | |||||
| <el-button | |||||
| size="mini" | |||||
| type="text" | |||||
| icon="el-icon-delete" | |||||
| @click="handleDelete(scope.row)" | |||||
| v-hasPermi="['model:AppletBanner: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="50%" append-to-body> | |||||
| <el-form ref="form" :model="form" :rules="rules" label-width="108px" inline class="dialog-form-two"> | |||||
| <el-form-item label="轮播图图片"> | |||||
| <OssImageUpload v-model="form.image" :limit="1"/> | |||||
| </el-form-item> | |||||
| <el-form-item label="跳转链接" prop="url"> | |||||
| <el-input v-model="form.url" placeholder="请输入跳转链接" /> | |||||
| </el-form-item> | |||||
| <el-form-item label="排序" prop="sort"> | |||||
| <el-input-number v-model="form.sort" controls-position="right" :min="0" /> | |||||
| </el-form-item> | |||||
| <el-form-item label="备注" prop="remark"> | |||||
| <el-input v-model="form.remark" placeholder="请输入备注" /> | |||||
| </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 { listAppletBanner, getAppletBanner, delAppletBanner, addAppletBanner, updateAppletBanner } from "@/api/marketing/AppletOrderBanner"; | |||||
| export default { | |||||
| name: "AppletBanner", | |||||
| data() { | |||||
| return { | |||||
| // 遮罩层 | |||||
| loading: true, | |||||
| // 导出遮罩层 | |||||
| exportLoading: false, | |||||
| // 选中数组 | |||||
| ids: [], | |||||
| // 非单个禁用 | |||||
| single: true, | |||||
| // 非多个禁用 | |||||
| multiple: true, | |||||
| // 显示搜索条件 | |||||
| showSearch: true, | |||||
| // 总条数 | |||||
| total: 0, | |||||
| // 轮播图表格数据 | |||||
| AppletBannerList: [], | |||||
| // 弹出层标题 | |||||
| title: "", | |||||
| // 是否显示弹出层 | |||||
| open: false, | |||||
| // 查询参数 | |||||
| queryParams: { | |||||
| pageNum: 1, | |||||
| pageSize: 10, | |||||
| image: null, | |||||
| url: null, | |||||
| }, | |||||
| // 表单参数 | |||||
| form: {}, | |||||
| // 表单校验 | |||||
| rules: { | |||||
| }, | |||||
| columns: [ | |||||
| { key: 1, label: "轮播图图片", visible: false }, | |||||
| { key: 2, label: "跳转链接", visible: true }, | |||||
| ], | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.getList(); | |||||
| }, | |||||
| methods: { | |||||
| /** 查询轮播图列表 */ | |||||
| getList() { | |||||
| this.loading = true; | |||||
| listAppletBanner(this.queryParams).then(response => { | |||||
| this.AppletBannerList = response.data.records; | |||||
| this.total = response.data.total; | |||||
| this.loading = false; | |||||
| }); | |||||
| }, | |||||
| // 取消按钮 | |||||
| cancel() { | |||||
| this.open = false; | |||||
| this.reset(); | |||||
| }, | |||||
| // 表单重置 | |||||
| reset() { | |||||
| this.form = { | |||||
| id: null, | |||||
| image: null, | |||||
| url: null, | |||||
| createTime: null, | |||||
| createBy: null, | |||||
| updateTime: null, | |||||
| updateBy: null, | |||||
| delFlag: null, | |||||
| }; | |||||
| this.resetForm("form"); | |||||
| }, | |||||
| /** 搜索按钮操作 */ | |||||
| handleQuery() { | |||||
| this.queryParams.pageNum = 1; | |||||
| this.getList(); | |||||
| }, | |||||
| /** 重置按钮操作 */ | |||||
| resetQuery() { | |||||
| this.resetForm("queryForm"); | |||||
| this.handleQuery(); | |||||
| }, | |||||
| // 多选框选中数据 | |||||
| handleSelectionChange(selection) { | |||||
| this.ids = selection.map(item => item.id) | |||||
| this.single = selection.length!==1 | |||||
| this.multiple = !selection.length | |||||
| }, | |||||
| /** 新增按钮操作 */ | |||||
| handleAdd() { | |||||
| this.reset(); | |||||
| this.open = true; | |||||
| this.title = "添加轮播图"; | |||||
| }, | |||||
| /** 修改按钮操作 */ | |||||
| handleUpdate(row) { | |||||
| this.reset(); | |||||
| const id = row.id || this.ids | |||||
| getAppletBanner(id).then(response => { | |||||
| this.form = response.data; | |||||
| this.open = true; | |||||
| this.title = "修改轮播图"; | |||||
| }); | |||||
| }, | |||||
| /** 提交按钮 */ | |||||
| submitForm() { | |||||
| this.$refs["form"].validate(valid => { | |||||
| if (valid) { | |||||
| if (this.form.id != null) { | |||||
| updateAppletBanner(this.form).then(response => { | |||||
| this.$modal.msgSuccess("修改成功"); | |||||
| this.open = false; | |||||
| this.getList(); | |||||
| }); | |||||
| } else { | |||||
| addAppletBanner(this.form).then(response => { | |||||
| this.$modal.msgSuccess("新增成功"); | |||||
| this.open = false; | |||||
| this.getList(); | |||||
| }); | |||||
| } | |||||
| } | |||||
| }); | |||||
| }, | |||||
| /** 删除按钮操作 */ | |||||
| handleDelete(row) { | |||||
| const ids = row.id || this.ids; | |||||
| this.$modal.confirm('是否确认删除轮播图编号为"' + ids + '"的数据项?').then(function() { | |||||
| return delAppletBanner(ids); | |||||
| }).then(() => { | |||||
| this.getList(); | |||||
| this.$modal.msgSuccess("删除成功"); | |||||
| }).catch(() => {}); | |||||
| }, | |||||
| /** 导出按钮操作 */ | |||||
| handleExport() { | |||||
| const queryParams = this.queryParams; | |||||
| this.$modal.confirm('是否确认导出所有轮播图数据项?').then(() => { | |||||
| this.exportLoading = true; | |||||
| return exportAppletBanner(queryParams); | |||||
| }).then(response => { | |||||
| this.download(response.msg); | |||||
| this.exportLoading = false; | |||||
| }).catch(() => {}); | |||||
| } | |||||
| } | |||||
| }; | |||||
| </script> | |||||
| @ -0,0 +1,40 @@ | |||||
| package com.ruoyi.applet.contoller; | |||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
| import com.ruoyi.common.annotation.Anonymous; | |||||
| import com.ruoyi.common.annotation.Log; | |||||
| import com.ruoyi.common.core.controller.BaseController; | |||||
| import com.ruoyi.common.core.domain.AjaxResult; | |||||
| import com.ruoyi.common.enums.BusinessType; | |||||
| import com.ruoyi.common.utils.StringUtils; | |||||
| import com.ruoyi.model.domain.AppletOrderBanner; | |||||
| import com.ruoyi.model.service.AppletOrderBannerService; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.Arrays; | |||||
| @RestController | |||||
| @RequestMapping("/applet/order/banner") | |||||
| public class ApiAppletOrderBannerController extends BaseController { | |||||
| @Autowired | |||||
| private AppletOrderBannerService appletOrderBannerService; | |||||
| /** | |||||
| * 查询轮播图列表 | |||||
| */ | |||||
| @GetMapping("/list") | |||||
| public AjaxResult list(AppletOrderBanner appBanner, | |||||
| @RequestParam(defaultValue = "1") Integer pageNum, | |||||
| @RequestParam(defaultValue = "10") Integer pageSize) | |||||
| { | |||||
| Page<AppletOrderBanner> page = appletOrderBannerService | |||||
| .lambdaQuery() | |||||
| .orderByDesc(AppletOrderBanner::getSort) | |||||
| .like(StringUtils.isNotBlank(appBanner.getUrl()), AppletOrderBanner::getUrl, appBanner.getUrl()) | |||||
| .eq(appBanner.getId() != null, AppletOrderBanner::getId, appBanner.getId()) | |||||
| .page(new Page<>(pageNum, pageSize)); | |||||
| return AjaxResult.success(page); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,99 @@ | |||||
| package com.ruoyi.model.controller; | |||||
| import com.baomidou.mybatisplus.extension.api.R; | |||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
| import com.ruoyi.common.annotation.Anonymous; | |||||
| import com.ruoyi.common.annotation.Log; | |||||
| import com.ruoyi.common.core.controller.BaseController; | |||||
| import com.ruoyi.common.core.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.page.TableDataInfo; | |||||
| import com.ruoyi.common.enums.BusinessType; | |||||
| import com.ruoyi.common.utils.StringUtils; | |||||
| import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
| import com.ruoyi.model.domain.AppBanner; | |||||
| import com.ruoyi.model.domain.AppletOrderBanner; | |||||
| import com.ruoyi.model.service.AppletOrderBannerService; | |||||
| import com.ruoyi.model.service.IAppBannerService; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.security.access.prepost.PreAuthorize; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.io.IOException; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| @RestController | |||||
| @RequestMapping("/model/order/banner") | |||||
| public class AppOrderBannerController extends BaseController { | |||||
| @Autowired | |||||
| private AppletOrderBannerService appletOrderBannerService; | |||||
| /** | |||||
| * 查询轮播图列表 | |||||
| */ | |||||
| @GetMapping("/list") | |||||
| public AjaxResult list(AppletOrderBanner appBanner, | |||||
| @RequestParam(defaultValue = "1") Integer pageNum, | |||||
| @RequestParam(defaultValue = "10") Integer pageSize) | |||||
| { | |||||
| Page<AppletOrderBanner> page = appletOrderBannerService | |||||
| .lambdaQuery() | |||||
| .orderByDesc(AppletOrderBanner::getSort) | |||||
| .like(StringUtils.isNotBlank(appBanner.getUrl()), AppletOrderBanner::getUrl, appBanner.getUrl()) | |||||
| .eq(appBanner.getId() != null, AppletOrderBanner::getId, appBanner.getId()) | |||||
| .page(new Page<>(pageNum, pageSize)); | |||||
| return AjaxResult.success(page); | |||||
| } | |||||
| /** | |||||
| * 导出轮播图列表 | |||||
| */ | |||||
| // @Log(title = "轮播图", businessType = BusinessType.EXPORT) | |||||
| // @PostMapping("/export") | |||||
| // public void export(HttpServletResponse response, AppletOrderBanner appBanner) throws IOException { | |||||
| // List<AppBanner> list = appletOrderBannerService.selectAppBannerList(appBanner); | |||||
| // ExcelUtil<AppBanner> util = new ExcelUtil<AppBanner>(AppBanner.class); | |||||
| // util.exportExcel(response, list, "轮播图数据"); | |||||
| // } | |||||
| /** | |||||
| * 获取轮播图详细信息 | |||||
| */ | |||||
| @GetMapping(value = "/{id}") | |||||
| public AjaxResult getInfo(@PathVariable("id") Long id) | |||||
| { | |||||
| return success(appletOrderBannerService.getById(id)); | |||||
| } | |||||
| /** | |||||
| * 新增轮播图 | |||||
| */ | |||||
| @Log(title = "轮播图", businessType = BusinessType.INSERT) | |||||
| @PostMapping | |||||
| public AjaxResult add(@RequestBody AppletOrderBanner appBanner) | |||||
| { | |||||
| return toAjax(appletOrderBannerService.save(appBanner)); | |||||
| } | |||||
| /** | |||||
| * 修改轮播图 | |||||
| */ | |||||
| @Log(title = "轮播图", businessType = BusinessType.UPDATE) | |||||
| @PutMapping | |||||
| public AjaxResult edit(@RequestBody AppletOrderBanner appBanner) | |||||
| { | |||||
| return toAjax(appletOrderBannerService.updateById(appBanner)); | |||||
| } | |||||
| /** | |||||
| * 删除轮播图 | |||||
| */ | |||||
| @Log(title = "轮播图", businessType = BusinessType.DELETE) | |||||
| @DeleteMapping("/{ids}") | |||||
| public AjaxResult remove(@PathVariable Long[] ids) | |||||
| { | |||||
| return toAjax(appletOrderBannerService.removeByIds(Arrays.asList(ids))); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,28 @@ | |||||
| package com.ruoyi.model.domain; | |||||
| import com.ruoyi.common.annotation.Excel; | |||||
| import com.ruoyi.common.core.domain.BaseEntity; | |||||
| import lombok.Data; | |||||
| /** | |||||
| * 下单端轮播图对象 | |||||
| * | |||||
| * @author ruoyi | |||||
| * @date 2025-03-30 | |||||
| */ | |||||
| @Data | |||||
| public class AppletOrderBanner extends BaseEntity | |||||
| { | |||||
| private static final long serialVersionUID = 1L; | |||||
| private Long id; | |||||
| @Excel(name = "轮播图图片 ") | |||||
| private String image; | |||||
| @Excel(name = "跳转链接") | |||||
| private String url; | |||||
| @Excel(name = "排序") | |||||
| private Integer sort; | |||||
| } | |||||
| @ -0,0 +1,7 @@ | |||||
| package com.ruoyi.model.mapper; | |||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| import com.ruoyi.model.domain.AppletOrderBanner; | |||||
| public interface AppletOrderBannerMapper extends BaseMapper<AppletOrderBanner> { | |||||
| } | |||||
| @ -0,0 +1,7 @@ | |||||
| package com.ruoyi.model.service; | |||||
| import com.baomidou.mybatisplus.extension.service.IService; | |||||
| import com.ruoyi.model.domain.AppletOrderBanner; | |||||
| public interface AppletOrderBannerService extends IService<AppletOrderBanner> { | |||||
| } | |||||
| @ -0,0 +1,11 @@ | |||||
| package com.ruoyi.model.service.impl; | |||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
| import com.ruoyi.model.domain.AppletOrderBanner; | |||||
| import com.ruoyi.model.mapper.AppletOrderBannerMapper; | |||||
| import com.ruoyi.model.service.AppletOrderBannerService; | |||||
| import org.springframework.stereotype.Service; | |||||
| @Service | |||||
| public class AppletOrderBannerServiceImpl extends ServiceImpl<AppletOrderBannerMapper, AppletOrderBanner> implements AppletOrderBannerService { | |||||
| } | |||||