29 lines
		
	
	
		
			878 B
		
	
	
	
		
			Vue
		
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			878 B
		
	
	
	
		
			Vue
		
	
	
|  | <template> | ||
|  |   <el-dialog v-model="visible" title="文本文档" :append-to-body="appendToBody"> | ||
|  |     <el-input autosize :model-value="value" readonly type="textarea" /> | ||
|  |   </el-dialog> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script setup> | ||
|  | import { ref, watchEffect } from "vue"; | ||
|  | import { ElDialog, ElInput } from "element-plus"; | ||
|  | import "element-plus/es/components/dialog/style/css"; | ||
|  | import "element-plus/es/components/input/style/css"; | ||
|  | import { readTxtDocument } from "../../utils/index.js"; | ||
|  | 
 | ||
|  | defineOptions({ | ||
|  |   name: "AppTxt", | ||
|  | }); | ||
|  | const props = defineProps({ | ||
|  |   src: { type: String, required: true, default: "" }, | ||
|  |   appendToBody: { type: Boolean, default: false }, | ||
|  | }); | ||
|  | const value = ref(""); | ||
|  | const visible = defineModel("visible", { type: Boolean, required: true }); | ||
|  | watchEffect(async () => { | ||
|  |   if (props.src) value.value = await readTxtDocument(props.src); | ||
|  | }); | ||
|  | </script> | ||
|  | 
 | ||
|  | <style lang="scss" scoped></style> |