Commit f336b801b9bbf86a695dd09c9ffbe6ad24b5b1dc

Authored by YunaiV
1 parent d5883771

项目结构调整 x 11 : 修改前端项目为 yudao-admin-ui

Showing 307 changed files with 14634 additions and 14661 deletions

Too many changes.

To preserve performance only 100 of 307 files are displayed.

... ... @@ -24,6 +24,7 @@
24 24 <java.version>1.8</java.version>
25 25 <maven.compiler.source>${java.version}</maven.compiler.source>
26 26 <maven.compiler.target>${java.version}</maven.compiler.target>
  27 + <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
27 28 </properties>
28 29  
29 30 <dependencyManagement>
... ... @@ -38,6 +39,20 @@
38 39 </dependencies>
39 40 </dependencyManagement>
40 41  
  42 + <build>
  43 + <pluginManagement>
  44 + <plugins>
  45 + <!-- maven-surefire-plugin 插件,用于运行单元测试。 -->
  46 + <!-- 注意,需要使用 3.0.X+,因为要支持 Junit 5 版本 -->
  47 + <plugin>
  48 + <groupId>org.apache.maven.plugins</groupId>
  49 + <artifactId>maven-surefire-plugin</artifactId>
  50 + <version>${maven-surefire-plugin.version}</version>
  51 + </plugin>
  52 + </plugins>
  53 + </pluginManagement>
  54 + </build>
  55 +
