From 9ea5ff67655241271bdf04bb50ca3a8d60c4e22a Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 11 八月 2026 15:07:02 +0800
Subject: [PATCH] fix: 用河南鹤壁代码覆盖山西长治

---
 src/views/collaborativeApproval/notificationManagement/meetApplication/index.vue |  741 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 392 insertions(+), 349 deletions(-)

diff --git a/src/views/collaborativeApproval/notificationManagement/meetApplication/index.vue b/src/views/collaborativeApproval/notificationManagement/meetApplication/index.vue
index ac7a123..b2fb88d 100644
--- a/src/views/collaborativeApproval/notificationManagement/meetApplication/index.vue
+++ b/src/views/collaborativeApproval/notificationManagement/meetApplication/index.vue
@@ -1,148 +1,154 @@
 <template>
-	<div>
-		
-		<!-- 鐢宠绫诲瀷閫夋嫨 -->
-		<el-card class="type-card">
-			<div class="type-selector">
-				<div
-					v-for="type in applicationTypes"
-					:key="type.value"
-					class="type-item"
-					:class="{ active: currentType === type.value }"
-					@click="changeType(type.value)"
-				>
-					<div class="type-icon">
-						<el-icon :size="24"><component :is="type.icon"/></el-icon>
-					</div>
-					<div class="type-info">
-						<div class="type-name">{{ type.name }}</div>
-						<div class="type-desc">{{ type.desc }}</div>
-					</div>
-				</div>
-			</div>
-		</el-card>
-		
-		<!-- 浼氳鐢宠琛ㄥ崟 -->
-		<el-card>
-			<div class="form-header">
-				<h3>{{ getCurrentTypeName() }}鐢宠</h3>
-			</div>
-			
-			<el-form
-				ref="meetingFormRef"
-				:model="meetingForm"
-				:rules="rules"
-				label-width="100px"
-			>
-				<el-row :gutter="20">
-					<el-col :span="12">
-						<el-form-item label="浼氳涓婚" prop="title">
-							<el-input v-model="meetingForm.title" placeholder="璇疯緭鍏ヤ細璁富棰�"/>
-						</el-form-item>
-					</el-col>
-				</el-row>
-				
-				<el-row :gutter="20">
-					<el-col :span="12">
-						<el-form-item label="浼氳瀹�" prop="roomId">
-							<el-select v-model="meetingForm.roomId" placeholder="璇烽�夋嫨浼氳瀹�" style="width: 100%">
-								<el-option
-									v-for="room in meetingRooms"
-									:key="room.id"
-									:label="`${room.name} (${room.location})`"
-									:value="room.id"
-								/>
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :span="12">
-						<el-form-item label="涓绘寔浜�" prop="host">
-							<el-input v-model="meetingForm.host" placeholder="璇疯緭鍏ヤ富鎸佷汉濮撳悕"/>
-						</el-form-item>
-					</el-col>
-				</el-row>
-				
-				<el-row :gutter="20">
-					<el-col :span="12">
-						<el-form-item label="浼氳鏃ユ湡" prop="meetingDate">
-							<el-date-picker
-								v-model="meetingForm.meetingDate"
-								type="date"
-								placeholder="璇烽�夋嫨浼氳鏃ユ湡"
-								value-format="YYYY-MM-DD"
-								format="YYYY-MM-DD"
-								:disabled-date="disabledDate"
-								style="width: 100%"
-							/>
-						</el-form-item>
-					</el-col>
-					<el-col :span="12">
-						<!-- 绌哄垪锛屼繚鎸佸竷灞� -->
-					</el-col>
-				</el-row>
-				
-				<el-row :gutter="20">
-					<el-col :span="12">
-						<el-form-item label="寮�濮嬫椂闂�" prop="startTime">
-							<el-time-picker
-								v-model="meetingForm.startTime"
-								placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
-								format="HH:mm"
-								value-format="HH:mm"
-								:disabled-hours="disabledStartHours"
-								:disabled-minutes="disabledStartMinutes"
-								style="width: 100%"
-							/>
-						</el-form-item>
-					</el-col>
-					<el-col :span="12">
-						<el-form-item label="缁撴潫鏃堕棿" prop="endTime">
-							<el-time-picker
-								v-model="meetingForm.endTime"
-								placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
-								format="HH:mm"
-								value-format="HH:mm"
-								:disabled-hours="disabledEndHours"
-								:disabled-minutes="disabledEndMinutes"
-								style="width: 100%"
-							/>
-						</el-form-item>
-					</el-col>
-				</el-row>
-				
-				<el-form-item label="鍙備細浜哄憳" prop="participants">
-					<el-select
-						v-model="meetingForm.participants"
-						multiple
-						filterable
-						placeholder="璇烽�夋嫨鍙備細浜哄憳"
-						style="width: 100%"
-					>
-						<el-option
-							v-for="person in employees"
-							:key="person.id"
-							:label="`${person.staffName}${person.postName ? ` (${person.postName})` : ''}`"
-							:value="person.id"
-						/>
-					</el-select>
-				</el-form-item>
-				
-				<el-form-item label="浼氳璇存槑" prop="description">
-					<el-input
-						v-model="meetingForm.description"
-						type="textarea"
-						:rows="4"
-						placeholder="璇疯緭鍏ヤ細璁鏄�"
-					/>
-				</el-form-item>
-			</el-form>
-			
-			<div class="form-footer">
-				<el-button @click="resetForm">閲嶇疆</el-button>
-				<el-button type="primary" @click="submitForm">鎻愪氦</el-button>
-			</div>
-		</el-card>
-	</div>
+  <div>
+
+    <!-- 鐢宠绫诲瀷閫夋嫨 -->
+    <el-card class="type-card">
+      <div class="type-selector">
+        <div
+            v-for="type in applicationTypes"
+            :key="type.value"
+            class="type-item"
+            :class="{ active: currentType === type.value }"
+            @click="changeType(type.value)"
+        >
+          <div class="type-icon">
+            <el-icon :size="24"><component :is="type.icon"/></el-icon>
+          </div>
+          <div class="type-info">
+            <div class="type-name">{{ type.name }}</div>
+            <div class="type-desc">{{ type.desc }}</div>
+          </div>
+        </div>
+      </div>
+    </el-card>
+
+    <!-- 浼氳鐢宠琛ㄥ崟 -->
+    <el-card>
+      <div class="form-header">
+        <h3>{{ getCurrentTypeName() }}鐢宠</h3>
+      </div>
+
+      <el-form
+          ref="meetingFormRef"
+          :model="meetingForm"
+          :rules="rules"
+          label-width="100px"
+      >
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="浼氳涓婚" prop="title">
+              <el-input v-model="meetingForm.title" placeholder="璇疯緭鍏ヤ細璁富棰�"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="浼氳瀹�" prop="roomId">
+              <el-select v-model="meetingForm.roomId" placeholder="璇烽�夋嫨浼氳瀹�" style="width: 100%">
+                <el-option
+                    v-for="room in meetingRooms"
+                    :key="room.id"
+                    :label="`${room.name} (${room.location})`"
+                    :value="room.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="涓绘寔浜�" prop="host">
+              <el-input v-model="meetingForm.host" placeholder="璇疯緭鍏ヤ富鎸佷汉濮撳悕"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="浼氳鏃ユ湡" prop="meetingDate">
+              <el-date-picker
+                  v-model="meetingForm.meetingDate"
+                  type="date"
+                  placeholder="璇烽�夋嫨浼氳鏃ユ湡"
+                  value-format="YYYY-MM-DD"
+                  format="YYYY-MM-DD"
+                  :disabled-date="disabledDate"
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <!-- 绌哄垪锛屼繚鎸佸竷灞� -->
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="寮�濮嬫椂闂�" prop="startTime">
+              <el-select
+                  v-model="meetingForm.startTime"
+                  placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
+                  style="width: 100%"
+              >
+                <el-option
+                    v-for="time in startTimeOptions"
+                    :key="time.value"
+                    :label="time.label"
+                    :value="time.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="缁撴潫鏃堕棿" prop="endTime">
+              <el-select
+                  v-model="meetingForm.endTime"
+                  placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
+                  style="width: 100%"
+              >
+                <el-option
+                    v-for="time in endTimeOptions"
+                    :key="time.value"
+                    :label="time.label"
+                    :value="time.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-form-item label="鍙備細浜哄憳" prop="participants">
+          <el-select
+              v-model="meetingForm.participants"
+              multiple
+              filterable
+              placeholder="璇烽�夋嫨鍙備細浜哄憳"
+              style="width: 100%"
+          >
+            <el-option
+                v-for="person in employees"
+                :key="person.id"
+                :label="`${person.staffName}${person.postName ? ` (${person.postName})` : ''}`"
+                :value="person.id"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="浼氳璇存槑" prop="description">
+          <el-input
+              v-model="meetingForm.description"
+              type="textarea"
+              :rows="4"
+              placeholder="璇疯緭鍏ヤ細璁鏄�"
+          />
+        </el-form-item>
+      </el-form>
+
+      <div class="form-footer">
+        <el-button @click="resetForm">閲嶇疆</el-button>
+        <el-button type="primary" @click="submitForm">鎻愪氦</el-button>
+      </div>
+    </el-card>
+  </div>
 </template>
 
 <script setup>
