| @ -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 { | |||
| } | |||