41 56 <!-- 使用 aliyun 的 Maven 源,提升下载速度 -->
42 57 <repositories>
43 58 <repository>
... ...
ruoyi-ui/public/robots.txt deleted
1   -User-agent: *
2   -Disallow: /
3 0 \ No newline at end of file
ruoyi-ui/src/layout/components/global.js deleted
1   -import Vue from 'vue'
2   -const global = new Vue()
3   -export default global
ruoyi-ui/src/views/components/icons/index.vue deleted
1   -<template>
2   - <div class="icons-container">
3   - <aside>
4   - <a href="#" target="_blank">Add and use
5   - </a>
6   - </aside>
7   - <el-tabs type="border-card">
8   - <el-tab-pane label="Icons">
9   - <div v-for="item of svgIcons" :key="item">
10   - <el-tooltip placement="top">
11   - <div slot="content">
12   - {{ generateIconCode(item) }}
13   - </div>
14   - <div class="icon-item">
15   - <svg-icon :icon-class="item" class-name="disabled" />
16   - <span>{{ item }}</span>
17   - </div>
18   - </el-tooltip>
19   - </div>
20   - </el-tab-pane>
21   - <el-tab-pane label="Element-UI Icons">
22   - <div v-for="item of elementIcons" :key="item">
23   - <el-tooltip placement="top">
24   - <div slot="content">
25   - {{ generateElementIconCode(item) }}
26   - </div>
27   - <div class="icon-item">
28   - <i :class="'el-icon-' + item" />
29   - <span>{{ item }}</span>
30   - </div>
31   - </el-tooltip>
32   - </div>
33   - </el-tab-pane>
34   - </el-tabs>
35   - </div>
36   -</template>
37   -
38   -<script>
39   -import svgIcons from './svg-icons'
40   -import elementIcons from './element-icons'
41   -
42   -export default {
43   - name: 'Icons',
44   - data() {
45   - return {
46   - svgIcons,
47   - elementIcons
48   - }
49   - },
50   - methods: {
51   - generateIconCode(symbol) {
52   - return `<svg-icon icon-class="${symbol}" />`
53   - },
54   - generateElementIconCode(symbol) {
55   - return `<i class="el-icon-${symbol}" />`
56   - }
57   - }
58   -}
59   -</script>
60   -
61   -<style lang="scss" scoped>
62   -.icons-container {
63   - margin: 10px 20px 0;
64   - overflow: hidden;
65   -
66   - .icon-item {
67   - margin: 20px;
68   - height: 85px;
69   - text-align: center;
70   - width: 100px;
71   - float: left;
72   - font-size: 30px;
73   - color: #24292e;
74   - cursor: pointer;
75   - }
76   -
77   - span {
78   - display: block;
79   - font-size: 16px;
80   - margin-top: 10px;
81   - }
82   -
83   - .disabled {
84   - pointer-events: none;
85   - }
86   -}
87   -</style>
ruoyi-ui/src/views/dashboard/BarChart.vue deleted
1   -<template>
2   - <div :class="className" :style="{height:height,width:width}" />
3   -</template>
4   -
5   -<script>
6   -import echarts from 'echarts'
7   -require('echarts/theme/macarons') // echarts theme
8   -import resize from './mixins/resize'
9   -
10   -const animationDuration = 6000
11   -
12   -export default {
13   - mixins: [resize],
14   - props: {
15   - className: {
16   - type: String,
17   - default: 'chart'
18   - },
19   - width: {
20   - type: String,
21   - default: '100%'
22   - },
23   - height: {
24   - type: String,
25   - default: '300px'
26   - }
27   - },
28   - data() {
29   - return {
30   - chart: null
31   - }
32   - },
33   - mounted() {
34   - this.$nextTick(() => {
35   - this.initChart()
36   - })
37   - },
38   - beforeDestroy() {
39   - if (!this.chart) {
40   - return
41   - }
42   - this.chart.dispose()
43   - this.chart = null
44   - },
45   - methods: {
46   - initChart() {
47   - this.chart = echarts.init(this.$el, 'macarons')
48   -
49   - this.chart.setOption({
50   - tooltip: {
51   - trigger: 'axis',
52   - axisPointer: { // 坐标轴指示器,坐标轴触发有效
53   - type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
54   - }
55   - },
56   - grid: {
57   - top: 10,
58   - left: '2%',
59   - right: '2%',
60   - bottom: '3%',
61   - containLabel: true
62   - },
63   - xAxis: [{
64   - type: 'category',
65   - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
66   - axisTick: {
67   - alignWithLabel: true
68   - }
69   - }],
70   - yAxis: [{
71   - type: 'value',
72   - axisTick: {
73   - show: false
74   - }
75   - }],
76   - series: [{
77   - name: 'pageA',
78   - type: 'bar',
79   - stack: 'vistors',
80   - barWidth: '60%',
81   - data: [79, 52, 200, 334, 390, 330, 220],
82   - animationDuration
83   - }, {
84   - name: 'pageB',
85   - type: 'bar',
86   - stack: 'vistors',
87   - barWidth: '60%',
88   - data: [80, 52, 200, 334, 390, 330, 220],
89   - animationDuration
90   - }, {
91   - name: 'pageC',
92   - type: 'bar',
93   - stack: 'vistors',
94   - barWidth: '60%',
95   - data: [30, 52, 200, 334, 390, 330, 220],
96   - animationDuration
97   - }]
98   - })
99   - }
100   - }
101   -}
102   -</script>
ruoyi-ui/src/views/dashboard/PieChart.vue deleted
1   -<template>
2   - <div :class="className" :style="{height:height,width:width}" />
3   -</template>
4   -
5   -<script>
6   -import echarts from 'echarts'
7   -require('echarts/theme/macarons') // echarts theme
8   -import resize from './mixins/resize'
9   -
10   -export default {
11   - mixins: [resize],
12   - props: {
13   - className: {
14   - type: String,
15   - default: 'chart'
16   - },
17   - width: {
18   - type: String,
19   - default: '100%'
20   - },
21   - height: {
22   - type: String,
23   - default: '300px'
24   - }
25   - },
26   - data() {
27   - return {
28   - chart: null
29   - }
30   - },
31   - mounted() {
32   - this.$nextTick(() => {
33   - this.initChart()
34   - })
35   - },
36   - beforeDestroy() {
37   - if (!this.chart) {
38   - return
39   - }
40   - this.chart.dispose()
41   - this.chart = null
42   - },
43   - methods: {
44   - initChart() {
45   - this.chart = echarts.init(this.$el, 'macarons')
46   -
47   - this.chart.setOption({
48   - tooltip: {
49   - trigger: 'item',
50   - formatter: '{a} <br/>{b} : {c} ({d}%)'
51   - },
52   - legend: {
53   - left: 'center',
54   - bottom: '10',
55   - data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
56   - },
57   - series: [
58   - {
59   - name: 'WEEKLY WRITE ARTICLES',
60   - type: 'pie',
61   - roseType: 'radius',
62   - radius: [15, 95],
63   - center: ['50%', '38%'],
64   - data: [
65   - { value: 320, name: 'Industries' },
66   - { value: 240, name: 'Technology' },
67   - { value: 149, name: 'Forex' },
68   - { value: 100, name: 'Gold' },
69   - { value: 59, name: 'Forecasts' }
70   - ],
71   - animationEasing: 'cubicInOut',
72   - animationDuration: 2600
73   - }
74   - ]
75   - })
76   - }
77   - }
78   -}
79   -</script>
ruoyi-ui/src/views/dashboard/mixins/resize.js deleted
1   -import { debounce } from '@/utils'
2   -
3   -export default {
4   - data() {
5   - return {
6   - $_sidebarElm: null,
7   - $_resizeHandler: null
8   - }
9   - },
10   - mounted() {
11   - this.initListener()
12   - },
13   - activated() {
14   - if (!this.$_resizeHandler) {
15   - // avoid duplication init
16   - this.initListener()
17   - }
18   -
19   - // when keep-alive chart activated, auto resize
20   - this.resize()
21   - },
22   - beforeDestroy() {
23   - this.destroyListener()
24   - },
25   - deactivated() {
26   - this.destroyListener()
27   - },
28   - methods: {
29   - // use $_ for mixins properties
30   - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
31   - $_sidebarResizeHandler(e) {
32   - if (e.propertyName === 'width') {
33   - this.$_resizeHandler()
34   - }
35   - },
36   - initListener() {
37   - this.$_resizeHandler = debounce(() => {
38   - this.resize()
39   - }, 100)
40   - window.addEventListener('resize', this.$_resizeHandler)
41   -
42   - this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
43   - this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
44   - },
45   - destroyListener() {
46   - window.removeEventListener('resize', this.$_resizeHandler)
47   - this.$_resizeHandler = null
48   -
49   - this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
50   - },
51   - resize() {
52   - const { chart } = this
53   - chart && chart.resize()
54   - }
55   - }
56   -}
ruoyi-ui/src/views/error/401.vue deleted
1   -<template>
2   - <div class="errPage-container">
3   - <el-button icon="arrow-left" class="pan-back-btn" @click="back">
4   - 返回
5   - </el-button>
6   - <el-row>
7   - <el-col :span="12">
8   - <h1 class="text-jumbo text-ginormous">
9   - 401错误!
10   - </h1>
11   - <h2>您没有访问权限!</h2>
12   - <h6>对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面</h6>
13   - <ul class="list-unstyled">
14   - <li class="link-type">
15   - <router-link to="/">
16   - 回首页
17   - </router-link>
18   - </li>
19   - </ul>
20   - </el-col>
21   - <el-col :span="12">
22   - <img :src="errGif" width="313" height="428" alt="Girl has dropped her ice cream.">
23   - </el-col>
24   - </el-row>
25   - </div>
26   -</template>
27   -
28   -<script>
29   -import errGif from '@/assets/401_images/401.gif'
30   -
31   -export default {
32   - name: 'Page401',
33   - data() {
34   - return {
35   - errGif: errGif + '?' + +new Date()
36   - }
37   - },
38   - methods: {
39   - back() {
40   - if (this.$route.query.noGoBack) {
41   - this.$router.push({ path: '/' })
42   - } else {
43   - this.$router.go(-1)
44   - }
45   - }
46   - }
47   -}
48   -</script>
49   -
50   -<style lang="scss" scoped>
51   - .errPage-container {
52   - width: 800px;
53   - max-width: 100%;
54   - margin: 100px auto;
55   - .pan-back-btn {
56   - background: #008489;
57   - color: #fff;
58   - border: none!important;
59   - }
60   - .pan-gif {
61   - margin: 0 auto;
62   - display: block;
63   - }
64   - .pan-img {
65   - display: block;
66   - margin: 0 auto;
67   - width: 100%;
68   - }
69   - .text-jumbo {
70   - font-size: 60px;
71   - font-weight: 700;
72   - color: #484848;
73   - }
74   - .list-unstyled {
75   - font-size: 14px;
76   - li {
77   - padding-bottom: 5px;
78   - }
79   - a {
80   - color: #008489;
81   - text-decoration: none;
82   - &:hover {
83   - text-decoration: underline;
84   - }
85   - }
86   - }
87   - }
88   -</style>
ruoyi-ui/src/views/index.vue deleted
1   -<template>
2   - <div class="dashboard-editor-container">
3   -
4   - <panel-group @handleSetLineChartData="handleSetLineChartData" />
5   -
6   - <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
7   - <line-chart :chart-data="lineChartData" />
8   - </el-row>
9   -
10   - <el-row :gutter="32">
11   - <el-col :xs="24" :sm="24" :lg="8">
12   - <div class="chart-wrapper">
13   - <raddar-chart />
14   - </div>
15   - </el-col>
16   - <el-col :xs="24" :sm="24" :lg="8">
17   - <div class="chart-wrapper">
18   - <pie-chart />
19   - </div>
20   - </el-col>
21   - <el-col :xs="24" :sm="24" :lg="8">
22   - <div class="chart-wrapper">
23   - <bar-chart />
24   - </div>
25   - </el-col>
26   - </el-row>
27   -
28   -
29   - </div>
30   -</template>
31   -
32   -<script>
33   -import PanelGroup from './dashboard/PanelGroup'
34   -import LineChart from './dashboard/LineChart'
35   -import RaddarChart from './dashboard/RaddarChart'
36   -import PieChart from './dashboard/PieChart'
37   -import BarChart from './dashboard/BarChart'
38   -
39   -const lineChartData = {
40   - newVisitis: {
41   - expectedData: [100, 120, 161, 134, 105, 160, 165],
42   - actualData: [120, 82, 91, 154, 162, 140, 145]
43   - },
44   - messages: {
45   - expectedData: [200, 192, 120, 144, 160, 130, 140],
46   - actualData: [180, 160, 151, 106, 145, 150, 130]
47   - },
48   - purchases: {
49   - expectedData: [80, 100, 121, 104, 105, 90, 100],
50   - actualData: [120, 90, 100, 138, 142, 130, 130]
51   - },
52   - shoppings: {
53   - expectedData: [130, 140, 141, 142, 145, 150, 160],
54   - actualData: [120, 82, 91, 154, 162, 140, 130]
55   - }
56   -}
57   -
58   -export default {
59   - name: 'Index',
60   - components: {
61   - PanelGroup,
62   - LineChart,
63   - RaddarChart,
64   - PieChart,
65   - BarChart
66   - },
67   - data() {
68   - return {
69   - lineChartData: lineChartData.newVisitis
70   - }
71   - },
72   - methods: {
73   - handleSetLineChartData(type) {
74   - this.lineChartData = lineChartData[type]
75   - }
76   - }
77   -}
78   -</script>
79   -
80   -<style lang="scss" scoped>
81   -.dashboard-editor-container {
82   - padding: 32px;
83   - background-color: rgb(240, 242, 245);
84   - position: relative;
85   -
86   - .chart-wrapper {
87   - background: #fff;
88   - padding: 16px 16px 0;
89   - margin-bottom: 32px;
90   - }
91   -}
92   -
93   -@media (max-width:1024px) {
94   - .chart-wrapper {
95   - padding: 8px;
96   - }
97   -}
98   -</style>
ruoyi-ui/src/views/infra/druid/index.vue deleted
1   -<template>
2   - <div v-loading="loading" :style="'height:'+ height">
3   - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
4   - </div>
5   -</template>
6   -<script>
7   -export default {
8   - name: "Druid",
9   - data() {
10   - return {
11   - src: process.env.VUE_APP_BASE_API + "/druid/index.html",
12   - height: document.documentElement.clientHeight - 94.5 + "px;",
13   - loading: true
14   - };
15   - },
16   - mounted: function() {
17   - setTimeout(() => {
18   - this.loading = false;
19   - }, 230);
20   - const that = this;
21   - window.onresize = function temp() {
22   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
23   - };
24   - }
25   -};
26   -</script>
ruoyi-ui/src/views/infra/server/index.vue deleted
1   -<template>
2   - <div v-loading="loading" :style="'height:'+ height">
3   - <iframe ref="iframe" :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
4   - </div>
5   -</template>
6   -<script>
7   -export default {
8   - name: "Server",
9   - data() {
10   - return {
11   - src: process.env.VUE_APP_BASE_API + "/admin",
12   - height: document.documentElement.clientHeight - 94.5 + "px;",
13   - loading: true
14   - };
15   - },
16   - mounted: function() {
17   - const that = this;
18   -
19   - setTimeout(() => {
20   - // 模拟点击【应用】菜单
21   - // that.$refs["iframe"].contentWindow.document.getElementsByClassName('navbar-item')[2].click(); // TODO 暂时去掉,存在跨域问题
22   - // 取消加载中
23   - this.loading = false;
24   - }, 230);
25   -
26   - // 大小变化的监听
27   - window.onresize = function temp() {
28   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
29   - };
30   - }
31   -};
32   -</script>
ruoyi-ui/src/views/infra/skywalking/index.vue deleted
1   -<template>
2   - <div v-loading="loading" :style="'height:'+ height">
3   - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
4   - </div>
5   -</template>
6   -<script>
7   -export default {
8   - name: "SkyWalking",
9   - data() {
10   - return {
11   - src: "http://skywalking.shop.iocoder.cn/trace", // TODO 芋艿,后续改成配置读取
12   - height: document.documentElement.clientHeight - 94.5 + "px;",
13   - loading: true
14   - };
15   - },
16   - mounted: function() {
17   - setTimeout(() => {
18   - this.loading = false;
19   - }, 230);
20   - const that = this;
21   - window.onresize = function temp() {
22   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
23   - };
24   - }
25   -};
26   -</script>
ruoyi-ui/src/views/infra/skywalking/log.vue deleted
1   -<template>
2   - <div v-loading="loading" :style="'height:'+ height">
3   - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
4   - </div>
5   -</template>
6   -<script>
7   -export default {
8   - name: "SkyWalking-Log",
9   - data() {
10   - return {
11   - src: "http://skywalking.shop.iocoder.cn/log", // TODO 芋艿,后续改成配置读取
12   - height: document.documentElement.clientHeight - 94.5 + "px;",
13   - loading: true
14   - };
15   - },
16   - mounted: function() {
17   - setTimeout(() => {
18   - this.loading = false;
19   - }, 230);
20   - const that = this;
21   - window.onresize = function temp() {
22   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
23   - };
24   - }
25   -};
26   -</script>
ruoyi-ui/src/views/system/session/index.vue deleted
1   -<template>
2   - <div class="app-container">
3   - <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
4   - <el-form-item label="登录地址" prop="userIp">
5   - <el-input
6   - v-model="queryParams.userIp"
7   - placeholder="请输入登录地址"
8   - clearable
9   - size="small"
10   - @keyup.enter.native="handleQuery"
11   - />
12   - </el-form-item>
13   - <el-form-item label="用户名称" prop="username">
14   - <el-input
15   - v-model="queryParams.username"
16   - placeholder="请输入用户名称"
17   - clearable
18   - size="small"
19   - @keyup.enter.native="handleQuery"
20   - />
21   - </el-form-item>
22   - <el-form-item>
23   - <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
24   - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
25   - </el-form-item>
26   -
27   - </el-form>
28   - <el-table
29   - v-loading="loading"
30   - :data="list"
31   - style="width: 100%;"
32   - >
33   - <el-table-column label="会话编号" align="center" prop="id" width="300" />
34   - <el-table-column label="登录名称" align="center" prop="username" width="100" />
35   - <el-table-column label="部门名称" align="center" prop="deptName" width="100" />
36   - <el-table-column label="登陆地址" align="center" prop="userIp" width="100" />
37   - <el-table-column label="userAgent" align="center" prop="userAgent" :show-overflow-tooltip="true" />
38   - <el-table-column label="登录时间" align="center" prop="createTime" width="180">
39   - <template slot-scope="scope">
40   - <span>{{ parseTime(scope.row.createTime) }}</span>
41   - </template>
42   - </el-table-column>
43   - <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
44   - <template slot-scope="scope">
45   - <el-button
46   - size="mini"
47   - type="text"
48   - icon="el-icon-delete"
49   - @click="handleForceLogout(scope.row)"
50   - v-hasPermi="['system:user-session:delete']"
51   - >强退</el-button>
52   - </template>
53   - </el-table-column>
54   - </el-table>
55   -
56   - <pagination v-show="total>0" :total="total" :page.sync="pageNo" :limit.sync="pageSize" />
57   - </div>
58   -</template>
59   -
60   -<script>
61   -import { list, forceLogout } from "@/api/system/session";
62   -
63   -export default {
64   - name: "Online",
65   - data() {
66   - return {
67   - // 遮罩层
68   - loading: true,
69   - // 总条数
70   - total: 0,
71   - // 表格数据
72   - list: [],
73   - // 查询参数
74   - queryParams: {
75   - pageNo: 1,
76   - pageSize: 10,
77   - userIp: undefined,
78   - username: undefined
79   - }
80   - };
81   - },
82   - created() {
83   - this.getList();
84   - },
85   - methods: {
86   - /** 查询登录日志列表 */
87   - getList() {
88   - this.loading = true;
89   - list(this.queryParams).then(response => {
90   - this.list = response.data.list;
91   - this.total = response.data.total;
92   - this.loading = false;
93   - });
94   - },
95   - /** 搜索按钮操作 */
96   - handleQuery() {
97   - this.pageNo = 1;
98   - this.getList();
99   - },
100   - /** 重置按钮操作 */
101   - resetQuery() {
102   - this.resetForm("queryForm");
103   - this.handleQuery();
104   - },
105   - /** 强退按钮操作 */
106   - handleForceLogout(row) {
107   - this.$confirm('是否确认强退名称为"' + row.username + '"的数据项?', "警告", {
108   - confirmButtonText: "确定",
109   - cancelButtonText: "取消",
110   - type: "warning"
111   - }).then(function() {
112   - return forceLogout(row.id);
113   - }).then(() => {
114   - this.getList();
115   - this.msgSuccess("强退成功");
116   - })
117   - }
118   - }
119   -};
120   -</script>
121   -
ruoyi-ui/src/views/system/user/profile/index.vue deleted
1   -<template>
2   - <div class="app-container">
3   - <el-row :gutter="20">
4   - <el-col :span="6" :xs="24">
5   - <el-card class="box-card">
6   - <div slot="header" class="clearfix">
7   - <span>个人信息</span>
8   - </div>
9   - <div>
10   - <div class="text-center">
11   - <userAvatar :user="user" />
12   - </div>
13   - <ul class="list-group list-group-striped">
14   - <li class="list-group-item">
15   - <svg-icon icon-class="user" />用户名称
16   - <div class="pull-right">{{ user.username }}</div>
17   - </li>
18   - <li class="list-group-item">
19   - <svg-icon icon-class="phone" />手机号码
20   - <div class="pull-right">{{ user.mobile }}</div>
21   - </li>
22   - <li class="list-group-item">
23   - <svg-icon icon-class="email" />用户邮箱
24   - <div class="pull-right">{{ user.email }}</div>
25   - </li>
26   - <li class="list-group-item">
27   - <svg-icon icon-class="tree" />所属部门
28   - <div class="pull-right" v-if="user.dept">{{ user.dept.name }}</div>
29   - </li>
30   - <li class="list-group-item">
31   - <svg-icon icon-class="tree" />所属岗位
32   - <div class="pull-right" v-if="user.posts">{{ user.posts.map(post => post.name).join(',') }}</div>
33   - </li>
34   - <li class="list-group-item">
35   - <svg-icon icon-class="peoples" />所属角色
36   - <div class="pull-right">{{ user.roles.map(post => post.name).join(',') }}</div>
37   - </li>
38   - <li class="list-group-item">
39   - <svg-icon icon-class="date" />创建日期
40   - <div class="pull-right">{{ parseTime(user.createTime) }}</div>
41   - </li>
42   - </ul>
43   - </div>
44   - </el-card>
45   - </el-col>
46   - <el-col :span="18" :xs="24">
47   - <el-card>
48   - <div slot="header" class="clearfix">
49   - <span>基本资料</span>
50   - </div>
51   - <el-tabs v-model="activeTab">
52   - <el-tab-pane label="基本资料" name="userinfo">
53   - <userInfo :user="user" />
54   - </el-tab-pane>
55   - <el-tab-pane label="修改密码" name="resetPwd">
56   - <resetPwd :user="user" />
57   - </el-tab-pane>
58   - </el-tabs>
59   - </el-card>
60   - </el-col>
61   - </el-row>
62   - </div>
63   -</template>
64   -
65   -<script>
66   -import userAvatar from "./userAvatar";
67   -import userInfo from "./userInfo";
68   -import resetPwd from "./resetPwd";
69   -import { getUserProfile } from "@/api/system/user";
70   -
71   -export default {
72   - name: "Profile",
73   - components: { userAvatar, userInfo, resetPwd },
74   - data() {
75   - return {
76   - user: {},
77   - roleGroup: {},
78   - postGroup: {},
79   - activeTab: "userinfo"
80   - };
81   - },
82   - created() {
83   - this.getUser();
84   - },
85   - methods: {
86   - getUser() {
87   - getUserProfile().then(response => {
88   - this.user = response.data;
89   - });
90   - }
91   - }
92   -};
93   -</script>
ruoyi-ui/src/views/system/user/profile/resetPwd.vue deleted
1   -<template>
2   - <el-form ref="form" :model="user" :rules="rules" label-width="80px">
3   - <el-form-item label="旧密码" prop="oldPassword">
4   - <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" />
5   - </el-form-item>
6   - <el-form-item label="新密码" prop="newPassword">
7   - <el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" />
8   - </el-form-item>
9   - <el-form-item label="确认密码" prop="confirmPassword">
10   - <el-input v-model="user.confirmPassword" placeholder="请确认密码" type="password" />
11   - </el-form-item>
12   - <el-form-item>
13   - <el-button type="primary" size="mini" @click="submit">保存</el-button>
14   - <el-button type="danger" size="mini" @click="close">关闭</el-button>
15   - </el-form-item>
16   - </el-form>
17   -</template>
18   -
19   -<script>
20   -import { updateUserPwd } from "@/api/system/user";
21   -
22   -export default {
23   - data() {
24   - const equalToPassword = (rule, value, callback) => {
25   - if (this.user.newPassword !== value) {
26   - callback(new Error("两次输入的密码不一致"));
27   - } else {
28   - callback();
29   - }
30   - };
31   - return {
32   - test: "1test",
33   - user: {
34   - oldPassword: undefined,
35   - newPassword: undefined,
36   - confirmPassword: undefined
37   - },
38   - // 表单校验
39   - rules: {
40   - oldPassword: [
41   - { required: true, message: "旧密码不能为空", trigger: "blur" }
42   - ],
43   - newPassword: [
44   - { required: true, message: "新密码不能为空", trigger: "blur" },
45   - { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }
46   - ],
47   - confirmPassword: [
48   - { required: true, message: "确认密码不能为空", trigger: "blur" },
49   - { required: true, validator: equalToPassword, trigger: "blur" }
50   - ]
51   - }
52   - };
53   - },
54   - methods: {
55   - submit() {
56   - this.$refs["form"].validate(valid => {
57   - if (valid) {
58   - updateUserPwd(this.user.oldPassword, this.user.newPassword).then(
59   - response => {
60   - this.msgSuccess("修改成功");
61   - }
62   - );
63   - }
64   - });
65   - },
66   - close() {
67   - this.$store.dispatch("tagsView/delView", this.$route);
68   - this.$router.push({ path: "/index" });
69   - }
70   - }
71   -};
72   -</script>
ruoyi-ui/src/views/system/user/profile/userAvatar.vue deleted
1   -<template>
2   - <div>
3   - <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
4   - <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened">
5   - <el-row>
6   - <el-col :xs="24" :md="12" :style="{height: '350px'}">
7   - <vue-cropper
8   - ref="cropper"
9   - :img="options.img"
10   - :info="true"
11   - :autoCrop="options.autoCrop"
12   - :autoCropWidth="options.autoCropWidth"
13   - :autoCropHeight="options.autoCropHeight"
14   - :fixedBox="options.fixedBox"
15   - @realTime="realTime"
16   - v-if="visible"
17   - />
18   - </el-col>
19   - <el-col :xs="24" :md="12" :style="{height: '350px'}">
20   - <div class="avatar-upload-preview">
21   - <img :src="previews.url" :style="previews.img" />
22   - </div>
23   - </el-col>
24   - </el-row>
25   - <br />
26   - <el-row>
27   - <el-col :lg="2" :md="2">
28   - <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
29   - <el-button size="small">
30   - 选择
31   - <i class="el-icon-upload el-icon--right"></i>
32   - </el-button>
33   - </el-upload>
34   - </el-col>
35   - <el-col :lg="{span: 1, offset: 2}" :md="2">
36   - <el-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button>
37   - </el-col>
38   - <el-col :lg="{span: 1, offset: 1}" :md="2">
39   - <el-button icon="el-icon-minus" size="small" @click="changeScale(-1)"></el-button>
40   - </el-col>
41   - <el-col :lg="{span: 1, offset: 1}" :md="2">
42   - <el-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button>
43   - </el-col>
44   - <el-col :lg="{span: 1, offset: 1}" :md="2">
45   - <el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
46   - </el-col>
47   - <el-col :lg="{span: 2, offset: 6}" :md="2">
48   - <el-button type="primary" size="small" @click="uploadImg()">提 交</el-button>
49   - </el-col>
50   - </el-row>
51   - </el-dialog>
52   - </div>
53   -</template>
54   -
55   -<script>
56   -import store from "@/store";
57   -import { VueCropper } from "vue-cropper";
58   -import { uploadAvatar } from "@/api/system/user";
59   -
60   -export default {
61   - components: { VueCropper },
62   - props: {
63   - user: {
64   - type: Object
65   - }
66   - },
67   - data() {
68   - return {
69   - // 是否显示弹出层
70   - open: false,
71   - // 是否显示cropper
72   - visible: false,
73   - // 弹出层标题
74   - title: "修改头像",
75   - options: {
76   - img: store.getters.avatar, //裁剪图片的地址
77   - autoCrop: true, // 是否默认生成截图框
78   - autoCropWidth: 200, // 默认生成截图框宽度
79   - autoCropHeight: 200, // 默认生成截图框高度
80   - fixedBox: true // 固定截图框大小 不允许改变
81   - },
82   - previews: {}
83   - };
84   - },
85   - methods: {
86   - // 编辑头像
87   - editCropper() {
88   - this.open = true;
89   - },
90   - // 打开弹出层结束时的回调
91   - modalOpened() {
92   - this.visible = true;
93   - },
94   - // 覆盖默认的上传行为
95   - requestUpload() {
96   - },
97   - // 向左旋转
98   - rotateLeft() {
99   - this.$refs.cropper.rotateLeft();
100   - },
101   - // 向右旋转
102   - rotateRight() {
103   - this.$refs.cropper.rotateRight();
104   - },
105   - // 图片缩放
106   - changeScale(num) {
107   - num = num || 1;
108   - this.$refs.cropper.changeScale(num);
109   - },
110   - // 上传预处理
111   - beforeUpload(file) {
112   - if (file.type.indexOf("image/") == -1) {
113   - this.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
114   - } else {
115   - const reader = new FileReader();
116   - reader.readAsDataURL(file);
117   - reader.onload = () => {
118   - this.options.img = reader.result;
119   - };
120   - }
121   - },
122   - // 上传图片
123   - uploadImg() {
124   - this.$refs.cropper.getCropBlob(data => {
125   - let formData = new FormData();
126   - formData.append("avatarfile", data);
127   - uploadAvatar(formData).then(response => {
128   - this.open = false;
129   - this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
130   - store.commit('SET_AVATAR', this.options.img);
131   - this.msgSuccess("修改成功");
132   - this.visible = false;
133   - });
134   - });
135   - },
136   - // 实时预览
137   - realTime(data) {
138   - this.previews = data;
139   - }
140   - }
141   -};
142   -</script>
143   -<style scoped lang="scss">
144   -.user-info-head {
145   - position: relative;
146   - display: inline-block;
147   - height: 120px;
148   -}
149   -
150   -.user-info-head:hover:after {
151   - content: '+';
152   - position: absolute;
153   - left: 0;
154   - right: 0;
155   - top: 0;
156   - bottom: 0;
157   - color: #eee;
158   - background: rgba(0, 0, 0, 0.5);
159   - font-size: 24px;
160   - font-style: normal;
161   - -webkit-font-smoothing: antialiased;
162   - -moz-osx-font-smoothing: grayscale;
163   - cursor: pointer;
164   - line-height: 110px;
165   - border-radius: 50%;
166   -}
167   -</style>
168 0 \ No newline at end of file
ruoyi-ui/src/views/system/user/profile/userInfo.vue deleted
1   -<template>
2   - <el-form ref="form" :model="user" :rules="rules" label-width="80px">
3   - <el-form-item label="用户昵称" prop="nickName">
4   - <el-input v-model="user.nickname" />
5   - </el-form-item>
6   - <el-form-item label="手机号码" prop="mobile">
7   - <el-input v-model="user.mobile" maxlength="11" />
8   - </el-form-item>
9   - <el-form-item label="邮箱" prop="email">
10   - <el-input v-model="user.email" maxlength="50" />
11   - </el-form-item>
12   - <el-form-item label="性别">
13   - <el-radio-group v-model="user.sex">
14   - <el-radio :label="1">男</el-radio>
15   - <el-radio :label="2">女</el-radio>
16   - </el-radio-group>
17   - </el-form-item>
18   - <el-form-item>
19   - <el-button type="primary" size="mini" @click="submit">保存</el-button>
20   - <el-button type="danger" size="mini" @click="close">关闭</el-button>
21   - </el-form-item>
22   - </el-form>
23   -</template>
24   -
25   -<script>
26   -import { updateUserProfile } from "@/api/system/user";
27   -
28   -export default {
29   - props: {
30   - user: {
31   - type: Object
32   - }
33   - },
34   - data() {
35   - return {
36   - // 表单校验
37   - rules: {
38   - nickname: [
39   - { required: true, message: "用户昵称不能为空", trigger: "blur" }
40   - ],
41   - email: [
42   - { required: true, message: "邮箱地址不能为空", trigger: "blur" },
43   - {
44   - type: "email",
45   - message: "'请输入正确的邮箱地址",
46   - trigger: ["blur", "change"]
47   - }
48   - ],
49   - mobile: [
50   - { required: true, message: "手机号码不能为空", trigger: "blur" },
51   - {
52   - pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
53   - message: "请输入正确的手机号码",
54   - trigger: "blur"
55   - }
56   - ]
57   - }
58   - };
59   - },
60   - methods: {
61   - submit() {
62   - this.$refs["form"].validate(valid => {
63   - if (valid) {
64   - updateUserProfile(this.user).then(response => {
65   - this.msgSuccess("修改成功");
66   - });
67   - }
68   - });
69   - },
70   - close() {
71   - this.$store.dispatch("tagsView/delView", this.$route);
72   - this.$router.push({ path: "/index" });
73   - }
74   - }
75   -};
76   -</script>
ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue deleted
1   -<template>
2   - <div>
3   - <el-dialog
4   - v-bind="$attrs"
5   - width="500px"
6   - :close-on-click-modal="false"
7   - :modal-append-to-body="false"
8   - v-on="$listeners"
9   - @open="onOpen"
10   - @close="onClose"
11   - >
12   - <el-row :gutter="15">
13   - <el-form
14   - ref="elForm"
15   - :model="formData"
16   - :rules="rules"
17   - size="medium"
18   - label-width="100px"
19   - >
20   - <el-col :span="24">
21   - <el-form-item label="生成类型" prop="type">
22   - <el-radio-group v-model="formData.type">
23   - <el-radio-button
24   - v-for="(item, index) in typeOptions"
25   - :key="index"
26   - :label="item.value"
27   - :disabled="item.disabled"
28   - >
29   - {{ item.label }}
30   - </el-radio-button>
31   - </el-radio-group>
32   - </el-form-item>
33   - <el-form-item v-if="showFileName" label="文件名" prop="fileName">
34   - <el-input v-model="formData.fileName" placeholder="请输入文件名" clearable />
35   - </el-form-item>
36   - </el-col>
37   - </el-form>
38   - </el-row>
39   -
40   - <div slot="footer">
41   - <el-button @click="close">
42   - 取消
43   - </el-button>
44   - <el-button type="primary" @click="handelConfirm">
45   - 确定
46   - </el-button>
47   - </div>
48   - </el-dialog>
49   - </div>
50   -</template>
51   -<script>
52   -export default {
53   - inheritAttrs: false,
54   - props: ['showFileName'],
55   - data() {
56   - return {
57   - formData: {
58   - fileName: undefined,
59   - type: 'file'
60   - },
61   - rules: {
62   - fileName: [{
63   - required: true,
64   - message: '请输入文件名',
65   - trigger: 'blur'
66   - }],
67   - type: [{
68   - required: true,
69   - message: '生成类型不能为空',
70   - trigger: 'change'
71   - }]
72   - },
73   - typeOptions: [{
74   - label: '页面',
75   - value: 'file'
76   - }, {
77   - label: '弹窗',
78   - value: 'dialog'
79   - }]
80   - }
81   - },
82   - computed: {
83   - },
84   - watch: {},
85   - mounted() {},
86   - methods: {
87   - onOpen() {
88   - if (this.showFileName) {
89   - this.formData.fileName = `${+new Date()}.vue`
90   - }
91   - },
92   - onClose() {
93   - },
94   - close(e) {
95   - this.$emit('update:visible', false)
96   - },
97   - handelConfirm() {
98   - this.$refs.elForm.validate(valid => {
99   - if (!valid) return
100   - this.$emit('confirm', { ...this.formData })
101   - this.close()
102   - })
103   - }
104   - }
105   -}
106   -</script>
ruoyi-ui/src/views/tool/build/DraggableItem.vue deleted
1   -<script>
2   -import draggable from 'vuedraggable'
3   -import render from '@/utils/generator/render'
4   -
5   -const components = {
6   - itemBtns(h, element, index, parent) {
7   - const { copyItem, deleteItem } = this.$listeners
8   - return [
9   - <span class="drawing-item-copy" title="复制" onClick={event => {
10   - copyItem(element, parent); event.stopPropagation()
11   - }}>
12   - <i class="el-icon-copy-document" />
13   - </span>,
14   - <span class="drawing-item-delete" title="删除" onClick={event => {
15   - deleteItem(index, parent); event.stopPropagation()
16   - }}>
17   - <i class="el-icon-delete" />
18   - </span>
19   - ]
20   - }
21   -}
22   -const layouts = {
23   - colFormItem(h, element, index, parent) {
24   - const { activeItem } = this.$listeners
25   - let className = this.activeId === element.formId ? 'drawing-item active-from-item' : 'drawing-item'
26   - if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered'
27   - return (
28   - <el-col span={element.span} class={className}
29   - nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
30   - <el-form-item label-width={element.labelWidth ? `${element.labelWidth}px` : null}
31   - label={element.label} required={element.required}>
32   - <render key={element.renderKey} conf={element} onInput={ event => {
33   - this.$set(element, 'defaultValue', event)
34   - }} />
35   - </el-form-item>
36   - {components.itemBtns.apply(this, arguments)}
37   - </el-col>
38   - )
39   - },
40   - rowFormItem(h, element, index, parent) {
41   - const { activeItem } = this.$listeners
42   - const className = this.activeId === element.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item'
43   - let child = renderChildren.apply(this, arguments)
44   - if (element.type === 'flex') {
45   - child = <el-row type={element.type} justify={element.justify} align={element.align}>
46   - {child}
47   - </el-row>
48   - }
49   - return (
50   - <el-col span={element.span}>
51   - <el-row gutter={element.gutter} class={className}
52   - nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
53   - <span class="component-name">{element.componentName}</span>
54   - <draggable list={element.children} animation={340} group="componentsGroup" class="drag-wrapper">
55   - {child}
56   - </draggable>
57   - {components.itemBtns.apply(this, arguments)}
58   - </el-row>
59   - </el-col>
60   - )
61   - }
62   -}
63   -
64   -function renderChildren(h, element, index, parent) {
65   - if (!Array.isArray(element.children)) return null
66   - return element.children.map((el, i) => {
67   - const layout = layouts[el.layout]
68   - if (layout) {
69   - return layout.call(this, h, el, i, element.children)
70   - }
71   - return layoutIsNotFound()
72   - })
73   -}
74   -
75   -function layoutIsNotFound() {
76   - throw new Error(`没有与${this.element.layout}匹配的layout`)
77   -}
78   -
79   -export default {
80   - components: {
81   - render,
82   - draggable
83   - },
84   - props: [
85   - 'element',
86   - 'index',
87   - 'drawingList',
88   - 'activeId',
89   - 'formConf'
90   - ],
91   - render(h) {
92   - const layout = layouts[this.element.layout]
93   -
94   - if (layout) {
95   - return layout.call(this, h, this.element, this.index, this.drawingList)
96   - }
97   - return layoutIsNotFound()
98   - }
99   -}
100   -</script>
ruoyi-ui/src/views/tool/build/IconsDialog.vue deleted
1   -<template>
2   - <div class="icon-dialog">
3   - <el-dialog
4   - v-bind="$attrs"
5   - width="980px"
6   - :modal-append-to-body="false"
7   - v-on="$listeners"
8   - @open="onOpen"
9   - @close="onClose"
10   - >
11   - <div slot="title">
12   - 选择图标
13   - <el-input
14   - v-model="key"
15   - size="mini"
16   - :style="{width: '260px'}"
17   - placeholder="请输入图标名称"
18   - prefix-icon="el-icon-search"
19   - clearable
20   - />
21   - </div>
22   - <ul class="icon-ul">
23   - <li
24   - v-for="icon in iconList"
25   - :key="icon"
26   - :class="active===icon?'active-item':''"
27   - @click="onSelect(icon)"
28   - >
29   - <i :class="icon" />
30   - <div>{{ icon }}</div>
31   - </li>
32   - </ul>
33   - </el-dialog>
34   - </div>
35   -</template>
36   -<script>
37   -import iconList from '@/utils/generator/icon.json'
38   -
39   -const originList = iconList.map(name => `el-icon-${name}`)
40   -
41   -export default {
42   - inheritAttrs: false,
43   - props: ['current'],
44   - data() {
45   - return {
46   - iconList: originList,
47   - active: null,
48   - key: ''
49   - }
50   - },
51   - watch: {
52   - key(val) {
53   - if (val) {
54   - this.iconList = originList.filter(name => name.indexOf(val) > -1)
55   - } else {
56   - this.iconList = originList
57   - }
58   - }
59   - },
60   - methods: {
61   - onOpen() {
62   - this.active = this.current
63   - this.key = ''
64   - },
65   - onClose() {},
66   - onSelect(icon) {
67   - this.active = icon
68   - this.$emit('select', icon)
69   - this.$emit('update:visible', false)
70   - }
71   - }
72   -}
73   -</script>
74   -<style lang="scss" scoped>
75   -.icon-ul {
76   - margin: 0;
77   - padding: 0;
78   - font-size: 0;
79   - li {
80   - list-style-type: none;
81   - text-align: center;
82   - font-size: 14px;
83   - display: inline-block;
84   - width: 16.66%;
85   - box-sizing: border-box;
86   - height: 108px;
87   - padding: 15px 6px 6px 6px;
88   - cursor: pointer;
89   - overflow: hidden;
90   - &:hover {
91   - background: #f2f2f2;
92   - }
93   - &.active-item{
94   - background: #e1f3fb;
95   - color: #7a6df0
96   - }
97   - > i {
98   - font-size: 30px;
99   - line-height: 50px;
100   - }
101   - }
102   -}
103   -.icon-dialog {
104   - ::v-deep .el-dialog {
105   - border-radius: 8px;
106   - margin-bottom: 0;
107   - margin-top: 4vh !important;
108   - display: flex;
109   - flex-direction: column;
110   - max-height: 92vh;
111   - overflow: hidden;
112   - box-sizing: border-box;
113   - .el-dialog__header {
114   - padding-top: 14px;
115   - }
116   - .el-dialog__body {
117   - margin: 0 20px 20px 20px;
118   - padding: 0;
119   - overflow: auto;
120   - }
121   - }
122   -}
123   -</style>
ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue deleted
1   -<template>
2   - <div>
3   - <el-dialog
4   - v-bind="$attrs"
5   - :close-on-click-modal="false"
6   - :modal-append-to-body="false"
7   - v-on="$listeners"
8   - @open="onOpen"
9   - @close="onClose"
10   - >
11   - <el-row :gutter="0">
12   - <el-form
13   - ref="elForm"
14   - :model="formData"
15   - :rules="rules"
16   - size="small"
17   - label-width="100px"
18   - >
19   - <el-col :span="24">
20   - <el-form-item
21   - label="选项名"
22   - prop="label"
23   - >
24   - <el-input
25   - v-model="formData.label"
26   - placeholder="请输入选项名"
27   - clearable
28   - />
29   - </el-form-item>
30   - </el-col>
31   - <el-col :span="24">
32   - <el-form-item
33   - label="选项值"
34   - prop="value"
35   - >
36   - <el-input
37   - v-model="formData.value"
38   - placeholder="请输入选项值"
39   - clearable
40   - >
41   - <el-select
42   - slot="append"
43   - v-model="dataType"
44   - :style="{width: '100px'}"
45   - >
46   - <el-option
47   - v-for="(item, index) in dataTypeOptions"
48   - :key="index"
49   - :label="item.label"
50   - :value="item.value"
51   - :disabled="item.disabled"
52   - />
53   - </el-select>
54   - </el-input>
55   - </el-form-item>
56   - </el-col>
57   - </el-form>
58   - </el-row>
59   - <div slot="footer">
60   - <el-button
61   - type="primary"
62   - @click="handelConfirm"
63   - >
64   - 确定
65   - </el-button>
66   - <el-button @click="close">
67   - 取消
68   - </el-button>
69   - </div>
70   - </el-dialog>
71   - </div>
72   -</template>
73   -<script>
74   -import { isNumberStr } from '@/utils/index'
75   -
76   -export default {
77   - components: {},
78   - inheritAttrs: false,
79   - props: [],
80   - data() {
81   - return {
82   - id: 100,
83   - formData: {
84   - label: undefined,
85   - value: undefined
86   - },
87   - rules: {
88   - label: [
89   - {
90   - required: true,
91   - message: '请输入选项名',
92   - trigger: 'blur'
93   - }
94   - ],
95   - value: [
96   - {
97   - required: true,
98   - message: '请输入选项值',
99   - trigger: 'blur'
100   - }
101   - ]
102   - },
103   - dataType: 'string',
104   - dataTypeOptions: [
105   - {
106   - label: '字符串',
107   - value: 'string'
108   - },
109   - {
110   - label: '数字',
111   - value: 'number'
112   - }
113   - ]
114   - }
115   - },
116   - computed: {},
117   - watch: {
118   - // eslint-disable-next-line func-names
119   - 'formData.value': function (val) {
120   - this.dataType = isNumberStr(val) ? 'number' : 'string'
121   - }
122   - },
123   - created() {},
124   - mounted() {},
125   - methods: {
126   - onOpen() {
127   - this.formData = {
128   - label: undefined,
129   - value: undefined
130   - }
131   - },
132   - onClose() {},
133   - close() {
134   - this.$emit('update:visible', false)
135   - },
136   - handelConfirm() {
137   - this.$refs.elForm.validate(valid => {
138   - if (!valid) return
139   - if (this.dataType === 'number') {
140   - this.formData.value = parseFloat(this.formData.value)
141   - }
142   - this.formData.id = this.id++
143   - this.$emit('commit', this.formData)
144   - this.close()
145   - })
146   - }
147   - }
148   -}
149   -</script>
ruoyi-ui/src/views/tool/codegen/basicInfoForm.vue deleted
1   -<template>
2   - <el-form ref="basicInfoForm" :model="info" :rules="rules" label-width="150px">
3   - <el-row>
4   - <el-col :span="12">
5   - <el-form-item label="表名称" prop="tableName">
6   - <el-input placeholder="请输入仓库名称" v-model="info.tableName" />
7   - </el-form-item>
8   - </el-col>
9   - <el-col :span="12">
10   - <el-form-item label="表描述" prop="tableComment">
11   - <el-input placeholder="请输入" v-model="info.tableComment" />
12   - </el-form-item>
13   - </el-col>
14   -
15   - <el-col :span="12">
16   - <el-form-item label="实体类名称" prop="className">
17   - <el-input placeholder="请输入" v-model="info.className" />
18   - </el-form-item>
19   - </el-col>
20   - <el-col :span="12">
21   - <el-form-item label="作者" prop="author">
22   - <el-input placeholder="请输入" v-model="info.author" />
23   - </el-form-item>
24   - </el-col>
25   - <el-col :span="24">
26   - <el-form-item label="备注" prop="remark">
27   - <el-input type="textarea" :rows="3" v-model="info.remark"></el-input>
28   - </el-form-item>
29   - </el-col>
30   - </el-row>
31   - </el-form>
32   -</template>
33   -<script>
34   -export default {
35   - name: "BasicInfoForm",
36   - props: {
37   - info: {
38   - type: Object,
39   - default: null
40   - }
41   - },
42   - data() {
43   - return {
44   - rules: {
45   - tableName: [
46   - { required: true, message: "请输入表名称", trigger: "blur" }
47   - ],
48   - tableComment: [
49   - { required: true, message: "请输入表描述", trigger: "blur" }
50   - ],
51   - className: [
52   - { required: true, message: "请输入实体类名称", trigger: "blur" }
53   - ],
54   - author: [
55   - { required: true, message: "请输入作者", trigger: "blur" }
56   - ]
57   - }
58   - };
59   - }
60   -};
61   -</script>
ruoyi-ui/src/views/tool/codegen/importTable.vue deleted
1   -<template>
2   - <!-- 导入表 -->
3   - <el-dialog title="导入表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
4   - <el-form :model="queryParams" ref="queryForm" :inline="true">
5   - <el-form-item label="表名称" prop="tableName">
6   - <el-input
7   - v-model="queryParams.tableName"
8   - placeholder="请输入表名称"
9   - clearable
10   - size="small"
11   - @keyup.enter.native="handleQuery"
12   - />
13   - </el-form-item>
14   - <el-form-item label="表描述" prop="tableComment">
15   - <el-input
16   - v-model="queryParams.tableComment"
17   - placeholder="请输入表描述"
18   - clearable
19   - size="small"
20   - @keyup.enter.native="handleQuery"
21   - />
22   - </el-form-item>
23   - <el-form-item>
24   - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
25   - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
26   - </el-form-item>
27   - </el-form>
28   - <el-row>
29   - <el-table @row-click="clickRow" ref="table" :data="dbTableList" @selection-change="handleSelectionChange" height="260px">
30   - <el-table-column type="selection" width="55"></el-table-column>
31   - <el-table-column prop="tableSchema" label="数据库" :show-overflow-tooltip="true"></el-table-column>
32   - <el-table-column prop="tableName" label="表名称" :show-overflow-tooltip="true"></el-table-column>
33   - <el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true"></el-table-column>
34   - <el-table-column prop="createTime" label="创建时间">
35   - <template slot-scope="scope">
36   - <span>{{ parseTime(scope.row.createTime) }}</span>
37   - </template>
38   - </el-table-column>
39   - </el-table>
40   - </el-row>
41   - <div slot="footer" class="dialog-footer">
42   - <el-button type="primary" @click="handleImportTable">确 定</el-button>
43   - <el-button @click="visible = false">取 消</el-button>
44   - </div>
45   - </el-dialog>
46   -</template>
47   -
48   -<script>
49   -import { getSchemaTableList, createCodegenListFromDB } from "@/api/tool/codegen";
50   -export default {
51   - data() {
52   - return {
53   - // 遮罩层
54   - visible: false,
55   - // 选中数组值
56   - tables: [],
57   - // 总条数
58   - total: 0,
59   - // 表数据
60   - dbTableList: [],
61   - // 查询参数
62   - queryParams: {
63   - tableName: undefined,
64   - tableComment: undefined
65   - }
66   - };
67   - },
68   - methods: {
69   - // 显示弹框
70   - show() {
71   - this.getList();
72   - this.visible = true;
73   - },
74   - clickRow(row) {
75   - this.$refs.table.toggleRowSelection(row);
76   - },
77   - // 多选框选中数据
78   - handleSelectionChange(selection) {
79   - this.tables = selection.map(item => item.tableName);
80   - },
81   - // 查询表数据
82   - getList() {
83   - getSchemaTableList(this.queryParams).then(res => {
84   - this.dbTableList = res.data;
85   - });
86   - },
87   - /** 搜索按钮操作 */
88   - handleQuery() {
89   - this.getList();
90   - },
91   - /** 重置按钮操作 */
92   - resetQuery() {
93   - this.resetForm("queryForm");
94   - this.handleQuery();
95   - },
96   - /** 导入按钮操作 */
97   - handleImportTable() {
98   - createCodegenListFromDB(this.tables.join(",")).then(res => {
99   - this.msgSuccess("导入成功");
100   - this.visible = false;
101   - this.$emit("ok");
102   - });
103   - }
104   - }
105   -};
106   -</script>
ruoyi-ui/src/views/tool/dbDoc/index.vue deleted
1   -<template>
2   - <div class="app-container">
3   - <el-row :gutter="10" class="mb8">
4   - <el-col :span="1.5">
5   - <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleExportHtml">导出 HTML</el-button>
6   - <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleExportWord">导出 Word</el-button>
7   - <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleExportMarkdown">导出 Markdown</el-button>
8   - </el-col>
9   - </el-row>
10   -
11   - <!-- 展示文档 -->
12   - <div v-loading="loading" :style="'height:'+ height">
13   - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
14   - </div>
15   - </div>
16   -</template>
17   -<script>
18   -import { exportHtml, exportWord, exportMarkdown} from "@/api/infra/dbDoc";
19   -
20   -export default {
21   - name: "DBDoc",
22   - data() {
23   - return {
24   - height: document.documentElement.clientHeight - 94.5 + "px;",
25   - loading: true,
26   - src: undefined,
27   - };
28   - },
29   - mounted: function() {
30   - setTimeout(() => {
31   - this.loading = false;
32   - }, 230);
33   - const that = this;
34   - window.onresize = function temp() {
35   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
36   - };
37   - },
38   - created() {
39   - // 加载 Html,进行预览
40   - exportHtml().then(response => {
41   - let blob = new Blob([response], {type : 'text/html'});
42   - this.src = window.URL.createObjectURL(blob);
43   - })
44   - },
45   - methods: {
46   - /** 处理导出 HTML */
47   - handleExportHtml() {
48   - exportHtml().then(response => {
49   - this.downloadHtml(response, '数据库文档.html');
50   - })
51   - },
52   - /** 处理导出 Word */
53   - handleExportWord() {
54   - exportWord().then(response => {
55   - this.downloadWord(response, '数据库文档.doc');
56   - })
57   - },
58   - /** 处理导出 Markdown */
59   - handleExportMarkdown() {
60   - exportMarkdown().then(response => {
61   - this.downloadMarkdown(response, '数据库文档.md');
62   - })
63   - }
64   - }
65   -};
66   -</script>
ruoyi-ui/src/views/tool/swagger/index.vue deleted
1   -<template>
2   - <div v-loading="loading" :style="'height:'+ height">
3   - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
4   - </div>
5   -</template>
6   -<script>
7   -export default {
8   - name: "Swagger",
9   - data() {
10   - return {
11   - src: process.env.VUE_APP_BASE_API + "/doc.html",
12   - height: document.documentElement.clientHeight - 94.5 + "px;",
13   - loading: true
14   - };
15   - },
16   - mounted: function() {
17   - setTimeout(() => {
18   - this.loading = false;
19   - }, 230);
20   - const that = this;
21   - window.onresize = function temp() {
22   - that.height = document.documentElement.clientHeight - 94.5 + "px;";
23   - };
24   - }
25   -};
26   -</script>
ruoyi-ui/vue.config.js deleted
1   -'use strict'
2   -const path = require('path')
3   -const defaultSettings = require('./src/settings.js')
4   -
5   -function resolve(dir) {
6   - return path.join(__dirname, dir)
7   -}
8   -
9   -const name = defaultSettings.title || '芋道管理系统' // 标题
10   -
11   -const port = process.env.port || process.env.npm_config_port || 80 // 端口
12   -
13   -// vue.config.js 配置说明
14   -//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
15   -// 这里只列一部分,具体配置参考文档
16   -module.exports = {
17   - // 部署生产环境和开发环境下的URL。
18   - // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
19   - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
20   - publicPath: process.env.PUBLIC_PATH ? process.env.PUBLIC_PATH : '/',
21   - // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
22   - outputDir: 'dist',
23   - // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
24   - assetsDir: 'static',
25   - // 是否开启eslint保存检测,有效值:ture | false | 'error'
26   - lintOnSave: process.env.NODE_ENV === 'development',
27   - // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
28   - productionSourceMap: false,
29   - // webpack-dev-server 相关配置
30   - devServer: {
31   - host: '0.0.0.0',
32   - port: port,
33   - open: true,
34   - proxy: {
35   - // detail: https://cli.vuejs.org/config/#devserver-proxy
36   - [process.env.VUE_APP_BASE_API]: {
37   - target: `http://localhost:48080`,
38   - changeOrigin: true,
39   - pathRewrite: {
40   - ['^' + process.env.VUE_APP_BASE_API]: ''
41   - }
42   - }
43   - },
44   - disableHostCheck: true
45   - },
46   - configureWebpack: {
47   - name: name,
48   - resolve: {
49   - alias: {
50   - '@': resolve('src')
51   - }
52   - }
53   - },
54   - chainWebpack(config) {
55   - config.plugins.delete('preload') // TODO: need test
56   - config.plugins.delete('prefetch') // TODO: need test
57   -
58   - // set svg-sprite-loader
59   - config.module
60   - .rule('svg')
61   - .exclude.add(resolve('src/assets/icons'))
62   - .end()
63   - config.module
64   - .rule('icons')
65   - .test(/\.svg$/)
66   - .include.add(resolve('src/assets/icons'))
67   - .end()
68   - .use('svg-sprite-loader')
69   - .loader('svg-sprite-loader')
70   - .options({
71   - symbolId: 'icon-[name]'
72   - })
73   - .end()
74   -
75   - config
76   - .when(process.env.NODE_ENV !== 'development',
77   - config => {
78   - config
79   - .plugin('ScriptExtHtmlWebpackPlugin')
80   - .after('html')
81   - .use('script-ext-html-webpack-plugin', [{
82   - // `runtime` must same as runtimeChunk name. default is `runtime`
83   - inline: /runtime\..*\.js$/
84   - }])
85   - .end()
86   - config
87   - .optimization.splitChunks({
88   - chunks: 'all',
89   - cacheGroups: {
90   - libs: {
91   - name: 'chunk-libs',
92   - test: /[\\/]node_modules[\\/]/,
93   - priority: 10,
94   - chunks: 'initial' // only package third parties that are initially dependent
95   - },
96   - elementUI: {
97   - name: 'chunk-elementUI', // split elementUI into a single package
98   - priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
99   - test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
100   - },
101   - commons: {
102   - name: 'chunk-commons',
103   - test: resolve('src/components'), // can customize your rules
104   - minChunks: 3, // minimum common number
105   - priority: 5,
106   - reuseExistingChunk: true
107   - }
108   - }
109   - })
110   - config.optimization.runtimeChunk('single'),
111   - {
112   - from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
113   - to: './', //到根目录下
114   - }
115   - }
116   - )
117   - }
118   -}
yudao-admin-server/pom.xml
... ... @@ -68,17 +68,6 @@
68 68 </execution>
69 69 </executions>
70 70 </plugin>
71   -
72   - <plugin>
73   - <groupId>org.apache.maven.plugins</groupId>
74   - <artifactId>maven-surefire-plugin</artifactId>
75   - <version>3.0.0-M5</version>
76   - </plugin>
77   - <plugin>
78   - <groupId>org.apache.maven.plugins</groupId>
79   - <artifactId>maven-failsafe-plugin</artifactId>
80   - <version>3.0.0-M5</version>
81   - </plugin>
82 71 </plugins>
83 72 </build>
84 73  
... ...
ruoyi-ui/.editorconfig renamed to yudao-admin-ui/.editorconfig
1   -# 告诉EditorConfig插件,这是根文件,不用继续往上查找
2   -root = true
3   -
4   -# 匹配全部文件
5   -[*]
6   -# 设置字符集
7   -charset = utf-8
8   -# 缩进风格,可选space、tab
9   -indent_style = space
10   -# 缩进的空格数
11   -indent_size = 2
12   -# 结尾换行符,可选lf、cr、crlf
13   -end_of_line = lf
14   -# 在文件结尾插入新行
15   -insert_final_newline = true
16   -# 删除一行中的前后空格
17   -trim_trailing_whitespace = true
18   -
19   -# 匹配md结尾的文件
20   -[*.md]
21   -insert_final_newline = false
22   -trim_trailing_whitespace = false
  1 +# 告诉EditorConfig插件,这是根文件,不用继续往上查找
  2 +root = true
  3 +
  4 +# 匹配全部文件
  5 +[*]
  6 +# 设置字符集
  7 +charset = utf-8
  8 +# 缩进风格,可选space、tab
  9 +indent_style = space
  10 +# 缩进的空格数
  11 +indent_size = 2
  12 +# 结尾换行符,可选lf、cr、crlf
  13 +end_of_line = lf
  14 +# 在文件结尾插入新行
  15 +insert_final_newline = true
  16 +# 删除一行中的前后空格
  17 +trim_trailing_whitespace = true
  18 +
  19 +# 匹配md结尾的文件
  20 +[*.md]
  21 +insert_final_newline = false
  22 +trim_trailing_whitespace = false
