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,6 +24,7 @@
24 <java.version>1.8</java.version> 24 <java.version>1.8</java.version>
25 <maven.compiler.source>${java.version}</maven.compiler.source> 25 <maven.compiler.source>${java.version}</maven.compiler.source>
26 <maven.compiler.target>${java.version}</maven.compiler.target> 26 <maven.compiler.target>${java.version}</maven.compiler.target>
  27 + <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
27 </properties> 28 </properties>
28 29
29 <dependencyManagement> 30 <dependencyManagement>
@@ -38,6 +39,20 @@ @@ -38,6 +39,20 @@
38 </dependencies> 39 </dependencies>
39 </dependencyManagement> 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 <!-- 使用 aliyun 的 Maven 源,提升下载速度 --> 56 <!-- 使用 aliyun 的 Maven 源,提升下载速度 -->
42 <repositories> 57 <repositories>
43 <repository> 58 <repository>
ruoyi-ui/public/robots.txt deleted
1 -User-agent: *  
2 -Disallow: /  
3 \ No newline at end of file 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 \ No newline at end of file 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,17 +68,6 @@
68 </execution> 68 </execution>
69 </executions> 69 </executions>
70 </plugin> 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 </plugins> 71 </plugins>
83 </build> 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 *.vue 10 *.vue
11 \ No newline at end of file 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 pause 12 pause
13 \ No newline at end of file 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 pause 12 pause
13 \ No newline at end of file 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 \ No newline at end of file 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