@@ -157,37 +163,37 @@
 
 // 鐢宠绫诲瀷閫夐」
 const applicationTypes = ref([
-	{
-		value: 'approval',
-		name: '瀹℃壒娴佺▼浼氳',
-		desc: '闇�瑕佺粡杩囧绾у鎵圭殑浼氳鐢宠',
-		icon: Document
-	},
-	{
-		value: 'department',
-		name: '閮ㄩ棬绾т細璁�',
-		desc: '閮ㄩ棬鍐呴儴浼氳鐢宠娴佺▼',
-		icon: Promotion
-	},
-	{
-		value: 'notification',
-		name: '浼氳閫氱煡',
-		desc: '鏃犻渶瀹℃壒鐩存帴鍙戝竷鐨勪細璁�氱煡',
-		icon: Bell
-	}
+  {
+    value: 'approval',
+    name: '瀹℃壒娴佺▼浼氳',
+    desc: '闇�瑕佺粡杩囧绾у鎵圭殑浼氳鐢宠',
+    icon: Document
+  },
+  {
+    value: 'department',
+    name: '閮ㄩ棬绾т細璁�',
+    desc: '閮ㄩ棬鍐呴儴浼氳鐢宠娴佺▼',
+    icon: Promotion
+  },
+  {
+    value: 'notification',
+    name: '浼氳閫氱煡',
+    desc: '鏃犻渶瀹℃壒鐩存帴鍙戝竷鐨勪細璁�氱煡',
+    icon: Bell
+  }
 ])
 
 // 琛ㄥ崟鏁版嵁
 const meetingForm = reactive({
-	title: '',
-	type: '',
-	roomId: '',
-	host: '',
-	meetingDate: '',
-	startTime: '',
-	endTime: '',
-	participants: [],
-	description: ''
+  title: '',
+  type: '',
+  roomId: '',
+  host: '',
+  meetingDate: '',
+  startTime: '',
+  endTime: '',
+  participants: [],
+  description: ''
 })
 
 // 琛ㄥ崟寮曠敤
