更新时间:2021年2月12日
更新模块
效果:
前端代码:
<template>
<div class="block p-5">
<el-timeline>
<el-timeline-item v-for="(activity, index) in activities"
:key="index"
:size="normal"
:color="'#006eff'"
:timestamp="activity.timestamp" placement="top">
<el-card class="text-wrapper">
<h4>{{activity.edition}}:</h4>
<p>{{activity.content}}</p>
<p>{{activity.author}}:{{activity.timestamp}}</p>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</template>
<script>
export default {
data() {
return {
activities: [{
content: '1:支持使用图标\r\n2:同时还支持颜色处理',
timestamp: '2018-04-12 20:46',
author:'FYZY',
edition:'v1.0.3'
}, {
content: '支持自定义颜色',
timestamp: '2018-04-03 20:46',
author:'FYZY',
edition:'v1.0.2'
}, {
content: '支持自定义尺寸',
timestamp: '2018-04-03 20:46',
author:'FYZY',
edition:'v1.0.1'
}, {
content: '默认样式的节点',
timestamp: '2018-04-03 20:46',
author:'FYZY',
edition:'v1.0.0'
}]
};
}
};
</script>
<style scoped>
.text-wrapper {
white-space: pre-wrap;
}
</style>
注意:要想有换行效果需要添加样式:
white-space: pre-wrap;
另外,\r\n代表换行
数据库设计:
id:标识符
edition:版本号
version_content:内容
version_author:作者
version_time:版本更新时间
数据库:
后端模型层:
其他我们已经通过包装封装好了
你没有听错!
我们一键转换所有T4模板!
T4模板转换所有代码:
这里没东西,就是一个按钮
添加依赖注入:
添加控制器:
using CC.GraduationProject.Common;
using CC.GraduationProject.IBLL;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CC.GraduationProject.API.Controllers
{
public class VersionController : BaseController
{
private IversionBll _versionBll;
public VersionController(IversionBll versionBll)
{
_versionBll = versionBll;
}
public async Task<IActionResult> GetVersionList()
{
var versions = await _versionBll.GetEntities(n => n.id > 0).ToListAsync();
return Content(JsonFactory.Json(versions));
}
}
}
前端API:
import myaxios from '@/utils/myaxios'
const qs = require("querystring");
export default {
getVersionList() {
return myaxios({
url: '/Version/GetVersionList',
method: 'get'
})
},
}
前端页面添加代码:
<script>
import versionAPI from "@/api/version";
export default {
data() {
return {
activities: [],
};
},
created() {
this.fetchData();
},
methods: {
fetchData() {
versionAPI.getVersionList().then((response) => {
const resp = response.data;
if (resp.flag) {
this.activities = resp.data;
}
});
},
},
};
</script>
运行测试:
404报错了
看一下了,是没有找到后端
原来是我忘记在后端添加api特性了:
再次运行:
报错:
System.InvalidOperationException: Cannot create a DbSet for ‘version’
because this type is not included in the model for the context.
原来是少了将模型写入上下文对象中。。。。。。
看了下这里,其实也可以转换成T4模板来写!!!
上下文对象转换成T4模板:
T4代码:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".cs" #>
<#
string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");//获取解决方案路径
string txt;
StreamReader sr = new StreamReader(solutionsPath+@"\T4Model\T4Model.txt");
txt=sr.ReadToEnd();
sr.Close();
string[] ModelData= txt.Split(',');
#>
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
namespace CC.GraduationProject.Model
{
public partial class DataContext :DbContext
{
<# foreach(string k in ModelData){
#>
public DbSet<<#=k #>> <#=k #> { get; set; }
<# } #>
}
}
效果:
ok!
最终运行:
啊这???出是出来了,为什么\r\n没有换行呢?
查看一下传送的数据:
在后端传过来的数据会变成两个\怪不得!
其实也不然,后端传的也是一个\,只是第一个\是转义符而已
这个地方,我们得要在前端操作了
我们来一波骚操作:
既然\转义符无法去除,那我们干脆转换成
最终效果图:
ok了,要的就是这种效果
有了T4模板,现在添加模型真的真的太轻松了!!!
减少了百分之80的重复代码
版本模块到这里一次性结束!
我们还差这几个模块:
1:注册模块
2:忘记密码模块
3:消息模块
4:(核心,也也是最难的)在线作业模块
5:统计模块(这个最后来弄)
由于春节,这几天好好比较忙哈
可能近期更新速度会变慢
(其实主要还是要空闲的时候想好思路)