From 661e8cf7b40d79d2024969e56f04100b31abef1a Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Wed, 11 Feb 2026 15:38:13 +0800
Subject: [PATCH] 优化字典类型属性提醒说明

---
 ruoyi-ui/src/components/Crontab/index.vue |  261 ++++++++++++++++++++++++++-------------------------
 1 files changed, 133 insertions(+), 128 deletions(-)

diff --git a/ruoyi-ui/src/components/Crontab/index.vue b/ruoyi-ui/src/components/Crontab/index.vue
index 629bad7..395f615 100644
--- a/ruoyi-ui/src/components/Crontab/index.vue
+++ b/ruoyi-ui/src/components/Crontab/index.vue
@@ -2,59 +2,64 @@
   <div>
     <el-tabs type="border-card">
       <el-tab-pane label="秒" v-if="shouldHide('second')">
-        <CrontabSecond @update="updateContabValue" :check="checkNumber" ref="cronsecond" />
+        <CrontabSecond
+          @update="updateCrontabValue"
+          :check="checkNumber"
+          :cron="crontabValueObj"
+          ref="cronsecond"
+        />
       </el-tab-pane>
 
       <el-tab-pane label="分钟" v-if="shouldHide('min')">
         <CrontabMin
-          @update="updateContabValue"
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
+          :cron="crontabValueObj"
           ref="cronmin"
         />
       </el-tab-pane>
 
       <el-tab-pane label="小时" v-if="shouldHide('hour')">
         <CrontabHour
-          @update="updateContabValue"
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
+          :cron="crontabValueObj"
           ref="cronhour"
         />
       </el-tab-pane>
 
       <el-tab-pane label="日" v-if="shouldHide('day')">
         <CrontabDay
-          @update="updateContabValue"
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
+          :cron="crontabValueObj"
           ref="cronday"
         />
       </el-tab-pane>
 
-      <el-tab-pane label="月" v-if="shouldHide('mouth')">
-        <CrontabMouth
-          @update="updateContabValue"
+      <el-tab-pane label="月" v-if="shouldHide('month')">
+        <CrontabMonth
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
-          ref="cronmouth"
+          :cron="crontabValueObj"
+          ref="cronmonth"
         />
       </el-tab-pane>
 
       <el-tab-pane label="周" v-if="shouldHide('week')">
         <CrontabWeek
-          @update="updateContabValue"
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
+          :cron="crontabValueObj"
           ref="cronweek"
         />
       </el-tab-pane>
 
       <el-tab-pane label="年" v-if="shouldHide('year')">
         <CrontabYear
-          @update="updateContabValue"
+          @update="updateCrontabValue"
           :check="checkNumber"
-          :cron="contabValueObj"
+          :cron="crontabValueObj"
           ref="cronyear"
         />
       </el-tab-pane>
@@ -70,33 +75,33 @@
           </thead>
           <tbody>
             <td>
-              <span>{{contabValueObj.second}}</span>
+              <span>{{crontabValueObj.second}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.min}}</span>
+              <span>{{crontabValueObj.min}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.hour}}</span>
+              <span>{{crontabValueObj.hour}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.day}}</span>
+              <span>{{crontabValueObj.day}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.mouth}}</span>
+              <span>{{crontabValueObj.month}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.week}}</span>
+              <span>{{crontabValueObj.week}}</span>
             </td>
             <td>
-              <span>{{contabValueObj.year}}</span>
+              <span>{{crontabValueObj.year}}</span>
             </td>
             <td>
-              <span>{{contabValueString}}</span>
+              <span>{{crontabValueString}}</span>
             </td>
           </tbody>
         </table>
       </div>
-      <CrontabResult :ex="contabValueString"></CrontabResult>
+      <CrontabResult :ex="crontabValueString"></CrontabResult>
 
       <div class="pop_btn">
         <el-button size="small" type="primary" @click="submitFill">确定</el-button>
