DotNet VOL.Core框架学习使用笔记(持续更新)

这篇具有很好参考价值的文章主要介绍了DotNet VOL.Core框架学习使用笔记(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 2023-6-8
下拉框绑定数据源的增加设置在 系统设置-下拉框绑定设置里面,重点是根据需要用sql查出数据源。

2023-6-12

从控制器外层的sys_regionController部分类调试来看 _isys_RegionRepository 注入了总是提示为空。 后来了解到了框架约束好像所有的业务都要写到partial文件夹的部分类里。框架执行也是以这个文件夹的部分类先执行, 外层的部分类 那些注入啊,构造好像加了代码不起作用。

/// <summary>
/// 获取省、市下面的所有数据
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getList")]
public async Task<IActionResult> GetList(int code)
{
 var mydata = await _isys_RegionRepository.FindAsIQueryable(x => x.parentId == code).ToListAsync();
 return Json(
   mydata.Select(s => new
   {
    key = s.code,
    value = s.name
   }));
}


2023-6-13

新建的单独vue页面,引入原型html的 外部样式文件,在public文件夹的index.html里面引用 ,样式文件放到 public的static文件夹
框架文档的 组件API ,源代码的表单布局-多列表单菜单,有复选框的示例,不过可能先要学会怎么用,不然搞不定。
 


---------------------------------------------------------
2023-6-14 
formRules 就是一个二维数组,二维数组就能表示所在坐标 
类似于table方式定位展示的二维数组

骑着奥巴马杀猪 2023/6/14 11:27:04

 那如果是这样的话, 我从产品那里复制来的原型HTML就不能用了吧, 我全部要用你的组件api来重新构建页面才行啊, 不然我都没法定位哪个地方放哪个字段组件
VOL作者靈ヾ魂 2023/6/14 11:27:46

 给的示例就是一个json配置,至少要能熟悉json是什么,要不然没办法搞了
------------------------------2023-6-16 --------------------------------
单独建跟超级管理员平级的角色吗 改表字段么 父级id改为可以为null ,然后点同步表结构与生成model
实际上在代码生成功能那里去修改父级ID允许为空,生成model会报错。 
修改了5初关于允许为空的model赋值错误。涉及到添加和修改 的 查询的5个位置会提示需要(int) 强行转换?int类型的赋值。
修改了sys_roleservice 的add 和update ,默认赋值parentid=0,否则列表都展示不出来新增或者修改的parentid=null的角色

菜单要想赋权给角色成功,必须要把每一层的查询功能打开,否则给角色勾选赋权时,都无法勾选到查询,尤其是最上面层的模块勾选不到查询,会导致赋权失败,然后用户登录后菜单显示不出来。 

------------------------------2023-6-18 --------------------------------
自己写的vue界面,提交到后端时,后端接口接收数据需要与前端formFields一样的字段dto来对应接收。 前端formFields里的数据可能很多字段类型不好对应,可以重新定义一个json变量存储数据实体,通过对formFields数据里字段内容的转换挨个存储到新的json对象中。 
字段类型如果不好对应的情况下,比如前端的图片是img,后端是string存储图片地址,那就要读取图片字段数组的path来转换
 
把前后端组装实体缩减到2个字段了, 后端就是看不到提交的实体字段值 接口参数类型前面加上formbody标记就好了

--------------------------------2023-6-20------------------------------
1、怎么样给formFields里的字段赋值, 最笨的办法是挨个用等于号去赋值,还可以用 var result = Object.assign(target,source)

2、隐藏element的tabs选项卡。
 百度里查了很多办法,都行不通,比如:
this.$refs.pane_persuser.style.display = 'none';
this.pane_compuser = true; //v-show
this.$refs.tabs.$children[0].$refs.tabs[1].style.display = 'none';

最后直接浏览器里看选项卡的html,查到div的id,用最原始的js代码document.getElementById("tab-pane_compuser");获取到div对象,来操作对象的 .style.display = 'none'; 实现的隐藏。 但是这种方式后来又发现有问题,他只是隐藏了pane,而pane里面的内容并没有隐藏,比如我是一个pane里面有一个类似<tab_comp></tab_comp>自定义页的标签,这个标签指向的页面内容无法隐藏。
最后是用得v-if来解决问题。在el-tab-pane中配置v-if="pane_compuser" ,然后对pane_compuser属性设置 true或者false控制隐藏显示。


3、2个菜单指向的都是同一个表的数据, 只是根据一个字段类型不同筛选不同的数据列表, 代码生成要怎么处理,另一个用视图生成代码,或者看视频上的表配置多个菜单

--------------------------------2023-6-21------------------------------
多个附件,不太好处理,本意是想搞个独立的附件副表,能够单独存储附件名称、附件路径、附件上传和修改时间等的,但是框架自动生成代码的情况下,只能是强行给业务主表加附件字段,用逗号分割多个附件路径来存储。

需要自己在前端 手工加载下拉框内容的,比如有个发布单位下拉框,这个数据源就是当前登录用户所属公司,加上一个保密类型2个选项,用户所属公司是动态的, 解决方法是:从后台请求,给表单的data绑定值

代码生成编辑框中,字段说明宽度不够,到生成的js文件自定义写代码  oninit函数里加 this.boxOptions.labelWidth = 200;

radio 字典要显示星星怎么办,字典里面做转译,比如sql查星级,用case when 根据数字值转译出来几个星星符号成为value,sql如下所示:
select vip_id  as 'key',  
case vip_level_star
when 1 then '★'
when 2 then '★★'
when 3 then '★★★'
when 4 then '★★★★'
else  '★★★★★'
end
as value from cost_viplist

字段要多加后缀提示说明的,如下所示
let mypro_paydays=this.getOption("pro_paydays");
mypro_paydays.extra = { //添加一个额外提示信息(可以忽然此配置)
  icon: "md-sad",//显示图标
  text: "在项目成果文件交付验收合格后*天内支付" //显示文本
  //触发事件 click: item => {}
}

--------------------------------2023-6-26------------------------------
关于页面复用,比如我一个项目表cost_project,他可能需要根据项目类型名称(竞标项目、派单项目)来生成2个菜单,这2个菜单的数据展示区别也就是项目类型,新增时也只能根据菜单固定的项目类型来新增。
这种需求,我们可以将cost_project单表业务生成前端业务代码,比如先生成竞标项目cost_project.vue。再新建一个vue页面paidan_cost_project.vue,然后将前面生成的vue页面作为一个组件引入到新建的paidan_cost_project.vue中。 然后在viewGird.js文件中新建一个路由/paidan_cost_project指向新页面,并且为路由新建一个菜单。

paidan_cost_project.vue代码如下:

<template>
    <paidanproject></paidanproject>
</template>

<script>
import paidanproject from './cost_project';
export default {
    components: {
        paidanproject,
    }
}
</script>

<style></style>


至于新旧页面的中文名称和后端url请求,我们可以在生成的前端代码对应的cost_project.js文件中根据当前路由名称来判断并修改界面的文字名称cnName;修改提交的url,控制不同的路由页面提交到不同的后端控制器,然后后端控制器再设置固定的项目类型,来控制接口展示不同的项目类型的数据到列表中。

cost_project.js 中与页面复用菜单有关的代码:

onInit(){

//页面复用    

      if (this.$route.path == '/paidan_cost_project') {

        this.table.cnName = "派单项目";

        this.table.url = "/paidan_cost_project/";

        // mypro_jointype.disabled=true;

        // this.editFormFields.pro_jointype="1";        

        // this.columns.pro_jointype="1";      

      }

      else if (this.$route.path == '/cost_project') {

        this.table.cnName = "竞标项目";

        this.table.url = "/cost_project/";        

        // mypro_jointype.disabled=true;

        // this.editFormFields.pro_jointype="0";

        // this.columns.pro_jointype="0";      

      }

}

后端控制器代码,复用的页面控制器paidan_cost_projectController和原始控制器cost_projectController都要对获取列表数据做类型筛选赋值:

DotNet VOL.Core框架学习使用笔记(持续更新)

DotNet VOL.Core框架学习使用笔记(持续更新)

 后端服务cost_projectService代码,重写GetPageData,增加条件判断:

DotNet VOL.Core框架学习使用笔记(持续更新)


也可以根据当前路由名称来修改页面上的某些值,比如加载时根据路由来设置新增数据时的项目类型字段值,可以操作columns 常量来设置。
同理还可以考虑根据路由名称来控制新增界面上的保存按钮等,编辑界面又作为审核菜单(也是根据项目类型区分两个列表菜单)时的查看项目功能。这样一个单标的代码生成就可以根据类型参数形成很多不同业务需要的菜单界面了。

比如下图,我还根据页面路由控制了编辑框里的radio联动,通过radio的onchange控制了表单元素

DotNet VOL.Core框架学习使用笔记(持续更新)

--------------------------------2023-6-27---------------------------------------------

下拉框加载后修改数据源,在methods: {}中加如下函数
getOption(field) {
      let option;
      this.editFormOptions.forEach(x => {
        x.forEach(item => {
          if (item.field == field) {
            option = item;
          }
        })
      })
      return option;
    },
    dicInited(params) { //数据源加载完成时的方法,2022.04.04更新method.js文件后才能使用
      //给发布单位下拉框手动换数据源 ,可以从接口获取想要的数据源来重新对下拉框的data赋值
      let my_pro_callunitcode = this.getOption("pro_callunitcode");
      my_pro_callunitcode.data = [
        { key: "1", value: "111" },
        { key: "2", value: "222" },
      ];
    },

--------------------------------2023-7-1---------------------------------------------

前端动态设置必填项:

我的需求是根据一个radio的选择 其他 时,需要控制手工录入框为必填。

modelOpenAfter(row) {

//设置资金来源 pro_capitalsource 的 onchange

      let mypro_capitalsource = this.getOption("pro_capitalsource");

      let mypro_capitalsource2 = this.getOption("pro_capitalsource2");

      mypro_capitalsource2.hidden = true;

      mypro_capitalsource.onChange = (value, options) => {

        if (value == "2") {

          mypro_capitalsource2.hidden = false;

          mypro_capitalsource2.validator = (rule, val, callback) => {

            if (val == '') {

              return '资金来源选择其他时请手工录入来源'

            }

            return "";

          }

        }

        else {

          mypro_capitalsource2.hidden = true;

        }

      };

}

DotNet VOL.Core框架学习使用笔记(持续更新)

--------------------------------2023-7-2---------------------------------------------

需求描述:框架生成的代码,不想在编辑框显示出来的字段,但是又想要对字段设置值,比如radio、checkbox,select 等类型的字段,我们是编辑和保存的数据源的id, 但是我们又想存储他们对应的名称。

这时候可以在代码生成中设置这些不要显示的字段他们的编辑行为0,编辑列为1,这些字段不会在前端显示,然后我们需要在功能菜单对应的js文件中手工写代码获取控件选中的选项对应的文本,通过formData.mainData.pro_deliverylist2,这种方式赋值给这些不显示的字段。后端代码读取到编辑行为0的列,也会自动保存数据。

前端代码:

 methods: {
    getOptioneditFormOptions(field) {
      let option;
      this.editFormOptions.forEach(x => {
        x.forEach(item => {
          if (item.field == field) {
            option = item;
          }
        })
      })
      return option;
    },

    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      this.Addparam(formData);
      return true;
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      this.Addparam(formData);
      return true;
    },
    //自定义给表单加提交字段内容
    Addparam(formData) {
       var this_pro_business = this.getOptioneditFormOptions("pro_business");
      this_pro_business.data.forEach(x => {
        if (this.editFormFields.pro_business.includes(x.key)) {
          if(!formData.mainData.hasOwnProperty("pro_business2"))
          {
            formData.mainData.pro_business2="";
          }
          formData.mainData.pro_business2 += x.value+",";
        }
      });

      var this_pro_deliverylist = this.getOptioneditFormOptions("pro_deliverylist");
      this_pro_deliverylist.data.forEach(x => {
        if (this.editFormFields.pro_deliverylist.includes(x.key)) {
          if(!formData.mainData.hasOwnProperty("pro_deliverylist2"))
          {
            formData.mainData.pro_deliverylist2="";
          }
          formData.mainData.pro_deliverylist2 += x.value+",";
        }
      });
    }

}