... ...
ruoyi-ui/.env.demo1024 renamed to yudao-admin-ui/.env.demo1024
ruoyi-ui/.env.development renamed to yudao-admin-ui/.env.development
1   -# 开发环境配置
2   -ENV = 'development'
3   -
4   -# 芋道管理系统/开发环境
5   -VUE_APP_BASE_API = '/dev-api'
6   -# VUE_APP_BASE_API = '/api'
7   -
8   -# 路由懒加载
9   -VUE_CLI_BABEL_TRANSPILE_MODULES = true
  1 +# 开发环境配置
  2 +ENV = 'development'
  3 +
  4 +# 芋道管理系统/开发环境
  5 +VUE_APP_BASE_API = '/dev-api'
  6 +# VUE_APP_BASE_API = '/api'
  7 +
  8 +# 路由懒加载
  9 +VUE_CLI_BABEL_TRANSPILE_MODULES = true
... ...
ruoyi-ui/.env.production renamed to yudao-admin-ui/.env.production
1   -# 生产环境配置
2   -ENV = 'production'
3   -
4   -# 芋道管理系统/生产环境
5   -VUE_APP_BASE_API = '/prod-api'
  1 +# 生产环境配置
  2 +ENV = 'production'
  3 +
  4 +# 芋道管理系统/生产环境
  5 +VUE_APP_BASE_API = '/prod-api'