@@ -108,14 +113,14 @@
 </template>
 
 <script>
-import CrontabSecond from "./second.vue";
-import CrontabMin from "./min.vue";
-import CrontabHour from "./hour.vue";
-import CrontabDay from "./day.vue";
-import CrontabMouth from "./mouth.vue";
-import CrontabWeek from "./week.vue";
-import CrontabYear from "./year.vue";
-import CrontabResult from "./result.vue";
+import CrontabSecond from "./second.vue"
+import CrontabMin from "./min.vue"
+import CrontabHour from "./hour.vue"
+import CrontabDay from "./day.vue"
+import CrontabMonth from "./month.vue"
+import CrontabWeek from "./week.vue"
+import CrontabYear from "./year.vue"
+import CrontabResult from "./result.vue"
 
 export default {
   data() {
@@ -123,28 +128,28 @@
       tabTitles: ["秒", "分钟", "小时", "日", "月", "周", "年"],
       tabActive: 0,
       myindex: 0,
-      contabValueObj: {
+      crontabValueObj: {
         second: "*",
         min: "*",
         hour: "*",
         day: "*",
-        mouth: "*",
+        month: "*",
         week: "?",
         year: "",
       },
-    };
+    }
   },
   name: "vcrontab",
   props: ["expression", "hideComponent"],
   methods: {
     shouldHide(key) {
-      if (this.hideComponent && this.hideComponent.includes(key)) return false;
-      return true;
+      if (this.hideComponent && this.hideComponent.includes(key)) return false
+      return true
     },
     resolveExp() {
-      //反解析 表达式
+      // 反解析 表达式
       if (this.expression) {
-        let arr = this.expression.split(" ");
+        let arr = this.expression.split(" ")
         if (arr.length >= 6) {
           //6 位以上是合法表达式
           let obj = {
@@ -152,180 +157,180 @@
             min: arr[1],
             hour: arr[2],
             day: arr[3],
-            mouth: arr[4],
+            month: arr[4],
             week: arr[5],
             year: arr[6] ? arr[6] : "",
-          };
-          this.contabValueObj = {
+          }
+          this.crontabValueObj = {
             ...obj,
-          };
+          }
           for (let i in obj) {
-            if (obj[i]) this.changeRadio(i, obj[i]);
+            if (obj[i]) this.changeRadio(i, obj[i])
           }
         }
       } else {
-        //没有传入的表达式 则还原
-        this.clearCron();
+        // 没有传入的表达式 则还原
+        this.clearCron()
       }
     },
     // tab切换值
     tabCheck(index) {
-      this.tabActive = index;
+      this.tabActive = index
     },
     // 由子组件触发,更改表达式组成的字段值
