<template> <span :id="id" v-bind="$attrs" v-on="$listeners" v-html="label" > </span> </template> <script> import { getCodetable } from "~/service/business/codeTable" export default { props: { value: { type: [String, Array, Number], default: undefined, }, id: { type: String, default: undefined, }, code: { type: Array, default: function () { return []; }, }, dbCode: { type: String, default: undefined, }, }, data(){ return { dbCodeList:[], } }, watch:{ //动态从服务器上渲染码表 dbCode(){ if(!this.dbCode){ this.dbCodeList=[] return } getDBCode() } }, computed: { mode() { return this.$store.state.Status.mode; }, isDisable: { get() { return this.mode === "display" || this.disabled; }, }, highlight() { return this.$store.state.Status.highlights.indexOf(this.id) !== -1; }, attrs() { if (this.mode === "display" || this.disabled) { let { placeholder, ...rest } = this.$attrs; rest = { placeholder: " ", ...rest }; return rest; } return this.$attrs; }, combinCodes(){ //取dbcode,和 setvalues的合集 if(!this.dbCodeList || this.dbCodeList.length == 0){ return [] } return this.dbCodeList.filter(item=>{ if(this.code && this.code.length){ return this.code.findIndex(item2=>item.value == item2.value)>-1 } return true }) }, label(){ if(!this.value){ return "" } if(this.dbCode && this.dbCodeList && this.dbCodeList.length>0){ let em = this.combinCodes.find(item=>item.value == this.value) if(em){ return em.label }else{ return this.value } } if(this.code && this.code.length){ let em = this.code.find(item=>item.value == this.value) if(em){ return em.label }else{ return this.value } } return this.value } }, methods: { handleClick: function (e) { let ev = new Event("click", { bubbles: true }); let node = e.target; if (node.parentElement) { node.parentElement.dispatchEvent(ev); } }, getDBCode(){ let args = {tbl:this.dbCode,lang:this.$store.state.I18n.lang.toUpperCase()} if(args.lang == "ZH"){ args.lang = "CN"; } getCodetable(args).then(rtnmsg=>{ if(rtnmsg.respCode==SUCCESS){ this.dbCodeList=rtnmsg.data } }) } }, mounted(){ if(this.dbCode){ this.getDBCode() } } }; </script> <style> /* .el-select.highlight .el-input .el-input__inner { border-color: red; } */ </style>