... ...
ruoyi-ui/.env.staging renamed to yudao-admin-ui/.env.staging
1   -NODE_ENV = production
2   -
3   -# 测试环境配置
4   -ENV = 'staging'
5   -
6   -# 芋道管理系统/测试环境
7   -VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'
8   -
9   -# 静态资源地址
10   -PUBLIC_PATH = 'http://static.yudao.iocoder.cn/'
  1 +NODE_ENV = production
  2 +
  3 +# 测试环境配置
  4 +ENV = 'staging'
  5 +
  6 +# 芋道管理系统/测试环境
  7 +VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'
  8 +
  9 +# 静态资源地址
  10 +PUBLIC_PATH = 'http://static.yudao.iocoder.cn/'
... ...
ruoyi-ui/.eslintignore renamed to yudao-admin-ui/.eslintignore
1   -# 忽略build目录下类型为js的文件的语法检查
2   -build/*.js
3   -# 忽略src/assets目录下文件的语法检查
4   -src/assets
5   -# 忽略public目录下文件的语法检查
6   -public
7   -# 忽略当前目录下为js的文件的语法检查
8   -*.js
9   -# 忽略当前目录下为vue的文件的语法检查
  1 +# 忽略build目录下类型为js的文件的语法检查
  2 +build/*.js
  3 +# 忽略src/assets目录下文件的语法检查
  4 +src/assets
  5 +# 忽略public目录下文件的语法检查
  6 +public
  7 +# 忽略当前目录下为js的文件的语法检查
  8 +*.js
  9 +# 忽略当前目录下为vue的文件的语法检查
10 10 *.vue
11 11 \ No newline at end of file
... ...
ruoyi-ui/.eslintrc.js renamed to yudao-admin-ui/.eslintrc.js
1   -// ESlint 检查配置
2   -module.exports = {
3   - root: true,
4   - parserOptions: {
5   - parser: 'babel-eslint',
6   - sourceType: 'module'
7   - },
8   - env: {
9   - browser: true,
10   - node: true,
11   - es6: true,
12   - },
13   - extends: ['plugin:vue/recommended', 'eslint:recommended'],
14   -
15   - // add your custom rules here
16   - //it is base on https://github.com/vuejs/eslint-config-vue
17   - rules: {
18   - "vue/max-attributes-per-line": [2, {
19   - "singleline": 10,
20   - "multiline": {
21   - "max": 1,
22   - "allowFirstLine": false
23   - }
24   - }],
25   - "vue/singleline-html-element-content-newline": "off",
26   - "vue/multiline-html-element-content-newline":"off",
27   - "vue/name-property-casing": ["error", "PascalCase"],
28   - "vue/no-v-html": "off",
29   - 'accessor-pairs': 2,
30   - 'arrow-spacing': [2, {
31   - 'before': true,
32   - 'after': true
33   - }],
34   - 'block-spacing': [2, 'always'],
35   - 'brace-style': [2, '1tbs', {
36   - 'allowSingleLine': true
37   - }],
38   - 'camelcase': [0, {
39   - 'properties': 'always'
40   - }],
41   - 'comma-dangle': [2, 'never'],
42   - 'comma-spacing': [2, {
43   - 'before': false,
44   - 'after': true
45   - }],
46   - 'comma-style': [2, 'last'],
47   - 'constructor-super': 2,
48   - 'curly': [2, 'multi-line'],
49   - 'dot-location': [2, 'property'],
50   - 'eol-last': 2,
51   - 'eqeqeq': ["error", "always", {"null": "ignore"}],
52   - 'generator-star-spacing': [2, {
53   - 'before': true,
54   - 'after': true
55   - }],
56   - 'handle-callback-err': [2, '^(err|error)$'],
57   - 'indent': [2, 2, {
58   - 'SwitchCase': 1
59   - }],
60   - 'jsx-quotes': [2, 'prefer-single'],
61   - 'key-spacing': [2, {
62   - 'beforeColon': false,
63   - 'afterColon': true
64   - }],
65   - 'keyword-spacing': [2, {
66   - 'before': true,
67   - 'after': true
68   - }],
69   - 'new-cap': [2, {
70   - 'newIsCap': true,
71   - 'capIsNew': false
72   - }],
73   - 'new-parens': 2,
74   - 'no-array-constructor': 2,
75   - 'no-caller': 2,
76   - 'no-console': 'off',
77   - 'no-class-assign': 2,
78   - 'no-cond-assign': 2,
79   - 'no-const-assign': 2,
80   - 'no-control-regex': 0,
81   - 'no-delete-var': 2,
82   - 'no-dupe-args': 2,
83   - 'no-dupe-class-members': 2,
84   - 'no-dupe-keys': 2,
85   - 'no-duplicate-case': 2,
86   - 'no-empty-character-class': 2,
87   - 'no-empty-pattern': 2,
88   - 'no-eval': 2,
89   - 'no-ex-assign': 2,
90   - 'no-extend-native': 2,
91   - 'no-extra-bind': 2,
92   - 'no-extra-boolean-cast': 2,
93   - 'no-extra-parens': [2, 'functions'],
94   - 'no-fallthrough': 2,
95   - 'no-floating-decimal': 2,
96   - 'no-func-assign': 2,
97   - 'no-implied-eval': 2,
98   - 'no-inner-declarations': [2, 'functions'],
99   - 'no-invalid-regexp': 2,
100   - 'no-irregular-whitespace': 2,
101   - 'no-iterator': 2,
102   - 'no-label-var': 2,
103   - 'no-labels': [2, {
104   - 'allowLoop': false,
105   - 'allowSwitch': false
106   - }],
107   - 'no-lone-blocks': 2,
108   - 'no-mixed-spaces-and-tabs': 2,
109   - 'no-multi-spaces': 2,
110   - 'no-multi-str': 2,
111   - 'no-multiple-empty-lines': [2, {
112   - 'max': 1
113   - }],
114   - 'no-native-reassign': 2,
115   - 'no-negated-in-lhs': 2,
116   - 'no-new-object': 2,
117   - 'no-new-require': 2,
118   - 'no-new-symbol': 2,
119   - 'no-new-wrappers': 2,
120   - 'no-obj-calls': 2,
121   - 'no-octal': 2,
122   - 'no-octal-escape': 2,
123   - 'no-path-concat': 2,
124   - 'no-proto': 2,
125   - 'no-redeclare': 2,
126   - 'no-regex-spaces': 2,
127   - 'no-return-assign': [2, 'except-parens'],
128   - 'no-self-assign': 2,
129   - 'no-self-compare': 2,
130   - 'no-sequences': 2,
131   - 'no-shadow-restricted-names': 2,
132   - 'no-spaced-func': 2,
133   - 'no-sparse-arrays': 2,
134   - 'no-this-before-super': 2,
135   - 'no-throw-literal': 2,
136   - 'no-trailing-spaces': 2,
137   - 'no-undef': 2,
138   - 'no-undef-init': 2,
139   - 'no-unexpected-multiline': 2,
140   - 'no-unmodified-loop-condition': 2,
141   - 'no-unneeded-ternary': [2, {
142   - 'defaultAssignment': false
143   - }],
144   - 'no-unreachable': 2,
145   - 'no-unsafe-finally': 2,
146   - 'no-unused-vars': [2, {
147   - 'vars': 'all',
148   - 'args': 'none'
149   - }],
150   - 'no-useless-call': 2,
151   - 'no-useless-computed-key': 2,
152   - 'no-useless-constructor': 2,
153   - 'no-useless-escape': 0,
154   - 'no-whitespace-before-property': 2,
155   - 'no-with': 2,
156   - 'one-var': [2, {
157   - 'initialized': 'never'
158   - }],
159   - 'operator-linebreak': [2, 'after', {
160   - 'overrides': {
161   - '?': 'before',
162   - ':': 'before'
163   - }
164   - }],
165   - 'padded-blocks': [2, 'never'],
166   - 'quotes': [2, 'single', {
167   - 'avoidEscape': true,
168   - 'allowTemplateLiterals': true
169   - }],
170   - 'semi': [2, 'never'],
171   - 'semi-spacing': [2, {
172   - 'before': false,
173   - 'after': true
174   - }],
175   - 'space-before-blocks': [2, 'always'],
176   - 'space-before-function-paren': [2, 'never'],
177   - 'space-in-parens': [2, 'never'],
178   - 'space-infix-ops': 2,
179   - 'space-unary-ops': [2, {
180   - 'words': true,
181   - 'nonwords': false
182   - }],
183   - 'spaced-comment': [2, 'always', {
184   - 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
185   - }],
186   - 'template-curly-spacing': [2, 'never'],
187   - 'use-isnan': 2,
188   - 'valid-typeof': 2,
189   - 'wrap-iife': [2, 'any'],
190   - 'yield-star-spacing': [2, 'both'],
191   - 'yoda': [2, 'never'],
192   - 'prefer-const': 2,
193   - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
194   - 'object-curly-spacing': [2, 'always', {
195   - objectsInObjects: false
196   - }],
197   - 'array-bracket-spacing': [2, 'never']
198   - }
199   -}
  1 +// ESlint 检查配置
  2 +module.exports = {
  3 + root: true,
  4 + parserOptions: {
  5 + parser: 'babel-eslint',
  6 + sourceType: 'module'
  7 + },
  8 + env: {
  9 + browser: true,
  10 + node: true,
  11 + es6: true,
  12 + },
  13 + extends: ['plugin:vue/recommended', 'eslint:recommended'],
  14 +
  15 + // add your custom rules here
  16 + //it is base on https://github.com/vuejs/eslint-config-vue
  17 + rules: {
  18 + "vue/max-attributes-per-line": [2, {
  19 + "singleline": 10,
  20 + "multiline": {
  21 + "max": 1,
  22 + "allowFirstLine": false
  23 + }
  24 + }],
  25 + "vue/singleline-html-element-content-newline": "off",
  26 + "vue/multiline-html-element-content-newline":"off",
  27 + "vue/name-property-casing": ["error", "PascalCase"],
  28 + "vue/no-v-html": "off",
  29 + 'accessor-pairs': 2,
  30 + 'arrow-spacing': [2, {
  31 + 'before': true,
  32 + 'after': true
  33 + }],
  34 + 'block-spacing': [2, 'always'],
  35 + 'brace-style': [2, '1tbs', {
  36 + 'allowSingleLine': true
  37 + }],
  38 + 'camelcase': [0, {
  39 + 'properties': 'always'
  40 + }],
  41 + 'comma-dangle': [2, 'never'],
  42 + 'comma-spacing': [2, {
  43 + 'before': false,
  44 + 'after': true
  45 + }],
  46 + 'comma-style': [2, 'last'],
  47 + 'constructor-super': 2,
  48 + 'curly': [2, 'multi-line'],
  49 + 'dot-location': [2, 'property'],
  50 + 'eol-last': 2,
  51 + 'eqeqeq': ["error", "always", {"null": "ignore"}],
  52 + 'generator-star-spacing': [2, {
  53 + 'before': true,
  54 + 'after': true
  55 + }],
  56 + 'handle-callback-err': [2, '^(err|error)$'],
  57 + 'indent': [2, 2, {
  58 + 'SwitchCase': 1
  59 + }],
  60 + 'jsx-quotes': [2, 'prefer-single'],
  61 + 'key-spacing': [2, {
  62 + 'beforeColon': false,
  63 + 'afterColon': true
  64 + }],
  65 + 'keyword-spacing': [2, {
  66 + 'before': true,
  67 + 'after': true
  68 + }],
  69 + 'new-cap': [2, {
  70 + 'newIsCap': true,
  71 + 'capIsNew': false
  72 + }],
  73 + 'new-parens': 2,
  74 + 'no-array-constructor': 2,
  75 + 'no-caller': 2,
  76 + 'no-console': 'off',
  77 + 'no-class-assign': 2,
  78 + 'no-cond-assign': 2,
  79 + 'no-const-assign': 2,
  80 + 'no-control-regex': 0,
  81 + 'no-delete-var': 2,
  82 + 'no-dupe-args': 2,
  83 + 'no-dupe-class-members': 2,
  84 + 'no-dupe-keys': 2,
  85 + 'no-duplicate-case': 2,
  86 + 'no-empty-character-class': 2,
  87 + 'no-empty-pattern': 2,
  88 + 'no-eval': 2,
  89 + 'no-ex-assign': 2,
  90 + 'no-extend-native': 2,
  91 + 'no-extra-bind': 2,
  92 + 'no-extra-boolean-cast': 2,
  93 + 'no-extra-parens': [2, 'functions'],
  94 + 'no-fallthrough': 2,
  95 + 'no-floating-decimal': 2,
  96 + 'no-func-assign': 2,
  97 + 'no-implied-eval': 2,
  98 + 'no-inner-declarations': [2, 'functions'],
  99 + 'no-invalid-regexp': 2,
  100 + 'no-irregular-whitespace': 2,
  101 + 'no-iterator': 2,
  102 + 'no-label-var': 2,
  103 + 'no-labels': [2, {
  104 + 'allowLoop': false,
  105 + 'allowSwitch': false
  106 + }],
  107 + 'no-lone-blocks': 2,
  108 + 'no-mixed-spaces-and-tabs': 2,
  109 + 'no-multi-spaces': 2,
  110 + 'no-multi-str': 2,
  111 + 'no-multiple-empty-lines': [2, {
  112 + 'max': 1
  113 + }],
  114 + 'no-native-reassign': 2,
  115 + 'no-negated-in-lhs': 2,
  116 + 'no-new-object': 2,
  117 + 'no-new-require': 2,
  118 + 'no-new-symbol': 2,
  119 + 'no-new-wrappers': 2,
  120 + 'no-obj-calls': 2,
  121 + 'no-octal': 2,
  122 + 'no-octal-escape': 2,
  123 + 'no-path-concat': 2,
  124 + 'no-proto': 2,
  125 + 'no-redeclare': 2,
  126 + 'no-regex-spaces': 2,
  127 + 'no-return-assign': [2, 'except-parens'],
  128 + 'no-self-assign': 2,
  129 + 'no-self-compare': 2,
  130 + 'no-sequences': 2,
  131 + 'no-shadow-restricted-names': 2,
  132 + 'no-spaced-func': 2,
  133 + 'no-sparse-arrays': 2,
  134 + 'no-this-before-super': 2,
  135 + 'no-throw-literal': 2,
  136 + 'no-trailing-spaces': 2,
  137 + 'no-undef': 2,
  138 + 'no-undef-init': 2,
  139 + 'no-unexpected-multiline': 2,
  140 + 'no-unmodified-loop-condition': 2,
  141 + 'no-unneeded-ternary': [2, {
  142 + 'defaultAssignment': false
  143 + }],
  144 + 'no-unreachable': 2,
  145 + 'no-unsafe-finally': 2,
  146 + 'no-unused-vars': [2, {
  147 + 'vars': 'all',
  148 + 'args': 'none'
  149 + }],
  150 + 'no-useless-call': 2,
  151 + 'no-useless-computed-key': 2,
  152 + 'no-useless-constructor': 2,
  153 + 'no-useless-escape': 0,
  154 + 'no-whitespace-before-property': 2,
  155 + 'no-with': 2,
  156 + 'one-var': [2, {
  157 + 'initialized': 'never'
  158 + }],
  159 + 'operator-linebreak': [2, 'after', {
  160 + 'overrides': {
  161 + '?': 'before',
  162 + ':': 'before'
  163 + }
  164 + }],
  165 + 'padded-blocks': [2, 'never'],
  166 + 'quotes': [2, 'single', {
  167 + 'avoidEscape': true,
  168 + 'allowTemplateLiterals': true
  169 + }],
  170 + 'semi': [2, 'never'],
  171 + 'semi-spacing': [2, {
  172 + 'before': false,
  173 + 'after': true
  174 + }],
  175 + 'space-before-blocks': [2, 'always'],
  176 + 'space-before-function-paren': [2, 'never'],
  177 + 'space-in-parens': [2, 'never'],
  178 + 'space-infix-ops': 2,
  179 + 'space-unary-ops': [2, {
  180 + 'words': true,
  181 + 'nonwords': false
  182 + }],
  183 + 'spaced-comment': [2, 'always', {
  184 + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
  185 + }],
  186 + 'template-curly-spacing': [2, 'never'],
  187 + 'use-isnan': 2,
  188 + 'valid-typeof': 2,
  189 + 'wrap-iife': [2, 'any'],
  190 + 'yield-star-spacing': [2, 'both'],
  191 + 'yoda': [2, 'never'],
  192 + 'prefer-const': 2,
  193 + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
  194 + 'object-curly-spacing': [2, 'always', {
  195 + objectsInObjects: false
  196 + }],
  197 + 'array-bracket-spacing': [2, 'never']
  198 + }
  199 +}
... ...
ruoyi-ui/.gitignore renamed to yudao-admin-ui/.gitignore
1   -.DS_Store
2   -node_modules/
3   -dist/
4   -npm-debug.log*
5   -yarn-debug.log*
6   -yarn-error.log*
7   -**/*.log
8   -
9   -tests/**/coverage/
10   -tests/e2e/reports
11   -selenium-debug.log
12   -
13   -# Editor directories and files
14   -.idea
15   -.vscode
16   -*.suo
17   -*.ntvs*
18   -*.njsproj
19   -*.sln
20   -*.local
21   -
22   -package-lock.json
23   -yarn.lock
  1 +.DS_Store
  2 +node_modules/
  3 +dist/
  4 +npm-debug.log*
  5 +yarn-debug.log*
  6 +yarn-error.log*
  7 +**/*.log
  8 +
  9 +tests/**/coverage/
  10 +tests/e2e/reports
  11 +selenium-debug.log
  12 +
  13 +# Editor directories and files
  14 +.idea
  15 +.vscode
  16 +*.suo
  17 +*.ntvs*
  18 +*.njsproj
  19 +*.sln
  20 +*.local
  21 +
  22 +package-lock.json
  23 +yarn.lock