-    updateContabValue(name, value, from) {
-      "updateContabValue", name, value, from;
-      this.contabValueObj[name] = value;
+    updateCrontabValue(name, value, from) {
+      "updateCrontabValue", name, value, from
+      this.crontabValueObj[name] = value
       if (from && from !== name) {
-        console.log(`来自组件 ${from} 改变了 ${name} ${value}`);
-        this.changeRadio(name, value);
+        console.log(`来自组件 ${from} 改变了 ${name} ${value}`)
+        this.changeRadio(name, value)
       }
     },
-    //赋值到组件
+    // 赋值到组件
     changeRadio(name, value) {
-      let arr = ["second", "min", "hour", "mouth"],
+      let arr = ["second", "min", "hour", "month"],
         refName = "cron" + name,
-        insVlaue;
+        insValue
 
-      if (!this.$refs[refName]) return;
+      if (!this.$refs[refName]) return
 
       if (arr.includes(name)) {
         if (value === "*") {
-          insVlaue = 1;
+          insValue = 1
         } else if (value.indexOf("-") > -1) {
-          let indexArr = value.split("-");
+          let indexArr = value.split("-")
           isNaN(indexArr[0])
             ? (this.$refs[refName].cycle01 = 0)
-            : (this.$refs[refName].cycle01 = indexArr[0]);
-          this.$refs[refName].cycle02 = indexArr[1];
-          insVlaue = 2;
+            : (this.$refs[refName].cycle01 = indexArr[0])
+          this.$refs[refName].cycle02 = indexArr[1]
+          insValue = 2
         } else if (value.indexOf("/") > -1) {
-          let indexArr = value.split("/");
+          let indexArr = value.split("/")
           isNaN(indexArr[0])
             ? (this.$refs[refName].average01 = 0)
-            : (this.$refs[refName].average01 = indexArr[0]);
-          this.$refs[refName].average02 = indexArr[1];
-          insVlaue = 3;
+            : (this.$refs[refName].average01 = indexArr[0])
+          this.$refs[refName].average02 = indexArr[1]
+          insValue = 3
         } else {
-          insVlaue = 4;
-          this.$refs[refName].checkboxList = value.split(",");
+          insValue = 4
+          this.$refs[refName].checkboxList = value.split(",")
         }
       } else if (name == "day") {
         if (value === "*") {
-          insVlaue = 1;
+          insValue = 1
         } else if (value == "?") {
-          insVlaue = 2;
+          insValue = 2
         } else if (value.indexOf("-") > -1) {
-          let indexArr = value.split("-");
+          let indexArr = value.split("-")
           isNaN(indexArr[0])
             ? (this.$refs[refName].cycle01 = 0)
-            : (this.$refs[refName].cycle01 = indexArr[0]);
-          this.$refs[refName].cycle02 = indexArr[1];
-          insVlaue = 3;
+            : (this.$refs[refName].cycle01 = indexArr[0])
+          this.$refs[refName].cycle02 = indexArr[1]
+          insValue = 3
         } else if (value.indexOf("/") > -1) {
-          let indexArr = value.split("/");
+          let indexArr = value.split("/")
           isNaN(indexArr[0])
             ? (this.$refs[refName].average01 = 0)
-            : (this.$refs[refName].average01 = indexArr[0]);
-          this.$refs[refName].average02 = indexArr[1];
-          insVlaue = 4;
+            : (this.$refs[refName].average01 = indexArr[0])
+          this.$refs[refName].average02 = indexArr[1]
+          insValue = 4
         } else if (value.indexOf("W") > -1) {
-          let indexArr = value.split("W");
+          let indexArr = value.split("W")
           isNaN(indexArr[0])
             ? (this.$refs[refName].workday = 0)
-            : (this.$refs[refName].workday = indexArr[0]);
-          insVlaue = 5;
+            : (this.$refs[refName].workday = indexArr[0])
+          insValue = 5
         } else if (value === "L") {
-          insVlaue = 6;
+          insValue = 6
         } else {
-          this.$refs[refName].checkboxList = value.split(",");
-          insVlaue = 7;
+          this.$refs[refName].checkboxList = value.split(",")
+          insValue = 7
         }
       } else if (name == "week") {
         if (value === "*") {
-          insVlaue = 1;
+          insValue = 1
         } else if (value == "?") {
-          insVlaue = 2;
+          insValue = 2
         } else if (value.indexOf("-") > -1) {
-          let indexArr = value.split("-");
+          let indexArr = value.split("-")
           isNaN(indexArr[0])
             ? (this.$refs[refName].cycle01 = 0)
-            : (this.$refs[refName].cycle01 = indexArr[0]);
-          this.$refs[refName].cycle02 = indexArr[1];
-          insVlaue = 3;
+            : (this.$refs[refName].cycle01 = indexArr[0])
+          this.$refs[refName].cycle02 = indexArr[1]
+          insValue = 3
         } else if (value.indexOf("#") > -1) {
-          let indexArr = value.split("#");
+          let indexArr = value.split("#")
           isNaN(indexArr[0])
             ? (this.$refs[refName].average01 = 1)
-            : (this.$refs[refName].average01 = indexArr[0]);
-          this.$refs[refName].average02 = indexArr[1];
-          insVlaue = 4;
+            : (this.$refs[refName].average01 = indexArr[0])
+          this.$refs[refName].average02 = indexArr[1]
+          insValue = 4
         } else if (value.indexOf("L") > -1) {
-          let indexArr = value.split("L");
+          let indexArr = value.split("L")
           isNaN(indexArr[0])
             ? (this.$refs[refName].weekday = 1)
-            : (this.$refs[refName].weekday = indexArr[0]);
-          insVlaue = 5;
+            : (this.$refs[refName].weekday = indexArr[0])
+          insValue = 5
         } else {
-          this.$refs[refName].checkboxList = value.split(",");
-          insVlaue = 7;
+          this.$refs[refName].checkboxList = value.split(",")
+          insValue = 6
         }
       } else if (name == "year") {
         if (value == "") {
-          insVlaue = 1;
+          insValue = 1
         } else if (value == "*") {
-          insVlaue = 2;
+          insValue = 2
         } else if (value.indexOf("-") > -1) {
-          insVlaue = 3;
+          insValue = 3
         } else if (value.indexOf("/") > -1) {
-          insVlaue = 4;
+          insValue = 4
         } else {
-          this.$refs[refName].checkboxList = value.split(",");
-          insVlaue = 5;
+          this.$refs[refName].checkboxList = value.split(",")
+          insValue = 5
         }
       }
-      this.$refs[refName].radioValue = insVlaue;
+      this.$refs[refName].radioValue = insValue
     },
     // 表单选项的子组件校验数字格式(通过-props传递)
     checkNumber(value, minLimit, maxLimit) {
-      //检查必须为整数
-      value = Math.floor(value);
+      // 检查必须为整数
+      value = Math.floor(value)
       if (value < minLimit) {
-        value = minLimit;
+        value = minLimit
       } else if (value > maxLimit) {
-        value = maxLimit;
+        value = maxLimit
       }
-      return value;
+      return value
     },
     // 隐藏弹窗
     hidePopup() {
-      this.$emit("hide");
+      this.$emit("hide")
     },
     // 填充表达式
     submitFill() {
-      this.$emit("fill", this.contabValueString);
-      this.hidePopup();
+      this.$emit("fill", this.crontabValueString)
+      this.hidePopup()
     },
     clearCron() {
       // 还原选择项
-      ("准备还原");
-      this.contabValueObj = {
+      ("准备还原")
+      this.crontabValueObj = {
         second: "*",
         min: "*",
         hour: "*",
         day: "*",
-        mouth: "*",
+        month: "*",
         week: "?",
         year: "",
-      };
-      for (let j in this.contabValueObj) {
-        this.changeRadio(j, this.contabValueObj[j]);
+      }
+      for (let j in this.crontabValueObj) {
+        this.changeRadio(j, this.crontabValueObj[j])
       }
     },
   },
   computed: {
-    contabValueString: function() {
-      let obj = this.contabValueObj;
+    crontabValueString: function() {
+      let obj = this.crontabValueObj
       let str =
         obj.second +
         " " +
@@ -335,11 +340,11 @@
         " " +
         obj.day +
         " " +
-        obj.mouth +
+        obj.month +
         " " +
         obj.week +
-        (obj.year == "" ? "" : " " + obj.year);
-      return str;
+        (obj.year == "" ? "" : " " + obj.year)
+      return str
     },
   },
   components: {
@@ -347,7 +352,7 @@
     CrontabMin,
     CrontabHour,
     CrontabDay,
-    CrontabMouth,
+    CrontabMonth,
     CrontabWeek,
     CrontabYear,
     CrontabResult,
@@ -359,9 +364,9 @@
     },
   },
   mounted: function() {
-    this.resolveExp();
+    this.resolveExp()
   },
-};
+}
 </script>
 <style scoped>
 .pop_btn {

--
Gitblit v1.9.3