<!--
@ 作者: 鲁智强
@ 时间: 2023-08-15 11:34:38
@ 备注: 
-->
<template>
	<el-dialog :model-value="true" :title="title" @close="handleClose">
	  <el-form
		ref="ruleFormRef"
		:model="formData"
		label-width="120px"
		class="demo-ruleForm"
	  >
		  <el-form-item label="文档正文：">
			  <Editor v-model="editContvalue" style="height: calc(100vh - 124px)"/>
	  </el-form-item>  
	  </el-form>
	</el-dialog>
  </template>
  <script lang="ts">
  import { reactive, toRefs, ref, onMounted} from "vue";
  import { Delete, Download, Plus, ZoomIn } from "@element-plus/icons-vue";
  import { ElMessage,UploadProps} from "element-plus";
  import Editor from "@/components/WangEditor/index.vue";


  import type { UploadFile } from 'element-plus'
  interface FormInfo {
	id: string;
	age: string;
	name: string;
	sex: string;
	ccc: string;
	ade: string;
	iop: string;
	ddd: string;
	  dialogVis: boolean;
	dialogImageUrl: string;
  }
  const childBorder = ref(false);
  const parentBorder = ref(false);
  const editContvalue = ref("");
  const dialogImageUrl = ref("");
  const dialogVis = ref(false);
  const disabled = ref(false);
  const imageUrl = ref("");
  const handleRemove = (file: UploadFile) => {
	console.log(file);
  };
  const handlePictureCardPreview = (file: UploadFile) => {
	dialogImageUrl.value = file.url!;
	dialogVis.value = true;
  };
  const handleDownload = (file: UploadFile) => {
	console.log(file);
  };
  const nameRules = [
	{ required: true, message: "文章标题不能为空", trigger: "blur" },
	// 名称字段的其他验证规则
  ];
  const handleAvatarSuccess: UploadProps["onSuccess"] = (
	response,
	uploadFile
  ) => {
	imageUrl.value = URL.createObjectURL(uploadFile.raw!);
  };
  export default {
	  components: {
	  Editor
	},
	props: {
	  title: {
		type: String,
		default: "",
	  },
	  detailShow: {
		type: Boolean,
		default: false,
	  },
	  rowInfo: {
		type: Object as () => FormInfo,
		default() {
		  return {};
		},
	  },
	  arrayNum: {
		type: Number,
		default: 0,
	  },
	},
emits: ['image-uploaded', 'update:detailShow', 'editRow', 'addRow'],
	setup(props, { emit }) {
	  const data = reactive({
		detailFlag: false,
			  dialogVis: false, 
			  dialogImageUrl: "",
		formData: {
		  id: props.arrayNum.toString(),
		  age: "'公开'",
		  name: "",
		  sex: "",
		  ccc: "",
		  ade: "",
		  iop: "1",
		  ddd: "",
				  dialogVis: false, // 初始化为 false
		  dialogImageUrl: "", // 初始化为空字符串
		},
	  });
		  const handleAvatar = (response:any, uploadFile:UploadFile) => {
			  if (uploadFile.raw) {
		const imageUrl = URL.createObjectURL(uploadFile.raw);
		// 触发自定义事件，传递图片URL给父组件
		emit('image-uploaded', imageUrl);
			  }
	  };
	  const method = reactive({
		// 关闭弹窗
		handleClose() {
		  emit("update:detailShow", false);
		},
		// 重置
		resetForm() {
		  data.formData = Object.assign({}, props.rowInfo);
		},
		// 提交表单内容
		submitForm() {
		  method.handleClose();
		  if (props.rowInfo.name) {
			// 修改
			const id = props.rowInfo;
			emit("editRow", data.formData);
		  } else {
			// 新增
			data.formData["id"] = (props.arrayNum + 1).toString();
			emit("addRow", data.formData);
		  }
			  
			  }
	});
		  const editorInstance = ref(null);
	  onMounted(() => {
		data.formData = Object.assign({}, props.rowInfo);
	  });
		  const imageUrl = ref("");
	  const handlePictureCardPreview = (file: UploadFile) => {};
	  const disabled = ref(false);
	  const handleRemove = (file: UploadFile) => {};
	  const handleDownload = (file: UploadFile) => {};
	  return {
		...toRefs(data),
		...method,
		disabled,
		handleRemove,
		handlePictureCardPreview,
		handleDownload,
		editContvalue,
		nameRules,
		parentBorder,
		childBorder,
			  imageUrl,
			  handleAvatarSuccess,
			  editorInstance,
			  handleAvatar
	  };
	},
  };
  </script>
  
  <style scoped>
  
  
  .avatar-uploader .avatar {
	display: block;
	width: 178px;
	height: 178px;
  }
  </style>
  
  <style lang="scss">
  .avatar-uploader .el-upload {
	position: relative;
	overflow: hidden;
	cursor: pointer;
	border: 1px dashed var(--el-border-color);
	border-radius: 6px;
	transition: var(--el-transition-duration-fast);
  }
  
  .avatar-uploader .el-upload:hover {
	border-color: var(--el-color-primary);
  }
  
  .el-icon.avatar-uploader-icon {
	width: 178px;
	height: 178px;
	font-size: 28px;
	color: #8c939d;
	text-align: center;
  }
  .el-dialog{
	  width:1200px;
  }
  </style>
  