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>
 |