提交 9ecefdab 编写于 作者: ibizdev's avatar ibizdev

tony001 发布系统代码 [后台服务,演示应用]

上级 97f7c7aa
......@@ -101,6 +101,9 @@ import AppImageRomate from './components/app-image-romate/app-image-romate.vue'
import { MenuIcon } from './components/menu-icon/menu-icon'
import AppVuePivottable from './components/app-vue-pivottable/app-vue-pivottable.vue';
import AppMapPosition from './components/app-map-position/app-map-position.vue';
import AppSortBar from './components/app-sort-bar/app-sort-bar.vue';
import AppAfterTime from './components/app-after-time/app-after-time.vue';
import AppInputIp from './components/app-input-ip/app-input-ip.vue';
// 全局挂载UI实体服务注册中心
window['uiServiceRegister'] = uiServiceRegister;
......@@ -217,5 +220,8 @@ export const AppComponents = {
v.component('menu-icon', MenuIcon);
v.component('app-vue-pivottable', AppVuePivottable);
v.component('app-map-position', AppMapPosition);
v.component('app-sort-bar', AppSortBar);
v.component('app-after-time', AppAfterTime);
v.component('app-input-ip', AppInputIp);
},
};
\ No newline at end of file
<template>
<div class="app-after-time">
<span v-if="diffTime =='minutes'">{{curvalue}}{{$t('components.appAfterTime.minutesAgo')}}</span>
<span v-if="diffTime =='hours'">{{curvalue}}{{$t('components.appAfterTime.hoursAgo')}}</span>
<span v-if="diffTime =='days'">{{curvalue}}{{$t('components.appAfterTime.dayAgo')}}</span>
<span v-if="diffTime =='mouth'">{{curvalue}}{{$t('components.appAfterTime.monthsAgo')}}</span>
<span v-if="diffTime =='years'">{{curvalue}}{{$t('components.appAfterTime.yearsAgo')}}</span>
<span v-if="!diffTime">&nbsp;</span>
</div>
</template>
<script lang="ts">
import { Vue, Component, Prop, Emit, Watch, Model } from 'vue-property-decorator';
import { Subject, Subscription } from 'rxjs';
@Component({})
export default class AppAfterTime extends Vue {
/**
* 属性项名称
*
* @type {string}
* @memberof AppAfterTime
*/
@Prop() public name!: string;
/**
* 应用上下文
*
* @type {any}
* @memberof AppAfterTime
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {any}
* @memberof AppAfterTime
*/
@Prop() viewparam: any;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppAfterTime
*/
@Prop() public formState?:Subject<any>;
/**
* 表单绑定数据
*
* @type {any}
* @memberof AppAfterTime
*/
@Model('change') public value:any;
/**
* 当前值
*
* @type {any}
* @memberof AppAfterTime
*/
public curvalue: string = '';
/**
* 毫秒差
*
* @type {any}
* @memberof AppAfterTime
*/
public diffTime:any='';
/**
* 值变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppAfterTime
*/
@Watch('value')
public onValueChange(newVal: any, oldVal: any) {
this.transTime();
}
/**
* Vue声明周期(处理组件的输入属性)
*
* @memberof AppAfterTime
*/
public created(){
if(this.formState){
this.formState.subscribe(({type,data})=>{
if(Object.is('load',type)){
this.transTime();
}
})
}
this.transTime();
}
/**
* 处理时间
*
* @memberof AppAfterTime
*/
public transTime(){
if(this.value){
let oldTime = new Date(this.value).getTime();
let nowTime = new Date().getTime();
let diffTime = nowTime - oldTime;
if(diffTime < 3600000){
this.curvalue = Math.ceil(diffTime/60000)+'';
this.diffTime = 'minutes';
}else if(diffTime < 86400000){
this.curvalue = Math.ceil(diffTime/3600000)+'';
this.diffTime = 'hours';
}else if(diffTime < 2592000000){
this.curvalue = Math.floor(diffTime/86400000)+'';
this.diffTime = 'days';
}else if(diffTime < 31104000000){
this.curvalue = Math.floor(diffTime/2592000000)+'';
this.diffTime = 'mounth';
}else{
this.curvalue = Math.floor(diffTime/31104000000)+'';
this.diffTime = 'years';
}
}
}
}
</script>
<style>
.app-after-time{
margin-left: 6px;
}
</style>
\ No newline at end of file
input{
border-radius: 4px;
border:1px solid #888;
padding: 2px 10px;
width: 20%;
}
<template>
<div class="app-inpu-ip">
<input
type="text"
v-model="firstIp"
maxlength="3" />.
<input
type="text"
v-model="secIp"
maxlength="3" />.
<input
type="text"
maxlength="3"
v-model="thirdIp" />.
<input
type="text"
maxlength="3"
v-model="forIp" />
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from 'vue-property-decorator';
import { Subject,Subscription } from 'rxjs';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
@Component({
})
export default class AppInputIp extends Vue {
/**
* 应用上下文
*
* @type {any}
* @memberof AppInputIp
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {any}
* @memberof AppInputIp
*/
@Prop() viewparam: any;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppInputIp
*/
@Prop() public formState!: Subject<any>;
/**表单数据绑定
*
* @type {string}
* @memberof AppInputIp
*/
@Model('change') public ipdata!: string;
/**
* 获取当前值
*
* @type {string}
* @memberof AppInputIp
*/
public CurValue: any[] = [];
/**
* 第一段ip
*
* @type {any}
* @memberof AppInputIp
*/
public firstIp: any = '';
/**
* 第二段ip
*
* @type {any}
* @memberof AppInputIp
*/
public secIp: any = '';
/**
* 第三段ip
*
* @type {any}
*/
public thirdIp: any = '';
/**
* 第四段ip
*
* @type {any}
* @memberof AppInputIp
*/
public forIp: any = '';
/**
* Vue声明周期(处理组件的输入属性)
*
* @memberof AppInputIp
*/
public created(){
if(this.formState){
this.formState.subscribe(({type,data})=>{
if(Object.is('load',type)){
this.loadData();
}
})
}
this.loadData();
}
/**
* 加载数据
*
* @memberof AppInputIp
*/
public loadData(){
if(this.ipdata){
let iparr:Array<any> = this.ipdata.split('.');
this.CurValue = iparr;
this.firstIp = this.CurValue[0];
this.secIp = this.CurValue[1];
this.thirdIp = this.CurValue[2];
this.forIp = this.CurValue[3];
}
}
/**
* 监听每段ip变化
*
* @memberof AppInputIp
*/
@Watch('firstIp')
public FirstIpChange(newVal:any,oldVal:any){
this.checkIpVal(newVal,oldVal,'firstIp',0);
}
@Watch('secIp')
public SecIpChange(newVal:any,oldVal:any){
this.checkIpVal(newVal,oldVal,'secIp',1);
}
@Watch('thirdIp')
public ThirdIpChange(newVal:any,oldVal:any){
this.checkIpVal(newVal,oldVal,'thirdIp',2);
}
@Watch('forIp')
public ForIpChange(newVal:any,oldVal:any){
this.checkIpVal(newVal,oldVal,'forIp',3);
}
/**
* 验证格式
*
* @memberof AppInputIp
*/
public checkIpVal(newVal:any,oldVal:any,flag:any,index:number){
if(newVal === '') return
let val = newVal;
let reg = /^(([0-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))))$/g;
if(reg.test(val)){
this.CurValue[index] = val;
}else{
if(flag){
let that:any = this;
that[flag] = oldVal;
this.CurValue[index] = oldVal;
}
}
if(this.firstIp && this.secIp && this.thirdIp && this.forIp){
this.$emit('change',this.firstIp+'.'+this.secIp+'.'+this.thirdIp+'.'+this.forIp);
}
}
}
</script>
<style lang='less'>
@import './app-input-ip.less';
</style>
.app-sort-bar{
padding: 6px 8px;
.ivu-row-flex.page-sort-bar{
width: 100%;
height: 30px;
position: relative;
.ivu-col{
border-radius: 2px;
user-select: none;
text-align: center;
margin: 0px 16px;
display: flex;
align-items: flex-end;
padding-bottom: 4px;
background-color: #FFF;
border: 1px solid #CCC;
margin-left: -1px;
.sort-field-text{
margin-left: 7px;
}
.caret-wrapper{
width: 15px;
display: inline-block;
position: relative;
top: 4px;
padding-bottom: 2px;
.ivu-icon{
display: block;
line-height: 0.5;
color: #c5c8ce;
}
}
}
// 悬浮样式
.ivu-col:hover{
border:1px solid #82bff7;
position:relative;
z-index:2;
.sort-field-text{
color: #82bff7;
}
}
// 选中样式
.sort-ascending, .sort-descending{
border:1px solid #82bff7;
position:relative;
z-index:2;
.sort-field-text{
color:#82bff7;
font-weight: 800;
}
}
.sort-ascending .caret-wrapper .ivu-icon.ivu-icon-md-arrow-dropup,
.sort-descending .caret-wrapper .ivu-icon.ivu-icon-md-arrow-dropdown{
color: #82bff7;
}
.issort {
position: absolute;
cursor: pointer;
top: 4px;
right: 10px;
}
}
}
.open-bar {
background-color: #EEF2F5;
}
\ No newline at end of file
<template>
<div :class="['app-sort-bar', isSort ? 'open-bar' : '']">
<row v-if="sortModel && sortModel.length>0" class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;">
<template v-for="(item, index) in sortModel">
<i-col v-show="isSort" :key="index" :class="getSortClass(item)">
<div @click="sortItemClick(item)">
<span class="sort-field-text" >{{$t('entities.'+ entityName +'.fields.' + item)}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</div>
</i-col>
</template>
<div class="issort" @click="handleSort">
<Icon v-if="isSort" type="ios-funnel-outline" />
<Icon v-else type="ios-funnel" />
{{ $t('components.appSortBar.title') }}
</div>
</row>
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
@Component({})
export default class AppSortBar extends Vue {
@Prop() public sortModel!: any[];
@Prop() public sortField!: any;
@Prop() public sortDir!: any;
@Prop() public entityName!: string;
public isSort: boolean = false;
public getSortClass(name: any) {
if(this.sortField !== name || this.sortDir === ''){
return '';
}else if(this.sortDir === 'asc'){
return 'sort-ascending'
}else if(this.sortDir === 'desc'){
return 'sort-descending'
}
}
public sortItemClick(name: string) {
console.log(name);
this.$emit('clickSort', name);
}
public handleSort() {
this.isSort = !this.isSort;
}
}
</script>
<style lang="less">
@import './app-sort-bar.less';
</style>
\ No newline at end of file
......@@ -4,12 +4,12 @@
<template v-if="!ifEmpty">
<template v-for="(item, index) in items">
<div class="codelist-item" :key="index">
<span v-if="index != 0">{{ textSeparator }}</span>
<i v-if="item.iconcls" :class="item.iconcls"></i>
<img v-if="item.icon" :src="getIcon(item.icon)" />
<span :class="item.class" :style="{ color: item.color }">
{{ isUseLangres ? $t(item.text) : item.text }}
</span>
<span v-if="index != items.length-1">{{ textSeparator }}</span>
</div>
</template>
</template>
......@@ -338,6 +338,7 @@ export default class CodeList extends Vue {
<style lang='less'>
.codelist {
display: flex;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
......@@ -346,6 +347,7 @@ export default class CodeList extends Vue {
display: flex;
align-items: center;
max-height: 32px;
padding: 0px 3px;
> img{
max-height: 32px;
width: auto;
......
.menu-icon {
padding-right: 6px;
}
\ No newline at end of file
......@@ -29,10 +29,10 @@ export class MenuIcon extends Vue {
public render(): any {
if (this.item) {
if (this.item.iconcls) {
return <i class={this.item.iconcls} />
return <i class={[this.item.iconcls, 'menu-icon']} />
}
if (this.item.icon) {
return <img src={this.item.icon} />
return <img class="menu-icon" src={this.item.icon} />
}
}
return <span />
......
......@@ -379,5 +379,15 @@ export default {
appMapPosition: {
submit: 'Submit',
title: 'Please select address'
}
},
appSortBar: {
title: 'Sort'
},
appAfterTime:{
minutesAgo: 'minutes ago',
hoursAgo: 'hours ago',
dayAgo: 'days ago',
monthsAgo: 'months ago',
yearsAgo: 'years ago'
}
};
\ No newline at end of file
......@@ -380,5 +380,15 @@ export default {
appMapPosition: {
submit: '确认',
title: '请选择地址'
}
},
appSortBar: {
title: '排序'
},
appAfterTime:{
minutesAgo: '分钟前',
hoursAgo: '小时前',
dayAgo: '天前',
monthsAgo: '月前',
yearsAgo: '年前'
}
};
\ No newline at end of file
......@@ -177,6 +177,14 @@ export default class AutoGroupListBase extends Vue implements ControlInterface {
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof AutoGroupListBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -276,6 +284,14 @@ export default class AutoGroupListBase extends Vue implements ControlInterface {
*/
public groupField: string = "author";
/**
* 分组属性代码表
*
* @type {string}
* @memberof AutoGroupListBase
*/
public groupFieldCodelist: any = {};
/**
* 分组数据
*
......@@ -312,12 +328,22 @@ export default class AutoGroupListBase extends Vue implements ControlInterface {
*
* @memberof AutoGroupListBase
*/
public drawGroup(){
public async drawGroup(){
let data:Array<any> = [...this.items];
let groups:Array<any> = [];
let fields: Array<any> = [];
if(Object.keys(this.groupFieldCodelist).length > 0){
let fieldCodelist: any = await this.codeListService.getDataItems(this.groupFieldCodelist);
fields = Util.deepCopy(fieldCodelist);
}
data.forEach((item: any)=>{
if(item.hasOwnProperty(this.groupField)){
groups.push(item[this.groupField]);
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
groups.push(arr[0].label);
}else{
groups.push(item[this.groupField]);
}
}
});
groups = [...new Set(groups)];
......
......@@ -10,20 +10,47 @@
}
.app-list-item {
line-height: 34px;
border-radius:5px;
padding: 6px;
margin: 6px;
box-shadow: 0px 0px 2px 1px rgb(209, 208, 208);
background: #f7f7fa;
padding: 12px 6px;
min-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f0f0f0;
.app-list-item-content {
display: flex;
align-items: center;
.item-icon {
width: 40px;
height: 40px;
margin-right: 14px;
img {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
.item-content-text {
display: flex;
flex-direction: column;
.item-text {
font-size: 18px;
font-weight: bold;
}
.item-subtext {
color: #8c8c8c;
}
}
}
.app-list-item-date {
position: relative;
left: 28%;
color: #8c8c8c;
}
}
.app-list-item.isSelect {
background: #ecf5ff;
border-left: 5px solid #2d8cf0;
box-shadow: 0px 0px 3px 1px #82bff7;
border-radius: 2px;
border-color: rgb(197, 197, 197);
}
.app-list-item:hover {
background: #ecf5ff;
......
......@@ -177,6 +177,14 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof GroupByCodelistListBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -276,6 +284,14 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
*/
public groupField: string = "type";
/**
* 分组属性代码表
*
* @type {string}
* @memberof GroupByCodelistListBase
*/
public groupFieldCodelist: any = {};
/**
* 分组数据
*
......@@ -306,29 +322,14 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
}
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof GroupByCodelistListBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 分组代码表标识
*
* @type {string}
* @memberof GroupByCodelistListBase
*/
public tag: string = "BookType";
/**
* 分组代码表类型
*
* 分组代码表
*
* @type {string}
* @memberof GroupByCodelistListBase
*/
public codelistType: string = "STATIC";
*/
public groupCodelist: any = {type:'STATIC',tag:'BookType'};
/**
* 根据分组代码表绘制分组列表
......@@ -337,14 +338,17 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
*/
public async drawCodelistGroup(){
let groups: Array<any> = [];
let fields: Array<any> = [];
let groupTree:Array<any> = [];
let data:Array<any> = [...this.items];
// 动态代码表
if (Object.is(this.codelistType, "DYNAMIC")) {
groups = await this.codeListService.getItems(this.tag);
// 静态代码表
} else if(Object.is(this.codelistType, "STATIC")){
groups = this.$store.getters.getCodeListItems(this.tag);
if(Object.keys(this.groupCodelist).length > 0){
let groupCodelist: any = await this.codeListService.getDataItems(this.groupCodelist);
groups = Util.deepCopy(groupCodelist);
}
if(Object.keys(this.groupFieldCodelist).length > 0){
let fieldCodelist: any = await this.codeListService.getDataItems(this.groupFieldCodelist);
fields = Util.deepCopy(fieldCodelist);
}
if(groups.length == 0){
console.warn("分组数据无效");
......@@ -352,7 +356,12 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
groups.forEach((group: any,i: number)=>{
let children:Array<any> = [];
data.forEach((item: any,j: number)=>{
if(Object.is(group.label,item[this.groupField])){
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
if(arr && arr.length>0 && Object.is(group.label,arr[0].label)) {
children.push(item);
}
}else if(Object.is(group.label,item[this.groupField])){
children.push(item);
}
});
......@@ -364,7 +373,15 @@ export default class GroupByCodelistListBase extends Vue implements ControlInter
});
let child:Array<any> = [];
data.forEach((item: any)=>{
let i = groups.findIndex((group: any)=>Object.is(group.label,item[this.groupField]));
let i: number = 0;
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
if(arr && arr.length>0) {
i = groups.findIndex((group: any)=>Object.is(group.label,arr[0].label));
}
}else{
i = groups.findIndex((group: any)=>Object.is(group.label,item[this.groupField]));
}
if(i < 0){
child.push(item);
}
......
......@@ -10,20 +10,47 @@
}
.app-list-item {
line-height: 34px;
border-radius:5px;
padding: 6px;
margin: 6px;
box-shadow: 0px 0px 2px 1px rgb(209, 208, 208);
background: #f7f7fa;
padding: 12px 6px;
min-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f0f0f0;
.app-list-item-content {
display: flex;
align-items: center;
.item-icon {
width: 40px;
height: 40px;
margin-right: 14px;
img {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
.item-content-text {
display: flex;
flex-direction: column;
.item-text {
font-size: 18px;
font-weight: bold;
}
.item-subtext {
color: #8c8c8c;
}
}
}
.app-list-item-date {
position: relative;
left: 28%;
color: #8c8c8c;
}
}
.app-list-item.isSelect {
background: #ecf5ff;
border-left: 5px solid #2d8cf0;
box-shadow: 0px 0px 3px 1px #82bff7;
border-radius: 2px;
border-color: rgb(197, 197, 197);
}
.app-list-item:hover {
background: #ecf5ff;
......
......@@ -166,6 +166,14 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof HasPanelListBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......
......@@ -10,20 +10,47 @@
}
.app-list-item {
line-height: 34px;
border-radius:5px;
padding: 6px;
margin: 6px;
box-shadow: 0px 0px 2px 1px rgb(209, 208, 208);
background: #f7f7fa;
padding: 12px 6px;
min-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f0f0f0;
.app-list-item-content {
display: flex;
align-items: center;
.item-icon {
width: 40px;
height: 40px;
margin-right: 14px;
img {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
.item-content-text {
display: flex;
flex-direction: column;
.item-text {
font-size: 18px;
font-weight: bold;
}
.item-subtext {
color: #8c8c8c;
}
}
}
.app-list-item-date {
position: relative;
left: 28%;
color: #8c8c8c;
}
}
.app-list-item.isSelect {
background: #ecf5ff;
border-left: 5px solid #2d8cf0;
box-shadow: 0px 0px 3px 1px #82bff7;
border-radius: 2px;
border-color: rgb(197, 197, 197);
}
.app-list-item:hover {
background: #ecf5ff;
......
......@@ -1068,17 +1068,17 @@ export default class InternalFuncBase extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -3,8 +3,26 @@
<div :class="['app-list',this.items.length > 0 ? '' : 'app-list-empty' ]">
<div v-if="items.length > 0">
<div v-for = "item in items" :key="item.srfkey" :class="['app-list-item', {'isSelect': item.isselected === true ? true : false}]" @click="handleClick(item)" @dblclick="handleDblClick(item)">
<div class="app-list-item-content">{{item.srfmajortext}}</div>
<div calss="app-list-item-action">
<div class="app-list-item-content">
<div class="item-icon">
<template v-if="item.srficon">
<img :src="item.srficon" />
</template>
<template v-else>
<img src="/assets/img/noimage.png"/>
</template>
</div>
<template>
<div class="item-content-text">
<span class="item-text">{{item.srfmajortext}}</span>
<span v-if="item.srfdescription" class="item-subtext">{{ item.srfdescription }}</span>
</div>
</template>
</div>
<div class="app-list-item-date">
<span class="date">{{ item.createdate }}</span>
</div>
<div class="app-list-item-action">
<template v-for="(action,index) in Object.keys(ActionModel)">
<a :key="index" style="display: inline-block;margin: 0 12px;" @click="uiAction(item, action, $event)">
<i :class="ActionModel[action].icon" style="margin-right:2px;"></i>
......@@ -376,6 +394,14 @@ export default class LnternalFuncListBase extends Vue implements ControlInterfac
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof LnternalFuncListBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......
......@@ -10,20 +10,47 @@
}
.app-list-item {
line-height: 34px;
border-radius:5px;
padding: 6px;
margin: 6px;
box-shadow: 0px 0px 2px 1px rgb(209, 208, 208);
background: #f7f7fa;
padding: 12px 6px;
min-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f0f0f0;
.app-list-item-content {
display: flex;
align-items: center;
.item-icon {
width: 40px;
height: 40px;
margin-right: 14px;
img {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
.item-content-text {
display: flex;
flex-direction: column;
.item-text {
font-size: 18px;
font-weight: bold;
}
.item-subtext {
color: #8c8c8c;
}
}
}
.app-list-item-date {
position: relative;
left: 28%;
color: #8c8c8c;
}
}
.app-list-item.isSelect {
background: #ecf5ff;
border-left: 5px solid #2d8cf0;
box-shadow: 0px 0px 3px 1px #82bff7;
border-radius: 2px;
border-color: rgb(197, 197, 197);
}
.app-list-item:hover {
background: #ecf5ff;
......
......@@ -1079,17 +1079,17 @@ export default class Main2Base extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1079,17 +1079,17 @@ export default class Main3Base extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1070,17 +1070,17 @@ export default class Main4Base extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1086,17 +1086,17 @@ export default class Main5Base extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -2,7 +2,6 @@ import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import IBIZBOOKService from '@/service/ibizbook/ibizbook-service';
import Main5Model from './main5-grid-model';
import IBIZBOOKService from '@/service/ibizbook/ibizbook-service';
/**
......
......@@ -1206,17 +1206,17 @@ export default class NewDefaultBase extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1281,17 +1281,17 @@ export default class RowEditBase extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1236,17 +1236,17 @@ export default class RowRulesBase extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
......@@ -1206,17 +1206,17 @@ export default class UpdateDefaultBase extends Vue implements ControlInterface {
serviceName:'ibizbook',
appDeLogicName:'图书',
importData:{
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"PRESS":{"headername":"图书出版社","isuniqueitem":false,"name":"press","order":1000},
"AUTHOR":{"headername":"图书作者","isuniqueitem":false,"name":"author","order":1000},
"PRICE":{"headername":"图书价格","isuniqueitem":false,"name":"price","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"BOOKNUMBER":{"headername":"图书数量","isuniqueitem":false,"name":"booknumber","order":1000},
"CREATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"建立人","isuniqueitem":false,"name":"createman","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000},
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000}
"CREATEDATE":{"headername":"建立时间","isuniqueitem":false,"name":"createdate","order":1000},
"IBIZBOOKNAME":{"headername":"图书名称","isuniqueitem":false,"name":"ibizbookname","order":1000},
"UPDATEMAN":{"codelist":{"type":"DYNAMIC","tag":"SysOperator","isnumber":false},"headername":"更新人","isuniqueitem":false,"name":"updateman","order":1000},
"UPDATEDATE":{"headername":"更新时间","isuniqueitem":false,"name":"updatedate","order":1000},
"IBIZBOOKID":{"headername":"图书标识","isuniqueitem":false,"name":"ibizbookid","order":1000},
"TYPE":{"headername":"图书类型","isuniqueitem":false,"name":"type","order":1000}
}
}
if(Object.keys(importDataModel).length == 0){
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('author')" @click.native="sortClick('author')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.author')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('icon')" @click.native="sortClick('icon')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.icon')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('subtext')" @click.native="sortClick('subtext')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.subtext')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('type')" @click.native="sortClick('type')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.type')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('ibizbookname')" @click.native="sortClick('ibizbookname')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.ibizbookname')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizbook"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<a v-for="(item,index) in items" :key="index" :href = "item.starturl">
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span v-if="item.srfdescription" class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -423,6 +392,15 @@ export default class UsrBase extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof UsrBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -633,6 +611,20 @@ export default class UsrBase extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof UsrBase
*/
public sortModel: any[] = [
'author',
'icon',
'subtext',
'type',
'ibizbookname'
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('author')" @click.native="sortClick('author')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.author')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('ibizbookname')" @click.native="sortClick('ibizbookname')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.ibizbookname')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizbook"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<el-collapse>
<el-collapse-item v-for="(group,index) in groupData" :key="index">
......@@ -29,12 +18,13 @@
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -202,6 +192,15 @@ export default class Usr2Base extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof Usr2Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -300,7 +299,15 @@ export default class Usr2Base extends Vue implements ControlInterface {
* @memberof Usr2Base
*/
public groupField: string = "author";
/**
* 分组属性代码表
*
* @type {string}
* @memberof Usr2Base
*/
public groupFieldCodelist: any = {};
/**
* 分组数据
*
......@@ -337,15 +344,28 @@ export default class Usr2Base extends Vue implements ControlInterface {
*
* @memberof Usr2Base
*/
public drawGroup(){
public async drawGroup(){
let data:Array<any> = [...this.items];
let groups:Array<any> = [];
let fields: Array<any> = [];
if(Object.keys(this.groupFieldCodelist).length > 0){
let fieldCodelist: any = await this.codeListService.getDataItems(this.groupFieldCodelist);
fields = Util.deepCopy(fieldCodelist);
}
data.forEach((item: any)=>{
if(item.hasOwnProperty(this.groupField)){
groups.push(item[this.groupField]);
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
groups.push(arr[0].label);
}else{
groups.push(item[this.groupField]);
}
}
});
groups = [...new Set(groups)];
if(groups.length == 0){
console.warn("分组数据无效");
}
let groupTree:Array<any> = [];
groups.forEach((group: any,i: number)=>{
let children:Array<any> = [];
......@@ -354,6 +374,7 @@ export default class Usr2Base extends Vue implements ControlInterface {
children.push(item);
}
});
group = group ? group : this.$t('app.commonWords.other');
const tree: any ={
group: group,
children: children
......@@ -452,6 +473,17 @@ export default class Usr2Base extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof Usr2Base
*/
public sortModel: any[] = [
'author',
'ibizbookname',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('type')" @click.native="sortClick('type')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.type')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('ibizbookname')" @click.native="sortClick('ibizbookname')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.ibizbookname')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizbook"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<el-collapse>
<el-collapse-item v-for="(group,index) in groupData" :key="index">
......@@ -29,12 +18,13 @@
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -202,6 +192,15 @@ export default class Usr3Base extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof Usr3Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -300,7 +299,15 @@ export default class Usr3Base extends Vue implements ControlInterface {
* @memberof Usr3Base
*/
public groupField: string = "type";
/**
* 分组属性代码表
*
* @type {string}
* @memberof Usr3Base
*/
public groupFieldCodelist: any = {};
/**
* 分组数据
*
......@@ -331,29 +338,14 @@ export default class Usr3Base extends Vue implements ControlInterface {
}
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof Usr3Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 分组代码表标识
*
* @type {string}
* @memberof Usr3Base
*/
public tag: string = "BookType";
/**
* 分组代码表类型
*
* 分组代码表
*
* @type {string}
* @memberof Usr3Base
*/
public codelistType: string = "STATIC";
*/
public groupCodelist: any = {type:'STATIC',tag:'BookType'};
/**
* 根据分组代码表绘制分组列表
......@@ -362,19 +354,30 @@ export default class Usr3Base extends Vue implements ControlInterface {
*/
public async drawCodelistGroup(){
let groups: Array<any> = [];
let fields: Array<any> = [];
let groupTree:Array<any> = [];
let data:Array<any> = [...this.items];
// 动态代码表
if (Object.is(this.codelistType, "DYNAMIC")) {
groups = await this.codeListService.getItems(this.tag);
// 静态代码表
} else if(Object.is(this.codelistType, "STATIC")){
groups = this.$store.getters.getCodeListItems(this.tag);
if(Object.keys(this.groupCodelist).length > 0){
let groupCodelist: any = await this.codeListService.getDataItems(this.groupCodelist);
groups = Util.deepCopy(groupCodelist);
}
if(Object.keys(this.groupFieldCodelist).length > 0){
let fieldCodelist: any = await this.codeListService.getDataItems(this.groupFieldCodelist);
fields = Util.deepCopy(fieldCodelist);
}
if(groups.length == 0){
console.warn("分组数据无效");
}
groups.forEach((group: any,i: number)=>{
let children:Array<any> = [];
data.forEach((item: any,j: number)=>{
if(Object.is(group.label,item[this.groupField])){
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
if(arr && arr.length>0 && Object.is(group.label,arr[0].label)) {
children.push(item);
}
}else if(Object.is(group.label,item[this.groupField])){
children.push(item);
}
});
......@@ -386,7 +389,15 @@ export default class Usr3Base extends Vue implements ControlInterface {
});
let child:Array<any> = [];
data.forEach((item: any)=>{
let i = groups.findIndex((group: any)=>Object.is(group,item[this.groupField]));
let i: number = 0;
if(fields && fields.length > 0){
const arr:Array<any> = fields.filter((field:any)=>{return field.value == item[this.groupField]});
if(arr && arr.length>0) {
i = groups.findIndex((group: any)=>Object.is(group.label,arr[0].label));
}
}else{
i = groups.findIndex((group: any)=>Object.is(group.label,item[this.groupField]));
}
if(i < 0){
child.push(item);
}
......@@ -395,7 +406,9 @@ export default class Usr3Base extends Vue implements ControlInterface {
group: this.$t('app.commonWords.other'),
children: child
}
groupTree.push(Tree);
if(child && child.length > 0){
groupTree.push(Tree);
}
this.groupData = [...groupTree];
}
......@@ -489,6 +502,17 @@ export default class Usr3Base extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof Usr3Base
*/
public sortModel: any[] = [
'type',
'ibizbookname',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('author')" @click.native="sortClick('author')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.author')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('press')" @click.native="sortClick('press')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.press')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
<i-col :class="getsortClass('ibizbookname')" @click.native="sortClick('ibizbookname')">
<span class="sort-field-text">{{$t('entities.ibizbook.fields.ibizbookname')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizbook"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<a v-for="(item,index) in items" :key="index" :href = "item.starturl">
<i-col style="min-height: 170px;margin-bottom: 10px;">
......@@ -190,6 +172,15 @@ export default class Usr4Base extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof Usr4Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -373,6 +364,18 @@ export default class Usr4Base extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof Usr4Base
*/
public sortModel: any[] = [
'author',
'press',
'ibizbookname',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('ibizhardwarename')" @click.native="sortClick('ibizhardwarename')">
<span class="sort-field-text">{{$t('entities.ibizhardware.fields.ibizhardwarename')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizhardware"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<a v-for="(item,index) in items" :key="index" :href = "item.starturl">
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span v-if="item.srfdescription" class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -183,6 +180,15 @@ export default class IndexTypeBase extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof IndexTypeBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -352,6 +358,16 @@ export default class IndexTypeBase extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof IndexTypeBase
*/
public sortModel: any[] = [
'ibizhardwarename',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('ibizsample0017name')" @click.native="sortClick('ibizsample0017name')">
<span class="sort-field-text">{{$t('entities.ibizsample0017.fields.ibizsample0017name')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizsample0017"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<a v-for="(item,index) in items" :key="index" :href = "item.starturl">
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span v-if="item.srfdescription" class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -183,6 +180,15 @@ export default class FormTypeBase extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof FormTypeBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -352,6 +358,16 @@ export default class FormTypeBase extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof FormTypeBase
*/
public sortModel: any[] = [
'ibizsample0017name',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
<template>
<div class="app-data-view">
<div class="bar-container">
<row class="page-sort-bar" :gutter="10" type="flex" justify="start" style="margin:0px;" >
<i-col :class="getsortClass('ibizuniproductname')" @click.native="sortClick('ibizuniproductname')">
<span class="sort-field-text">{{$t('entities.ibizuniproduct.fields.ibizuniproductname')}}</span>
<span class="caret-wrapper">
<Icon type="md-arrow-dropup" />
<Icon type="md-arrow-dropdown" />
</span>
</i-col>
</row>
</div>
<app-sort-bar
:sortModel="sortModel"
:sortField="sortField"
:sortDir="sortDir"
entityName="ibizuniproduct"
@clickSort="(val) => {sortClick(val);}">
</app-sort-bar>
<row class="data-view-container" v-if="items.length > 0" :gutter="20" type="flex" justify="start" style="margin:0px;">
<a v-for="(item,index) in items" :key="index" :href = "item.starturl">
<i-col style="min-height: 170px;margin-bottom: 10px;">
<el-card shadow="always" :class="[ item.isselected === true ? 'isselected' : false, 'single-card-data' ]" @click.native="handleClick(item)" @dblclick.native="handleDblClick(item)">
<div class="data-view-item">
<img v-if="item.srficonpath" :src="item.srficonpath" class="single-card-img" />
<img v-if="item.srficon" :src="item.srficon" class="single-card-img" />
<img v-else src="/assets/img/noimage.png" class="single-card-img" />
<div class="single-card-default">
<Tooltip :content="item.srfmajortext">
{{item.srfmajortext}}
</Tooltip>
<span v-if="item.srfdescription" class="description">{{ item.srfdescription }}</span>
</div>
</div>
<div class="data-view-item-action">
......@@ -183,6 +180,15 @@ export default class IndexTypeBase extends Vue implements ControlInterface {
}
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof IndexTypeBase
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 获取多项数据
*
......@@ -352,6 +358,16 @@ export default class IndexTypeBase extends Vue implements ControlInterface {
*/
public sortField: string = '';
/**
* 排序模型数据集
*
* @type {string}
* @memberof IndexTypeBase
*/
public sortModel: any[] = [
'ibizuniproductname',
]
/**
* 应用状态事件
*
......
......@@ -78,9 +78,9 @@
}
}
.el-card{
background-color: #f6f6f6;
background-color: #fff;
color: #666666;
box-shadow: 0 2px 12px 0 #909399;
box-shadow: 0 2px 12px 0 #b1b3b8;
}
.single-card-data{
height: 100%;
......@@ -88,7 +88,11 @@
cursor: pointer;
border: 2px solid transparent;
.data-view-item{
display: flex;
margin-bottom: 36px;
.single-card-default {
display: flex;
flex-direction: column;
.ivu-tooltip{
.ivu-tooltip-rel{
width: 150px;
......@@ -103,11 +107,15 @@
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 20px;
}
}
.data-view-item-action{
display: flex;
justify-content: space-around;
button{
margin: 0 3px;
cursor: pointer;
......
......@@ -8,16 +8,16 @@ import java.util.List;
public interface IBIZBOOKDataImport {
@Mappings({
@Mapping(target = "ibizbookid", source = "ibizbookid"),
@Mapping(target = "createman", source = "createman"),
@Mapping(target = "type", source = "type"),
@Mapping(target = "price", source = "price"),
@Mapping(target = "createdate", source = "createdate"),
@Mapping(target = "booknumber", source = "booknumber"),
@Mapping(target = "createman", source = "createman"),
@Mapping(target = "ibizbookname", source = "ibizbookname"),
@Mapping(target = "press", source = "press"),
@Mapping(target = "updateman", source = "updateman"),
@Mapping(target = "author", source = "author"),
@Mapping(target = "price", source = "price"),
@Mapping(target = "updatedate", source = "updatedate"),
@Mapping(target = "booknumber", source = "booknumber"),
@Mapping(target = "type", source = "type"),
@Mapping(target = "press", source = "press"),
@Mapping(target = "author", source = "author"),
})
@BeanMapping(ignoreByDefault = true)
IBIZBOOK toDomain(IBIZBOOK entity);
......
......@@ -8,10 +8,10 @@ import java.util.List;
public interface IBIZOrderImport {
@Mappings({
@Mapping(target = "ibizorderid", source = "ibizorderid"),
@Mapping(target = "orderuid", source = "orderuid"),
@Mapping(target = "ibizordername", source = "ibizordername"),
@Mapping(target = "ordertype", source = "ordertype"),
@Mapping(target = "ordertime", source = "ordertime"),
@Mapping(target = "orderuid", source = "orderuid"),
@Mapping(target = "ibizordername", source = "ibizordername"),
})
@BeanMapping(ignoreByDefault = true)
IBIZOrder toDomain(IBIZOrder entity);
......
......@@ -28,7 +28,7 @@
<!--输出实体[IBIZBOOK]数据结构 -->
<changeSet author="a_LAB01_df847bdfd" id="tab-ibizbook-327-2">
<changeSet author="a_LAB01_df847bdfd" id="tab-ibizbook-333-2">
<createTable tableName="T_IBIZBOOK">
<column name="CREATEMAN" remarks="" type="VARCHAR(60)">
</column>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册