app-span.vue 2.7 KB
Newer Older
ibizdev's avatar
ibizdev committed
1 2 3 4 5 6 7 8 9 10 11
<template>
    <codelist v-if="tag" :tag="tag" :value="value" :codelistType="codelistType" :renderMode="renderMode" :valueSeparator="valueSeparator" :textSeparator="textSeparator"></codelist>
    <app-upload-file-info v-else-if="Object.is(this.editorType,'PICTURE') || Object.is(this.editorType,'PICTURE_ONE') || Object.is(this.editorType,'FILEUPLOADER')" :value="value" :name="name"></app-upload-file-info>
    <span class="app-span" v-else >{{text}}</span>
</template>

<script lang="ts">
import { Vue, Component, Prop, Watch, Model } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service";

@Component({})
ibizdev's avatar
ibizdev committed
12
export default class AppSpan extends Vue {
ibizdev's avatar
ibizdev committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

    /**
     * 当前值
     * 
     * @type {*}
     * @memberof AppSpan
     */
    @Prop() public value?: any;

    /**
     * 当前表单项名称
     * 
     * @type {*}
     * @memberof AppSpan
     */
    @Prop() public name?: any;

    /**
     * 代码表标识
     *
     * @type {string}
     * @memberof AppSpan
     */
    @Prop() public tag?: string;

    /**
     * 代码表类型
     *
     * @type {string}
     * @memberof AppSpan
     */
    @Prop() public codelistType?: string;

    /**
     * 获取或模式
     * @type {boolean}
ibizdev's avatar
ibizdev committed
49
     * @memberof AppSpan
ibizdev's avatar
ibizdev committed
50 51 52 53 54 55
     */
    @Prop({default:"STR"}) public renderMode?: string;

    /**
     * 文本分隔符
     * @type {boolean}
ibizdev's avatar
ibizdev committed
56
     * @memberof AppSpan
ibizdev's avatar
ibizdev committed
57 58 59 60 61 62
     */
    @Prop({default:"、"}) public textSeparator?: string;

    /**
     * 值分隔符
     * @type {boolean}
ibizdev's avatar
ibizdev committed
63
     * @memberof AppSpan
ibizdev's avatar
ibizdev committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
     */
    @Prop({default:";"}) public valueSeparator?: string;

    /**
     * 监控表单属性 data 值
     *
     * @memberof AppSpan
     */
    @Watch('value')
    onDataChange(newVal: any, oldVal: any) {
        if(newVal !== oldVal){
           this.load();
        }
    }

    /**
     * 显示值
     * @type {*}
     * @memberof AppSpan
     */
    public text:any = '';

    /**
     * 编辑器类型
     *
     * @type {string}
     * @memberof AppSpan
     */
    @Prop() public editorType?: string;

    /**
     * vue  生命周期
     *
     * @memberof AppSpan
     */
    public created() {
        this.load();
    }

    /**
     * 处理数据
     * 
     * @memberof AppSpan
     */
    public load(){
        if(!this.value || this.tag){
            return;  //代码表走codelist组件
ibizdev's avatar
ibizdev committed
111 112 113 114 115

        }else if(this.editorType === "ADDRESSPICKUP"){
            JSON.parse(this.value).forEach((item:any,index:number) => {
              this.text += index === 0 ? item.srfmajortext : ","+item.srfmajortext;
            });
ibizdev's avatar
ibizdev committed
116 117 118 119 120 121 122 123 124 125 126
        }else{
            this.text = this.value;
        }
    }
    
}
</script>

<style lang='less'>
@import './app-span.less';
</style>