<template> <span :id="id" :name="field.name+'_show'" class="checkbox-control"> <template v-if="field.displayType == Constant.PermissionType_HIDDEN || field.textType.toLowerCase() == 'hidden'" > <!-- 闅愯棌 TODO:娉ㄦ剰锛岄殣钘忔椂涓嶅簲璇ユ湁hidden鐨刦ield瀛樺湪锛屾湁瀹夊叏闂锛屼互鍚庤鏀硅繃鏉ワ細Jarod --> <span :id="field.divId" :fieldType="field.formField" :data-label="field.name" :name="'span_'+field.name" :discript="field.discript" style="display:none" > <label v-for="options in field.options" :key="options.value" class="checkbox-inline obpm-checkbox" > <input :text="options.option" type="checkbox" :value="options.value" :name="field.name" :class="field.cssClass" class="checkboxWid" :isRefreshOnChanged="field.refreshOnChanged" v-model="value" > <span class="displayi-b">{{options.option}}</span> </label> <br v-if="field.layout && field.layout.toLowerCase()=='vertical'"> </span> <span>{{field.printHiddenValue?field.printHiddenValue:field.hiddenValue}}</span> </template> <template v-else-if="field.displayType == Constant.PermissionType_PRINT"> <!-- 鎵撳嵃 --> <div> {{field.checkShowValue}} </div> </template> <!--鍙--> <template v-else-if="field.textType.toLowerCase() == 'readonly' || field.displayType == Constant.PermissionType_READONLY || field.displayType == Constant.PermissionType_DISABLED"> <template v-if="field.readOnlyShowValOnly"> <!-- 鍙锛堟枃鏈ā寮忥級 --> <span :id="field.divId" class="check-input" @mouseenter="enter()" > <div> {{escape(field.value)}} </div> <i class="fa fa-history icon-log" @click="getOperationLogs" style="color:#46d2db" v-if="showLogsIcon && field.isModified" aria-hidden="true"> </i> <form_operation v-if="showLogsDialog" :docId="field.docId" :operationData="operationData" @event="hiddenLogsDialog" /> </span> </template> <template v-else> <!-- 鍙锛堟帶浠舵ā寮忥級 --> <span class="checkbox-readonly check-input" :id="field.divId" @mouseenter="enter()" > <el-checkbox-group v-model="value"> <el-checkbox disabled v-for="options in field.options" :key="options.value" :text="options.option" :class="field.layout=='horizontal'?'checkbox-inline obpm-checkbox':vertical" :isRefreshOnChanged="field.refreshOnChanged" :value="options.value" :label="options.value" >{{escape(options.option)}}</el-checkbox> </el-checkbox-group> <br v-if="field.layout && field.layout.toLowerCase()=='vertical'"> <i class="fa fa-history icon-log" @click="getOperationLogs" style="color:#46d2db" v-if="showLogsIcon && field.isModified" aria-hidden="true"> </i> <form_operation v-if="showLogsDialog" :docId="field.docId" :operationData="operationData" @event="hiddenLogsDialog" /> </span> </template> </template> <template v-else-if="field.displayType == Constant.PermissionType_MODIFY"> <!-- 鍙紪杈� --> <span :id="field.divId" class="check-input" @mouseenter="enter()" > <div :class="[isActive ? 'instantVerification':'', 'checkbox-wrap']"> <el-checkbox-group v-model="value"> <el-checkbox v-for="(options,index) in field.options" :key="index" :class="field.layout=='horizontal'?'checkbox-inline obpm-checkbox':vertical" :value="options.value" :label="options.value" @change="onChange" >{{escape(options.option)}}</el-checkbox> </el-checkbox-group> </div> <div class="tips" v-show="isActive"> {{errorMessage}} </div> <br v-if="field.layout && field.layout.toLowerCase()=='vertical'"> <i class="fa fa-history icon-log" @click="getOperationLogs" style="color:#46d2db" v-if="showLogsIcon && field.isModified" aria-hidden="true"> </i> <form_operation v-if="showLogsDialog" :docId="field.docId" :operationData="operationData" @event="hiddenLogsDialog" /> </span> </template> </span> </template> <script> import Constant from "@/Constant.js"; import form_operation from "@/components/form_operation_log"; import controlHidden from "@/assets/js/controlHidden.js" export default { name: "o-checkbox", props: ["id"], components: { form_operation, }, computed: { field: function() { let allData = this.$parent.findField(this.id) // if(allData.options && allData.options.length) { // for(let i=0; i<allData.options.length; i++) { // if(allData.options[i].def) { // allData.options[i].def = false; // allData.value = allData.value +";" + allData.options[i].value; // } // } // } allData.selectAalueArr = [] let value = [] if(allData.value){ let checkReallyArray = allData.value.split(";") let checkShowValue = "" for(let i=0; i<checkReallyArray.length; i++) { for(let j=0; j<allData.options.length; j++) { if(checkReallyArray[i] == allData.options[j].value) { checkShowValue += allData.options[j].option + ';' value.push(checkReallyArray[i]) } } } allData.checkShowValue = checkShowValue }else { let options = allData.options let checkShowValue = ""; for(let i=0; i<options.length; i++) { if(options[i].def) { checkShowValue += options[i].option + ';' value.push(options[i].value) } } allData.checkShowValue = checkShowValue } let formData = this.setField(allData, value) return formData }, // value: { // get: function() { // let val = this.field.value; // if(val) { // return this.field.value.split(";"); // } else { // return []; // } // }, // set: function(newValue) { // debugger // let val = newValue.join(";"); // this.field.value = val.replace(/^(\s|;)+|(\s|;)+$/g, ''); // return newValue; // } // } }, watch: { 'field.displayType': { deep: true, handler:function(newV,oldV){ let field = this.field; if(field.isHideType) { let id = this.id, formShowType = field.formShowType; controlHidden({id, field, formShowType}) } } }, 'field.value':{ //鐩戝惉鐨勫璞� deep:true, //娣卞害鐩戝惉璁剧疆涓� true handler:function(newV,oldV){ if(this.field.refreshOnChanged){ let havePar = false; let par = ''; if(newV !== oldV) { while(!havePar) { par = par + '.$parent'; let url = 'this' + par + '.refresh'; if(eval(url)) { let path = url + '(' + "'"+ this.id +"'" + ')'; eval(path); break } } } } } } }, mounted(){ this.$nextTick(()=>{ let field = this.field; if(field.isHideType) { let id = this.id, formShowType = field.formShowType; controlHidden({id, field, formShowType}) } }) }, data: function() { return { Constant, selectedOption: {}, vertical:'input-vertical', showLogsDialog: false, tableData:[], showLogsIcon:true, isActive:false, errorMessage:'', operationData: '', value: [], }; }, methods: { escape(value) { //鐗规畩瀛楃杞箟 if(value.indexOf('√') > -1) { value = value.replace('√','鈭�'); }else if(value.indexOf('×') > -1) { value = value.replace('×','脳'); }else { value = value; } return value }, setField(allData, value) { this.value = value; return allData; }, hiddenLogsDialog() { this.showLogsIcon = false; this.showLogsDialog = false; }, enter(){ if(this.field.isModified) { this.showLogsIcon = true; } }, getOperationLogs() { let obj = {}; obj.fieldName = this.field.name; this.operationData = obj; this.showLogsDialog = true; }, onChange() { let val = this.value; let field = this.field; field.value = val.join(";"); if(field.instantValidate) { this.isFieldClear = false; let value = true; let formData = this.$parent.checkData(value); //item[this.field.name] = this.field.value; this.$api.formValidation( this.$root.appid, formData, { onSucess: response => { if(response.data.errcode == 4001) { if(response.data.errors && response.data.errors.length > 0) { let arr = response.data.errors; for(let i=0; i<arr.length; i++) { if(field.name == arr[i].field) { this.isActive = true; this.errorMessage = arr[i].errmsg return; }else { this.isActive = false; this.errorMessage = ''; } } } }else if(response.data.errcode == 0) { this.isActive = false; } } } ) } // if (field.refreshOnChanged) {//鍒ゆ柇鏄惁闇€瑕佸埛鏂� // // this.$parent.refresh && this.$parent.refresh(this.id); // } }, }, }; </script> <style lang="scss" scoped> .input-vertical { display: flex; display: -webkit-flex; flex-direction: row; font-weight: normal; cursor:pointer; margin-left:21px; } </style>