数据库保存效果图:

DotNet VOL.Core框架学习使用笔记(持续更新)文章来源地址https://www.toymoban.com/news/detail-496914.html

到了这里,关于DotNet VOL.Core框架学习使用笔记(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HTML】学习笔记(自用持续更新)

    只定义信息,通过标签组成整个页面框架,再通过CSS渲染使得前端页面做的好看 title/title 网页标题 h1/h1 一级标题 h2/h2 二级标题  //标题最多6级 p/p 文本段落 br 强制换行 b/b 加粗 i/i 斜体 u/u 下划线 img src=\\\"图片链接\\\" width= 图片 width设置图片宽度 a href=\\\"网页链接\\\" 属性连接名/a 打

    2024年02月11日
    浏览(36)
  • Rust 学习笔记(持续更新中…)

    运行 Rust 程序之前必须先编译,命令为: rustc 源文件名  - rustc main.rs 编译成功之后,会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件  ,里面包含调试信息 Rust 是 ahead-of-time 编译的语言 - 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rust ) rustc

    2024年02月10日
    浏览(83)
  • Mybatis学习笔记(一)(持续更新中)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以可以在我主页的资源里找到,如果在学习

    2024年02月04日
    浏览(38)
  • 【笔记】Spring Boot 历史官方文档学习(持续更新)

    Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。 与 Spring 5 官网历史文档学习 一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作

    2024年02月10日
    浏览(43)
  • 江科大STM32学习笔记(详细版)——2023持续更新

    基础篇 是到时候我自己找其它视频补充(就比如寄存器影射,时钟树),到时候写在其它文章里。 主篇(外设篇)目前是跟着@江协科技的STM32入门教程-2023版 细致讲解 中文字幕视频来学习的,大家可以边看视频边根据我的笔记做适合自己的笔记; 另外,因为篇幅太长了,我将

    2024年02月06日
    浏览(44)
  • 【STM32】江科大STM32学习笔记汇总(持续更新中...)

    【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM32学习笔记-GPIO输出(05) 【STM32】STM32学习笔记-GPIO相关API概述(06-1) 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2) 【STM32】

    2024年02月22日
    浏览(42)
  • 【教程】MySQL数据库学习笔记(三)——数据定义语言DDL(持续更新)

    写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 DDL(Data Definition Language,数据定义语言) 是用于定义和管理数据库对象(如表、视图、索引等

    2024年02月20日
    浏览(43)
  • OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

    结论:在BIOS里面将Hyper-V打开,DevEco Studio模拟器可以成功启动。 如果在另外的文件中引用组件,需要使用export导出,并在使用的页面import该自定义组件。 1.自定义组件(被导入组件) 2.组合组件(引用自定义组件) 1、main_pages.json配置文件配置静态路由地址,配置文件

    2024年02月04日
    浏览(75)
  • 【计算机网络】学习笔记:第三章 数据链路层【王道考研】持续更新中....

    基于本人观看学习b站王道计算机网络课程所做的笔记,不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系,立删 如果本篇笔记帮助到了你,还请点赞 关注 支持一下 ♡𖥦)!! 主页专栏有更多,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持

    2024年02月01日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包