学成在线模板管理-列表页——搭建及查询站点列表

27 篇文章 0 订阅
26 篇文章 2 订阅

源码地址
页面创建参考链接:页面创建
最近在听学成在线项目,本人听讲的57期中没有对模板进行管理,主讲老师对模板模块只是进行了简单的讲解操作,并没有使用代码和UI界面对模板进行管理,本人在老师的基础增加了模板管理模块。

本人技术有限实现有不足的地方或者在文档编写过程中出现的问题,敬请原谅!

代码经过测试是可以正确实现功能的,如果各位在实现过程中有文件直接在评论去或者私信我即可,本人看到会立即回复

  1. 创建vue文件(路径:xc-ui-pc-sysmanage\src\module\cms\template)
    在这里插入图片描述
  2. 需要配置模板管理页面,
    前端工程下配置列表页面的访问
    路径:xc-ui-pc-sysmanage\src\module\cms\router\index.js 配置
    在这里插入图片描述
    (1)导入刚刚新建的三个页面
//cms模板列表页
import template_list from '@/module/cms/template/template_list.vue';
import template_add from '@/module/cms/template/template_add.vue';
import template_edit from '@/module/cms/template/template_edit.vue'

(2)添加页面的访问

//模板列表模块
    {
      path: "/cms/template/list", //访问路径
      name: "模板列表",//子组件的名称
      component: template_list, //映射的组件名称
      hidden: false //不隐藏
    },
    {
      path: "/cms/template/add", //访问路径
      name: "新增模板",//子组件的名称
      component: template_add, //映射的组件名称
      hidden: true //隐藏
    },
    {
      path: "/cms/template/edit/:templateId",
      name: "修改模板",
      component: template_edit,
      hidden: true
    }
  1. 列表页面编写(与page_list类似)
<template>
  <div>
    <!--编写页面静态部分,即view部分-->
    <el-form :model="params">
      站点:
      <el-select v-model="params.siteId" placeholder="请选择站点" style="width: 200px">
        <el-option
          v-for="item in siteList"
          :key="item.siteId"
          :label="item.siteName"
          :value="item.siteId">
        </el-option>
      </el-select>
      模板名称:
      <el-input v-model="params.templateName" style="width: 100px"></el-input>

      <el-button type="primary" size="small" v-on:click="query">查询</el-button>
      <router-link class="mui-tab-item" :to="{path:'/cms/template/add/',query:{
        page:this.params.page,
        siteId:this.params.siteId,
      }}">
        <el-button type="primary" size="small">新增模板</el-button>
      </router-link>
    </el-form>
    <el-table
      :data="list"
      stripe
      style="width: 100%">
      <el-table-column type="index" width="60"></el-table-column>
      <el-table-column prop="templateId" label="模板ID" width="220"></el-table-column>
      <el-table-column prop="templateName" label="模板名称" width="180"></el-table-column>
      <el-table-column prop="templateParameter" label="模板参数" width="110"></el-table-column>
      <el-table-column prop="templateFileId" label="模板文件ID" width="220"></el-table-column>
      <el-table-column label="操作" width="200">
        <!--插槽可以列出多个操作按钮-->
        <template slot-scope="page">
          <el-button size="small" type="text" @click="edit(page.row.templateId)">编辑</el-button>
          <el-button size="small" type="text" @click="del(page.row.templateId)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination
      background
      layout="prev, pager, next"
      :total="total"
      :page-size="this.params.size"
      :current-page="this.params.page"
      style="float:right;"
      v-on:current-change="changePage">
    </el-pagination>
  </div>
</template>
  1. 把列表页面中涉及的变量与方法进行定义(JS),