@@ -199,270 +205,307 @@
 // 鍛樺伐鍒楄〃
 const employees = ref([])
 
+// 鏃堕棿閫夐」锛堜互鍗婂皬鏃朵负闂撮殧锛�
+const timeOptions = ref([])
+
 const getTimeInMinutes = (time) => {
-	if (!time) return -1
-	const [hour, minute] = time.split(':').map(Number)
-	return hour * 60 + minute
+  if (!time) return -1
+  const [hour, minute] = time.split(':').map(Number)
+  return hour * 60 + minute
 }
 
 const isToday = (dateText) => {
-	if (!dateText) return false
-	const [year, month, day] = dateText.split('-').map(Number)
-	const now = new Date()
-	return year === now.getFullYear() && month === now.getMonth() + 1 && day === now.getDate()
+  if (!dateText) return false
+  const [year, month, day] = dateText.split('-').map(Number)
+  const now = new Date()
+  return year === now.getFullYear() && month === now.getMonth() + 1 && day === now.getDate()
 }
 
 const validateStartTime = (_rule, value, callback) => {
-	if (!value) {
-		callback()
-		return
-	}
-	callback()
+  if (!value) {
+    callback()
+    return
+  }
+
+  if (isToday(meetingForm.meetingDate)) {
+    const now = new Date()
+    const currentMinutes = now.getHours() * 60 + now.getMinutes()
+    if (getTimeInMinutes(value) > currentMinutes) {
+      callback(new Error('褰撳ぉ寮�濮嬫椂闂翠笉鑳芥櫄浜庡綋鍓嶆椂闂�'))
+      return
+    }
+  }
+
+  callback()
 }
 
 const validateEndTime = (_rule, value, callback) => {
-	if (!value || !meetingForm.startTime) {
-		callback()
-		return
-	}
-	if (getTimeInMinutes(value) <= getTimeInMinutes(meetingForm.startTime)) {
-		callback(new Error('缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂�'))
-		return
-	}
-	callback()
+  if (!value || !meetingForm.startTime) {
+    callback()
+    return
+  }
+
+  if (getTimeInMinutes(value) <= getTimeInMinutes(meetingForm.startTime)) {
+    callback(new Error('缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂�'))
+    return
+  }
+
+  callback()
 }
 
