疯狂的狮子li
2021-09-13 2af534eea471f4adb104906c7a814bcc66d4d68d
Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev

 Conflicts:
 pom.xml
 ruoyi-admin/pom.xml
 ruoyi-admin/src/main/resources/application.yml
 ruoyi-common/pom.xml
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
 ruoyi-framework/pom.xml
 ruoyi-generator/pom.xml
 ruoyi-quartz/pom.xml
 ruoyi-system/pom.xml
 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java
 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
 ruoyi-ui/package.json
 ruoyi-ui/src/components/ImageUpload/index.vue
 ruoyi-ui/src/components/ThemePicker/index.vue
 ruoyi-ui/src/layout/components/Sidebar/Link.vue
 ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
 ruoyi-ui/src/router/index.js
 ruoyi-ui/src/views/index.vue
 ruoyi-ui/src/views/tool/gen/editTable.vue
 ruoyi-ui/src/views/tool/gen/index.vue
 sql/ry_20210908.sql
已修改25个文件
已重命名2个文件
491 ■■■■ 文件已修改
pom.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/pom.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/pom.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/pom.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/pom.xml 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/day.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/index.vue 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/month.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/result.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/second.vue 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/week.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/Crontab/year.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/ImageUpload/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/components/ThemePicker/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/layout/components/Sidebar/Link.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/router/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/utils/request.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/system/menu/index.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/tool/gen/editTable.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/tool/gen/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/quartz.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/ry_20210908.sql 169 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
ruoyi-admin/pom.xml
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -66,6 +66,11 @@
    @Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
    private String component;
    /**
     * è·¯ç”±å‚æ•°
     */
    private String query;
    /**
     * æ˜¯å¦ä¸ºå¤–链(0是 1否)
     */
ruoyi-framework/pom.xml
ruoyi-quartz/pom.xml
ruoyi-system/pom.xml
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java
@@ -42,6 +42,11 @@
    private String component;
    /**
     * è·¯ç”±å‚数:如 {"id": 1, "name": "ry"}
     */
    private String query;
    /**
     * å½“你一个路由下面的 children å£°æ˜Žçš„路由大于1个时,自动会变成嵌套的模式--如组件页面
     */
    private Boolean alwaysShow;
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -135,6 +135,7 @@
            router.setName(getRouteName(menu));
            router.setPath(getRouterPath(menu));
            router.setComponent(getComponent(menu));
            router.setQuery(menu.getQuery());
            router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
            List<SysMenu> cMenus = menu.getChildren();
            if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -12,6 +12,7 @@
        <result property="orderNum" column="order_num"/>
        <result property="path" column="path"/>
        <result property="component" column="component"/>
        <result property="query" column="query"/>
        <result property="isFrame" column="is_frame"/>
        <result property="isCache" column="is_cache"/>
        <result property="menuType" column="menu_type"/>
@@ -33,6 +34,7 @@
               order_num,
               path,
               component,
               query,
               is_frame,
               is_cache,
               menu_type,
@@ -51,6 +53,7 @@
                        m.menu_name,
                        m.path,
                        m.component,
                        m.query,
                        m.visible,
                        m.status,
                        ifnull(m.perms, '') as perms,
@@ -67,7 +70,7 @@
    </select>
    <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
        select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, m.status,
        select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.visible, m.status,
        ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
        from sys_menu m
        left join sys_role_menu rm on m.menu_id = rm.menu_id
@@ -92,6 +95,7 @@
                        m.menu_name,
                        m.path,
                        m.component,
                        m.query,
                        m.visible,
                        m.status,
                        ifnull(m.perms, '') as perms,