... ...
ruoyi-ui/babel.config.js renamed to yudao-admin-ui/babel.config.js
1   -module.exports = {
2   - presets: [
3   - // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
4   - '@vue/cli-plugin-babel/preset'
5   - ],
6   - 'env': {
7   - 'development': {
8   - // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
9   - // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
10   - 'plugins': ['dynamic-import-node']
11   - }
12   - }
13   -}
  1 +module.exports = {
  2 + presets: [
  3 + // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
  4 + '@vue/cli-plugin-babel/preset'
  5 + ],
  6 + 'env': {
  7 + 'development': {
  8 + // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
  9 + // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
  10 + 'plugins': ['dynamic-import-node']
  11 + }
  12 + }
  13 +}
... ...
ruoyi-ui/bin/build.bat renamed to yudao-admin-ui/bin/build.bat
ruoyi-ui/bin/package.bat renamed to yudao-admin-ui/bin/package.bat
1   -@echo off
2   -echo.
3   -echo [信息] 安装Web工程,生成node_modules文件。
4   -echo.
5   -
6   -%~d0
7   -cd %~dp0
8   -
9   -cd ..
10   -npm install --registry=https://registry.npm.taobao.org
11   -
  1 +@echo off
  2 +echo.
  3 +echo [信息] 安装Web工程,生成node_modules文件。
  4 +echo.
  5 +
  6 +%~d0
  7 +cd %~dp0
  8 +
  9 +cd ..
  10 +npm install --registry=https://registry.npm.taobao.org
  11 +
12 12 pause
13 13 \ No newline at end of file
... ...
ruoyi-ui/bin/run-web.bat renamed to yudao-admin-ui/bin/run-web.bat
1   -@echo off
2   -echo.
3   -echo [信息] 使用 Vue 运行 Web 工程。
4   -echo.
5   -
6   -%~d0
7   -cd %~dp0
8   -
9   -cd ..
10   -npm run dev
11   -
  1 +@echo off
  2 +echo.
  3 +echo [信息] 使用 Vue 运行 Web 工程。
  4 +echo.
  5 +
  6 +%~d0
  7 +cd %~dp0
  8 +
  9 +cd ..
  10 +npm run dev
  11 +
12 12 pause
13 13 \ No newline at end of file
... ...
ruoyi-ui/build/index.js renamed to yudao-admin-ui/build/index.js
1   -const { run } = require('runjs')
2   -const chalk = require('chalk')
3   -const config = require('../vue.config.js')
4   -const rawArgv = process.argv.slice(2)
5   -const args = rawArgv.join(' ')
6   -
7   -if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
8   - const report = rawArgv.includes('--report')
9   -
10   - run(`vue-cli-service build ${args}`)
11   -
12   - const port = 9526
13   - const publicPath = config.publicPath
14   -
15   - var connect = require('connect')
16   - var serveStatic = require('serve-static')
17   - const app = connect()
18   -
19   - app.use(
20   - publicPath,
21   - serveStatic('./dist', {
22   - index: ['index.html', '/']
23   - })
24   - )
25   -
26   - app.listen(port, function () {
27   - console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
28   - if (report) {
29   - console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
30   - }
31   -
32   - })
33   -} else {
34   - run(`vue-cli-service build ${args}`)
35   -}
  1 +const { run } = require('runjs')
  2 +const chalk = require('chalk')
  3 +const config = require('../vue.config.js')
  4 +const rawArgv = process.argv.slice(2)
  5 +const args = rawArgv.join(' ')
  6 +
  7 +if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
  8 + const report = rawArgv.includes('--report')
  9 +
  10 + run(`vue-cli-service build ${args}`)
  11 +
  12 + const port = 9526
  13 + const publicPath = config.publicPath
  14 +
  15 + var connect = require('connect')
  16 + var serveStatic = require('serve-static')
  17 + const app = connect()
  18 +
  19 + app.use(
  20 + publicPath,
  21 + serveStatic('./dist', {
  22 + index: ['index.html', '/']
  23 + })
  24 + )
  25 +
  26 + app.listen(port, function () {
  27 + console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
  28 + if (report) {
  29 + console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
  30 + }
  31 +
  32 + })
  33 +} else {
  34 + run(`vue-cli-service build ${args}`)
  35 +}