+// 琛ㄥ崟鏍¢獙瑙勫垯
 const rules = {
-	title: [{required: true, message: '璇疯緭鍏ヤ細璁富棰�', trigger: 'blur'}],
-	roomId: [{required: true, message: '璇烽�夋嫨浼氳瀹�', trigger: 'change'}],
-	host: [{required: true, message: '璇疯緭鍏ヤ富鎸佷汉', trigger: 'blur'}],
-	meetingDate: [{required: true, message: '璇烽�夋嫨浼氳鏃ユ湡', trigger: 'change'}],
-	startTime: [
-		{required: true, message: '璇烽�夋嫨寮�濮嬫椂闂�', trigger: 'change'},
-		{validator: validateStartTime, trigger: 'change'}
-	],
-	endTime: [
-		{required: true, message: '璇烽�夋嫨缁撴潫鏃堕棿', trigger: 'change'},
-		{validator: validateEndTime, trigger: 'change'}
-	],
-	participants: [{required: true, message: '璇烽�夋嫨鍙備細浜哄憳', trigger: 'change'}]
+  title: [{required: true, message: '璇疯緭鍏ヤ細璁富棰�', trigger: 'blur'}],
+  roomId: [{required: true, message: '璇烽�夋嫨浼氳瀹�', trigger: 'change'}],
+  host: [{required: true, message: '璇疯緭鍏ヤ富鎸佷汉', trigger: 'blur'}],
+  meetingDate: [{required: true, message: '璇烽�夋嫨浼氳鏃ユ湡', trigger: 'change'}],
+  startTime: [
+    {required: true, message: '璇烽�夋嫨寮�濮嬫椂闂�', trigger: 'change'},
+    {validator: validateStartTime, trigger: 'change'}
+  ],
+  endTime: [
+    {required: true, message: '璇烽�夋嫨缁撴潫鏃堕棿', trigger: 'change'},
+    {validator: validateEndTime, trigger: 'change'}
+  ],
+  participants: [{required: true, message: '璇烽�夋嫨鍙備細浜哄憳', trigger: 'change'}]
 }
 
-// 鏃堕棿閫夋嫨鍣ㄧ鐢ㄩ�昏緫
-const disabledStartHours = () => {
-	const hours = []
-	for (let h = 0; h < 24; h++) {
-		if (h < 8 || h > 18) hours.push(h)
-	}
-	if (isToday(meetingForm.meetingDate)) {
-		const now = new Date()
-		for (let h = 8; h < now.getHours(); h++) {
-			if (!hours.includes(h)) hours.push(h)
-		}
-	}
-	return hours
+const startTimeOptions = computed(() => {
+  if (!isToday(meetingForm.meetingDate)) {
+    return timeOptions.value
+  }
+  const now = new Date()
+  const currentMinutes = now.getHours() * 60 + now.getMinutes()
+  return timeOptions.value.filter(item => getTimeInMinutes(item.value) <= currentMinutes)
+})
+
+const endTimeOptions = computed(() => {
+  if (!meetingForm.startTime) {
+    return timeOptions.value
+  }
+  const startMinutes = getTimeInMinutes(meetingForm.startTime)
+  return timeOptions.value.filter(item => getTimeInMinutes(item.value) > startMinutes)
+})
+
+// 鍒濆鍖栨椂闂撮�夐」
+const initTimeOptions = () => {
+  const options = []
+  const now = new Date()
+  const currentHour = now.getHours()
+  const currentMinute = now.getMinutes()
+  // meetingDate 鏄� "yyyy-MM-dd"
+  const meetingDate = new Date(meetingForm.meetingDate)
+
+  const isSameDay =
+    now.getFullYear() === meetingDate.getFullYear() &&
+    now.getMonth() === meetingDate.getMonth() &&
+    now.getDate() === meetingDate.getDate()
+
+  console.log('鏄惁鍚屼竴澶�:', isSameDay)
+  for (let hour = 8; hour <= 18; hour++) {
+    // 寮�濮嬫椂闂村繀椤绘櫄浜庡綋鍓嶆椂闂�
+    if (hour < currentHour && isSameDay) {
+      continue
+    }
+    if (hour === currentHour && currentMinute > 30 && isSameDay) {
+      continue
+    }
+    // 姣忎釜灏忔椂娣诲姞涓や釜閫夐」锛氭暣鐐瑰拰鍗婄偣
+    options.push({
+      value: `${hour.toString().padStart(2, '0')}:00`,
+      label: `${hour.toString().padStart(2, '0')}:00`
+    })
+
+    if (hour < 18) { // 18:00涔嬪悗娌℃湁鍗婄偣閫夐」
+      options.push({
+        value: `${hour.toString().padStart(2, '0')}:30`,
+        label: `${hour.toString().padStart(2, '0')}:30`
+      })
+    }
+  }
+  timeOptions.value = options
 }
 
-const disabledStartMinutes = (hour) => {
-	const minutes = []
-	for (let m = 0; m < 60; m++) {
-		if (m !== 0 && m !== 30) minutes.push(m)
-	}
-	if (isToday(meetingForm.meetingDate)) {
-		const now = new Date()
-		if (hour === now.getHours()) {
-			if (now.getMinutes() >= 30) {
-				minutes.push(0)
-			}
-		}
-	}
-	return minutes
-}
-
-const disabledEndHours = () => {
-	const hours = []
-	for (let h = 0; h < 24; h++) {
-		if (h < 8 || h > 18) hours.push(h)
-	}
-	if (meetingForm.startTime) {
-		const startHour = parseInt(meetingForm.startTime.split(':')[0])
-		for (let h = 8; h < startHour; h++) {
-			if (!hours.includes(h)) hours.push(h)
-		}
-	}
-	return hours
-}
-
-const disabledEndMinutes = (hour) => {
-	const minutes = []
-	for (let m = 0; m < 60; m++) {
-		if (m !== 0 && m !== 30) minutes.push(m)
-	}
-	if (meetingForm.startTime) {
-		const startHour = parseInt(meetingForm.startTime.split(':')[0])
-		const startMinute = parseInt(meetingForm.startTime.split(':')[1])
-		if (hour === startHour) {
-			if (startMinute >= 0) minutes.push(0)
-			if (startMinute >= 30) minutes.push(30)
-			// only keep minutes > startMinute
-			for (let m = 0; m <= startMinute; m++) {
-				if (!minutes.includes(m)) minutes.push(m)
-			}
-		}
-	}
-	return minutes
-}
+watch(() => meetingForm.meetingDate, () => {
+  if (meetingForm.startTime && !startTimeOptions.value.some(item => item.value === meetingForm.startTime)) {
+    meetingForm.startTime = ''
+  }
+  if (meetingForm.endTime && !endTimeOptions.value.some(item => item.value === meetingForm.endTime)) {
+    meetingForm.endTime = ''
+  }
+  if (meetingForm.startTime) {
+    meetingFormRef.value?.validateField('startTime')
+  }
+  if (meetingForm.endTime) {
+    meetingFormRef.value?.validateField('endTime')
+  }
+  initTimeOptions()
+})
 
 watch(() => meetingForm.startTime, () => {
-	if (meetingForm.endTime && getTimeInMinutes(meetingForm.endTime) <= getTimeInMinutes(meetingForm.startTime)) {
-		meetingForm.endTime = ''
-	}
-	if (meetingForm.endTime) {
-		meetingFormRef.value?.validateField('endTime')
-	}
-	
+  if (meetingForm.endTime && getTimeInMinutes(meetingForm.endTime) <= getTimeInMinutes(meetingForm.startTime)) {
+    meetingForm.endTime = ''
+  }
+  if (meetingForm.endTime) {
+    meetingFormRef.value?.validateField('endTime')
+  }
+  
 })
 
 // 绂佺敤鏃ユ湡锛堢鐢ㄤ粖澶╀箣鍓嶇殑鏃ユ湡锛�
 const disabledDate = (time) => {
-	// 绂佺敤浠婂ぉ涔嬪墠鐨勬棩鏈�
-	return time.getTime() < Date.now() - 86400000
+  // 绂佺敤浠婂ぉ涔嬪墠鐨勬棩鏈�
+  return time.getTime() < Date.now() - 86400000
 }
 
 // 鍒囨崲鐢宠绫诲瀷
 const changeType = (type) => {
-	currentType.value = type
+  currentType.value = type
 }
 
 // 鑾峰彇褰撳墠绫诲瀷鍚嶇О
 const getCurrentTypeName = () => {
-	const type = applicationTypes.value.find(t => t.value === currentType.value)
-	return type ? type.name : ''
+  const type = applicationTypes.value.find(t => t.value === currentType.value)
+  return type ? type.name : ''
 }
 
 // 閲嶇疆琛ㄥ崟
 const resetForm = () => {
-	meetingFormRef.value?.resetFields()
+  meetingFormRef.value?.resetFields()
 }
 
 // 鎻愪氦琛ㄥ崟
 const submitForm = () => {
-	meetingFormRef.value?.validate((valid) => {
-		if (valid) {
-			
-			let formData = {...meetingForm}
-			formData.applicationType = currentType.value
-			formData.startTime = `${meetingForm.meetingDate} ${meetingForm.startTime}:00`
-			formData.endTime = `${meetingForm.meetingDate} ${meetingForm.endTime}:00`
-			formData.participants = JSON.stringify(formData.participants)
-			console.log(formData)
-			saveMeetingApplication(formData).then(() => {
-				
-				// 妯℃嫙鎻愪氦鎿嶄綔
-				ElMessage.success(`${getCurrentTypeName()}鎻愪氦鎴愬姛`)
-				resetForm()
-			})
-			
-		}
-	})
+  meetingFormRef.value?.validate((valid) => {
+    if (valid) {
+
+      let formData = {...meetingForm}
+      formData.applicationType = currentType.value
+      formData.startTime = `${meetingForm.meetingDate} ${meetingForm.startTime}:00`
+      formData.endTime = `${meetingForm.meetingDate} ${meetingForm.endTime}:00`
+      formData.participants = JSON.stringify(formData.participants)
+      console.log(formData)
+      saveMeetingApplication(formData).then(() => {
+
+        // 妯℃嫙鎻愪氦鎿嶄綔
+        ElMessage.success(`${getCurrentTypeName()}鎻愪氦鎴愬姛`)
+
+        // 鏍规嵁涓嶅悓绫诲瀷鎵ц涓嶅悓鎿嶄綔
+        switch (currentType.value) {
+          case 'approval':
+            ElMessage.info('浼氳宸叉彁浜ゅ鎵规祦绋�')
+            break
+          case 'department':
+            ElMessage.info('閮ㄩ棬绾т細璁敵璇峰凡鎻愪氦')
+            break
+          case 'notification':
+            ElMessage.info('浼氳閫氱煡宸插彂甯�')
+            break
+        }
+        resetForm()
+      })
+
+    }
+  })
 }
 
 // 椤甸潰鍔犺浇鏃跺垵濮嬪寲
 onMounted(() => {
-	getRoomEnum().then(res => {
-		meetingRooms.value = res.data
-	})
-	staffOnJobListPage({
-		current: -1,
-		size: -1,
-		staffState: 1
-	}).then(res => {
-		employees.value = res.data.records.sort((a, b) => (a.postName || '').localeCompare(b.postName || ''))
-	})
+  initTimeOptions()
+  getRoomEnum().then(res => {
+    meetingRooms.value = res.data
+  })
+  staffOnJobListPage({
+    current: -1,
+    size: -1,
+    staffState: 1
+  }).then(res => {
+    employees.value = res.data.records.sort((a, b) => (a.postName || '').localeCompare(b.postName || ''))
+  })
 })
 </script>
 
 <style scoped>
 .app-container {
-	padding: 20px;
+  padding: 20px;
 }
 
 .page-header {
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	margin-bottom: 20px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20px;
 }
 
 .page-header h2 {
-	margin: 0;
-	color: #303133;
+  margin: 0;
+  color: #303133;
 }
 
 .type-card {
-	margin-bottom: 20px;
+  margin-bottom: 20px;
 }
 
 .type-selector {
-	display: flex;
-	gap: 20px;
+  display: flex;
+  gap: 20px;
 }
 
 .type-item {
-	flex: 1;
-	display: flex;
-	align-items: center;
-	padding: 20px;
-	border: 1px solid #ebeef5;
-	border-radius: 8px;
-	cursor: pointer;
-	transition: all 0.3s;
+  flex: 1;
+  display: flex;
+  align-items: center;
+  padding: 20px;
+  border: 1px solid #ebeef5;
+  border-radius: 8px;
+  cursor: pointer;
+  transition: all 0.3s;
 }
 
 .type-item:hover {
-	border-color: #409eff;
-	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  border-color: #409eff;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 }
 
 .type-item.active {
-	border-color: #409eff;
-	background-color: #ecf5ff;
+  border-color: #409eff;
+  background-color: #ecf5ff;
 }
 
 .type-icon {
-	margin-right: 15px;
-	color: #409eff;
+  margin-right: 15px;
+  color: #409eff;
 }
 
 .type-name {
-	font-size: 16px;
-	font-weight: 500;
-	color: #303133;
-	margin-bottom: 5px;
+  font-size: 16px;
+  font-weight: 500;
+  color: #303133;
+  margin-bottom: 5px;
 }
 
 .type-desc {
-	font-size: 14px;
-	color: #909399;
+  font-size: 14px;
+  color: #909399;
 }
 
 .form-header {
-	margin-bottom: 20px;
-	padding-bottom: 15px;
-	border-bottom: 1px solid #ebeef5;
+  margin-bottom: 20px;
+  padding-bottom: 15px;
+  border-bottom: 1px solid #ebeef5;
 }
 
 .form-header h3 {
-	margin: 0;
-	color: #303133;
+  margin: 0;
+  color: #303133;
 }
 
 .form-footer {
-	display: flex;
-	justify-content: flex-end;
-	gap: 10px;
-	margin-top: 30px;
-	padding-top: 20px;
-	border-top: 1px solid #ebeef5;
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  margin-top: 30px;
+  padding-top: 20px;
+  border-top: 1px solid #ebeef5;
 }
 </style>

--
Gitblit v1.9.3