ruoyi-ui/src/components/Crontab/day.vue
@@ -75,7 +75,7 @@
            if (this.radioValue === 1) {
                this.$emit('update', 'day', '*', 'day');
                this.$emit('update', 'week', '?', 'day');
                this.$emit('update', 'mouth', '*', 'day');
                this.$emit('update', 'month', '*', 'day');
            } else {
                if (this.cron.hour === '*') {
                    this.$emit('update', 'hour', '0', 'day');
ruoyi-ui/src/components/Crontab/index.vue
@@ -2,59 +2,59 @@
  <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" 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 +70,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>
@@ -112,7 +112,7 @@
import CrontabMin from "./min.vue";
import CrontabHour from "./hour.vue";
import CrontabDay from "./day.vue";
import CrontabMouth from "./mouth.vue";
import CrontabMonth from "./month.vue";
import CrontabWeek from "./week.vue";
import CrontabYear from "./year.vue";
import CrontabResult from "./result.vue";
@@ -123,12 +123,12 @@
      tabTitles: ["秒", "分钟", "小时", "日", "月", "周", "å¹´"],
      tabActive: 0,
      myindex: 0,
      contabValueObj: {
      crontabValueObj: {
        second: "*",
        min: "*",
        hour: "*",
        day: "*",
        mouth: "*",
        month: "*",
        week: "?",
        year: "",
      },
@@ -152,11 +152,11 @@
            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) {
@@ -173,9 +173,9 @@
      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);
@@ -183,108 +183,108 @@
    },
    //赋值到组件
    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 (arr.includes(name)) {
        if (value === "*") {
          insVlaue = 1;
          insValue = 1;
        } else if (value.indexOf("-") > -1) {
          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;
          insValue = 2;
        } else if (value.indexOf("/") > -1) {
          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;
          insValue = 3;
        } else {
          insVlaue = 4;
          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("-");
          isNaN(indexArr[0])
            ? (this.$refs[refName].cycle01 = 0)
            : (this.$refs[refName].cycle01 = indexArr[0]);
          this.$refs[refName].cycle02 = indexArr[1];
          insVlaue = 3;
          insValue = 3;
        } else if (value.indexOf("/") > -1) {
          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;
          insValue = 4;
        } else if (value.indexOf("W") > -1) {
          let indexArr = value.split("W");
          isNaN(indexArr[0])
            ? (this.$refs[refName].workday = 0)
            : (this.$refs[refName].workday = indexArr[0]);
          insVlaue = 5;
          insValue = 5;
        } else if (value === "L") {
          insVlaue = 6;
          insValue = 6;
        } else {
          this.$refs[refName].checkboxList = value.split(",");
          insVlaue = 7;
          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("-");
          isNaN(indexArr[0])
            ? (this.$refs[refName].cycle01 = 0)
            : (this.$refs[refName].cycle01 = indexArr[0]);
          this.$refs[refName].cycle02 = indexArr[1];
          insVlaue = 3;
          insValue = 3;
        } else if (value.indexOf("#") > -1) {
          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;
          insValue = 4;
        } else if (value.indexOf("L") > -1) {
          let indexArr = value.split("L");
          isNaN(indexArr[0])
            ? (this.$refs[refName].weekday = 1)
            : (this.$refs[refName].weekday = indexArr[0]);
          insVlaue = 5;
          insValue = 5;
        } else {
          this.$refs[refName].checkboxList = value.split(",");
          insVlaue = 7;
          insValue = 7;
        }
      } 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;
          insValue = 5;
        }
      }
      this.$refs[refName].radioValue = insVlaue;
      this.$refs[refName].radioValue = insValue;
    },
    // è¡¨å•选项的子组件校验数字格式(通过-props传递)
    checkNumber(value, minLimit, maxLimit) {
@@ -303,29 +303,29 @@
    },
    // å¡«å……表达式
    submitFill() {
      this.$emit("fill", this.contabValueString);
      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,7 +335,7 @@
        " " +
        obj.day +
        " " +
        obj.mouth +
        obj.month +
        " " +
        obj.week +
        (obj.year == "" ? "" : " " + obj.year);
@@ -347,7 +347,7 @@
    CrontabMin,
    CrontabHour,
    CrontabDay,
    CrontabMouth,
    CrontabMonth,
    CrontabWeek,
    CrontabYear,
    CrontabResult,
ruoyi-ui/src/components/Crontab/month.vue
ÎļþÃû´Ó ruoyi-ui/src/components/Crontab/mouth.vue ÐÞ¸Ä
@@ -46,56 +46,56 @@
            checkNum: this.check
        }
    },
    name: 'crontab-mouth',
    name: 'crontab-month',
    props: ['check', 'cron'],
    methods: {
        // å•选按钮值变化时
        radioChange() {
            if (this.radioValue === 1) {
                this.$emit('update', 'mouth', '*');
                this.$emit('update', 'month', '*');
                this.$emit('update', 'year', '*');
            } else {
                if (this.cron.day === '*') {
                    this.$emit('update', 'day', '0', 'mouth');
                    this.$emit('update', 'day', '0', 'month');
                }
                if (this.cron.hour === '*') {
                    this.$emit('update', 'hour', '0', 'mouth');
                    this.$emit('update', 'hour', '0', 'month');
                }
                if (this.cron.min === '*') {
                    this.$emit('update', 'min', '0', 'mouth');
                    this.$emit('update', 'min', '0', 'month');
                }
                if (this.cron.second === '*') {
                    this.$emit('update', 'second', '0', 'mouth');
                    this.$emit('update', 'second', '0', 'month');
                }
            }
            switch (this.radioValue) {
                case 2:
                    this.$emit('update', 'mouth', this.cycle01 + '-' + this.cycle02);
                    this.$emit('update', 'month', this.cycle01 + '-' + this.cycle02);
                    break;
                case 3:
                    this.$emit('update', 'mouth', this.average01 + '/' + this.average02);
                    this.$emit('update', 'month', this.average01 + '/' + this.average02);
                    break;
                case 4:
                    this.$emit('update', 'mouth', this.checkboxString);
                    this.$emit('update', 'month', this.checkboxString);
                    break;
            }
        },
        // å‘¨æœŸä¸¤ä¸ªå€¼å˜åŒ–æ—¶
        cycleChange() {
            if (this.radioValue == '2') {
                this.$emit('update', 'mouth', this.cycleTotal);
                this.$emit('update', 'month', this.cycleTotal);
            }
        },
        // å¹³å‡ä¸¤ä¸ªå€¼å˜åŒ–æ—¶
        averageChange() {
            if (this.radioValue == '3') {
                this.$emit('update', 'mouth', this.averageTotal);
                this.$emit('update', 'month', this.averageTotal);
            }
        },
        // checkbox值变化时
        checkboxChange() {
            if (this.radioValue == '4') {
                this.$emit('update', 'mouth', this.checkboxString);
                this.$emit('update', 'month', this.checkboxString);
            }
        }
    },
