Commit ae29751ffad79428f07b6aff6d49203543b376e5

Authored by zhangdaiscott
1 parent 3670dbbf

Jeecg-Boot 2.1.4 版本发布 | 重构较大,较多新功能

ant-design-vue-jeecg/README.md
@@ -7,7 +7,7 @@ Overview @@ -7,7 +7,7 @@ Overview
7 ---- 7 ----
8 8
9 基于 [Ant Design of Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) 实现的 Ant Design Pro Vue 版 9 基于 [Ant Design of Vue](https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/) 实现的 Ant Design Pro Vue 版
10 -Jeecg-boot 的前端UI框架,采用前后端分离框架,提供强大代码生成器的快速开发平台。 10 +Jeecg-boot 的前段UI框架,采用前后端分离方案,提供强大代码生成器的快速开发平台。
11 前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大!! 11 前端页面代码和后端功能代码一键生成,不需要写任何代码,保持jeecg一贯的强大!!
12 12
13 13
ant-design-vue-jeecg/src/views/modules/online/cgreport/OnlCgreportHeadList.vue
@@ -6,18 +6,18 @@ @@ -6,18 +6,18 @@
6 <a-form layout="inline"> 6 <a-form layout="inline">
7 <a-row :gutter="24"> 7 <a-row :gutter="24">
8 8
9 - <a-col :span="6"> 9 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
10 <a-form-item label="报表编码"> 10 <a-form-item label="报表编码">
11 <a-input placeholder="请输入报表编码" v-model="queryParam.code"></a-input> 11 <a-input placeholder="请输入报表编码" v-model="queryParam.code"></a-input>
12 </a-form-item> 12 </a-form-item>
13 </a-col> 13 </a-col>
14 - <a-col :span="6"> 14 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
15 <a-form-item label="报表名字"> 15 <a-form-item label="报表名字">
16 <a-input placeholder="请输入报表名字" v-model="queryParam.name"></a-input> 16 <a-input placeholder="请输入报表名字" v-model="queryParam.name"></a-input>
17 </a-form-item> 17 </a-form-item>
18 </a-col> 18 </a-col>
19 19
20 - <a-col :span="8"> 20 + <a-col :xl="6" :lg="7" :md="8" :sm="24">
21 <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> 21 <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
22 <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> 22 <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
23 <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> 23 <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
ant-design-vue-jeecg/src/views/modules/online/cgreport/auto/OnlCgreportAutoList.vue
@@ -58,18 +58,34 @@ @@ -58,18 +58,34 @@
58 style="min-height: 300px" 58 style="min-height: 300px"
59 > 59 >
60 60
  61 + <!-- 支持链接href跳转 -->
  62 + <template
  63 + v-for="field of fieldHrefSlots"
  64 + :slot="field.slotName"
  65 + slot-scope="text, record"
  66 + >
  67 + <a @click="handleClickFieldHref(field,record)">{{ text }}</a>
  68 + </template>
  69 +
61 </a-table> 70 </a-table>
62 71
  72 + <!-- 跳转Href的动态组件方式 -->
  73 + <a-modal v-bind="hrefComponent.model" v-on="hrefComponent.on">
  74 + <component :is="hrefComponent.is" v-bind="hrefComponent.params"/>
  75 + </a-modal>
  76 +
63 </a-card> 77 </a-card>
64 </template> 78 </template>
65 79
66 <script> 80 <script>
  81 + import { HrefJump } from '@/mixins/OnlAutoListMixin'
