| 
					
				 | 
			
			
				@@ -0,0 +1,408 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="app-container" ref="appContainer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <ServerPropTable :loading="loading" @selection-change="selectionChange" :columns="column" :data="list" @reset="reset" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @onSubmit="onSubmit"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <template v-slot:btn> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div style="display: flex; justify-content: flex-end"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button type="primary" @click="add" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ><el-icon><plus /></el-icon> 添加</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button type="danger" @click="batchDelete"><el-icon> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <delete /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-icon>删除</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <template v-slot:operation="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" size="small" icon="Edit" @click="edit(scope.row)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button @click="del(scope.row)" type="danger" size="small" icon="Delete"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </ServerPropTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-dialog v-model="dialogVisible" :title='title' width="50%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :size="formSize"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="ID" prop="id"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input readonly v-model="ruleForm.id" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人服务器ID" prop="toServerIds"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.toServerIds" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人角色ID" prop="toPlayerIds"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.toPlayerIds" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人等级条件" prop="levelCondition"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.levelCondition" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人道具条件" prop="itemCondition"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.itemCondition" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人英雄条件" prop="heroCondition"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.heroCondition" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="收件人角色创建时间"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="11"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item prop="roleCreateTimeStart"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-date-picker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-model="ruleForm.roleCreateTimeStart" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  type="datetime" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  placeholder="选择起始时间" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col class="text-center" :span="2" style="text-align: center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="text-gray-500">-</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="11"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item prop="roleCreateTimeEnd"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-date-picker v-model="ruleForm.roleCreateTimeEnd"  type="datetime" placeholder="选择截止时间" style="width: 100%" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="邮件标题" prop="title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.title" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="发送者名称" prop="sendName"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.sendName" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="邮件道具" prop="itemInfo"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.itemInfo" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="邮件生效时间" required> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="11"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item prop="validTime"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-date-picker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-model="ruleForm.validTime" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  type="datetime" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  placeholder="选择开始时间" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col class="text-center" :span="2" style="text-align: center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="text-gray-500">-</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="11"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item prop="invalidTime"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-date-picker v-model="ruleForm.invalidTime"  type="datetime" placeholder="选择结束时间" style="width: 100%" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="邮件内容" prop="content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="ruleForm.content" :rows="10" type="textarea" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <template #footer> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button @click="dialogVisible = false">取消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-button type="primary" @click="handleClose(ruleFormRef)">确定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script lang="ts" setup name="comprehensive"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, reactive, onMounted, nextTick } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ElMessage, ElMessageBox } from 'element-plus' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import type { FormInstance } from 'element-plus' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const loading = ref(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const appContainer = ref(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ServerPropTable from '@/components/Table/ServerPropTable/index.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const data = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for (let i = 0; i < 100; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    id: i + 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: 'GM邮件' + (i+1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    validTime: '2023-08-21 10:00:00', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    invalidTime: '2023-09-21 10:00:00', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    itemInfo: '1002-100,1001-200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sendName: '深渊联盟', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    toServerIds: '1,2,3,4,5', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    toPlayerIds: '10000001, 10000001', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const column = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { type: 'selection', width: 60, fixed: 'left' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'id', label: 'ID', width: 80 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'title', label: '邮件标题', inSearch: true, valueType: 'input' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'validTime', label: '邮件生效时间'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'invalidTime', label: '邮件失效时间'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'itemInfo', label: '邮件道具'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'sendName', label: '发送者名称'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'toServerIds', label: '收件人服务器ID'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'toPlayerIds', label: '收件人玩家ID'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { name: 'operation', slot: true, fixed: 'right', width: 200, label: '操作' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const list = ref(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const formSize = ref('default') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ruleFormRef = ref<FormInstance>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ruleForm = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    id: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    validTime: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    invalidTime: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    itemInfo: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sendName: '深渊联盟', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    toServerIds: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    toPlayerIds: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    levelCondition: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    itemCondition: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    heroCondition: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    roleCreateTimeStart: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    roleCreateTimeEnd: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    content: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const rules = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  toServerIds: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人服务器ID', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  toPlayerIds: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人角色ID', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  levelCondition: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人等级条件', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  itemCondition: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人道具条件', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  heroCondition: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人英雄条件', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  roleCreateTimeStart: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'date', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人角色创建起始时间', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  roleCreateTimeEnd: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'date', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入收件人角色创建截至时间', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  title: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入邮件标题', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  sendName: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入发送者名称', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  itemInfo: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入邮件道具', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  validTime : [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'date', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请选择邮件生效时间', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  invalidTime: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: 'date', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请选择邮件失效时间', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  content: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: '请输入邮件内容', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      trigger: 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const dialogVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const rowObj = ref({}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const selectObj = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const title = ref('编辑') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const add = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  title.value = '新增' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  dialogVisible.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleClose = async (done: () => void) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  await ruleFormRef.value.validate((valid, fields) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list.value.forEach((item) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (item.id === rowObj.value.id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.toServerIds = ruleForm.toServerIds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.toPlayerIds = ruleForm.toPlayerIds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.levelCondition = ruleForm.levelCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.itemCondition = ruleForm.itemCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.heroCondition = ruleForm.heroCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.roleCreateTimeStart = ruleForm.roleCreateTimeStart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.roleCreateTimeEnd = ruleForm.roleCreateTimeEnd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.title = ruleForm.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.sendName = ruleForm.sendName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.itemInfo = ruleForm.itemInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.validTime = ruleForm.validTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.invalidTime = ruleForm.invalidTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.content = ruleForm.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dialogVisible.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('submit!', ruleForm.title) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('error submit!', fields) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const batchDelete = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!selectObj.value.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return ElMessage.error('未选中任何行') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ElMessageBox.confirm('你确定要删除选中项吗?', '温馨提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    confirmButtonText: '确定', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cancelButtonText: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    type: 'warning', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    draggable: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ElMessage.success('模拟删除成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list.value = list.value.concat([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .catch(() => { }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const selectionChange = (val) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  selectObj.value = val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const edit = (row) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  rowObj.value = row 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  dialogVisible.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.id = row.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.toServerIds = row.toServerIds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.toPlayerIds = row.toPlayerIds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.levelCondition = row.levelCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.itemCondition = row.itemCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.heroCondition = row.heroCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.roleCreateTimeStart = row.roleCreateTimeStart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.roleCreateTimeEnd = row.roleCreateTimeEnd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.title = row.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.sendName = row.sendName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.itemInfo = row.itemInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.validTime = row.validTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.invalidTime = row.invalidTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ruleForm.content = row.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const del = (row) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log('row==', row) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ElMessageBox.confirm('你确定要删除当前项吗?', '温馨提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    confirmButtonText: '确定', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cancelButtonText: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    type: 'warning', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    draggable: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      list.value = list.value.filter((item) => item.id !== row.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ElMessage.success('删除成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .catch(() => { }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const reset = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  loading.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ElMessage.success('触发重置方法') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const onSubmit = (val) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log('val===', val) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ElMessage.success('触发查询方法') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  loading.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const onUpdate = (val) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log('val===', val) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ElMessage.success('触发修改方法') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  loading.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const getHeight = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let data = appContainer.value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.edit-input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding-right: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.app-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.cancel-btn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  right: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |