Procházet zdrojové kódy

赛事专区和旅游

wengan01 před 1 týdnem
rodič
revize
b9047c3b2f
1 změnil soubory, kde provedl 34 přidání a 1 odebrání
  1. 34 1
      src/views/content/travelRecommendation/index.vue

+ 34 - 1
src/views/content/travelRecommendation/index.vue

@@ -162,7 +162,16 @@
 
         <!-- 开放时间 -->
         <el-form-item label="开放时间" prop="openTime">
-          <el-input v-model="form.openTime" placeholder="空则不显示" />
+          <el-time-picker
+            v-model="openTimeRange"
+            is-range
+            format="HH:mm"
+            range-separator="至"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+            style="width: 100%"
+          />
+          <div class="form-tip">不选则APP端不显示</div>
         </el-form-item>
 
         <!-- 联系电话 -->
@@ -310,6 +319,7 @@ const initForm = {
   contentImages: []
 };
 const form = ref({ ...initForm, contentImages: [] });
+const openTimeRange = ref(null);
 
 const rules = {
   title: [{ required: true, message: '标题不能为空', trigger: 'blur' }]
@@ -628,6 +638,7 @@ function handleDelete(row) {
 // ========== 新增/修改 ==========
 function handleAdd() {
   form.value = { ...initForm, contentImages: [] };
+  openTimeRange.value = null;
   dialogTitle.value = '新增旅游推荐';
   dialogVisible.value = true;
 }
@@ -651,6 +662,21 @@ async function handleUpdate(row) {
       status: data.status || '0',
       contentImages: (data.imageList || []).map(img => img.imageUrl)
     };
+    // 解析开放时间字符串为时间范围选择器值
+    if (data.openTime) {
+      const parts = data.openTime.split(/[-–~至]/);
+      if (parts.length === 2) {
+        const [sh, sm] = parts[0].trim().split(':').map(Number);
+        const [eh, em] = parts[1].trim().split(':').map(Number);
+        const start = new Date(); start.setHours(sh || 0, sm || 0, 0, 0);
+        const end = new Date(); end.setHours(eh || 0, em || 0, 0, 0);
+        openTimeRange.value = [start, end];
+      } else {
+        openTimeRange.value = null;
+      }
+    } else {
+      openTimeRange.value = null;
+    }
     dialogTitle.value = '修改旅游推荐';
     dialogVisible.value = true;
   } catch (err) {
@@ -661,6 +687,13 @@ async function handleUpdate(row) {
 function submitForm() {
   formRef.value.validate(async (valid) => {
     if (!valid) return;
+    // 将时间选择器的值转为字符串存入openTime
+    if (openTimeRange.value && openTimeRange.value.length === 2) {
+      const fmt = (d) => `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;
+      form.value.openTime = `${fmt(openTimeRange.value[0])}-${fmt(openTimeRange.value[1])}`;
+    } else {
+      form.value.openTime = '';
+    }
     try {
       if (form.value.id) {
         await updateTravelRecommendation(form.value);