... ...
ruoyi-ui/package.json renamed to yudao-admin-ui/package.json
1   -{
2   - "name": "ruoyi",
3   - "version": "3.3.0",
4   - "description": "芋道管理系统",
5   - "author": "芋道",
6   - "license": "MIT",
7   - "scripts": {
8   - "dev": "vue-cli-service serve",
9   - "build:prod": "vue-cli-service build",
10   - "build:stage": "vue-cli-service build --mode staging",
11   - "build:demo1024": "vue-cli-service build --mode demo1024",
12   - "preview": "node build/index.js --preview",
13   - "lint": "eslint --ext .js,.vue src"
14   - },
15   - "husky": {
16   - "hooks": {
17   - "pre-commit": "lint-staged"
18   - }
19   - },
20   - "lint-staged": {
21   - "src/**/*.{js,vue}": [
22   - "eslint --fix",
23   - "git add"
24   - ]
25   - },
26   - "keywords": [
27   - "vue",
28   - "admin",
29   - "dashboard",
30   - "element-ui",
31   - "boilerplate",
32   - "admin-template",
33   - "management-system"
34   - ],
35   - "repository": {
36   - "type": "git",
37   - "url": "https://github.com/YunaiV/ruoyi-vue-pro"
38   - },
39   - "dependencies": {
40   - "@riophae/vue-treeselect": "0.4.0",
41   - "axios": "0.21.0",
42   - "clipboard": "2.0.6",
43   - "core-js": "3.8.1",
44   - "echarts": "4.9.0",
45   - "element-ui": "2.15.0",
46   - "file-saver": "2.0.4",
47   - "fuse.js": "6.4.3",
48   - "highlight.js": "9.18.5",
49   - "js-beautify": "1.13.0",
50   - "js-cookie": "2.2.1",
51   - "jsencrypt": "3.0.0-rc.1",
52   - "nprogress": "0.2.0",
53   - "quill": "1.3.7",
54   - "screenfull": "5.0.2",
55   - "sortablejs": "1.10.2",
56   - "vue": "2.6.12",
57   - "vue-count-to": "1.0.13",
58   - "vue-cropper": "0.5.5",
59   - "vue-router": "3.4.9",
60   - "vuedraggable": "2.24.3",
61   - "vuex": "3.6.0"
62   - },
63   - "devDependencies": {
64   - "@vue/cli-plugin-babel": "4.4.6",
65   - "@vue/cli-plugin-eslint": "4.4.6",
66   - "@vue/cli-service": "4.4.6",
67   - "babel-eslint": "10.1.0",
68   - "chalk": "4.1.0",
69   - "connect": "3.6.6",
70   - "eslint": "7.15.0",
71   - "eslint-plugin-vue": "7.2.0",
72   - "lint-staged": "10.5.3",
73   - "sass": "1.30.0",
74   - "runjs": "4.4.2",
75   - "sass-loader": "10.1.0",
76   - "script-ext-html-webpack-plugin": "2.1.5",
77   - "svg-sprite-loader": "5.1.1",
78   - "vue-template-compiler": "2.6.12"
79   - },
80   - "engines": {
81   - "node": ">=8.9",
82   - "npm": ">= 3.0.0"
83   - },
84   - "browserslist": [
85   - "> 1%",
86   - "last 2 versions"
87   - ]
88   -}
  1 +{
  2 + "name": "ruoyi",
  3 + "version": "3.3.0",
  4 + "description": "芋道管理系统",
  5 + "author": "芋道",
  6 + "license": "MIT",
  7 + "scripts": {
  8 + "dev": "vue-cli-service serve",
  9 + "build:prod": "vue-cli-service build",
  10 + "build:stage": "vue-cli-service build --mode staging",
  11 + "build:demo1024": "vue-cli-service build --mode demo1024",
  12 + "preview": "node build/index.js --preview",
  13 + "lint": "eslint --ext .js,.vue src"
  14 + },
  15 + "husky": {
  16 + "hooks": {
  17 + "pre-commit": "lint-staged"
  18 + }
  19 + },
  20 + "lint-staged": {
  21 + "src/**/*.{js,vue}": [
  22 + "eslint --fix",
  23 + "git add"
  24 + ]
  25 + },
  26 + "keywords": [
  27 + "vue",
  28 + "admin",
  29 + "dashboard",
  30 + "element-ui",
  31 + "boilerplate",
  32 + "admin-template",
  33 + "management-system"
  34 + ],
  35 + "repository": {
  36 + "type": "git",
  37 + "url": "https://github.com/YunaiV/ruoyi-vue-pro"
  38 + },
  39 + "dependencies": {
  40 + "@riophae/vue-treeselect": "0.4.0",
  41 + "axios": "0.21.0",
  42 + "clipboard": "2.0.6",
  43 + "core-js": "3.8.1",
  44 + "echarts": "4.9.0",
  45 + "element-ui": "2.15.0",
  46 + "file-saver": "2.0.4",
  47 + "fuse.js": "6.4.3",
  48 + "highlight.js": "9.18.5",
  49 + "js-beautify": "1.13.0",
  50 + "js-cookie": "2.2.1",
  51 + "jsencrypt": "3.0.0-rc.1",
  52 + "nprogress": "0.2.0",
  53 + "quill": "1.3.7",
  54 + "screenfull": "5.0.2",
  55 + "sortablejs": "1.10.2",
  56 + "vue": "2.6.12",
  57 + "vue-count-to": "1.0.13",
  58 + "vue-cropper": "0.5.5",
  59 + "vue-router": "3.4.9",
  60 + "vuedraggable": "2.24.3",
  61 + "vuex": "3.6.0"
  62 + },
  63 + "devDependencies": {
  64 + "@vue/cli-plugin-babel": "4.4.6",
  65 + "@vue/cli-plugin-eslint": "4.4.6",
  66 + "@vue/cli-service": "4.4.6",
  67 + "babel-eslint": "10.1.0",
  68 + "chalk": "4.1.0",
  69 + "connect": "3.6.6",
  70 + "eslint": "7.15.0",
  71 + "eslint-plugin-vue": "7.2.0",
  72 + "lint-staged": "10.5.3",
  73 + "sass": "1.30.0",
  74 + "runjs": "4.4.2",
  75 + "sass-loader": "10.1.0",
  76 + "script-ext-html-webpack-plugin": "2.1.5",
  77 + "svg-sprite-loader": "5.1.1",
  78 + "vue-template-compiler": "2.6.12"
  79 + },
  80 + "engines": {
  81 + "node": ">=8.9",
  82 + "npm": ">= 3.0.0"
  83 + },
  84 + "browserslist": [
  85 + "> 1%",
  86 + "last 2 versions"
  87 + ]
  88 +}
... ...
ruoyi-ui/public/favicon.ico renamed to yudao-admin-ui/public/favicon.ico
No preview for this file type
ruoyi-ui/public/index.html renamed to yudao-admin-ui/public/index.html
1   -<!DOCTYPE html>
2   -<html>
3   - <head>
4   - <meta charset="utf-8">
5   - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6   - <meta name="renderer" content="webkit">
7   - <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
8   - <link rel="icon" href="<%= BASE_URL %>favicon.ico">
9   - <title><%= webpackConfig.name %></title>
10   - <style>
11   - html,
12   - body,
13   - #app {
14   - height: 100%;
15   - margin: 0px;
16   - padding: 0px;
17   - }
18   - .chromeframe {
19   - margin: 0.2em 0;
20   - background: #ccc;
21   - color: #000;
22   - padding: 0.2em 0;
23   - }
24   -
25   - #loader-wrapper {
26   - position: fixed;
27   - top: 0;
28   - left: 0;
29   - width: 100%;
30   - height: 100%;
31   - z-index: 999999;
32   - }
33   -
34   - #loader {
35   - display: block;
36   - position: relative;
37   - left: 50%;
38   - top: 50%;
39   - width: 150px;
40   - height: 150px;
41   - margin: -75px 0 0 -75px;
42   - border-radius: 50%;
43   - border: 3px solid transparent;
44   - border-top-color: #FFF;
45   - -webkit-animation: spin 2s linear infinite;
46   - -ms-animation: spin 2s linear infinite;
47   - -moz-animation: spin 2s linear infinite;
48   - -o-animation: spin 2s linear infinite;
49   - animation: spin 2s linear infinite;
50   - z-index: 1001;
51   - }
52   -
53   - #loader:before {
54   - content: "";
55   - position: absolute;
56   - top: 5px;
57   - left: 5px;
58   - right: 5px;
59   - bottom: 5px;
60   - border-radius: 50%;
61   - border: 3px solid transparent;
62   - border-top-color: #FFF;
63   - -webkit-animation: spin 3s linear infinite;
64   - -moz-animation: spin 3s linear infinite;
65   - -o-animation: spin 3s linear infinite;
66   - -ms-animation: spin 3s linear infinite;
67   - animation: spin 3s linear infinite;
68   - }
69   -
70   - #loader:after {
71   - content: "";
72   - position: absolute;
73   - top: 15px;
74   - left: 15px;
75   - right: 15px;
76   - bottom: 15px;
77   - border-radius: 50%;
78   - border: 3px solid transparent;
79   - border-top-color: #FFF;
80   - -moz-animation: spin 1.5s linear infinite;
81   - -o-animation: spin 1.5s linear infinite;
82   - -ms-animation: spin 1.5s linear infinite;
83   - -webkit-animation: spin 1.5s linear infinite;
84   - animation: spin 1.5s linear infinite;
85   - }
86   -
87   -
88   - @-webkit-keyframes spin {
89   - 0% {
90   - -webkit-transform: rotate(0deg);
91   - -ms-transform: rotate(0deg);
92   - transform: rotate(0deg);
93   - }
94   - 100% {
95   - -webkit-transform: rotate(360deg);
96   - -ms-transform: rotate(360deg);
97   - transform: rotate(360deg);
98   - }
99   - }
100   -
101   - @keyframes spin {
102   - 0% {
103   - -webkit-transform: rotate(0deg);
104   - -ms-transform: rotate(0deg);
105   - transform: rotate(0deg);
106   - }
107   - 100% {
108   - -webkit-transform: rotate(360deg);
109   - -ms-transform: rotate(360deg);
110   - transform: rotate(360deg);
111   - }
112   - }
113   -
114   -
115   - #loader-wrapper .loader-section {
116   - position: fixed;
117   - top: 0;
118   - width: 51%;
119   - height: 100%;
120   - background: #7171C6;
121   - z-index: 1000;
122   - -webkit-transform: translateX(0);
123   - -ms-transform: translateX(0);
124   - transform: translateX(0);
125   - }
126   -
127   - #loader-wrapper .loader-section.section-left {
128   - left: 0;
129   - }
130   -
131   - #loader-wrapper .loader-section.section-right {
132   - right: 0;
133   - }
134   -
135   -
136   - .loaded #loader-wrapper .loader-section.section-left {
137   - -webkit-transform: translateX(-100%);
138   - -ms-transform: translateX(-100%);
139   - transform: translateX(-100%);
140   - -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
141   - transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
142   - }
143   -
144   - .loaded #loader-wrapper .loader-section.section-right {
145   - -webkit-transform: translateX(100%);
146   - -ms-transform: translateX(100%);
147   - transform: translateX(100%);
148   - -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
149   - transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
150   - }
151   -
152   - .loaded #loader {
153   - opacity: 0;
154   - -webkit-transition: all 0.3s ease-out;
155   - transition: all 0.3s ease-out;
156   - }
157   -
158   - .loaded #loader-wrapper {
159   - visibility: hidden;
160   - -webkit-transform: translateY(-100%);
161   - -ms-transform: translateY(-100%);
162   - transform: translateY(-100%);
163   - -webkit-transition: all 0.3s 1s ease-out;
164   - transition: all 0.3s 1s ease-out;
165   - }
166   -
167   - .no-js #loader-wrapper {
168   - display: none;
169   - }
170   -
171   - .no-js h1 {
172   - color: #222222;
173   - }
174   -
175   - #loader-wrapper .load_title {
176   - font-family: 'Open Sans';
177   - color: #FFF;
178   - font-size: 19px;
179   - width: 100%;
180   - text-align: center;
181   - z-index: 9999999999999;
182   - position: absolute;
183   - top: 60%;
184   - opacity: 1;
185   - line-height: 30px;
186   - }
187   -
188   - #loader-wrapper .load_title span {
189   - font-weight: normal;
190   - font-style: italic;
191   - font-size: 13px;
192   - color: #FFF;
193   - opacity: 0.5;
194   - }
195   - </style>
196   - </head>
197   - <body>
198   - <div id="app">
199   - <div id="loader-wrapper">
200   - <div id="loader"></div>
201   - <div class="loader-section section-left"></div>
202   - <div class="loader-section section-right"></div>
203   - <div class="load_title">正在加载系统资源,请耐心等待</div>
204   - </div>
205   - </div>
206   - </body>
207   -</html>
  1 +<!DOCTYPE html>
  2 +<html>
  3 + <head>
  4 + <meta charset="utf-8">
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6 + <meta name="renderer" content="webkit">
  7 + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  8 + <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  9 + <title><%= webpackConfig.name %></title>
  10 + <style>
  11 + html,
  12 + body,
  13 + #app {
  14 + height: 100%;
  15 + margin: 0px;
  16 + padding: 0px;
  17 + }
  18 + .chromeframe {
  19 + margin: 0.2em 0;
  20 + background: #ccc;
  21 + color: #000;
  22 + padding: 0.2em 0;
  23 + }
  24 +
  25 + #loader-wrapper {
  26 + position: fixed;
  27 + top: 0;
  28 + left: 0;
  29 + width: 100%;
  30 + height: 100%;
  31 + z-index: 999999;
  32 + }
  33 +
  34 + #loader {
  35 + display: block;
  36 + position: relative;
  37 + left: 50%;
  38 + top: 50%;
  39 + width: 150px;
  40 + height: 150px;
  41 + margin: -75px 0 0 -75px;
  42 + border-radius: 50%;
  43 + border: 3px solid transparent;
  44 + border-top-color: #FFF;
  45 + -webkit-animation: spin 2s linear infinite;
  46 + -ms-animation: spin 2s linear infinite;
  47 + -moz-animation: spin 2s linear infinite;
  48 + -o-animation: spin 2s linear infinite;
  49 + animation: spin 2s linear infinite;
  50 + z-index: 1001;
  51 + }
  52 +
  53 + #loader:before {
  54 + content: "";
  55 + position: absolute;
  56 + top: 5px;
  57 + left: 5px;
  58 + right: 5px;
  59 + bottom: 5px;
  60 + border-radius: 50%;
  61 + border: 3px solid transparent;
  62 + border-top-color: #FFF;
  63 + -webkit-animation: spin 3s linear infinite;
  64 + -moz-animation: spin 3s linear infinite;
  65 + -o-animation: spin 3s linear infinite;
  66 + -ms-animation: spin 3s linear infinite;
  67 + animation: spin 3s linear infinite;
  68 + }
  69 +
  70 + #loader:after {
  71 + content: "";
  72 + position: absolute;
  73 + top: 15px;
  74 + left: 15px;
  75 + right: 15px;
  76 + bottom: 15px;
  77 + border-radius: 50%;
  78 + border: 3px solid transparent;
  79 + border-top-color: #FFF;
  80 + -moz-animation: spin 1.5s linear infinite;
  81 + -o-animation: spin 1.5s linear infinite;
  82 + -ms-animation: spin 1.5s linear infinite;
  83 + -webkit-animation: spin 1.5s linear infinite;
  84 + animation: spin 1.5s linear infinite;
  85 + }
  86 +
  87 +
  88 + @-webkit-keyframes spin {
  89 + 0% {
  90 + -webkit-transform: rotate(0deg);
  91 + -ms-transform: rotate(0deg);
  92 + transform: rotate(0deg);
  93 + }
  94 + 100% {
  95 + -webkit-transform: rotate(360deg);
  96 + -ms-transform: rotate(360deg);
  97 + transform: rotate(360deg);
  98 + }
  99 + }
  100 +
  101 + @keyframes spin {
  102 + 0% {
  103 + -webkit-transform: rotate(0deg);
  104 + -ms-transform: rotate(0deg);
  105 + transform: rotate(0deg);
  106 + }
  107 + 100% {
  108 + -webkit-transform: rotate(360deg);
  109 + -ms-transform: rotate(360deg);
  110 + transform: rotate(360deg);
  111 + }
  112 + }
  113 +
  114 +
  115 + #loader-wrapper .loader-section {
  116 + position: fixed;
  117 + top: 0;
  118 + width: 51%;
  119 + height: 100%;
  120 + background: #7171C6;
  121 + z-index: 1000;
  122 + -webkit-transform: translateX(0);
  123 + -ms-transform: translateX(0);
  124 + transform: translateX(0);
  125 + }
  126 +
  127 + #loader-wrapper .loader-section.section-left {
  128 + left: 0;
  129 + }
  130 +
  131 + #loader-wrapper .loader-section.section-right {
  132 + right: 0;
  133 + }
  134 +
  135 +
  136 + .loaded #loader-wrapper .loader-section.section-left {
  137 + -webkit-transform: translateX(-100%);
  138 + -ms-transform: translateX(-100%);
  139 + transform: translateX(-100%);
  140 + -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  141 + transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  142 + }
  143 +
  144 + .loaded #loader-wrapper .loader-section.section-right {
  145 + -webkit-transform: translateX(100%);
  146 + -ms-transform: translateX(100%);
  147 + transform: translateX(100%);
  148 + -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  149 + transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  150 + }
  151 +
  152 + .loaded #loader {
  153 + opacity: 0;
  154 + -webkit-transition: all 0.3s ease-out;
  155 + transition: all 0.3s ease-out;
  156 + }
  157 +
  158 + .loaded #loader-wrapper {
  159 + visibility: hidden;
  160 + -webkit-transform: translateY(-100%);
  161 + -ms-transform: translateY(-100%);
  162 + transform: translateY(-100%);
  163 + -webkit-transition: all 0.3s 1s ease-out;
  164 + transition: all 0.3s 1s ease-out;
  165 + }
  166 +
  167 + .no-js #loader-wrapper {
  168 + display: none;
  169 + }
  170 +
  171 + .no-js h1 {
  172 + color: #222222;
  173 + }
  174 +
  175 + #loader-wrapper .load_title {
  176 + font-family: 'Open Sans';
  177 + color: #FFF;
  178 + font-size: 19px;
  179 + width: 100%;
  180 + text-align: center;
  181 + z-index: 9999999999999;
  182 + position: absolute;
  183 + top: 60%;
  184 + opacity: 1;
  185 + line-height: 30px;
  186 + }
  187 +
  188 + #loader-wrapper .load_title span {
  189 + font-weight: normal;
  190 + font-style: italic;
  191 + font-size: 13px;
  192 + color: #FFF;
  193 + opacity: 0.5;
  194 + }
  195 + </style>
  196 + </head>
  197 + <body>
  198 + <div id="app">
  199 + <div id="loader-wrapper">
  200 + <div id="loader"></div>
  201 + <div class="loader-section section-left"></div>
  202 + <div class="loader-section section-right"></div>
  203 + <div class="load_title">正在加载系统资源,请耐心等待</div>
  204 + </div>
  205 + </div>
  206 + </body>
  207 +</html>