<script>
  import * as cmsApi from '../api/cms'
  export default {
    name: "template_list",
    data() {
      return {
        siteList: [],//站点列表
        list: [],
        total: 0,
        params: {
          page: 1, //当前页码 默认为1
          size: 5, //每页显示的数据条数 默认为5
          siteId: '', //站点ID
          templateName: '',//模板名称
        }
      }
    },
    methods: {
      query: function () {//获取模板列表
        cmsApi.template_list_params(this.params.page, this.params.size,this.params).then((result) => {
          this.list = result.queryResult.list;
          this.total = result.queryResult.total;
        })
      },
      changePage: function (page) {//分页参数
        this.params.page = page;
        this.query()
      },
      query_site:function () {//获取站点列表
        cmsApi.site_list().then((res)=>{
          this.siteList=res.queryResult.list;
        });
      },
      del:function (templateId) {//删除模板
        this.$confirm('确认提交吗?', '提示', {}).then(()=>{
          cmsApi.template_del(templateId).then((res)=>{
            if (res.success) {
              this.$message.success("删除成功")
              this.query()
            }else if(res.message){
              this.$message.error(res.message)
            }else {
              this.$message.error("删除失败")
            }
          })
        })
      },
      edit:function (templateId) {//修改模板
        this.$router.push({
          path:"/cms/template/edit/"+templateId,
        })
      },
    },
    created(){
      //没有渲染获取路由中数据,然后在去渲染到页面上
      //取出路由当中的参数赋值给数据对象
      //路由中是字符串转换成整型数,如果路由中没有就使用或者||符号两者选一个真的
      this.params.page = Number.parseInt(this.$route.query.page || 1)
      this.params.siteId = this.$route.query.siteId
    },
    mounted(){
      //钩子函数,进入页面就查询服务端请求所有的数据
      //当所有的DOM元素渲染完成之后调用query
      this.query();
      this.siteList =this.query_site();
    }
  }
</script>
  1. 在cms.js文件中定义JS代码调用的方法(路径:xc-ui-pc-sysmanage\src\module\cms\api\cms.js)
    在这里插入图片描述
    (1)查询站点列表
export const site_list =() =>{
  return http.requestGet(apiUrl+"/cms/site/list")
}

(2)查询模板列表(分页参数)

export const template_list_params=(page,size,params)=>{
  let queryString = querystring.stringify(params)
  return http.requestGet(apiUrl+'/cms/template/list/'+page+'/'+size+'?='+queryString)
}

(3)根据ID删除模板及其对应的模板文件

export const template_del=(templateId)=>{
  return http.requestDelete(apiUrl+"/cms/template/delete/"+templateId)
}

6.创建返回值类,(很重要)整个模块中很多使用
创建:CmsTemplateResult.java路径:xc-framework-model\src\main\java\com\xuecheng\framework\domain\cms\response\CmsTemplateResult.java

@Data
public class CmsTemplateResult extends ResponseResult {
    CmsTemplate cmsTemplate;
    public CmsTemplateResult(ResultCode resultCode, CmsTemplate cmsTemplate) {
        super(resultCode);
        this.cmsTemplate = cmsTemplate;
    }
}

创建:CmsUploadResult.java路径:xc-framework-model\src\main\java\com\xuecheng\framework\domain\cms\response\CmsUploadResult.java

@Data
public class CmsUploadResult extends ResponseResult {
    String stringUpload;
    public CmsUploadResult(ResultCode resultCode, String stringUpload) {
        super(resultCode);
        this.stringUpload = stringUpload;
    }
}

7.创建枚举类型
添加代码:路径:xc-framework-model\src\main\java\com\xuecheng\framework\domain\cms\response\CmsCode.java

	CMS_TEMPLATEISNULL(false,25001,"上传文件为空!"),
    CMS_DELETETEMPLATEISNULL(false,25002,"删除的模板文件不存在!"),
    CMS_ADDTEMPLATEDATAISNULL(false,25003,"新增模板数据为空!"),
    CMS_DELETETEMPLATEISFALL(false,25004,"模板ID有误删除失败!"),
    CMS_TEMPLATEHAVEPAGE (false,25005,"此模板下包含页面删除失败!") ,
    CMS_DELETEPAGEISFALL (false,25006,"页面ID有误删除失败!") ,
    EDITTEMPLATEFILEISFALL(false,25007,"修改上传模板文件失败!");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值