ruoyi-ui/src/components/Crontab/result.vue
@@ -37,7 +37,7 @@
            // èŽ·å–å½“å‰æ—¶é—´ç²¾ç¡®è‡³[年、月、日、时、分、秒]
            let nTime = new Date();
            let nYear = nTime.getFullYear();
            let nMouth = nTime.getMonth() + 1;
            let nMonth = nTime.getMonth() + 1;
            let nDay = nTime.getDate();
            let nHour = nTime.getHours();
            let nMin = nTime.getMinutes();
@@ -47,7 +47,7 @@
            this.getMinArr(ruleArr[1]);
            this.getHourArr(ruleArr[2]);
            this.getDayArr(ruleArr[3]);
            this.getMouthArr(ruleArr[4]);
            this.getMonthArr(ruleArr[4]);
            this.getWeekArr(ruleArr[5]);
            this.getYearArr(ruleArr[6], nYear);
            // å°†èŽ·å–åˆ°çš„æ•°ç»„èµ‹å€¼-方便使用
@@ -62,7 +62,7 @@
            let mIdx = this.getIndex(mDate, nMin);
            let hIdx = this.getIndex(hDate, nHour);
            let DIdx = this.getIndex(DDate, nDay);
            let MIdx = this.getIndex(MDate, nMouth);
            let MIdx = this.getIndex(MDate, nMonth);
            let YIdx = this.getIndex(YDate, nYear);
            // é‡ç½®æœˆæ—¥æ—¶åˆ†ç§’的函数(后面用的比较多)
            const resetSecond = function () {
@@ -84,17 +84,17 @@
                nDay = DDate[DIdx]
                resetHour();
            }
            const resetMouth = function () {
            const resetMonth = function () {
                MIdx = 0;
                nMouth = MDate[MIdx]
                nMonth = MDate[MIdx]
                resetDay();
            }
            // å¦‚果当前年份不为数组中当前值
            if (nYear !== YDate[YIdx]) {
                resetMouth();
                resetMonth();
            }
            // å¦‚果当前月份不为数组中当前值
            if (nMouth !== MDate[MIdx]) {
            if (nMonth !== MDate[MIdx]) {
                resetDay();
            }
            // å¦‚果当前“日”不为数组中当前值
@@ -114,12 +114,12 @@
            goYear: for (let Yi = YIdx; Yi < YDate.length; Yi++) {
                let YY = YDate[Yi];
                // å¦‚果到达最大值时
                if (nMouth > MDate[MDate.length - 1]) {
                    resetMouth();
                if (nMonth > MDate[MDate.length - 1]) {
                    resetMonth();
                    continue;
                }
                // å¾ªçŽ¯æœˆä»½æ•°ç»„
                goMouth: for (let Mi = MIdx; Mi < MDate.length; Mi++) {
                goMonth: for (let Mi = MIdx; Mi < MDate.length; Mi++) {
                    // èµ‹å€¼ã€æ–¹ä¾¿åŽé¢è¿ç®—
                    let MM = MDate[Mi];
                    MM = MM < 10 ? '0' + MM : MM;
@@ -127,7 +127,7 @@
                    if (nDay > DDate[DDate.length - 1]) {
                        resetDay();
                        if (Mi == MDate.length - 1) {
                            resetMouth();
                            resetMonth();
                            continue goYear;
                        }
                        continue;
@@ -144,10 +144,10 @@
                            if (Di == DDate.length - 1) {
                                resetDay();
                                if (Mi == MDate.length - 1) {
                                    resetMouth();
                                    resetMonth();
                                    continue goYear;
                                }
                                continue goMouth;
                                continue goMonth;
                            }
                            continue;
                        }
@@ -155,7 +155,7 @@
                        // åˆ¤æ–­æ—¥æœŸçš„合法性,不合法的话也是跳出当前循环
                        if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true && this.dayRule !== 'workDay' && this.dayRule !== 'lastWeek' && this.dayRule !== 'lastDay') {
                            resetDay();
                            continue goMouth;
                            continue goMonth;
                        }
                        // å¦‚果日期规则中有值时
                        if (this.dayRule == 'lastDay') {
@@ -205,10 +205,10 @@
                                if (Di == DDate.length - 1) {
                                    resetDay();
                                    if (Mi == MDate.length - 1) {
                                        resetMouth();
                                        resetMonth();
                                        continue goYear;
                                    }
                                    continue goMouth;
                                    continue goMonth;
                                }
                                continue;
                            }
@@ -254,10 +254,10 @@
                                    if (Di == DDate.length - 1) {
                                        resetDay();
                                        if (Mi == MDate.length - 1) {
                                            resetMouth();
                                            resetMonth();
                                            continue goYear;
                                        }
                                        continue goMouth;
                                        continue goMonth;
                                    }
                                    continue goDay;
                                }
@@ -277,10 +277,10 @@
                                            if (Di == DDate.length - 1) {
                                                resetDay();
                                                if (Mi == MDate.length - 1) {
                                                    resetMouth();
                                                    resetMonth();
                                                    continue goYear;
                                                }
                                                continue goMouth;
                                                continue goMonth;
                                            }
                                            continue goDay;
                                        }
@@ -308,10 +308,10 @@
                                                if (Di == DDate.length - 1) {
                                                    resetDay();
                                                    if (Mi == MDate.length - 1) {
                                                        resetMouth();
                                                        resetMonth();
                                                        continue goYear;
                                                    }
                                                    continue goMouth;
                                                    continue goMonth;
                                                }
                                                continue goDay;
                                            }
@@ -323,7 +323,7 @@
                            } //goMin
                        }//goHour
                    }//goDay
                }//goMouth
                }//goMonth
            }
            // åˆ¤æ–­100年内的结果条数
            if (resultArr.length == 0) {
@@ -365,7 +365,7 @@
            }
        },
        // èŽ·å–"月"数组
        getMouthArr(rule) {
        getMonthArr(rule) {
            this.dateArr[4] = this.getOrderArr(1, 12);
            if (rule.indexOf('-') >= 0) {
                this.dateArr[4] = this.getCycleArr(rule, 12, false)
ruoyi-ui/src/components/Crontab/second.vue
ruoyi-ui/src/components/Crontab/week.vue
@@ -71,8 +71,8 @@
                this.$emit('update', 'week', '*');
                this.$emit('update', 'year', '*');
            } else {
                if (this.cron.mouth === '*') {
                    this.$emit('update', 'mouth', '0', 'week');
                if (this.cron.month === '*') {
                    this.$emit('update', 'month', '0', 'week');
                }
                if (this.cron.day === '*') {
                    this.$emit('update', 'day', '0', 'week');
ruoyi-ui/src/components/Crontab/year.vue
@@ -55,12 +55,12 @@
        }
    },
    name: 'crontab-year',
    props: ['check', 'mouth', 'cron'],
    props: ['check', 'month', 'cron'],
    methods: {
        // å•选按钮值变化时
        radioChange() {
            if (this.cron.mouth === '*') {
                this.$emit('update', 'mouth', '0', 'year');
            if (this.cron.month === '*') {
                this.$emit('update', 'month', '0', 'year');
            }
            if (this.cron.day === '*') {
                this.$emit('update', 'day', '0', 'year');
ruoyi-ui/src/components/ImageUpload/index.vue
@@ -113,8 +113,10 @@
    // åˆ é™¤å›¾ç‰‡
    handleRemove(file, fileList) {
      const findex = this.fileList.map(f => f.name).indexOf(file.name);
      if(findex > -1) {
      this.fileList.splice(findex, 1);
      this.$emit("input", this.listToString(this.fileList));
      }
    },
    // ä¸Šä¼ æˆåŠŸå›žè°ƒ
    handleUploadSuccess(res) {
@@ -187,9 +189,9 @@
      for (let i in list) {
        strs += list[i].url + separator;
      }
      return strs != "" ? strs.substr(0, strs.length - 1) : "";
    },
  },
      return strs != '' ? strs.substr(0, strs.length - 1) : '';
    }
  }
};
</script>
<style scoped lang="scss">
@@ -203,8 +205,7 @@
  transition: all 0s;
}
::v-deep .el-list-enter,
.el-list-leave-active {
::v-deep .el-list-enter, .el-list-leave-active {
  opacity: 0;
  transform: translateY(0);
}
ruoyi-ui/src/components/ThemePicker/index.vue
@@ -47,14 +47,6 @@
      const themeCluster = this.getThemeCluster(val.replace('#', ''))
      const originalCluster = this.getThemeCluster(oldVal.replace('#', ''))
      const $message = this.$message({
        message: '  æ­£åœ¨åˆ‡æ¢ä¸»é¢˜ï¼Œè¯·ç¨åŽ...',
        customClass: 'theme-message',
        type: 'success',
        duration: 0,
        iconClass: 'el-icon-loading'
      })
      const getHandler = (variable, id) => {
        return () => {
          const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))
@@ -91,9 +83,6 @@
      })
      this.$emit('change', val)
      $message.close()
    },
    updateStyle(style, oldCluster, newCluster) {
ruoyi-ui/src/layout/components/Sidebar/Link.vue
@@ -10,7 +10,7 @@
export default {
  props: {
    to: {
      type: String,
      type: [String, Object],
      required: true
    }
  },
ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
@@ -1,7 +1,7 @@
<template>
  <div v-if="!item.hidden">
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
        </el-menu-item>
@@ -82,13 +82,17 @@
      return false
    },
    resolvePath(routePath) {
    resolvePath(routePath, routeQuery) {
      if (isExternal(routePath)) {
        return routePath
      }
      if (isExternal(this.basePath)) {
        return this.basePath
      }
      if (routeQuery) {
        let query = JSON.parse(routeQuery);
        return { path: path.resolve(this.basePath, routePath), query: query }
      }
      return path.resolve(this.basePath, routePath)
    }
  }
ruoyi-ui/src/router/index.js
@@ -16,6 +16,7 @@
 *                                // ä½ å¯ä»¥è®¾ç½® alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
 * redirect: noRedirect           // å½“设置 noRedirect çš„æ—¶å€™è¯¥è·¯ç”±åœ¨é¢åŒ…屑导航中不可被点击
 * name:'router-name'             // è®¾å®šè·¯ç”±çš„名字,一定要填写不然使用<keep-alive>时会出现各种问题
 * query: '{"id": 1, "name": "ry"}' // è®¿é—®è·¯ç”±çš„默认传递参数
 * meta : {
    noCache: true                // å¦‚果设置为true,则不会被 <keep-alive> ç¼“å­˜(默认 false)
    title: 'title'               // è®¾ç½®è¯¥è·¯ç”±åœ¨ä¾§è¾¹æ å’Œé¢åŒ…屑中展示的名字
@@ -156,7 +157,7 @@
    hidden: true,
    children: [
      {
        path: 'index/:tableId(\\d+)',
        path: 'index',
        component: (resolve) => require(['@/views/tool/gen/editTable'], resolve),
        name: 'GenEdit',
        meta: { title: '修改生成配置', activeMenu: '/tool/gen'}
ruoyi-ui/src/utils/request.js
@@ -66,7 +66,7 @@
          location.href = '/index';
        })
      }).catch(() => {});
      return Promise.reject('令牌验证失败')
      return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
    } else if (code === 500) {
      Message({
        message: msg,
ruoyi-ui/src/views/system/menu/index.vue
@@ -206,6 +206,31 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item v-if="form.menuType == 'C'">
              <el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" />
              <span slot="label">
                <el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                è·¯ç”±å‚æ•°
              </span>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item v-if="form.menuType == 'C'">
              <span slot="label">
                <el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                æ˜¯å¦ç¼“å­˜
              </span>
              <el-radio-group v-model="form.isCache">
                <el-radio label="0">缓存</el-radio>
                <el-radio label="1">不缓存</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item v-if="form.menuType != 'F'">
              <span slot="label">
                <el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top">
@@ -236,20 +261,6 @@
                  :key="dict.dictValue"
                  :label="dict.dictValue"
                >{{dict.dictLabel}}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item v-if="form.menuType == 'C'">
              <span slot="label">
                <el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
                <i class="el-icon-question"></i>
                </el-tooltip>
                æ˜¯å¦ç¼“å­˜
              </span>
              <el-radio-group v-model="form.isCache">
                <el-radio label="0">缓存</el-radio>
                <el-radio label="1">不缓存</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
ruoyi-ui/src/views/tool/gen/editTable.vue
@@ -157,7 +157,7 @@
    };
  },
  created() {
    const tableId = this.$route.params && this.$route.params.tableId;
    const tableId = this.$route.query && this.$route.query.tableId;
    if (tableId) {
      // èŽ·å–è¡¨è¯¦ç»†ä¿¡æ¯
      getGenTable(tableId).then(res => {
@@ -212,7 +212,7 @@
    /** å…³é—­æŒ‰é’® */
    close() {
      this.$store.dispatch("tagsView/delView", this.$route);
      this.$router.push({ path: "/tool/gen", query: { t: Date.now()}})
      this.$router.push({ path: "/tool/gen", query: { t: Date.now(), pageNum: this.$route.query.pageNum } })
    }
  },
  mounted() {
ruoyi-ui/src/views/tool/gen/index.vue
@@ -238,7 +238,8 @@
    const time = this.$route.query.t;
    if (time != null && time != this.uniqueId) {
      this.uniqueId = time;
      this.resetQuery();
      this.queryParams.pageNum = Number(this.$route.query.pageNum);
      this.getList();
    }
  },
  methods: {
@@ -319,7 +320,7 @@
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleEditTable(row) {
      const tableId = row.tableId || this.ids[0];
      this.$router.push("/tool/gen-edit/index/" + tableId);
      this.$router.push({ path: '/tool/gen-edit/index', query: { tableId: tableId, pageNum: this.queryParams.pageNum } });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
sql/quartz.sql
@@ -134,7 +134,7 @@
-- ---------------------------- 
create table QRTZ_SCHEDULER_STATE (
    sched_name           varchar(120)    not null            comment '调度名称',
    instance_name        varchar(200)    not null            comment '之前配置文件中org.quartz.scheduler.instanceId配置的名字,就会写入该字段',
    instance_name        varchar(200)    not null            comment '实例名称',
    last_checkin_time    bigint(13)      not null            comment '上次检查时间',
    checkin_interval     bigint(13)      not null            comment '检查间隔时间',
    primary key (sched_name, instance_name)
sql/ry_20210908.sql
ÎļþÃû´Ó sql/ry_20210731.sql ÐÞ¸Ä
@@ -137,6 +137,7 @@
  order_num         int(4)          default 0                  comment '显示顺序',
  path              varchar(200)    default ''                 comment '路由地址',
  component         varchar(255)    default null               comment '组件路径',
  query             varchar(255)    default null               comment '路由参数',
  is_frame          int(1)          default 1                  comment '是否为外链(0是 1否)',
  is_cache          int(1)          default 0                  comment '是否缓存(0缓存 1不缓存)',
  menu_type         char(1)         default ''                 comment '菜单类型(M目录 C菜单 F按钮)',
@@ -156,107 +157,107 @@
-- åˆå§‹åŒ–-菜单信息表数据
-- ----------------------------
-- ä¸€çº§èœå•
insert into sys_menu values('1', '系统管理', '0', '1', 'system',           null,   1, 0, 'M', '0', '0', '', 'system',   'admin', sysdate(), '', null, '系统管理目录');
insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          null,   1, 0, 'M', '0', '0', '', 'monitor',  'admin', sysdate(), '', null, '系统监控目录');
insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null,   1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
insert into sys_menu values('4', 'PLUS官网', '0', '4', 'https://gitee.com/JavaLionLi/RuoYi-Vue-Plus', null ,  0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, 'RuoYi-Vue-Plus官网地址');
insert into sys_menu values('1', '系统管理', '0', '1', 'system',           null, '', 1, 0, 'M', '0', '0', '', 'system',   'admin', sysdate(), '', null, '系统管理目录');
insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          null, '', 1, 0, 'M', '0', '0', '', 'monitor',  'admin', sysdate(), '', null, '系统监控目录');
insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null, '', 1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
insert into sys_menu values('4', 'PLUS官网', '0', '4', 'https://gitee.com/JavaLionLi/RuoYi-Vue-Plus', null, '', 0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, 'RuoYi-Vue-Plus官网地址');
-- äºŒçº§èœå•
insert into sys_menu values('100',  '用户管理', '1',   '1', 'user',       'system/user/index',        1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
insert into sys_menu values('101',  '角色管理', '1',   '2', 'role',       'system/role/index',        1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');
insert into sys_menu values('102',  '菜单管理', '1',   '3', 'menu',       'system/menu/index',        1, 0, 'C', '0', '0', 'system:menu:list',        'tree-table',    'admin', sysdate(), '', null, '菜单管理菜单');
insert into sys_menu values('103',  '部门管理', '1',   '4', 'dept',       'system/dept/index',        1, 0, 'C', '0', '0', 'system:dept:list',        'tree',          'admin', sysdate(), '', null, '部门管理菜单');
insert into sys_menu values('104',  '岗位管理', '1',   '5', 'post',       'system/post/index',        1, 0, 'C', '0', '0', 'system:post:list',        'post',          'admin', sysdate(), '', null, '岗位管理菜单');
insert into sys_menu values('105',  '字典管理', '1',   '6', 'dict',       'system/dict/index',        1, 0, 'C', '0', '0', 'system:dict:list',        'dict',          'admin', sysdate(), '', null, '字典管理菜单');
insert into sys_menu values('106',  '参数设置', '1',   '7', 'config',     'system/config/index',      1, 0, 'C', '0', '0', 'system:config:list',      'edit',          'admin', sysdate(), '', null, '参数设置菜单');
insert into sys_menu values('107',  '通知公告', '1',   '8', 'notice',     'system/notice/index',      1, 0, 'C', '0', '0', 'system:notice:list',      'message',       'admin', sysdate(), '', null, '通知公告菜单');
insert into sys_menu values('108',  '日志管理', '1',   '9', 'log',        '',                         1, 0, 'M', '0', '0', '',                        'log',           'admin', sysdate(), '', null, '日志管理菜单');
insert into sys_menu values('109',  '在线用户', '2',   '1', 'online',     'monitor/online/index',     1, 0, 'C', '0', '0', 'monitor:online:list',     'online',        'admin', sysdate(), '', null, '在线用户菜单');
insert into sys_menu values('110',  '定时任务', '2',   '2', 'job',        'monitor/job/index',        1, 0, 'C', '0', '0', 'monitor:job:list',        'job',           'admin', sysdate(), '', null, '定时任务菜单');
insert into sys_menu values('111',  '数据监控', '2',   '3', 'druid',      'monitor/druid/index',      1, 0, 'C', '0', '0', 'monitor:druid:list',      'druid',         'admin', sysdate(), '', null, '数据监控菜单');
# insert into sys_menu values('112',  '服务监控', '2',   '4', 'server',     'monitor/server/index',     1, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
insert into sys_menu values('113',  '缓存监控', '2',   '5', 'cache',      'monitor/cache/index',      1, 0, 'C', '0', '0', 'monitor:cache:list',      'redis',         'admin', sysdate(), '', null, '缓存监控菜单');
insert into sys_menu values('114',  '表单构建', '3',   '1', 'build',      'tool/build/index',         1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
insert into sys_menu values('115',  '代码生成', '3',   '2', 'gen',        'tool/gen/index',           1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
insert into sys_menu values('116',  '系统接口', '3',   '3', 'swagger',    'tool/swagger/index',       1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
insert into sys_menu values('100',  '用户管理', '1',   '1', 'user',       'system/user/index',        '', 1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
insert into sys_menu values('101',  '角色管理', '1',   '2', 'role',       'system/role/index',        '', 1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');
insert into sys_menu values('102',  '菜单管理', '1',   '3', 'menu',       'system/menu/index',        '', 1, 0, 'C', '0', '0', 'system:menu:list',        'tree-table',    'admin', sysdate(), '', null, '菜单管理菜单');
insert into sys_menu values('103',  '部门管理', '1',   '4', 'dept',       'system/dept/index',        '', 1, 0, 'C', '0', '0', 'system:dept:list',        'tree',          'admin', sysdate(), '', null, '部门管理菜单');
insert into sys_menu values('104',  '岗位管理', '1',   '5', 'post',       'system/post/index',        '', 1, 0, 'C', '0', '0', 'system:post:list',        'post',          'admin', sysdate(), '', null, '岗位管理菜单');
insert into sys_menu values('105',  '字典管理', '1',   '6', 'dict',       'system/dict/index',        '', 1, 0, 'C', '0', '0', 'system:dict:list',        'dict',          'admin', sysdate(), '', null, '字典管理菜单');
insert into sys_menu values('106',  '参数设置', '1',   '7', 'config',     'system/config/index',      '', 1, 0, 'C', '0', '0', 'system:config:list',      'edit',          'admin', sysdate(), '', null, '参数设置菜单');
insert into sys_menu values('107',  '通知公告', '1',   '8', 'notice',     'system/notice/index',      '', 1, 0, 'C', '0', '0', 'system:notice:list',      'message',       'admin', sysdate(), '', null, '通知公告菜单');
insert into sys_menu values('108',  '日志管理', '1',   '9', 'log',        '',                         '', 1, 0, 'M', '0', '0', '',                        'log',           'admin', sysdate(), '', null, '日志管理菜单');
insert into sys_menu values('109',  '在线用户', '2',   '1', 'online',     'monitor/online/index',     '', 1, 0, 'C', '0', '0', 'monitor:online:list',     'online',        'admin', sysdate(), '', null, '在线用户菜单');
insert into sys_menu values('110',  '定时任务', '2',   '2', 'job',        'monitor/job/index',        '', 1, 0, 'C', '0', '0', 'monitor:job:list',        'job',           'admin', sysdate(), '', null, '定时任务菜单');
insert into sys_menu values('111',  '数据监控', '2',   '3', 'druid',      'monitor/druid/index',      '', 1, 0, 'C', '0', '0', 'monitor:druid:list',      'druid',         'admin', sysdate(), '', null, '数据监控菜单');
insert into sys_menu values('112',  '服务监控', '2',   '4', 'server',     'monitor/server/index',     '', 1, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
insert into sys_menu values('113',  '缓存监控', '2',   '5', 'cache',      'monitor/cache/index',      '', 1, 0, 'C', '0', '0', 'monitor:cache:list',      'redis',         'admin', sysdate(), '', null, '缓存监控菜单');
insert into sys_menu values('114',  '表单构建', '3',   '1', 'build',      'tool/build/index',         '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
insert into sys_menu values('115',  '代码生成', '3',   '2', 'gen',        'tool/gen/index',           '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
insert into sys_menu values('116',  '系统接口', '3',   '3', 'swagger',    'tool/swagger/index',       '', 1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
-- springboot-admin监控
insert into sys_menu values('117',  'Admin监控', '2',  '5', 'Admin',      'monitor/admin/index',      1, 0, 'C', '0', '0', 'monitor:admin:list',      'dashboard',     'admin', sysdate(), '', null, 'Admin监控菜单');
insert into sys_menu values('117',  'Admin监控', '2',  '5', 'Admin',      'monitor/admin/index',      '', 1, 0, 'C', '0', '0', 'monitor:admin:list',      'dashboard',     'admin', sysdate(), '', null, 'Admin监控菜单');
-- ä¸‰çº§èœå•
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    1, 0, 'C', '0', '0', 'monitor:operlog:list',    'form',          'admin', sysdate(), '', null, '操作日志菜单');
insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    '', 1, 0, 'C', '0', '0', 'monitor:operlog:list',    'form',          'admin', sysdate(), '', null, '操作日志菜单');
insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');
-- ç”¨æˆ·ç®¡ç†æŒ‰é’®
insert into sys_menu values('1001', '用户查询', '100', '1',  '', '', 1, 0, 'F', '0', '0', 'system:user:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1002', '用户新增', '100', '2',  '', '', 1, 0, 'F', '0', '0', 'system:user:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1003', '用户修改', '100', '3',  '', '', 1, 0, 'F', '0', '0', 'system:user:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1004', '用户删除', '100', '4',  '', '', 1, 0, 'F', '0', '0', 'system:user:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1005', '用户导出', '100', '5',  '', '', 1, 0, 'F', '0', '0', 'system:user:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1006', '用户导入', '100', '6',  '', '', 1, 0, 'F', '0', '0', 'system:user:import',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1007', '重置密码', '100', '7',  '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1001', '用户查询', '100', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1002', '用户新增', '100', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1003', '用户修改', '100', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1004', '用户删除', '100', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1005', '用户导出', '100', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1006', '用户导入', '100', '6',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:import',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1007', '重置密码', '100', '7',  '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd',       '#', 'admin', sysdate(), '', null, '');
-- è§’色管理按钮
insert into sys_menu values('1008', '角色查询', '101', '1',  '', '', 1, 0, 'F', '0', '0', 'system:role:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1009', '角色新增', '101', '2',  '', '', 1, 0, 'F', '0', '0', 'system:role:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1010', '角色修改', '101', '3',  '', '', 1, 0, 'F', '0', '0', 'system:role:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1011', '角色删除', '101', '4',  '', '', 1, 0, 'F', '0', '0', 'system:role:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1012', '角色导出', '101', '5',  '', '', 1, 0, 'F', '0', '0', 'system:role:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1008', '角色查询', '101', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1009', '角色新增', '101', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1010', '角色修改', '101', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1011', '角色删除', '101', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1012', '角色导出', '101', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:role:export',         '#', 'admin', sysdate(), '', null, '');
-- èœå•管理按钮
insert into sys_menu values('1013', '菜单查询', '102', '1',  '', '', 1, 0, 'F', '0', '0', 'system:menu:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1014', '菜单新增', '102', '2',  '', '', 1, 0, 'F', '0', '0', 'system:menu:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1015', '菜单修改', '102', '3',  '', '', 1, 0, 'F', '0', '0', 'system:menu:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1016', '菜单删除', '102', '4',  '', '', 1, 0, 'F', '0', '0', 'system:menu:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1013', '菜单查询', '102', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1014', '菜单新增', '102', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1015', '菜单修改', '102', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1016', '菜单删除', '102', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove',         '#', 'admin', sysdate(), '', null, '');
-- éƒ¨é—¨ç®¡ç†æŒ‰é’®
insert into sys_menu values('1017', '部门查询', '103', '1',  '', '', 1, 0, 'F', '0', '0', 'system:dept:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1018', '部门新增', '103', '2',  '', '', 1, 0, 'F', '0', '0', 'system:dept:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1019', '部门修改', '103', '3',  '', '', 1, 0, 'F', '0', '0', 'system:dept:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1020', '部门删除', '103', '4',  '', '', 1, 0, 'F', '0', '0', 'system:dept:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1017', '部门查询', '103', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1018', '部门新增', '103', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1019', '部门修改', '103', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1020', '部门删除', '103', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove',         '#', 'admin', sysdate(), '', null, '');
-- å²—位管理按钮
insert into sys_menu values('1021', '岗位查询', '104', '1',  '', '', 1, 0, 'F', '0', '0', 'system:post:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1022', '岗位新增', '104', '2',  '', '', 1, 0, 'F', '0', '0', 'system:post:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1023', '岗位修改', '104', '3',  '', '', 1, 0, 'F', '0', '0', 'system:post:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1024', '岗位删除', '104', '4',  '', '', 1, 0, 'F', '0', '0', 'system:post:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1025', '岗位导出', '104', '5',  '', '', 1, 0, 'F', '0', '0', 'system:post:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1021', '岗位查询', '104', '1',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1022', '岗位新增', '104', '2',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1023', '岗位修改', '104', '3',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1024', '岗位删除', '104', '4',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1025', '岗位导出', '104', '5',  '', '', '', 1, 0, 'F', '0', '0', 'system:post:export',         '#', 'admin', sysdate(), '', null, '');
-- å­—典管理按钮
insert into sys_menu values('1026', '字典查询', '105', '1', '#', '', 1, 0, 'F', '0', '0', 'system:dict:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1027', '字典新增', '105', '2', '#', '', 1, 0, 'F', '0', '0', 'system:dict:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1028', '字典修改', '105', '3', '#', '', 1, 0, 'F', '0', '0', 'system:dict:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1029', '字典删除', '105', '4', '#', '', 1, 0, 'F', '0', '0', 'system:dict:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1030', '字典导出', '105', '5', '#', '', 1, 0, 'F', '0', '0', 'system:dict:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1026', '字典查询', '105', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1027', '字典新增', '105', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1028', '字典修改', '105', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1029', '字典删除', '105', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1030', '字典导出', '105', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export',         '#', 'admin', sysdate(), '', null, '');
-- å‚数设置按钮
insert into sys_menu values('1031', '参数查询', '106', '1', '#', '', 1, 0, 'F', '0', '0', 'system:config:query',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1032', '参数新增', '106', '2', '#', '', 1, 0, 'F', '0', '0', 'system:config:add',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1033', '参数修改', '106', '3', '#', '', 1, 0, 'F', '0', '0', 'system:config:edit',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1034', '参数删除', '106', '4', '#', '', 1, 0, 'F', '0', '0', 'system:config:remove',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1035', '参数导出', '106', '5', '#', '', 1, 0, 'F', '0', '0', 'system:config:export',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1031', '参数查询', '106', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1032', '参数新增', '106', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1033', '参数修改', '106', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1034', '参数删除', '106', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1035', '参数导出', '106', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export',       '#', 'admin', sysdate(), '', null, '');
-- é€šçŸ¥å…¬å‘ŠæŒ‰é’®
insert into sys_menu values('1036', '公告查询', '107', '1', '#', '', 1, 0, 'F', '0', '0', 'system:notice:query',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1037', '公告新增', '107', '2', '#', '', 1, 0, 'F', '0', '0', 'system:notice:add',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1038', '公告修改', '107', '3', '#', '', 1, 0, 'F', '0', '0', 'system:notice:edit',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1039', '公告删除', '107', '4', '#', '', 1, 0, 'F', '0', '0', 'system:notice:remove',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1036', '公告查询', '107', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query',        '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1037', '公告新增', '107', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1038', '公告修改', '107', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1039', '公告删除', '107', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove',       '#', 'admin', sysdate(), '', null, '');
-- æ“ä½œæ—¥å¿—按钮
insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove',     '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export',     '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query',      '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove',     '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export',     '#', 'admin', sysdate(), '', null, '');
-- ç™»å½•日志按钮
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query',   '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query',   '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove',  '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export',  '#', 'admin', sysdate(), '', null, '');
-- åœ¨çº¿ç”¨æˆ·æŒ‰é’®
insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', 1, 0, 'F', '0', '0', 'monitor:online:query',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1048', '单条强退', '109', '3', '#', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query',       '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1048', '单条强退', '109', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', sysdate(), '', null, '');
-- å®šæ—¶ä»»åŠ¡æŒ‰é’®
insert into sys_menu values('1049', '任务查询', '110', '1', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1050', '任务新增', '110', '2', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1051', '任务修改', '110', '3', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus',   '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1054', '任务导出', '110', '7', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:export',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1049', '任务查询', '110', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query',          '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1050', '任务新增', '110', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1051', '任务修改', '110', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove',         '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus',   '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1054', '任务导出', '110', '7', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export',         '#', 'admin', sysdate(), '', null, '');
-- ä»£ç ç”ŸæˆæŒ‰é’®
insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:query',             '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:edit',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:remove',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:import',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query',             '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit',              '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import',            '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '');
insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '');
-- ----------------------------