... ...
yudao-admin-ui/public/robots.txt 0 → 100644
  1 +User-agent: *
  2 +Disallow: /
0 3 \ No newline at end of file
... ...
ruoyi-ui/src/App.vue renamed to yudao-admin-ui/src/App.vue
1   -<template>
2   - <div id="app">
3   - <router-view />
4   - </div>
5   -</template>
6   -
7   -<script>
8   -export default {
9   - name: 'App'
10   -}
11   -</script>
  1 +<template>
  2 + <div id="app">
  3 + <router-view />
  4 + </div>
  5 +</template>
  6 +
  7 +<script>
  8 +export default {
  9 + name: 'App'
  10 +}
  11 +</script>
... ...
ruoyi-ui/src/api/infra/apiAccessLog.js renamed to yudao-admin-ui/src/api/infra/apiAccessLog.js
ruoyi-ui/src/api/infra/apiErrorLog.js renamed to yudao-admin-ui/src/api/infra/apiErrorLog.js
ruoyi-ui/src/api/infra/config.js renamed to yudao-admin-ui/src/api/infra/config.js
ruoyi-ui/src/api/infra/dbDoc.js renamed to yudao-admin-ui/src/api/infra/dbDoc.js
ruoyi-ui/src/api/infra/file.js renamed to yudao-admin-ui/src/api/infra/file.js
ruoyi-ui/src/api/infra/job.js renamed to yudao-admin-ui/src/api/infra/job.js
ruoyi-ui/src/api/infra/jobLog.js renamed to yudao-admin-ui/src/api/infra/jobLog.js
ruoyi-ui/src/api/infra/redis.js renamed to yudao-admin-ui/src/api/infra/redis.js
ruoyi-ui/src/api/login.js renamed to yudao-admin-ui/src/api/login.js
1   -import request from '@/utils/request'
2   -
3   -// 登录方法
4   -export function login(username, password, code, uuid) {
5   - const data = {
6   - username,
7   - password,
8   - code,
9   - uuid
10   - }
11   - return request({
12   - url: '/login',
13   - method: 'post',
14   - data: data
15   - })
16   -}
17   -
18   -// 获取用户详细信息
19   -export function getInfo() {
20   - return request({
21   - url: '/get-permission-info',
22   - method: 'get'
23   - })
24   -}
25   -
26   -// 退出方法
27   -export function logout() {
28   - return request({
29   - url: '/logout',
30   - method: 'post'
31   - })
32   -}
33   -
34   -// 获取验证码
35   -export function getCodeImg() {
36   - return request({
37   - url: '/system/captcha/get-image',
38   - method: 'get'
39   - })
40   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 登录方法
  4 +export function login(username, password, code, uuid) {
  5 + const data = {
  6 + username,
  7 + password,
  8 + code,
  9 + uuid
  10 + }
  11 + return request({
  12 + url: '/login',
  13 + method: 'post',
  14 + data: data
  15 + })
  16 +}
  17 +
  18 +// 获取用户详细信息
  19 +export function getInfo() {
  20 + return request({
  21 + url: '/get-permission-info',
  22 + method: 'get'
  23 + })
  24 +}
  25 +
  26 +// 退出方法
  27 +export function logout() {
  28 + return request({
  29 + url: '/logout',
  30 + method: 'post'
  31 + })
  32 +}
  33 +
  34 +// 获取验证码
  35 +export function getCodeImg() {
  36 + return request({
  37 + url: '/system/captcha/get-image',
  38 + method: 'get'
  39 + })
  40 +}
... ...
ruoyi-ui/src/api/menu.js renamed to yudao-admin-ui/src/api/menu.js
1   -import request from '@/utils/request'
2   -
3   -// 获取路由
4   -export const getRouters = () => {
5   - return request({
6   - url: '/list-menus',
7   - method: 'get'
8   - })
9   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 获取路由
  4 +export const getRouters = () => {
  5 + return request({
  6 + url: '/list-menus',
  7 + method: 'get'
  8 + })
  9 +}
... ...
ruoyi-ui/src/api/system/dept.js renamed to yudao-admin-ui/src/api/system/dept.js
1   -import request from '@/utils/request'
2   -
3   -// 查询部门列表
4   -export function listDept(query) {
5   - return request({
6   - url: '/system/dept/list',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 查询部门列表(排除节点)
13   -export function listDeptExcludeChild(deptId) {
14   - return request({
15   - url: '/system/dept/list/exclude/' + deptId,
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 查询部门详细
21   -export function getDept(deptId) {
22   - return request({
23   - url: '/system/dept/get?id=' + deptId,
24   - method: 'get'
25   - })
26   -}
27   -
28   -// 获取部门精简信息列表
29   -export function listSimpleDepts() {
30   - return request({
31   - url: '/system/dept/list-all-simple',
32   - method: 'get'
33   - })
34   -}
35   -
36   -// 新增部门
37   -export function addDept(data) {
38   - return request({
39   - url: '/system/dept/create',
40   - method: 'post',
41   - data: data
42   - })
43   -}
44   -
45   -// 修改部门
46   -export function updateDept(data) {
47   - return request({
48   - url: '/system/dept/update',
49   - method: 'put',
50   - data: data
51   - })
52   -}
53   -
54   -// 删除部门
55   -export function delDept(id) {
56   - return request({
57   - url: '/system/dept/delete?id=' + id,
58   - method: 'delete'
59   - })
60   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询部门列表
  4 +export function listDept(query) {
  5 + return request({
  6 + url: '/system/dept/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询部门列表(排除节点)
  13 +export function listDeptExcludeChild(deptId) {
  14 + return request({
  15 + url: '/system/dept/list/exclude/' + deptId,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 查询部门详细
  21 +export function getDept(deptId) {
  22 + return request({
  23 + url: '/system/dept/get?id=' + deptId,
  24 + method: 'get'
  25 + })
  26 +}
  27 +
  28 +// 获取部门精简信息列表
  29 +export function listSimpleDepts() {
  30 + return request({
  31 + url: '/system/dept/list-all-simple',
  32 + method: 'get'
  33 + })
  34 +}
  35 +
  36 +// 新增部门
  37 +export function addDept(data) {
  38 + return request({
  39 + url: '/system/dept/create',
  40 + method: 'post',
  41 + data: data
  42 + })
  43 +}
  44 +
  45 +// 修改部门
  46 +export function updateDept(data) {
  47 + return request({
  48 + url: '/system/dept/update',
  49 + method: 'put',
  50 + data: data
  51 + })
  52 +}
  53 +
  54 +// 删除部门
  55 +export function delDept(id) {
  56 + return request({
  57 + url: '/system/dept/delete?id=' + id,
  58 + method: 'delete'
  59 + })
  60 +}
... ...
ruoyi-ui/src/api/system/dict/data.js renamed to yudao-admin-ui/src/api/system/dict/data.js
1   -import request from '@/utils/request'
2   -
3   -// 查询字典数据列表
4   -export function listData(query) {
5   - return request({
6   - url: '/system/dict-data/page',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 查询字典数据详细
13   -export function getData(dictCode) {
14   - return request({
15   - url: '/system/dict-data/get?id=' + dictCode,
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 根据字典类型查询字典数据信息
21   -export function getDicts(dictType) {
22   - return request({
23   - url: '/system/dict-data/type/' + dictType,
24   - method: 'get'
25   - })
26   -}
27   -
28   -// 新增字典数据
29   -export function addData(data) {
30   - return request({
31   - url: '/system/dict-data/create',
32   - method: 'post',
33   - data: data
34   - })
35   -}
36   -
37   -// 修改字典数据
38   -export function updateData(data) {
39   - return request({
40   - url: '/system/dict-data/update',
41   - method: 'put',
42   - data: data
43   - })
44   -}
45   -
46   -// 删除字典数据
47   -export function delData(dictCode) {
48   - return request({
49   - url: '/system/dict-data/delete?id=' + dictCode,
50   - method: 'delete'
51   - })
52   -}
53   -
54   -// 导出字典数据
55   -export function exportData(query) {
56   - return request({
57   - url: '/system/dict-data/export',
58   - method: 'get',
59   - params: query,
60   - responseType: 'blob'
61   - })
62   -}
63   -
64   -// 查询全部字典数据列表
65   -export function listSimpleDictDatas() {
66   - return request({
67   - url: '/system/dict-data/list-all-simple',
68   - method: 'get',
69   - })
70   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询字典数据列表
  4 +export function listData(query) {
  5 + return request({
  6 + url: '/system/dict-data/page',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询字典数据详细
  13 +export function getData(dictCode) {
  14 + return request({
  15 + url: '/system/dict-data/get?id=' + dictCode,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 根据字典类型查询字典数据信息
  21 +export function getDicts(dictType) {
  22 + return request({
  23 + url: '/system/dict-data/type/' + dictType,
  24 + method: 'get'
  25 + })
  26 +}
  27 +
  28 +// 新增字典数据
  29 +export function addData(data) {
  30 + return request({
  31 + url: '/system/dict-data/create',
  32 + method: 'post',
  33 + data: data
  34 + })
  35 +}
  36 +
  37 +// 修改字典数据
  38 +export function updateData(data) {
  39 + return request({
  40 + url: '/system/dict-data/update',
  41 + method: 'put',
  42 + data: data
  43 + })
  44 +}
  45 +
  46 +// 删除字典数据
  47 +export function delData(dictCode) {
  48 + return request({
  49 + url: '/system/dict-data/delete?id=' + dictCode,
  50 + method: 'delete'
  51 + })
  52 +}
  53 +
  54 +// 导出字典数据
  55 +export function exportData(query) {
  56 + return request({
  57 + url: '/system/dict-data/export',
  58 + method: 'get',
  59 + params: query,
  60 + responseType: 'blob'
  61 + })
  62 +}
  63 +
  64 +// 查询全部字典数据列表
  65 +export function listSimpleDictDatas() {
  66 + return request({
  67 + url: '/system/dict-data/list-all-simple',
  68 + method: 'get',
  69 + })
  70 +}
... ...
ruoyi-ui/src/api/system/dict/type.js renamed to yudao-admin-ui/src/api/system/dict/type.js
1   -import request from '@/utils/request'
2   -
3   -// 查询字典类型列表
4   -export function listType(query) {
5   - return request({
6   - url: '/system/dict-type/page',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 查询字典类型详细
13   -export function getType(dictId) {
14   - return request({
15   - url: '/system/dict-type/get?id=' + dictId,
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 新增字典类型
21   -export function addType(data) {
22   - return request({
23   - url: '/system/dict-type/create',
24   - method: 'post',
25   - data: data
26   - })
27   -}
28   -
29   -// 修改字典类型
30   -export function updateType(data) {
31   - return request({
32   - url: '/system/dict-type/update',
33   - method: 'put',
34   - data: data
35   - })
36   -}
37   -
38   -// 删除字典类型
39   -export function delType(dictId) {
40   - return request({
41   - url: '/system/dict-type/delete?id=' + dictId,
42   - method: 'delete'
43   - })
44   -}
45   -
46   -// 导出字典类型
47   -export function exportType(query) {
48   - return request({
49   - url: '/system/dict-type/export',
50   - method: 'get',
51   - params: query,
52   - responseType: 'blob'
53   - })
54   -}
55   -
56   -// 获取字典选择框列表
57   -export function listAllSimple() {
58   - return request({
59   - url: '/system/dict-type/list-all-simple',
60   - method: 'get'
61   - })
62   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询字典类型列表
  4 +export function listType(query) {
  5 + return request({
  6 + url: '/system/dict-type/page',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询字典类型详细
  13 +export function getType(dictId) {
  14 + return request({
  15 + url: '/system/dict-type/get?id=' + dictId,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增字典类型
  21 +export function addType(data) {
  22 + return request({
  23 + url: '/system/dict-type/create',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改字典类型
  30 +export function updateType(data) {
  31 + return request({
  32 + url: '/system/dict-type/update',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除字典类型
  39 +export function delType(dictId) {
  40 + return request({
  41 + url: '/system/dict-type/delete?id=' + dictId,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +
  46 +// 导出字典类型
  47 +export function exportType(query) {
  48 + return request({
  49 + url: '/system/dict-type/export',
  50 + method: 'get',
  51 + params: query,
  52 + responseType: 'blob'
  53 + })
  54 +}
  55 +
  56 +// 获取字典选择框列表
  57 +export function listAllSimple() {
  58 + return request({
  59 + url: '/system/dict-type/list-all-simple',
  60 + method: 'get'
  61 + })
  62 +}
... ...
ruoyi-ui/src/api/system/errorCode.js renamed to yudao-admin-ui/src/api/system/errorCode.js
ruoyi-ui/src/api/system/loginlog.js renamed to yudao-admin-ui/src/api/system/loginlog.js
ruoyi-ui/src/api/system/menu.js renamed to yudao-admin-ui/src/api/system/menu.js
ruoyi-ui/src/api/system/notice.js renamed to yudao-admin-ui/src/api/system/notice.js
1   -import request from '@/utils/request'
2   -
3   -// 查询公告列表
4   -export function listNotice(query) {
5   - return request({
6   - url: '/system/notice/page',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 查询公告详细
13   -export function getNotice(noticeId) {
14   - return request({
15   - url: '/system/notice/get?id=' + noticeId,
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 新增公告
21   -export function addNotice(data) {
22   - return request({
23   - url: '/system/notice/create',
24   - method: 'post',
25   - data: data
26   - })
27   -}
28   -
29   -// 修改公告
30   -export function updateNotice(data) {
31   - return request({
32   - url: '/system/notice/update',
33   - method: 'put',
34   - data: data
35   - })
36   -}
37   -
38   -// 删除公告
39   -export function delNotice(noticeId) {
40   - return request({
41   - url: '/system/notice/delete?id=' + noticeId,
42   - method: 'delete'
43   - })
44   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询公告列表
  4 +export function listNotice(query) {
  5 + return request({
  6 + url: '/system/notice/page',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询公告详细
  13 +export function getNotice(noticeId) {
  14 + return request({
  15 + url: '/system/notice/get?id=' + noticeId,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增公告
  21 +export function addNotice(data) {
  22 + return request({
  23 + url: '/system/notice/create',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改公告
  30 +export function updateNotice(data) {
  31 + return request({
  32 + url: '/system/notice/update',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除公告
  39 +export function delNotice(noticeId) {
  40 + return request({
  41 + url: '/system/notice/delete?id=' + noticeId,
  42 + method: 'delete'
  43 + })
  44 +}
... ...
ruoyi-ui/src/api/system/operatelog.js renamed to yudao-admin-ui/src/api/system/operatelog.js
ruoyi-ui/src/api/system/permission.js renamed to yudao-admin-ui/src/api/system/permission.js
ruoyi-ui/src/api/system/post.js renamed to yudao-admin-ui/src/api/system/post.js
1   -import request from '@/utils/request'
2   -
3   -// 查询岗位列表
4   -export function listPost(query) {
5   - return request({
6   - url: '/system/post/page',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 获取岗位精简信息列表
13   -export function listSimplePosts() {
14   - return request({
15   - url: '/system/post/list-all-simple',
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 查询岗位详细
21   -export function getPost(postId) {
22   - return request({
23   - url: '/system/post/get?id=' + postId,
24   - method: 'get'
25   - })
26   -}
27   -
28   -// 新增岗位
29   -export function addPost(data) {
30   - return request({
31   - url: '/system/post/create',
32   - method: 'post',
33   - data: data
34   - })
35   -}
36   -
37   -// 修改岗位
38   -export function updatePost(data) {
39   - return request({
40   - url: '/system/post/update',
41   - method: 'put',
42   - data: data
43   - })
44   -}
45   -
46   -// 删除岗位
47   -export function delPost(postId) {
48   - return request({
49   - url: '/system/post/delete?id=' + postId,
50   - method: 'delete'
51   - })
52   -}
53   -
54   -// 导出岗位
55   -export function exportPost(query) {
56   - return request({
57   - url: '/system/post/export',
58   - method: 'get',
59   - params: query,
60   - responseType: 'blob'
61   - })
62   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询岗位列表
  4 +export function listPost(query) {
  5 + return request({
  6 + url: '/system/post/page',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 获取岗位精简信息列表
  13 +export function listSimplePosts() {
  14 + return request({
  15 + url: '/system/post/list-all-simple',
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 查询岗位详细
  21 +export function getPost(postId) {
  22 + return request({
  23 + url: '/system/post/get?id=' + postId,
  24 + method: 'get'
  25 + })
  26 +}
  27 +
  28 +// 新增岗位
  29 +export function addPost(data) {
  30 + return request({
  31 + url: '/system/post/create',
  32 + method: 'post',
  33 + data: data
  34 + })
  35 +}
  36 +
  37 +// 修改岗位
  38 +export function updatePost(data) {
  39 + return request({
  40 + url: '/system/post/update',
  41 + method: 'put',
  42 + data: data
  43 + })
  44 +}
  45 +
  46 +// 删除岗位
  47 +export function delPost(postId) {
  48 + return request({
  49 + url: '/system/post/delete?id=' + postId,
  50 + method: 'delete'
  51 + })
  52 +}
  53 +
  54 +// 导出岗位
  55 +export function exportPost(query) {
  56 + return request({
  57 + url: '/system/post/export',
  58 + method: 'get',
  59 + params: query,
  60 + responseType: 'blob'
  61 + })
  62 +}
... ...
ruoyi-ui/src/api/system/role.js renamed to yudao-admin-ui/src/api/system/role.js
1   -import request from '@/utils/request'
2   -
3   -// 查询角色列表
4   -export function listRole(query) {
5   - return request({
6   - url: '/system/role/page',
7   - method: 'get',
8   - params: query
9   - })
10   -}
11   -
12   -// 查询角色(精简)列表
13   -export function listSimpleRoles() {
14   - return request({
15   - url: '/system/role/list-all-simple',
16   - method: 'get'
17   - })
18   -}
19   -
20   -// 查询角色详细
21   -export function getRole(roleId) {
22   - return request({
23   - url: '/system/role/get?id=' + roleId,
24   - method: 'get'
25   - })
26   -}
27   -
28   -// 新增角色
29   -export function addRole(data) {
30   - return request({
31   - url: '/system/role/create',
32   - method: 'post',
33   - data: data
34   - })
35   -}
36   -
37   -// 修改角色
38   -export function updateRole(data) {
39   - return request({
40   - url: '/system/role/update',
41   - method: 'put',
42   - data: data
43   - })
44   -}
45   -
46   -// 角色状态修改
47   -export function changeRoleStatus(id, status) {
48   - const data = {
49   - id,
50   - status
51   - }
52   - return request({
53   - url: '/system/role/update-status',
54   - method: 'put',
55   - data: data
56   - })
57   -}
58   -
59   -// 删除角色
60   -export function delRole(roleId) {
61   - return request({
62   - url: '/system/role/delete?id=' + roleId,
63   - method: 'delete'
64   - })
65   -}
66   -
67   -// 导出角色
68   -export function exportRole(query) {
69   - return request({
70   - url: '/system/role/export',
71   - method: 'get',
72   - params: query,
73   - responseType: 'blob'
74   - })
75   -}
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询角色列表
  4 +export function listRole(query) {
  5 + return request({
  6 + url: '/system/role/page',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询角色(精简)列表
  13 +export function listSimpleRoles() {
  14 + return request({
  15 + url: '/system/role/list-all-simple',
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 查询角色详细
  21 +export function getRole(roleId) {
  22 + return request({
  23 + url: '/system/role/get?id=' + roleId,
  24 + method: 'get'
  25 + })
  26 +}
  27 +
  28 +// 新增角色
  29 +export function addRole(data) {
  30 + return request({
  31 + url: '/system/role/create',
  32 + method: 'post',
  33 + data: data
  34 + })
  35 +}
  36 +
  37 +// 修改角色
  38 +export function updateRole(data) {
  39 + return request({
  40 + url: '/system/role/update',
  41 + method: 'put',
  42 + data: data
  43 + })
  44 +}
  45 +
  46 +// 角色状态修改
  47 +export function changeRoleStatus(id, status) {
  48 + const data = {
  49 + id,
  50 + status
  51 + }
  52 + return request({
  53 + url: '/system/role/update-status',
  54 + method: 'put',
  55 + data: data
  56 + })
  57 +}
  58 +
  59 +// 删除角色
  60 +export function delRole(roleId) {
  61 + return request({
  62 + url: '/system/role/delete?id=' + roleId,
  63 + method: 'delete'
  64 + })
  65 +}
  66 +
  67 +// 导出角色
  68 +export function exportRole(query) {
  69 + return request({
  70 + url: '/system/role/export',
  71 + method: 'get',
  72 + params: query,
  73 + responseType: 'blob'
  74 + })
  75 +}
... ...
ruoyi-ui/src/api/system/session.js renamed to yudao-admin-ui/src/api/system/session.js
ruoyi-ui/src/api/system/sms/smsChannel.js renamed to yudao-admin-ui/src/api/system/sms/smsChannel.js
ruoyi-ui/src/api/system/sms/smsLog.js renamed to yudao-admin-ui/src/api/system/sms/smsLog.js
ruoyi-ui/src/api/system/sms/smsTemplate.js renamed to yudao-admin-ui/src/api/system/sms/smsTemplate.js
ruoyi-ui/src/api/system/user.js renamed to yudao-admin-ui/src/api/system/user.js
1   -import request from '@/utils/request'
2   -import { praseStrEmpty } from "@/utils/ruoyi";
3   -
4   -// 查询用户列表
5   -export function listUser(query) {
6   - return request({
7   - url: '/system/user/page',
8   - method: 'get',
9   - params: query
10   - })
11   -}
12   -
13   -// 查询用户详细
14   -export function getUser(userId) {
15   - return request({
16   - url: '/system/user/get?id=' + praseStrEmpty(userId),
17   - method: 'get'
18   - })
19   -}
20   -
21   -// 新增用户
22   -export function addUser(data) {
23   - return request({
24   - url: '/system/user/create',
25   - method: 'post',
26   - data: data
27   - })
28   -}
29   -
30   -// 修改用户
31   -export function updateUser(data) {
32   - return request({
33   - url: '/system/user/update',
34   - method: 'put',
35   - data: data
36   - })
37   -}
38   -
39   -// 删除用户
40   -export function delUser(userId) {
41   - return request({
42   - url: '/system/user/delete?id=' + userId,
43   - method: 'delete'
44   - })
45   -}
46   -
47   -// 导出用户
48   -export function exportUser(query) {
49   - return request({
50   - url: '/system/user/export',
51   - method: 'get',
52   - params: query,
53   - responseType: 'blob'
54   - })
55   -}
56   -
57   -// 用户密码重置
58   -export function resetUserPwd(id, password) {
59   - const data = {
60   - id,
61   - password
62   - }
63   - return request({
64   - url: '/system/user/update-password',
65   - method: 'put',
66   - data: data
67   - })
68   -}
69   -
70   -// 用户状态修改
71   -export function changeUserStatus(id, status) {
72   - const data = {
73   - id,
74   - status
75   - }
76   - return request({
77   - url: '/system/user/update-status',
78   - method: 'put',
79   - data: data
80   - })
81   -}
82   -
83   -// 查询用户个人信息
84   -export function getUserProfile() {
85   - return request({
86   - url: '/system/user/profile/get',
87   - method: 'get'
88   - })
89   -}
90   -
91   -// 修改用户个人信息
92   -export function updateUserProfile(data) {
93   - return request({
94   - url: '/system/user/profile/update',
95   - method: 'put',
96   - data: data
97   - })
98   -}
99   -
100   -// 用户密码重置
101   -export function updateUserPwd(oldPassword, newPassword) {
102   - const data = {
103   - oldPassword,
104   - newPassword
105   - }
106   - return request({
107   - url: '/system/user/profile/update-password',
108   - method: 'put',
109   - data: data
110   - })
111   -}
112   -
113   -// 用户头像上传
114   -export function uploadAvatar(data) {
115   - return request({
116   - url: '/system/user/profile/avatar',
117   - method: 'put',
118   - data: data
119   - })
120   -}
121   -
122   -// 下载用户导入模板
123   -export function importTemplate() {
124   - return request({
125   - url: '/system/user/get-import-template',
126   - method: 'get',
127   - responseType: 'blob'
128   - })
129   -}
  1 +import request from '@/utils/request'
  2 +import { praseStrEmpty } from "@/utils/ruoyi";
  3 +
  4 +// 查询用户列表
  5 +export function listUser(query) {
  6 + return request({
  7 + url: '/system/user/page',
  8 + method: 'get',
  9 + params: query
  10 + })
  11 +}
  12 +
  13 +// 查询用户详细
  14 +export function getUser(userId) {
  15 + return request({
  16 + url: '/system/user/get?id=' + praseStrEmpty(userId),
  17 + method: 'get'
  18 + })
  19 +}
  20 +
  21 +// 新增用户
  22 +export function addUser(data) {
  23 + return request({
  24 + url: '/system/user/create',
  25 + method: 'post',
  26 + data: data
  27 + })
  28 +}
  29 +
  30 +// 修改用户
  31 +export function updateUser(data) {
  32 + return request({
  33 + url: '/system/user/update',
  34 + method: 'put',
  35 + data: data
  36 + })
  37 +}
  38 +
  39 +// 删除用户
  40 +export function delUser(userId) {
  41 + return request({
  42 + url: '/system/user/delete?id=' + userId,
  43 + method: 'delete'
  44 + })
  45 +}
  46 +
  47 +// 导出用户
  48 +export function exportUser(query) {
  49 + return request({
  50 + url: '/system/user/export',
  51 + method: 'get',
  52 + params: query,
  53 + responseType: 'blob'
  54 + })
  55 +}
  56 +
  57 +// 用户密码重置
  58 +export function resetUserPwd(id, password) {
  59 + const data = {
  60 + id,
  61 + password
  62 + }
  63 + return request({
  64 + url: '/system/user/update-password',
  65 + method: 'put',
  66 + data: data
  67 + })
  68 +}
  69 +
  70 +// 用户状态修改
  71 +export function changeUserStatus(id, status) {
  72 + const data = {
  73 + id,
  74 + status
  75 + }
  76 + return request({
  77 + url: '/system/user/update-status',
  78 + method: 'put',
  79 + data: data
  80 + })
  81 +}
  82 +
  83 +// 查询用户个人信息
  84 +export function getUserProfile() {
  85 + return request({
  86 + url: '/system/user/profile/get',
  87 + method: 'get'
  88 + })
  89 +}
  90 +
  91 +// 修改用户个人信息
  92 +export function updateUserProfile(data) {
  93 + return request({
  94 + url: '/system/user/profile/update',
  95 + method: 'put',
  96 + data: data
  97 + })
  98 +}
  99 +
  100 +// 用户密码重置
  101 +export function updateUserPwd(oldPassword, newPassword) {
  102 + const data = {
  103 + oldPassword,
  104 + newPassword
  105 + }
  106 + return request({
  107 + url: '/system/user/profile/update-password',
  108 + method: 'put',
  109 + data: data
  110 + })
  111 +}
  112 +
  113 +// 用户头像上传
  114 +export function uploadAvatar(data) {
  115 + return request({
  116 + url: '/system/user/profile/avatar',
  117 + method: 'put',
  118 + data: data
  119 + })
  120 +}
  121 +
  122 +// 下载用户导入模板
  123 +export function importTemplate() {
  124 + return request({
  125 + url: '/system/user/get-import-template',
  126 + method: 'get',
  127 + responseType: 'blob'
  128 + })
  129 +}
... ...
ruoyi-ui/src/api/tool/codegen.js renamed to yudao-admin-ui/src/api/tool/codegen.js
ruoyi-ui/src/api/tool/testDemo.js renamed to yudao-admin-ui/src/api/tool/testDemo.js
ruoyi-ui/src/assets/401_images/401.gif renamed to yudao-admin-ui/src/assets/401_images/401.gif

160 KB

ruoyi-ui/src/assets/404_images/404.png renamed to yudao-admin-ui/src/assets/404_images/404.png

95.8 KB

ruoyi-ui/src/assets/404_images/404_cloud.png renamed to yudao-admin-ui/src/assets/404_images/404_cloud.png

4.65 KB

ruoyi-ui/src/assets/icons/index.js renamed to yudao-admin-ui/src/assets/icons/index.js
1   -import Vue from 'vue'
2   -import SvgIcon from '@/components/SvgIcon'// svg component
3   -
4   -// register globally
5   -Vue.component('svg-icon', SvgIcon)
6   -
7   -const req = require.context('./svg', false, /\.svg$/)
8   -const requireAll = requireContext => requireContext.keys().map(requireContext)
9   -requireAll(req)
  1 +import Vue from 'vue'
  2 +import SvgIcon from '@/components/SvgIcon'// svg component
  3 +
  4 +// register globally
  5 +Vue.component('svg-icon', SvgIcon)
  6 +
  7 +const req = require.context('./svg', false, /\.svg$/)
  8 +const requireAll = requireContext => requireContext.keys().map(requireContext)
  9 +requireAll(req)
... ...
ruoyi-ui/src/assets/icons/svg/404.svg renamed to yudao-admin-ui/src/assets/icons/svg/404.svg
ruoyi-ui/src/assets/icons/svg/bug.svg renamed to yudao-admin-ui/src/assets/icons/svg/bug.svg
ruoyi-ui/src/assets/icons/svg/build.svg renamed to yudao-admin-ui/src/assets/icons/svg/build.svg
ruoyi-ui/src/assets/icons/svg/button.svg renamed to yudao-admin-ui/src/assets/icons/svg/button.svg
ruoyi-ui/src/assets/icons/svg/cascader.svg renamed to yudao-admin-ui/src/assets/icons/svg/cascader.svg
ruoyi-ui/src/assets/icons/svg/chart.svg renamed to yudao-admin-ui/src/assets/icons/svg/chart.svg
ruoyi-ui/src/assets/icons/svg/checkbox.svg renamed to yudao-admin-ui/src/assets/icons/svg/checkbox.svg
ruoyi-ui/src/assets/icons/svg/clipboard.svg renamed to yudao-admin-ui/src/assets/icons/svg/clipboard.svg
ruoyi-ui/src/assets/icons/svg/code.svg renamed to yudao-admin-ui/src/assets/icons/svg/code.svg
ruoyi-ui/src/assets/icons/svg/color.svg renamed to yudao-admin-ui/src/assets/icons/svg/color.svg
ruoyi-ui/src/assets/icons/svg/component.svg renamed to yudao-admin-ui/src/assets/icons/svg/component.svg
ruoyi-ui/src/assets/icons/svg/dashboard.svg renamed to yudao-admin-ui/src/assets/icons/svg/dashboard.svg
ruoyi-ui/src/assets/icons/svg/date-range.svg renamed to yudao-admin-ui/src/assets/icons/svg/date-range.svg
ruoyi-ui/src/assets/icons/svg/date.svg renamed to yudao-admin-ui/src/assets/icons/svg/date.svg
ruoyi-ui/src/assets/icons/svg/dict.svg renamed to yudao-admin-ui/src/assets/icons/svg/dict.svg
ruoyi-ui/src/assets/icons/svg/documentation.svg renamed to yudao-admin-ui/src/assets/icons/svg/documentation.svg
ruoyi-ui/src/assets/icons/svg/download.svg renamed to yudao-admin-ui/src/assets/icons/svg/download.svg
ruoyi-ui/src/assets/icons/svg/drag.svg renamed to yudao-admin-ui/src/assets/icons/svg/drag.svg
ruoyi-ui/src/assets/icons/svg/druid.svg renamed to yudao-admin-ui/src/assets/icons/svg/druid.svg
ruoyi-ui/src/assets/icons/svg/edit.svg renamed to yudao-admin-ui/src/assets/icons/svg/edit.svg
ruoyi-ui/src/assets/icons/svg/education.svg renamed to yudao-admin-ui/src/assets/icons/svg/education.svg
ruoyi-ui/src/assets/icons/svg/email.svg renamed to yudao-admin-ui/src/assets/icons/svg/email.svg