1.1 为小白避坑用的,视频教程(官方教程)
视频教程
https://edu.csdn.net/learn/25027
说明文档
http://jeecg-boot.mydoc.io/
(1)首先找到项目中的 defaultSettings.js 文件
(2) 找到文件中的 export default 中的 primaryColor字段,这里的颜色值可以修改成自己想要的颜色代码:
数据库表必须有的字段
id 字段 (系统代码回传用的)
createTime 字段 (排序用的)
注意点 jeecg 框架,由于深度绑定,所以数据库的表主键必须为id,而且框架自动生成的。
主键类型得设置成 字符串类型,注意长度至少为32位,以防万一。
j-dict-select-tag 通过加载系统字典值,下拉选择数据
car_types 是预先定义的字典值
vehicleType 是选择的值
<a-form-item label="车辆类型">
<j-dict-select-tag
type="list"
placeholder="请选择车辆类型"
dictCode="car_types"
v-model="vehicleType"
/>
a-form-item>
注意点就是直接在 dataIndex 中添加 _dictText 就可以解决问题了
column: [{
title: '车辆类型',
align: 'center',
dataIndex: 'vehicleType_dictText'
}]
首先是import 方式引入组件
import JUpload from '@/components/jeecg/JUpload'
其次是 注册组件
components: {
JUpload,
},
实际使用代码示例 [number=1 代表只能上传1 文件]:
<j-upload v-model="fileList" :number="1">j-upload>
以下的官方demo中的案例,拿出来分享以下,下面这个是图片列表
//jeect-boot 图片预览核心代码,细节地方,自己调整一下就好
<div>
<template>
<div style="float:left;width:104px;height:104px;margin:8px;">
<div style="width:100%;height:100%;display:flex;padding:0px;border: 1px solid #d9d9d9;border-radius: 4px;cursor: pointer;">
<img style="width:100%;" :src="'https://img-pre.ivsky.com/img/tupian/pre/201803/29/gongchengshi.jpg'" :preview="'https://img-pre.ivsky.com/img/tupian/pre/201803/29/gongchengshi.jpg'" />
div>
div>
template>
div>
原有的确认提示框
// 直接修改 JeecgListMixin.js 中的 $confirm 部门,替换成如下部分
<script>
this.$confirm('请仔细核对,确认是否删除', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 确认进入这里
that.loading = true;
deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
if (res.success) {
//重新计算分页问题
that.reCalculatePage(that.selectedRowKeys.length)
that.$message.success(res.message);
that.loadData();
that.onClearSelected();
} else {
that.$message.warning(res.message);
}
}).finally(() => {
that.loading = false;
});
}).catch(() => {
// 取消进入这里
console.log('catch')
});
script>
资料参考来源:
思路:
<script>
// 直接修改 UserMenu.vue 中的 handleLogout() 方法,直接将原有的confirm替换成,替换成如下部分
this.$confirm('真的要注销登录吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
// 确认进入这里
return that
.Logout({})
.then(() => {
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
that.$router.push({ path: '/user/login' })
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
//window.location.reload()
})
.catch(err => {
console.log('发生错误==>', err)
that.$message.error({
title: '错误',
description: err.message
})
})
})
.catch(() => {
// 取消进入这里
console.log('catch')
})
script>
原有的确认提示框
<div>
// 日期选择器定义 format="YYYY-MM-DD" format="YYYY-MM-DD HH:mm:ss"
<a-range-picker
showTime
:placeholder="['开始时间', '结束时间']"
format="YYYY-MM-DD"
:value="queryParam.rangeTimer"
@change="rangeTimerChange"
/>
div>
script>
// 参数定义
queryParam: {
rangeTimer: undefined,
startTime: undefined,
endTime: undefined,
},
// 函数定义
rangeTimerChange(dates, dateStr) {
// 数据赋值给rangeTimer ,主要是组件上用来显示值的
this.queryParam.rangeTimer = dates
// 下面是 开始日期 和 结束日期 的拆分
this.queryParam.startTime = dateStr[0]
this.queryParam.endTime = dateStr[1]
}
script>
// --第一种方法-以下方法是系统用的获取字典值的方法----------
// 这里是yn 是否 字典值
// dictList 是获取到的结果数组
ajaxGetDictItems('yn', null).then(res => {
if (res.success) {
this.dictList= res.result
}
})
//----第二种方法---------------------------------------------------
//优先从缓存中读取字典配置
if (getDictItemsFromCache(this.dictCode)) {
this.dictOptions = getDictItemsFromCache(this.dictCode)
return
}
//首先是引入table组件
// cameraTableClick 行点击事件
// tableClick1 是单选的方法 type: 'radio'
// tableClick2 是多选的方法 type: 'checkbox'
// selectedRowKeys 是变量,
// onListOnChange是一个change方法
<template>
<div>
<a-table
rowKey="id"
:columns="columns1"
:data-source="data1"
:customRow="tableClick2 "
:row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: onListOnChange,
type: 'checkbox'
}"
>
a-table>
div>
template>
<script>
// data中定义好参数变量
export default {
data() {
return {
columns1:[],
data1: [],
selectedRowKeys: [],
// 其余必填参数,这里省略……
}
},
methods: {
onListOnChange(val) {
this.selectedRowKeys = val;
},
// 点击行数据进行单选操作
tableClick1(record, index) {
return {
on: {
click: () => {
let keys = []
keys.push(record.id)
this.selectedRowKeys = keys
}
}
}
},
// 点击行数据,进行多选操作
tableClick2(record, index) {
return {
on: {
click: () => {
let rowKeys = this.selectedRowKeys
if (rowKeys.length > 0 && rowKeys.includes(record.id)) {
rowKeys.splice(rowKeys.indexOf(record.id), 1)
} else {
rowKeys.push(record.id)
}
this.selectedRowKeys= rowKeys
}
}
}
},
}
script>
.className {
-moz-user-select: none;
-webkit-user-select:none;
}
.scorll::-webkit-scrollbar {
/*滚动条整体部分,其中的属性有width,height,background,border等(就和一个块级元素一样)(位置1)*/
width: 10px;
height: 10px;
border-radius: 10px;
}
.scorll::-webkit-scrollbar-button {
/*滚动条两端的按钮,可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果(位置2)*/
background: #fff;
display: none;
}
.scorll::-webkit-scrollbar-track {
/*外层轨道,可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果(位置3)*/
background: #fff;
display: none;
}
.scorll::-webkit-scrollbar-track-piece {
/*内层轨道,滚动条中间部分(位置4)*/
background: #fff;
border-radius: 10px;
}
.scorll::-webkit-scrollbar-thumb {
/*滚动条里面可以拖动的那部分(位置5)*/
background: #A3A5A7;
border-radius: 10px;
}
.scorll::-webkit-scrollbar-corner {
/*边角(位置6)*/
background: #fff;
}
.scorll::-webkit-scrollbar-resizer {
/*定义右下角拖动块的样式(位置7)*/
background: #fff;
}
.scorll {
scrollbar-arrow-color: #fff;
/**/
/*三角箭头的颜色*/
scrollbar-face-color: #fff;
/**/
/*立体滚动条的颜色*/
scrollbar-3dlight-color: #fff;
/**/
/*立体滚动条亮边的颜色*/
scrollbar-highlight-color: #fff;
/**/
/*滚动条空白部分的颜色*/
scrollbar-shadow-color: #fff;
/**/
/*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color: #fff;
/**/
/*立体滚动条强阴影的颜色*/
scrollbar-track-color: #A3A5A7;
/**/
/*立体滚动条背景颜色*/
scrollbar-base-color: #fff;
/**/
/*滚动条的基本颜色*/
}
<style>
.className {
flex-wrap: wrap;
}
style>
参考来源(csdn上的一个小伙伴)