67 import { getAction,downFile } from '@/api/manage' 82 import { getAction,downFile } from '@/api/manage'
68 import { filterMultiDictText } from '@/components/dict/JDictSelectUtil' 83 import { filterMultiDictText } from '@/components/dict/JDictSelectUtil'
69 import {filterObj} from '@/utils/util'; 84 import {filterObj} from '@/utils/util';
70 85
71 export default { 86 export default {
72 name: 'OnlCgreportAutoList', 87 name: 'OnlCgreportAutoList',
  88 + mixins: [HrefJump],
73 components: { 89 components: {
74 }, 90 },
75 data() { 91 data() {
@@ -89,8 +105,7 @@ @@ -89,8 +105,7 @@
89 reportCode: '', 105 reportCode: '',
90 description: '在线报表功能测试页面', 106 description: '在线报表功能测试页面',
91 url: { 107 url: {
92 - getColumns: '/online/cgreport/api/getColumns/',  
93 - getData: '/online/cgreport/api/getData/', 108 + getColumnsAndData: '/online/cgreport/api/getColumnsAndData/',
94 getQueryInfo: '/online/cgreport/api/getQueryInfo/', 109 getQueryInfo: '/online/cgreport/api/getQueryInfo/',
95 getParamsInfo:'/online/cgreport/api/getParamsInfo/' 110 getParamsInfo:'/online/cgreport/api/getParamsInfo/'
96 }, 111 },
@@ -153,7 +168,7 @@ @@ -153,7 +168,7 @@
153 } 168 }
154 169
155 this.selfParam={} 170 this.selfParam={}
156 - getAction(`${this.url.getParamsInfo}${this.$route.params.code}`).then((res) => { 171 + getAction(`${this.url.getParamsInfo}${this.reportCode}`).then((res) => {
157 if (res.success) { 172 if (res.success) {
158 if(res.result && res.result.length>0){ 173 if(res.result && res.result.length>0){
159 for(let i of res.result){ 174 for(let i of res.result){
@@ -167,10 +182,10 @@ @@ -167,10 +182,10 @@
167 }) 182 })
168 }, 183 },
169 initQueryInfo() { 184 initQueryInfo() {
170 - if(!this.$route.params.code){ 185 + if(!this.reportCode){
171 return false 186 return false
172 } 187 }
173 - getAction(`${this.url.getQueryInfo}${this.$route.params.code}`).then((res) => { 188 + getAction(`${this.url.getQueryInfo}${this.reportCode}`).then((res) => {
174 console.log("获取查询条件", res); 189 console.log("获取查询条件", res);
175 if (res.success) { 190 if (res.success) {
176 this.queryInfo = res.result 191 this.queryInfo = res.result
@@ -180,7 +195,7 @@ @@ -180,7 +195,7 @@
180 }) 195 })
181 }, 196 },
182 loadData(arg) { 197 loadData(arg) {
183 - if(!this.$route.params.code){ 198 + if(!this.reportCode){
184 return false 199 return false
185 } 200 }
186 if (arg == 1) { 201 if (arg == 1) {
@@ -189,42 +204,43 @@ @@ -189,42 +204,43 @@
189 let params = this.getQueryParams();//查询条件 204 let params = this.getQueryParams();//查询条件
190 console.log(params) 205 console.log(params)
191 206
  207 + //获取报表ID
192 console.log(' 动态报表 reportCode : ' + this.reportCode); 208 console.log(' 动态报表 reportCode : ' + this.reportCode);
193 this.table.loading = true 209 this.table.loading = true
194 - Promise.all([  
195 - getAction(`${this.url.getColumns}${this.reportCode}`),  
196 - getAction(`${this.url.getData}${this.reportCode}`, params)  
197 - ]).then(results => {  
198 - let [{result: {columns,cgreportHeadName,dictOptions}}, {result: data}] = results  
199 - let columnWidth = 230  
200 - this.dictOptions = dictOptions  
201 - for(let a=0;a<columns.length;a++){  
202 - if(columns[a].customRender){  
203 - let field_name = columns[a].customRender;  
204 - columns[a].customRender=(text)=>{  
205 - if(!text){  
206 - return ''  
207 - }else{  
208 - return filterMultiDictText(this.dictOptions[field_name], text+"");  
209 - } 210 +
  211 + getAction(`${this.url.getColumnsAndData}${this.reportCode}`, params).then(res => {
  212 + if (res.success) {
  213 + let { data, columns, cgreportHeadName, dictOptions, fieldHrefSlots } = res.result
  214 +
  215 + let columnWidth = 230
  216 + this.dictOptions = dictOptions
  217 + for(let a=0;a<columns.length;a++){
  218 + if(columns[a].customRender){
  219 + let field_name = columns[a].customRender;
  220 + columns[a].customRender = (t => t ? filterMultiDictText(this.dictOptions[field_name], t + '') : t)
210 } 221 }
  222 + columns.width = columnWidth
211 } 223 }
212 - columns.width = columnWidth  
213 - }  
214 - this.table.scroll.x = columns.length * columnWidth  
215 - this.table.columns = [...columns]  
216 - this.cgreportHeadName = cgreportHeadName  
217 - if (data) {  
218 - this.table.pagination.total = Number(data.total)  
219 - this.table.dataSource = data.records  
220 - } else {  
221 - this.table.pagination.total = 0  
222 - this.table.dataSource = [] 224 + this.table.scroll.x = columns.length * columnWidth
  225 + this.table.columns = [...columns]
  226 + this.cgreportHeadName = cgreportHeadName
  227 + this.fieldHrefSlots = fieldHrefSlots
  228 + if (data) {
  229 + this.table.pagination.total = Number(data.total)
  230 + this.table.dataSource = data.records
  231 + } else {
  232 + this.table.pagination.total = 0
  233 + this.table.dataSource = []
  234 + }
  235 +
  236 + }else{
  237 + this.$message.warn('查询失败:'+res.message)
223 } 238 }
  239 +
224 }).catch((e) => { 240 }).catch((e) => {
225 console.error(e) 241 console.error(e)
226 this.$message.error('查询失败') 242 this.$message.error('查询失败')
227 - }).then(() => { 243 + }).finally(() => {
228 this.table.loading = false 244 this.table.loading = false
229 }) 245 })
230 }, 246 },
@@ -246,7 +262,14 @@ @@ -246,7 +262,14 @@
246 }, 262 },
247 exportExcel() { 263 exportExcel() {
248 let fileName = this.cgreportHeadName 264 let fileName = this.cgreportHeadName
249 - downFile(`/online/cgreport/api/exportXls/${this.reportCode}`,this.queryParam).then((data)=>{ 265 + let selfParam = {}
  266 + for (let queryName in this.$route.query) {
  267 + if (this.$route.query.hasOwnProperty(queryName)) {
  268 + let value = this.$route.query[queryName]
  269 + selfParam['self_' + queryName] = value || ''
  270 + }
  271 + }
  272 + downFile(`/online/cgreport/api/exportXls/${this.reportCode}`, Object.assign(selfParam, this.queryParam)).then((data) => {
250 if (!data) { 273 if (!data) {
251 this.$message.warning("文件下载失败") 274 this.$message.warning("文件下载失败")
252 return 275 return
@@ -275,6 +298,9 @@ @@ -275,6 +298,9 @@
275 if (Object.keys(sorter).length > 0) { 298 if (Object.keys(sorter).length > 0) {
276 this.sorter.column = sorter.field 299 this.sorter.column = sorter.field
277 this.sorter.order = 'ascend' == sorter.order ? 'asc' : 'desc' 300 this.sorter.order = 'ascend' == sorter.order ? 'asc' : 'desc'
  301 + } else {
  302 + this.sorter.column = null
  303 + this.sorter.order = null
278 } 304 }
279 this.table.pagination = pagination 305 this.table.pagination = pagination
280 this.loadData() 306 this.loadData()
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
@@ -96,7 +96,7 @@ spring: @@ -96,7 +96,7 @@ spring:
96 connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 96 connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
97 datasource: 97 datasource:
98 master: 98 master:
99 - url: jdbc:mysql://127.0.0.1:3306/jeecg-boot-?characterEncoding=UTF-8&useUnicode=true&useSSL=false 99 + url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
100 username: root 100 username: root
101 password: root 101 password: root
102 driver-class-name: com.mysql.jdbc.Driver 102 driver-class-name: com.mysql.jdbc.Driver