avue页面布局 api 引用

展示 

 

index.vue 


<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               :page="page"
               :permission="permissionList"
           
               :search.sync="search"
               :before-close='beforeClose'
               v-model="form"
               ref="crud"
               @row-update="rowUpdate"
               @row-save="rowSave"
               @row-del="rowDel"
               @search-change="searchChange"
          @search-reset="resetChange"
               @selection-change="selectionChange"
            
               @on-load="onLoad">
    </avue-crud>
 
  </basic-container>
</template>

<script>
  import {getList,  add, update, remove} from "@/api/budget/budget";
  import {mapGetters} from "vuex";
 
  import Cookies from 'js-cookie'
  export default {

    data() {
      return {
        excelBox: false,
        val: {
          id:'',
          houseNumber:'',
          name:'budget',
        },
        selectHouseNumber:false,
        form: {},  //存储返回值
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        selectionList: [],
        search:{},
        option: {
       
          indexLabel:'序号',
          align:'center',
          column: [
          {
              label: '基本情况',
              children: [
                {
                  label: "资产编号",
                  prop: "houseNumber",
                  width:140,
                  search: true,
                },
                {
                  label: "资产名称",
                  prop: "assetName",
                  search: true,
                },
              ],
            },
            {
                  label: "使用状态",
                  prop: "zsStatus",
                  formatter:(val,value,label)=>{
                    if(val.zsStatus==1){
                      return  '出租'
                    }
                    if(val.zsStatus==2){
                      return  '出售'
                    }
                  },
                },
  

            {
              label: '支出预算',
              children: [

                {
                  label: "税费",
                  prop: "taxation",
                  value:0
                },
                {
                  label: "暂列金",
                  prop: "provisionalSums",
                  value:0
                }, {
                  label: "支出合计",
                  prop: "expenditureTotal",
                  value:0
                }
                , {
                  label: "relet",
                  prop: "relet",
                  value:0
                },
              ]

            },
            {
              label: "备注",
              prop: "remarks",
            },
          ]
        },
      };
    },
    computed: {
      ...mapGetters(["permission"]),
      permissionList() {

      },
  
    },
    mounted(){
      
    },
    watch: {
      // 有的值 是需要多个值 进行计算的  我们获取值进行计算 然后在进行渲染
      'form.relet' (val) {
        this.form.incomeTotal=parseFloat(val)+parseFloat(this.form.newLease)+parseFloat(this.form.incomeOther)
      },
      

      // 税费
      'form.taxation' (val) {
        this.form.expenditureTotal=parseFloat(val)+
          parseFloat(this.form.upkeepDismantle)+
          parseFloat(this.form.estimateIdentify)+
          parseFloat(this.form.provisionalSums)+
          parseFloat(this.form.expenditureOther)
      },
    
      // 暂列金
      'form.provisionalSums' (val) {
        this.form.expenditureTotal=parseFloat(val)+
          parseFloat(this.form.taxation)+
          parseFloat(this.form.upkeepDismantle)+
          parseFloat(this.form.estimateIdentify)+
          parseFloat(this.form.expenditureOther)
      },
    
      'form'(val){
        if(val.houseNumber!=''){
          val.realitySurplus=val.realityIncome-val.realityExpenditure
          // 合计
          val.expenditureTotal=parseFloat(val.taxation)+parseFloat(val.upkeepDismantle)+parseFloat(val.estimateIdentify)+parseFloat(val.provisionalSums)+parseFloat(val.expenditureOther)
          val.incomeTotal=parseFloat(val.incomeOther)+parseFloat(val.relet)+parseFloat(val.newLease)
        }
      },
    },
    methods: {
      getCookie(){
        if(Cookies.get('username') == ''){
          return false
        }
        else{
          return true
        }
      },
      beforeClose(done,type){
        this.$refs.crud.$refs.dialogForm.boxType=''
        done();
      },
  
  
      budgetDetails(row){
        this.$router.push({path:'/details/budgetDetails',query: {row}});
      },

      // 清空了
      resetChange (item) {
      this.$message.success('清空回调')
    },


 
      // 新增保存提示
      rowSave(row, done, loading) {
        add(row).then(() => {
          done();
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        }, error => {
          window.console.log(error);
          loading();
        });
      },
      // 点击编辑 提示
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
          done();
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "编辑操作成功!"
          });
        }, error => {
          window.console.log(error);
          loading();
        });
      },
      // 删除
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
          .then(() => {
            return remove(row.id);
          })
          .then(() => {
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          });
      },
    // 搜索
      searchChange(params, done) {
        this.query = params;
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
      },
      selectionChange(list) {
        this.selectionList = list;
      },
      selectionClear() {
        this.selectionList = [];
        this.$refs.crud.toggleSelection();
      },
     
   
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();

          if(Cookies.get('username')!=''){
            this.option.editBtn=false
            this.option.delBtn=false
            this.option.addBtn=false
          }

        });
      }
    }
  };
