30 lines
		
	
	
		
			911 B
		
	
	
	
		
			Vue
		
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			911 B
		
	
	
	
		
			Vue
		
	
	
|  | <template> | ||
|  |   <el-descriptions :column="column" border> | ||
|  |     <template v-for="item in options" :key="item.key"> | ||
|  |       <el-descriptions-item v-if="!item.hidden" :label="item.label" :span="item.span || 1"> | ||
|  |         <slot :name="item.key"> | ||
|  |           <template v-if="item.value">{{ item.value }}</template> | ||
|  |           <template v-if="!item.value">{{ info[item.key] }}</template> | ||
|  |         </slot> | ||
|  |       </el-descriptions-item> | ||
|  |     </template> | ||
|  |   </el-descriptions> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script setup> | ||
|  | import { ElDescriptions, ElDescriptionsItem } from "element-plus"; | ||
|  | import "element-plus/es/components/descriptions/style/css"; | ||
|  | import "element-plus/es/components/descriptions-item/style/css"; | ||
|  | 
 | ||
|  | defineOptions({ | ||
|  |   name: "AppInfoBuilder", | ||
|  | }); | ||
|  | defineProps({ | ||
|  |   info: { type: Object, required: true }, | ||
|  |   options: { type: Array, required: true }, | ||
|  |   column: { type: Number, default: 2 }, | ||
|  | }); | ||
|  | </script> | ||
|  | 
 | ||
|  | <style scoped lang="scss"></style> |