提交 4d328f19 编写于 作者: ibizdev's avatar ibizdev

ibizdev提交

上级 c22dd52a
...@@ -63,6 +63,8 @@ import AppStudioAction from './components/app-studioaction/app-studioaction.vue' ...@@ -63,6 +63,8 @@ import AppStudioAction from './components/app-studioaction/app-studioaction.vue'
import AppDebugActions from './components/app-debug-actions/app-debug-actions.vue' import AppDebugActions from './components/app-debug-actions/app-debug-actions.vue'
import AppHeaderMenus from './components/app-header-menus/app-header-menus.vue' import AppHeaderMenus from './components/app-header-menus/app-header-menus.vue'
import AppColumnLink from './components/app-column-link/app-column-link.vue' import AppColumnLink from './components/app-column-link/app-column-link.vue'
import AppDataUploadView from './components/app-data-upload/app-data-upload.vue'
import DropDownListDynamic from './components/dropdown-list-dynamic/dropdown-list-dynamic.vue'
// 全局挂载UI实体服务注册中心 // 全局挂载UI实体服务注册中心
window['uiServiceRegister'] = uiServiceRegister; window['uiServiceRegister'] = uiServiceRegister;
...@@ -135,5 +137,7 @@ export const AppComponents = { ...@@ -135,5 +137,7 @@ export const AppComponents = {
v.component('app-debug-actions', AppDebugActions); v.component('app-debug-actions', AppDebugActions);
v.component('app-header-menus', AppHeaderMenus); v.component('app-header-menus', AppHeaderMenus);
v.component('app-column-link', AppColumnLink); v.component('app-column-link', AppColumnLink);
v.component('app-data-upload', AppDataUploadView);
v.component('dropdown-list-dynamic', DropDownListDynamic);
}, },
}; };
\ No newline at end of file
.app-data-upload-view{
width: 100%;
}
\ No newline at end of file
<template>
<div class="app-data-upload-view">
{{$t('info.viewtitle')}}
</div>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator';
@Component({
i18n: {
messages: {
'zh-CN': {
info: {
"viewtitle":"应用数据导入视图"
}
},
'en-US': {
info: {
"viewtitle":"AppDataUploadView"
}
}
}
}
})
export default class AppDataUploadView extends Vue {
}
</script>
<style lang='less'>
@import './app-data-upload.less';
</style>
\ No newline at end of file
<template> <template>
<div class="app-header-menus"> <div class="app-header-menus">
<div v-for="menu in menus" class="app-header-menu-item text" @click="openWindow(menu)"> <div v-for="(menu,index) in menus" :key="index" class="app-header-menu-item text" @click="openWindow(menu)">
<div class="app-header-menu-item-icon"> <div class="app-header-menu-item-icon">
<i :class="menu.iconcls" :aria-hidden="true" /> <i :class="menu.iconcls" :aria-hidden="true" />
</div> </div>
...@@ -77,7 +77,7 @@ export default class AppHeaderMenus extends Vue { ...@@ -77,7 +77,7 @@ export default class AppHeaderMenus extends Vue {
{ {
name: "ibizstudio", name: "ibizstudio",
title: "menus.ibizstudio.title", title: "menus.ibizstudio.title",
url: `${Environment.StudioUrl}?#/common_slnindex/srfkeys=${Environment.DCId}/sysdesign_psdevslnsysmodeltreeexpview`, url: `${Environment.StudioUrl}?#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview`,
iconcls: 'fa fa-wrench', iconcls: 'fa fa-wrench',
}, },
{ {
......
<template>
<i-select
class='dropdown-list-dynamic'
:transfer="true"
v-model="currentVal"
:disabled="disabled === true ? true : false"
:clearable="true"
:filterable="filterable === true ? true : false"
@on-open-change="onClick"
:placeholder="placeholder ? this.placeholder : $t('placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('userCustom.'+tag+'.'+item.value)!== ('userCustom.'+tag+'.'+item.value))?$t('userCustom.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
</template>
<script lang="ts">
import { Vue, Component, Watch, Prop, Model } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service";
@Component({
i18n: {
messages: {
'zh-CN': {
placeholder: '请选择...'
},
'en-US': {
placeholder: 'please select...'
}
}
}
})
export default class DropDownListDynamic extends Vue {
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof DropDownListDynamic
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 额外参数
*
* @type {*}
* @memberof DropDownListDynamic
*/
public otherParam:any;
/**
* 查询参数
* @type {*}
* @memberof DropDownListDynamic
*/
public queryParam:any;
/**
* 当前选中值
* @type {any}
* @memberof DropDownListDynamic
*/
@Model('change') readonly itemValue!: any;
/**
* 代码表标识
*
* @type {string}
* @memberof DropDownListDynamic
*/
@Prop() public tag?: string;
/**
* 代码表类型
*
* @type {string}
* @memberof DropDownListDynamic
*/
@Prop() public codelistType?: string;
/**
* 传入表单数据
*
* @type {*}
* @memberof DropDownListDynamic
*/
@Prop() public data?: any;
/**
* 监听表单数据
*
* @memberof DropDownListDynamic
*/
@Watch('data',{ deep: true })
onDataChange(newVal: any, val: any){
if(newVal){
this.handleOtherParam();
}
}
/**
* 传入额外参数
*
* @type {*}
* @memberof DropDownListDynamic
*/
@Prop() public itemParam?: any;
/**
* 是否禁用
* @type {any}
* @memberof DropDownListDynamic
*
*/
@Prop() public disabled?: any;
/**
* 是否支持过滤
* @type {boolean}
* @memberof DropDownListDynamic
*/
@Prop() public filterable?: boolean;
/**
* 下拉选提示内容
* @type {string}
* @memberof DropDownListDynamic
*/
@Prop() public placeholder?: string;
/**
* 计算属性(当前值)
* @type {any}
* @memberof DropDownListDynamic
*/
set currentVal(val: any) {
const type: string = this.$util.typeOf(val);
val = Object.is(type, 'null') || Object.is(type, 'undefined') ? undefined : val;
this.$emit('change', val);
}
/**
* 获取值对象
*
* @memberof DropDownListDynamic
*/
get currentVal() {
return this.itemValue;
}
/**
* 代码表
*
* @type {any[]}
* @memberof DropDownListDynamic
*/
public items: any[] = [];
/**
* 处理额外参数
*/
public handleOtherParam(){
if(this.itemParam){
this.queryParam = {};
this.otherParam = this.itemParam.parentdata;
if(this.otherParam && Object.keys(this.otherParam).length >0){
Object.keys(this.otherParam).forEach((item:any) =>{
let value: string | null = this.otherParam[item];
if (value && value.startsWith('%') && value.endsWith('%')) {
const key = value.substring(1, value.length - 1);
if (this.data && this.data.hasOwnProperty(key)) {
value = (this.data[key] !== null && this.data[key] !== undefined) ? this.data[key] : null;
} else {
value = null;
}
}
Object.assign(this.queryParam,{[item]:value});
})
}
}
}
/**
* vue 生命周期
*
* @memberof DropDownListDynamic
*/
public created() {
if(this.tag && Object.is(this.codelistType,"STATIC")){
const codelist = this.$store.getters.getCodeList(this.tag);
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
} else {
console.log(`----${this.tag}----代码表不存在`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
});
}
}
/**
* 下拉点击事件
*
* @param {*} $event
* @memberof DropDownListDynamic
*/
public onClick($event:any){
if($event){
if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
});
}
}
}
}
</script>
<style lang='less'>
@import './dropdown-list-dynamic.less';
</style>
\ No newline at end of file
.dropdown-list{ .dropdown-list{
display: inline-block;
} }
...@@ -8,12 +8,12 @@ ...@@ -8,12 +8,12 @@
:filterable="filterable === true ? true : false" :filterable="filterable === true ? true : false"
@on-open-change="onClick" @on-open-change="onClick"
:placeholder="placeholder ? this.placeholder : $t('placeholder')"> :placeholder="placeholder ? this.placeholder : $t('placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value">{{Object.is(codelistType,'STATIC') ? $t('codelist.'+tag+'.'+item.value) : item.text}}</i-option> <i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select> </i-select>
</template> </template>
<script lang="ts"> <script lang="ts">
import { Vue, Component, Prop, Model } from 'vue-property-decorator'; import { Vue, Component, Watch, Prop, Model } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service"; import CodeListService from "@service/app/codelist-service";
@Component({ @Component({
...@@ -37,6 +37,21 @@ export default class DropDownList extends Vue { ...@@ -37,6 +37,21 @@ export default class DropDownList extends Vue {
*/ */
public codeListService:CodeListService = new CodeListService({ $store: this.$store }); public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 额外参数
*
* @type {*}
* @memberof DropDownList
*/
public otherParam:any;
/**
* 查询参数
* @type {*}
* @memberof DropDownList
*/
public queryParam:any;
/** /**
* 当前选中值 * 当前选中值
* @type {any} * @type {any}
...@@ -56,14 +71,42 @@ export default class DropDownList extends Vue { ...@@ -56,14 +71,42 @@ export default class DropDownList extends Vue {
* 代码表类型 * 代码表类型
* *
* @type {string} * @type {string}
* @memberof AppCheckBox * @memberof DropDownList
*/ */
@Prop() public codelistType?: string; @Prop() public codelistType?: string;
/**
* 传入表单数据
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public data?: any;
/**
* 监听表单数据
*
* @memberof DropDownList
*/
@Watch('data',{ deep: true })
onDataChange(newVal: any, val: any){
if(newVal){
this.handleOtherParam();
}
}
/**
* 传入额外参数
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public itemParam?: any;
/** /**
* 是否禁用 * 是否禁用
* @type {any} * @type {any}
* @memberof SelectPicker * @memberof DropDownList
* *
*/ */
@Prop() public disabled?: any; @Prop() public disabled?: any;
...@@ -71,21 +114,22 @@ export default class DropDownList extends Vue { ...@@ -71,21 +114,22 @@ export default class DropDownList extends Vue {
/** /**
* 是否支持过滤 * 是否支持过滤
* @type {boolean} * @type {boolean}
* @memberof SelectPicker * @memberof DropDownList
*/ */
@Prop() public filterable?: boolean; @Prop() public filterable?: boolean;
/** /**
* 下拉选提示内容 * 下拉选提示内容
* @type {string} * @type {string}
* @memberof SelectPicker * @memberof DropDownList
*/ */
@Prop() public placeholder?: string; @Prop() public placeholder?: string;
/** /**
* 计算属性(当前值) * 计算属性(当前值)
* @type {any} * @type {any}
* @memberof SelectPicker * @memberof DropDownList
*/ */
set currentVal(val: any) { set currentVal(val: any) {
const type: string = this.$util.typeOf(val); const type: string = this.$util.typeOf(val);
...@@ -110,6 +154,30 @@ export default class DropDownList extends Vue { ...@@ -110,6 +154,30 @@ export default class DropDownList extends Vue {
*/ */
public items: any[] = []; public items: any[] = [];
/**
* 处理额外参数
*/
public handleOtherParam(){
if(this.itemParam){
this.queryParam = {};
this.otherParam = this.itemParam.parentdata;
if(this.otherParam && Object.keys(this.otherParam).length >0){
Object.keys(this.otherParam).forEach((item:any) =>{
let value: string | null = this.otherParam[item];
if (value && value.startsWith('%') && value.endsWith('%')) {
const key = value.substring(1, value.length - 1);
if (this.data && this.data.hasOwnProperty(key)) {
value = (this.data[key] !== null && this.data[key] !== undefined) ? this.data[key] : null;
} else {
value = null;
}
}
Object.assign(this.queryParam,{[item]:value});
})
}
}
}
/** /**
* vue 生命周期 * vue 生命周期
* *
...@@ -124,7 +192,7 @@ export default class DropDownList extends Vue { ...@@ -124,7 +192,7 @@ export default class DropDownList extends Vue {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
} }
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ }else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag).then((res:any) => { this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
...@@ -139,12 +207,14 @@ export default class DropDownList extends Vue { ...@@ -139,12 +207,14 @@ export default class DropDownList extends Vue {
* @memberof DropDownList * @memberof DropDownList
*/ */
public onClick($event:any){ public onClick($event:any){
if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ if($event){
this.codeListService.getItems(this.tag).then((res:any) => { if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.items = res; this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => {
}).catch((error:any) => { this.items = res;
console.log(`----${this.tag}----代码表不存在`); }).catch((error:any) => {
}); console.log(`----${this.tag}----代码表不存在`);
});
}
} }
} }
......
...@@ -26,7 +26,7 @@ export const Environment = { ...@@ -26,7 +26,7 @@ export const Environment = {
// 配置平台地址 // 配置平台地址
StudioUrl: "http://172.16.170.145/slnstudio/", StudioUrl: "http://172.16.170.145/slnstudio/",
// 中心标识 // 中心标识
DCId: "B4BF5C84-D020-4D9A-A986-8FA4FD72816C", SlnId: "B4BF5C84-D020-4D9A-A986-8FA4FD72816C",
// 系统标识 // 系统标识
SysId: "B428B5BE-EA90-4101-A493-BA7085D89F0A", SysId: "B428B5BE-EA90-4101-A493-BA7085D89F0A",
// 前端应用标识 // 前端应用标识
......
...@@ -1344,7 +1344,11 @@ export default class IBZDictGridViewBase extends Vue { ...@@ -1344,7 +1344,11 @@ export default class IBZDictGridViewBase extends Vue {
* @memberof IBZDictGridViewBase * @memberof IBZDictGridViewBase
*/ */
protected Import(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { protected Import(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) {
this.$Notice.error({ title: '错误', desc: '数据导入未支持' }); const _this: any = this;
if (!xData || !(xData.importExcel instanceof Function) || !$event) {
return ;
}
xData.importExcel(params);
} }
/** /**
* 过滤 * 过滤
......
...@@ -1354,7 +1354,11 @@ export default class IBZDictItemGridViewBase extends Vue { ...@@ -1354,7 +1354,11 @@ export default class IBZDictItemGridViewBase extends Vue {
* @memberof IBZDictItemGridViewBase * @memberof IBZDictItemGridViewBase
*/ */
protected Import(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { protected Import(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) {
this.$Notice.error({ title: '错误', desc: '数据导入未支持' }); const _this: any = this;
if (!xData || !(xData.importExcel instanceof Function) || !$event) {
return ;
}
xData.importExcel(params);
} }
/** /**
* 过滤 * 过滤
......
...@@ -43,23 +43,31 @@ export default class CodeListService { ...@@ -43,23 +43,31 @@ export default class CodeListService {
public getItems(tag: string,context:any = {}, data?: any, isloading?: boolean,): Promise<any[]> { public getItems(tag: string,context:any = {}, data?: any, isloading?: boolean,): Promise<any[]> {
let _this: any = this; let _this: any = this;
return new Promise((resolve:any,reject:any) =>{ return new Promise((resolve:any,reject:any) =>{
if(this.$store && _this.$store.getters){ if(!data){
let items:any = _this.$store.getters.getCodeListItems(tag); if(this.$store && _this.$store.getters){
if(items.length >0){ let items:any = _this.$store.getters.getCodeListItems(tag);
return resolve(items); if(items.length >0){
} return resolve(items);
}
if (_this[tag]) {
_this[tag].getItems(context,data,isloading).then((result:any) =>{
if(result.length > 0){
_this.$store.commit('updateCodeList',{srfkey:tag,items:result});
return resolve(result);
}else{
return resolve([]);
} }
}).catch((result:any) =>{ }
return reject(result); if (_this[tag]) {
}) _this[tag].getItems(context,data,isloading).then((result:any) =>{
if(result.length > 0){
_this.$store.commit('updateCodeList',{srfkey:tag,items:result});
return resolve(result);
}else{
return resolve([]);
}
}).catch((result:any) =>{
return reject(result);
})
}
}else{
if (_this[tag]) {
return _this[tag].getItems(context,data,isloading);
}
return Promise.reject([]);
} }
}) })
} }
......
...@@ -119,8 +119,8 @@ export class StudioActionUtil { ...@@ -119,8 +119,8 @@ export class StudioActionUtil {
}, '*'); }, '*');
Vue.prototype.$message.warning('请在已打开的配置平台查看!'); Vue.prototype.$message.warning('请在已打开的配置平台查看!');
} else { } else {
console.log(`${Environment.StudioUrl}?ov=${JSON.stringify(params)}#/common_slnindex/srfkeys=${Environment.DCId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`); console.log(`${Environment.StudioUrl}?ov=${JSON.stringify(params)}#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`);
this.studioWin = window.open(`${Environment.StudioUrl}?ov=${encodeURIComponent(JSON.stringify(params))}#/common_slnindex/srfkeys=${Environment.DCId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`, '_blank'); this.studioWin = window.open(`${Environment.StudioUrl}?ov=${encodeURIComponent(JSON.stringify(params))}#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`, '_blank');
} }
} }
} }
......
...@@ -806,6 +806,35 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -806,6 +806,35 @@ export default class MainBase extends Vue implements ControlInterface {
console.error("批量添加未实现"); console.error("批量添加未实现");
} }
/**
* 数据导入
*
* @param {*} data
* @memberof Main
*/
public importExcel(data:any ={}):void{
//导入excel
const importDataModel:any ={
}
if(Object.keys(importDataModel).length == 0){
this.$Notice.warning({ title: '警告', desc: '请配置数据导入项' });
return;
}
const view:any ={
viewname: 'app-data-upload',
title: '导入数据',
width: 900,
height: 700
}
let container: Subject<any> = this.$appmodal.openModal(view, JSON.parse(JSON.stringify(this.context)), importDataModel);
container.subscribe((result: any) => {
if(Object.is(result.ret,'OK')){
console.log(result);
}
});
}
/** /**
* 数据导出 * 数据导出
* *
...@@ -818,7 +847,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -818,7 +847,7 @@ export default class MainBase extends Vue implements ControlInterface {
const tHeader: Array<any> = []; const tHeader: Array<any> = [];
const filterVal: Array<any> = []; const filterVal: Array<any> = [];
this.allColumns.forEach((item: any) => { this.allColumns.forEach((item: any) => {
item.show && item.label ? tHeader.push(item.label) : ""; item.show && item.label ? tHeader.push(this.$t(item.langtag)) : "";
item.show && item.name ? filterVal.push(item.name) : ""; item.show && item.name ? filterVal.push(item.name) : "";
}); });
const data = await this.formatExcelData(filterVal, _data); const data = await this.formatExcelData(filterVal, _data);
...@@ -826,7 +855,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -826,7 +855,7 @@ export default class MainBase extends Vue implements ControlInterface {
excel.export_json_to_excel({ excel.export_json_to_excel({
header: tHeader, //表头 必填 header: tHeader, //表头 必填
data, //具体数据 必填 data, //具体数据 必填
filename: "主实体"+"表", //非必填 filename: "字典项目表", //非必填
autoWidth: true, //非必填 autoWidth: true, //非必填
bookType: "xlsx" //非必填 bookType: "xlsx" //非必填
}); });
...@@ -835,7 +864,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -835,7 +864,7 @@ export default class MainBase extends Vue implements ControlInterface {
const page: any = {}; const page: any = {};
// 设置page,size // 设置page,size
if (Object.is(data.type, 'maxRowCount')) { if (Object.is(data.type, 'maxRowCount')) {
Object.assign(page, { page: 0, size: data.maxRowCount }); Object.assign(page, { page: 0, size: data.maxRowCount });
} else if (Object.is(data.type, 'activatedPage')) { } else if (Object.is(data.type, 'activatedPage')) {
try { try {
doExport(JSON.parse(JSON.stringify(this.items))); doExport(JSON.parse(JSON.stringify(this.items)));
......
...@@ -6,6 +6,14 @@ ...@@ -6,6 +6,14 @@
*/ */
export default class MainModel { export default class MainModel {
/**
* 是否是实体数据导出
*
* @returns {any[]}
* @memberof MainGridMode
*/
public isDEExport: boolean = false;
/** /**
* 获取数据项集合 * 获取数据项集合
* *
...@@ -13,72 +21,75 @@ export default class MainModel { ...@@ -13,72 +21,75 @@ export default class MainModel {
* @memberof MainGridMode * @memberof MainGridMode
*/ */
public getDataItems(): any[] { public getDataItems(): any[] {
return [ if(this.isDEExport){
{ return [
name: 'dictitemval', ]
prop: 'itemval', }else{
dataType: 'TEXT', return [
}, {
{ name: 'dictitemval',
name: 'dictid', prop: 'itemval',
prop: 'dictid', dataType: 'TEXT',
dataType: 'PICKUP', },
}, {
{ name: 'dictid',
name: 'showorder', prop: 'dictid',
prop: 'showorder', dataType: 'PICKUP',
dataType: 'INT', },
}, {
{ name: 'showorder',
name: 'pitemval', prop: 'showorder',
prop: 'pitemval', dataType: 'INT',
dataType: 'TEXT', },
}, {
{ name: 'pitemval',
name: 'updatedate', prop: 'pitemval',
prop: 'updatedate', dataType: 'TEXT',
dataType: 'DATETIME', },
}, {
{ name: 'updatedate',
name: 'itemicon', prop: 'updatedate',
prop: 'itemicon', dataType: 'DATETIME',
dataType: 'TEXT', },
}, {
{ name: 'itemicon',
name: 'itemfilter', prop: 'itemicon',
prop: 'itemfilter', dataType: 'TEXT',
dataType: 'TEXT', },
}, {
{ name: 'itemfilter',
name: 'ibzdictitemname', prop: 'itemfilter',
prop: 'itemname', dataType: 'TEXT',
dataType: 'TEXT', },
}, {
{ name: 'ibzdictitemname',
name: 'srfmajortext', prop: 'itemname',
prop: 'itemname', dataType: 'TEXT',
dataType: 'TEXT', },
}, {
{ name: 'srfmajortext',
name: 'srfdataaccaction', prop: 'itemname',
prop: 'itemid', dataType: 'TEXT',
dataType: 'GUID', },
}, {
{ name: 'srfdataaccaction',
name: 'srfkey', prop: 'itemid',
prop: 'itemid', dataType: 'GUID',
dataType: 'GUID', },
}, {
{ name: 'srfkey',
name: 'itemcls', prop: 'itemid',
prop: 'itemcls', dataType: 'GUID',
dataType: 'TEXT', },
}, {
{ name: 'itemcls',
name: 'ibzdictitem', prop: 'itemcls',
prop: 'itemid', dataType: 'TEXT',
}, },
{
name: 'ibzdictitem',
prop: 'itemid',
},
{ {
name: 'n_ibzdictitemname_like', name: 'n_ibzdictitemname_like',
prop: 'n_ibzdictitemname_like', prop: 'n_ibzdictitemname_like',
...@@ -90,27 +101,28 @@ export default class MainModel { ...@@ -90,27 +101,28 @@ export default class MainModel {
dataType: 'TEXT', dataType: 'TEXT',
}, },
{ {
name:'size', name:'size',
prop:'size' prop:'size'
}, },
{ {
name:'query', name:'query',
prop:'query' prop:'query'
}, },
{ {
name:'page', name:'page',
prop:'page' prop:'page'
}, },
{ {
name:'sort', name:'sort',
prop:'sort' prop:'sort'
}, },
{ {
name:'srfparentdata', name:'srfparentdata',
prop:'srfparentdata' prop:'srfparentdata'
} }
] ]
} }
}
} }
\ No newline at end of file
...@@ -175,7 +175,7 @@ export default class MainService extends ControlService { ...@@ -175,7 +175,7 @@ export default class MainService extends ControlService {
} }
/** /**
* 查询数据 * 获取数据
* *
* @param {string} action * @param {string} action
* @param {*} [context={}] * @param {*} [context={}]
...@@ -237,6 +237,7 @@ export default class MainService extends ControlService { ...@@ -237,6 +237,7 @@ export default class MainService extends ControlService {
}); });
} }
/** /**
* 加载草稿 * 加载草稿
* *
......
...@@ -736,6 +736,35 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -736,6 +736,35 @@ export default class MainBase extends Vue implements ControlInterface {
console.error("批量添加未实现"); console.error("批量添加未实现");
} }
/**
* 数据导入
*
* @param {*} data
* @memberof Main
*/
public importExcel(data:any ={}):void{
//导入excel
const importDataModel:any ={
}
if(Object.keys(importDataModel).length == 0){
this.$Notice.warning({ title: '警告', desc: '请配置数据导入项' });
return;
}
const view:any ={
viewname: 'app-data-upload',
title: '导入数据',
width: 900,
height: 700
}
let container: Subject<any> = this.$appmodal.openModal(view, JSON.parse(JSON.stringify(this.context)), importDataModel);
container.subscribe((result: any) => {
if(Object.is(result.ret,'OK')){
console.log(result);
}
});
}
/** /**
* 数据导出 * 数据导出
* *
...@@ -748,7 +777,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -748,7 +777,7 @@ export default class MainBase extends Vue implements ControlInterface {
const tHeader: Array<any> = []; const tHeader: Array<any> = [];
const filterVal: Array<any> = []; const filterVal: Array<any> = [];
this.allColumns.forEach((item: any) => { this.allColumns.forEach((item: any) => {
item.show && item.label ? tHeader.push(item.label) : ""; item.show && item.label ? tHeader.push(this.$t(item.langtag)) : "";
item.show && item.name ? filterVal.push(item.name) : ""; item.show && item.name ? filterVal.push(item.name) : "";
}); });
const data = await this.formatExcelData(filterVal, _data); const data = await this.formatExcelData(filterVal, _data);
...@@ -756,7 +785,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -756,7 +785,7 @@ export default class MainBase extends Vue implements ControlInterface {
excel.export_json_to_excel({ excel.export_json_to_excel({
header: tHeader, //表头 必填 header: tHeader, //表头 必填
data, //具体数据 必填 data, //具体数据 必填
filename: "主实体"+"表", //非必填 filename: "数据字典表", //非必填
autoWidth: true, //非必填 autoWidth: true, //非必填
bookType: "xlsx" //非必填 bookType: "xlsx" //非必填
}); });
...@@ -765,7 +794,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -765,7 +794,7 @@ export default class MainBase extends Vue implements ControlInterface {
const page: any = {}; const page: any = {};
// 设置page,size // 设置page,size
if (Object.is(data.type, 'maxRowCount')) { if (Object.is(data.type, 'maxRowCount')) {
Object.assign(page, { page: 0, size: data.maxRowCount }); Object.assign(page, { page: 0, size: data.maxRowCount });
} else if (Object.is(data.type, 'activatedPage')) { } else if (Object.is(data.type, 'activatedPage')) {
try { try {
doExport(JSON.parse(JSON.stringify(this.items))); doExport(JSON.parse(JSON.stringify(this.items)));
......
...@@ -6,6 +6,14 @@ ...@@ -6,6 +6,14 @@
*/ */
export default class MainModel { export default class MainModel {
/**
* 是否是实体数据导出
*
* @returns {any[]}
* @memberof MainGridMode
*/
public isDEExport: boolean = false;
/** /**
* 获取数据项集合 * 获取数据项集合
* *
...@@ -13,42 +21,45 @@ export default class MainModel { ...@@ -13,42 +21,45 @@ export default class MainModel {
* @memberof MainGridMode * @memberof MainGridMode
*/ */
public getDataItems(): any[] { public getDataItems(): any[] {
return [ if(this.isDEExport){
{ return [
name: 'ibzdictname', ]
prop: 'dictname', }else{
dataType: 'TEXT', return [
}, {
{ name: 'ibzdictname',
name: 'updatedate', prop: 'dictname',
prop: 'updatedate', dataType: 'TEXT',
dataType: 'DATETIME', },
}, {
{ name: 'updatedate',
name: 'srfmajortext', prop: 'updatedate',
prop: 'dictname', dataType: 'DATETIME',
dataType: 'TEXT', },
}, {
{ name: 'srfmajortext',
name: 'srfdataaccaction', prop: 'dictname',
prop: 'dictid', dataType: 'TEXT',
dataType: 'GUID', },
}, {
{ name: 'srfdataaccaction',
name: 'srfkey', prop: 'dictid',
prop: 'dictid', dataType: 'GUID',
dataType: 'GUID', },
}, {
{ name: 'srfkey',
name: 'ibzdictid', prop: 'dictid',
prop: 'dictid', dataType: 'GUID',
dataType: 'GUID', },
}, {
{ name: 'ibzdictid',
name: 'ibzdict', prop: 'dictid',
prop: 'dictid', dataType: 'GUID',
}, },
{
name: 'ibzdict',
prop: 'dictid',
},
{ {
name: 'n_ibzdictid_like', name: 'n_ibzdictid_like',
prop: 'n_ibzdictid_like', prop: 'n_ibzdictid_like',
...@@ -65,27 +76,28 @@ export default class MainModel { ...@@ -65,27 +76,28 @@ export default class MainModel {
dataType: 'FONTKEY', dataType: 'FONTKEY',
}, },
{ {
name:'size', name:'size',
prop:'size' prop:'size'
}, },
{ {
name:'query', name:'query',
prop:'query' prop:'query'
}, },
{ {
name:'page', name:'page',
prop:'page' prop:'page'
}, },
{ {
name:'sort', name:'sort',
prop:'sort' prop:'sort'
}, },
{ {
name:'srfparentdata', name:'srfparentdata',
prop:'srfparentdata' prop:'srfparentdata'
} }
] ]
} }
}
} }
\ No newline at end of file
...@@ -175,7 +175,7 @@ export default class MainService extends ControlService { ...@@ -175,7 +175,7 @@ export default class MainService extends ControlService {
} }
/** /**
* 查询数据 * 获取数据
* *
* @param {string} action * @param {string} action
* @param {*} [context={}] * @param {*} [context={}]
...@@ -237,6 +237,7 @@ export default class MainService extends ControlService { ...@@ -237,6 +237,7 @@ export default class MainService extends ControlService {
}); });
} }
/** /**
* 加载草稿 * 加载草稿
* *
......
package cn.ibizlab.core.dict.domain; !!!!模版产生代码错误:----
Tip: It's the step after the last dot that caused this error, not those before it.
import java.sql.Timestamp; ----
import java.util.ArrayList; Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
import java.util.List; ----
import java.util.Map;
import java.math.BigInteger; ----
import java.util.HashMap; FTL stack trace ("~" means nesting-related):
import java.math.BigDecimal; - Failed at: #if defield.getDefaultValueType()?? &... [in template "CODETEMPL_zh_CN" at line 48, column 9]
import com.alibaba.fastjson.annotation.JSONField; ----
import com.fasterxml.jackson.annotation.JsonIgnore; \ No newline at end of file
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.ibizlab.util.domain.EntityBase;
import cn.ibizlab.util.annotation.DEField;
import cn.ibizlab.util.annotation.DEPredefinedField;
import cn.ibizlab.util.enums.DEPredefinedFieldFillMode;
import cn.ibizlab.util.enums.DEPredefinedFieldType;
import java.io.Serializable;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
/**
* 实体[数据字典]
*/
@Data
@TableName(value = "IBZDICT",resultMap = "IBZDictResultMap")
public class IBZDict extends EntityBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字典标识
*/
@TableId(value= "ibzdictid",type=IdType.UUID)
@DEField(isKeyField=true)
private String dictId;
/**
* 字典名称
*/
private String dictName;
/**
* 逻辑有效标志
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT,preType = DEPredefinedFieldType.LOGICVALID,validLogicValue="1")
@TableLogic(value= "1",delval="0")
private Integer enable;
/**
* 建立时间
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT,preType = DEPredefinedFieldType.CREATEDATE)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
private Timestamp createDate;
/**
* 更新时间
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT_UPDATE,preType = DEPredefinedFieldType.UPDATEDATE)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
private Timestamp updateDate;
/**
* 建立人
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT,preType = DEPredefinedFieldType.CREATEMAN)
private String createMan;
/**
* 更新人
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT_UPDATE,preType = DEPredefinedFieldType.UPDATEMAN)
private String updateMan;
/**
* 设置 [字典标识]
*/
@JsonProperty("dictid")
@JSONField(name="dictid")
public void setDictId(String dictId){
this.dictId = dictId ;
if(dictId==null){
this.addFocusNull("ibzdictid");
}
}
/**
* 设置 [字典名称]
*/
@JsonProperty("dictname")
@JSONField(name="dictname")
public void setDictName(String dictName){
this.dictName = dictName ;
if(dictName==null){
this.addFocusNull("ibzdictname");
}
}
/**
* 设置 [逻辑有效标志]
*/
@JsonProperty("enable")
@JSONField(name="enable")
public void setEnable(Integer enable){
this.enable = enable ;
if(enable==null){
this.addFocusNull("enable");
}
}
/**
* 设置 [建立时间]
*/
@JsonProperty("createdate")
@JSONField(name="createdate")
public void setCreateDate(Timestamp createDate){
this.createDate = createDate ;
if(createDate==null){
this.addFocusNull("createdate");
}
}
/**
* 设置 [更新时间]
*/
@JsonProperty("updatedate")
@JSONField(name="updatedate")
public void setUpdateDate(Timestamp updateDate){
this.updateDate = updateDate ;
if(updateDate==null){
this.addFocusNull("updatedate");
}
}
/**
* 设置 [建立人]
*/
@JsonProperty("createman")
@JSONField(name="createman")
public void setCreateMan(String createMan){
this.createMan = createMan ;
if(createMan==null){
this.addFocusNull("createman");
}
}
/**
* 设置 [更新人]
*/
@JsonProperty("updateman")
@JSONField(name="updateman")
public void setUpdateMan(String updateMan){
this.updateMan = updateMan ;
if(updateMan==null){
this.addFocusNull("updateman");
}
}
}
package cn.ibizlab.core.dict.domain; !!!!模版产生代码错误:----
Tip: It's the step after the last dot that caused this error, not those before it.
import java.sql.Timestamp; ----
import java.util.ArrayList; Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
import java.util.List; ----
import java.util.Map;
import java.math.BigInteger; ----
import java.util.HashMap; FTL stack trace ("~" means nesting-related):
import java.math.BigDecimal; - Failed at: #if defield.getDefaultValueType()?? &... [in template "CODETEMPL_zh_CN" at line 48, column 9]
import com.alibaba.fastjson.annotation.JSONField; ----
import com.fasterxml.jackson.annotation.JsonIgnore; \ No newline at end of file
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.ibizlab.util.domain.EntityBase;
import cn.ibizlab.util.annotation.DEField;
import cn.ibizlab.util.annotation.DEPredefinedField;
import cn.ibizlab.util.enums.DEPredefinedFieldFillMode;
import cn.ibizlab.util.enums.DEPredefinedFieldType;
import java.io.Serializable;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
/**
* 实体[字典项目]
*/
@Data
@TableName(value = "IBZDICTITEM",resultMap = "IBZDictItemResultMap")
public class IBZDictItem extends EntityBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字典项目标识
*/
@TableId(value= "ibzdictitemid",type=IdType.UUID)
@DEField(isKeyField=true)
private String itemId;
/**
* 栏目显示值
*/
private String itemName;
/**
* 栏目值
*/
private String itemVal;
/**
* 字典标识
*/
private String dictId;
/**
* 父栏目值
*/
private String pItemVal;
/**
* 过滤项
*/
private String itemFilter;
/**
* 栏目样式
*/
private String itemCls;
/**
* 图标
*/
private String itemIcon;
/**
* 排序
*/
private Integer showOrder;
/**
* 建立时间
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT,preType = DEPredefinedFieldType.CREATEDATE)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
private Timestamp createDate;
/**
* 更新时间
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT_UPDATE,preType = DEPredefinedFieldType.UPDATEDATE)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
private Timestamp updateDate;
/**
* 建立人
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT,preType = DEPredefinedFieldType.CREATEMAN)
private String createMan;
/**
* 更新人
*/
@DEPredefinedField(fill= DEPredefinedFieldFillMode.INSERT_UPDATE,preType = DEPredefinedFieldType.UPDATEMAN)
private String updateMan;
@JsonIgnore
@JSONField(serialize = false)
@TableField(exist = false)
private IBZDict dict;
/**
* 设置 [字典项目标识]
*/
@JsonProperty("itemid")
@JSONField(name="itemid")
public void setItemId(String itemId){
this.itemId = itemId ;
if(itemId==null){
this.addFocusNull("ibzdictitemid");
}
}
/**
* 设置 [栏目显示值]
*/
@JsonProperty("itemname")
@JSONField(name="itemname")
public void setItemName(String itemName){
this.itemName = itemName ;
if(itemName==null){
this.addFocusNull("ibzdictitemname");
}
}
/**
* 设置 [栏目值]
*/
@JsonProperty("itemval")
@JSONField(name="itemval")
public void setItemVal(String itemVal){
this.itemVal = itemVal ;
if(itemVal==null){
this.addFocusNull("dictitemval");
}
}
/**
* 设置 [字典标识]
*/
@JsonProperty("dictid")
@JSONField(name="dictid")
public void setDictId(String dictId){
this.dictId = dictId ;
if(dictId==null){
this.addFocusNull("dictid");
}
}
/**
* 设置 [父栏目值]
*/
@JsonProperty("pitemval")
@JSONField(name="pitemval")
public void setPItemVal(String pItemVal){
this.pItemVal = pItemVal ;
if(pItemVal==null){
this.addFocusNull("pitemval");
}
}
/**
* 设置 [过滤项]
*/
@JsonProperty("itemfilter")
@JSONField(name="itemfilter")
public void setItemFilter(String itemFilter){
this.itemFilter = itemFilter ;
if(itemFilter==null){
this.addFocusNull("itemfilter");
}
}
/**
* 设置 [栏目样式]
*/
@JsonProperty("itemcls")
@JSONField(name="itemcls")
public void setItemCls(String itemCls){
this.itemCls = itemCls ;
if(itemCls==null){
this.addFocusNull("itemcls");
}
}
/**
* 设置 [图标]
*/
@JsonProperty("itemicon")
@JSONField(name="itemicon")
public void setItemIcon(String itemIcon){
this.itemIcon = itemIcon ;
if(itemIcon==null){
this.addFocusNull("itemicon");
}
}
/**
* 设置 [排序]
*/
@JsonProperty("showorder")
@JSONField(name="showorder")
public void setShowOrder(Integer showOrder){
this.showOrder = showOrder ;
if(showOrder==null){
this.addFocusNull("showorder");
}
}
/**
* 设置 [建立时间]
*/
@JsonProperty("createdate")
@JSONField(name="createdate")
public void setCreateDate(Timestamp createDate){
this.createDate = createDate ;
if(createDate==null){
this.addFocusNull("createdate");
}
}
/**
* 设置 [更新时间]
*/
@JsonProperty("updatedate")
@JSONField(name="updatedate")
public void setUpdateDate(Timestamp updateDate){
this.updateDate = updateDate ;
if(updateDate==null){
this.addFocusNull("updatedate");
}
}
/**
* 设置 [建立人]
*/
@JsonProperty("createman")
@JSONField(name="createman")
public void setCreateMan(String createMan){
this.createMan = createMan ;
if(createMan==null){
this.addFocusNull("createman");
}
}
/**
* 设置 [更新人]
*/
@JsonProperty("updateman")
@JSONField(name="updateman")
public void setUpdateMan(String updateMan){
this.updateMan = updateMan ;
if(updateMan==null){
this.addFocusNull("updateman");
}
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册