</script>

<style>
</style>



 "@/api/budget/budget";

import request from '@/router/axios';

export const getList = (current, size, params) => {
  return request({
    url: '/api/budget/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}



export const remove = (ids) => {
  return request({
    url: '/api/budget/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}

export const add = (row) => {
  return request({
    url: '/api/budget/submit',
    method: 'post',
    data: row
  })
}

export const update = (row) => {
  return request({
    url: '/api/budget/submit',
    method: 'post',
    data: row
  })
}

vue.config.js 

module.exports = {
  lintOnSave: true,
  productionSourceMap: false,
  chainWebpack: (config) => {
    //忽略的打包文件
    config.externals({
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex',
      'axios': 'axios',
      'element-ui': 'ELEMENT',
    })
    const entry = config.entry('app')
    entry
      .add('babel-polyfill')
      .end()
    entry
      .add('classlist-polyfill')
      .end()
    entry
      .add('@/mock')
      .end()
  },
  devServer: {
    // 端口配置
    port: 1999,
    // 反向代理配置
    proxy: {
      '/api': {
        target: 'http://192.168.56.1:7777',
        ws: true,
        pathRewrite: {
          '^/api': '/'
        }
      }
    },
  }
}

 数值参考

 

文档参考 

搜索 | Avue (avuejs.com) 

avue-crud属性配置项参数笔记分享 - 小金子J - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux信号超详细剖析

预备知识&#xff1a; 一、信号产生(OS发给进程) 1、键盘组合键 Linux中&#xff0c;一次登录对应一个终端&#xff0c;bash/shell。且只允许一个进程是前台进程&#xff0c;默认就是bash/shell&#xff0c;其它都是后台进程。获取键盘输入的是前台进程。 Ctrlc: 向前台进程…

KaiwuDB 亮相中国国际供应链促进博览会

11月28日&#xff0c;全球首个以供应链为主题的国家级展会——2023 中国国际供应链促进博览会&#xff08;简称“链博会”&#xff09;在北京盛大召开。KaiwuDB 受邀亮相大会&#xff0c;向与会者展示现代数据库技术在数字科技链条中的根基作用&#xff0c;其中分布式多模数据库…

mongodb连接工具

推荐几款熟悉的mongodb连接工具 mongoshellmongoCompassmongodbAtlasnosqlbooster 这四款连接工具中&#xff0c;mongoshell, mongoCompass, mongodbAtlas都是mongodb官网介绍和推荐的工具。好不好用先不说&#xff0c;这几款工具胜在官方提供&#xff0c;免费开源。无论使用怎…

Linux常用命令——axel命令

在线Linux命令查询工具 axel 多线程下载工具 补充说明 axel是Linux下一个不错的HTTP/ftp高速下载工具。支持多线程下载、断点续传&#xff0c;且可以从多个地址或者从一个地址的多个连接来下载同一个文件。适合网速不给力时多线程下载提高下载速度。比如在国内VPS或服务器上…

代码级接口测试与单元测试的区别

关于接口测试 接口测试是一个比较宽泛的概念, 近几年在国内受到很多企业和测试从业者的追捧, 尤其是上层的UI在取悦用户的过程中迭代更新加快, UI自动化维护成本急剧上升的时代, 大家便转向了绕过前端的接口层面进行测试. 但是很多人, 对接口测试的理解并不完整, 事实上, 我们…

Neo4j 数据库运维与优化(头歌)

文章目录 第1关&#xff1a;Neo4j 运维与优化 &#xff08;企业版&#xff09;任务描述相关知识准备工作安装监控软件安装 Prometheus优化思路 本关要求测试说明题目答案 第1关&#xff1a;Neo4j 运维与优化 &#xff08;企业版&#xff09; 任务描述 本关任务&#xff1a;学…

Yocto版本信息查询

文章目录 yocto官方发布版本当前版本完整版本信息yocto与内核版本对应Yocto工程查找版本Yocto镜像查找版本启动串口打印系统配置参考yocto官方发布版本 当前版本 如下图所示,当前yocto的主要维护版本,几乎每年一年版本,当前为5.0版本 完整版本信息 从图可知,yocto项目…

AUTOSAR OS任务调度的底层逻辑

先参考 FreeRTOS的任务触发底层逻辑 简述RTOS任务调度底层逻辑 AUTOSAR-OS的调度机制-调度表&#xff08;没理解透&#xff0c;继续更新&#xff09; OSEK与FreeRTOS在任务调度上最大的区别在于&#xff0c;FreeRTOS是基于全抢占任务调度和时间片轮转调度机制&#xff0c;具有…

Golang 设置运行的cpu数与channel管道

介绍&#xff1a;为了充分了利用多cpu的优势&#xff0c;在Golang程序中&#xff0c;设置运行的cpu数目。 func main() {//获取系统当前cpu的数量num : runtime.NumCPU()//这里根据需求来设置整个go程序去使用几个cpuruntime.GOMAXPROCS(num)fmt.Println("num ", nu…

亚马逊云与生成式 AI 的融合——生成式AI的应用领域

文章目录 前言亚马逊云科技增强客户体验聊天机器人和虚拟助手亚马逊云科技 鸿翼&#xff1a;提供精准检索和问答&#xff0c;显著提升全球化售后服务体验AI 赋能的联络中心智能导购&个性化推荐智慧数字人 提升员工生成力和创造力对话式搜索亚马逊云科技 西门子&#xff1…

PTPX在report_power时报告Signal Unloading failed的原因分析

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 在使用PTPX报动态功耗的时候&#xff0c;pt_shell load session后使用read_fsdb来读取fsdb波形文件&#xff0c;结果报了Signal Unloading failed。 这个问题可能直接读fsdb文…

java开发之个微群聊自动添加好友

请求URL&#xff1a; http://域名/addRoomMemberFriend 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId是String登录实例标识chatRoom…

CAP概念和三种情况、Redis和分布式事务的权衡

借鉴&#xff1a;https://cloud.tencent.com/developer/article/1840206 https://www.cnblogs.com/huanghuanghui/p/9592016.html 一&#xff1a;CAP概念和三种情况 1.概念&#xff1a; C全称Consistency&#xff08;一致性&#xff09;&#xff1a;这个表示所有节点返回的数…

从0开始学习JavaScript--JavaScript 懒加载和预加载

懒加载和预加载是前端性能优化中的两大利器&#xff0c;它们可以显著改善页面加载速度和用户体验。本文将深入探讨懒加载和预加载的核心概念、实现方式以及在实际应用中的丰富示例。 懒加载&#xff08;Lazy Loading&#xff09;的基本概念 懒加载是指在页面初次加载时&#…

如何使用OpenCV转换图像并创建视频,实现Ken Burns特效

一、Ken Burns特效 当使用OpenCV时,最常使用的是图像,但是我们也可以多个图像创建动画,通过引入时间轴更容易可视化。 Ken Burns特效这是一种以电影制片人肯伯恩斯 (Ken Burns) 命名的平移和缩放技术,Ken Burns 效果不是在屏幕上显示大型静态照片,而是裁剪细节,然后平移图…

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…

6、单片机与AT24C02的通讯(IIC)实验(STM32F407)

IIC简介 I2C(IIC,Inter&#xff0d;Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。 它是由数据线SDA和时钟SCL构成的串行总线&#xff0c;可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送&#xff0c;高速IIC总线一般可达…

力扣6.N字形变换

题目描述 思路 模拟轨迹&#xff0c;每当行数i到最顶&#xff08;0&#xff09;&#xff0c;或者最底&#xff08;numRows&#xff09;的时候&#xff0c;就会反方向走。 用flag来标记方向&#xff0c;在题解里看到&#xff0c;真的很巧妙5555&#xff01; 代码 class Solu…

【计算机组成原理】指令系统

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理计算机组成原理中 指令系统的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…

Python-docx 深入word源码 自定义页码页脚以动态显示总页数和当前页数

代码和效果图 先上能够正常显示页码页脚的Python代码和效果图&#xff0c;之后再解释原理和思路 from docx import Document from docx.shared import Pt from docx.oxml import OxmlElement from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.oxml.ns import qn…