diff --git a/package.json b/package.json
index 271d6e6..d37f0f7 100644
--- a/package.json
+++ b/package.json
@@ -50,6 +50,7 @@
"js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1",
"nprogress": "0.2.0",
+ "postcss-px2rem": "^0.3.0",
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
diff --git a/src/assets/styles/diythem.scss b/src/assets/styles/diythem.scss
new file mode 100644
index 0000000..edee0d6
--- /dev/null
+++ b/src/assets/styles/diythem.scss
@@ -0,0 +1,160 @@
+@import "./element-variables.scss";
+.container-main {
+ height: calc(100vh - 84px);
+ overflow: hidden;
+ padding: 0 10px;
+ // 搜索部分
+ .search-hearder {
+ padding: 12px 2px 8px 2px;
+ height: auto;
+ .el-form-item {
+ margin-bottom: 6px;
+ margin-right: 10px;
+ // lable
+ .el-form-item__label {
+ padding: 6px 12px 6px 10px;
+ font-weight: 400;
+ color: #333;
+ line-height: 20px;
+ }
+ // content
+ .el-form-item__content {
+ width: 180px;
+ // 输入框
+ .el-input {
+ .el-input__inner {
+ border-radius: 0px;
+ }
+ }
+ }
+ }
+ }
+ // 表头操作按钮部分
+ .layui-table-tool {
+ width: 100%;
+ min-height: 40px;
+ line-height: 30px;
+ padding: 6px 15px;
+ border-width: 0 0 1px;
+ border: 1px solid #e6e6e6;
+ border-bottom: 0;
+ background-color: #f2f2f2;
+ }
+
+ // 表格
+ .el-table .el-table__header-wrapper th {
+ font-size: 12px;
+ font-weight: 400;
+ // height: 35px;
+ color: #666;
+ background-color: #f2f2f2;
+ }
+ .el-table--medium .el-table__cell {
+ padding: 3px 0;
+ // height: 35px;
+ font-size: 12px;
+ color: #666;
+ }
+
+ .el-table .fixed-width .el-button--mini {
+ font-size: 12px;
+ padding: 6px 6px;
+ width: inherit;
+ }
+ //分页
+}
+// 弹窗
+.dialog-box {
+ .el-dialog__header {
+ padding: 0;
+ .dialog-title {
+ height: 50px;
+ line-height: 50px;
+ font-size: 14px;
+ color: white;
+ background-color: $--color-primary;
+ padding-left: 20px;
+ letter-spacing: 1px;
+ }
+ .el-dialog__headerbtn .el-dialog__close {
+ color: white;
+ }
+ }
+}
+
+.dialog-from {
+ .el-form-item {
+ margin-bottom: 20px;
+ margin-right: 10px;
+ // lable
+ .el-form-item__label {
+ padding: 6px 12px 6px 10px;
+ font-weight: 400;
+ color: #333;
+ line-height: 20px;
+ }
+ // content
+ .el-form-item__content {
+ // 输入框
+ .el-input {
+ .el-input__inner {
+ border-radius: 0px;
+ }
+ }
+ }
+ }
+}
+//确认框
+.el-message-box {
+ width: 300px;
+ .el-message-box__header {
+ border-bottom: 1px solid #f0f0f0;
+ }
+}
+//详情
+.Descriptions-box {
+ border: 1px solid #ddd;
+ border-right: 0;
+ border-bottom: 0;
+ .row-item {
+ width: 100%;
+ display: flex;
+ & > div {
+ padding: 10px 8px;
+ overflow: hidden;
+ font-size: 12px;
+ color: #333;
+ }
+ .row-lable {
+ width: 200px;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+ font-weight: bold;
+ }
+ .row-value {
+ flex: 1;
+ border-bottom: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+ }
+ }
+}
+// 按钮
+.el-button--mini {
+ padding: 7px 16px;
+ border-radius: 0;
+}
+.el-button {
+ border-radius: 0;
+}
+.dialog-footer {
+ display: flex;
+ justify-content: center;
+}
+.pagination-container {
+ // position: relative;
+ margin-bottom: 0px !important;
+ margin-top: 7px !important;
+ padding: 0 !important;
+
+}
diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss
index 855bd16..f8edd96 100644
--- a/src/assets/styles/index.scss
+++ b/src/assets/styles/index.scss
@@ -4,6 +4,7 @@
@import './element-ui.scss';
@import './sidebar.scss';
@import './btn.scss';
+@import "./diythem.scss";
body {
margin: 0;
@@ -131,7 +132,7 @@ aside {
}
.pagination-container {
- margin-top: 30px;
+ // margin-top: 30px;
}
.text-center {
diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss
index db8c29b..3551013 100644
--- a/src/assets/styles/ruoyi.scss
+++ b/src/assets/styles/ruoyi.scss
@@ -104,10 +104,10 @@
/** 表格布局 **/
.pagination-container {
position: relative;
- height: 25px;
- margin-bottom: 10px;
- margin-top: 15px;
- padding: 10px 20px !important;
+ // height: 25px;
+ // margin-bottom: 10px;
+ // margin-top: 15px;
+ // padding: 10px 20px !important;
}
/* tree border */
diff --git a/src/main.js b/src/main.js
index 102ce2b..75f3fce 100644
--- a/src/main.js
+++ b/src/main.js
@@ -4,6 +4,19 @@ import Cookies from 'js-cookie'
import Element from 'element-ui'
import './assets/styles/element-variables.scss'
+Element.Dialog.props.closeOnClickModal.default = false; //模态框单击空白处不允许关闭
+// 带有斑马纹
+// Element.Table.props.stripe = {
+// default: true,
+// type: Boolean,
+// };
+
+// 带有边框
+Element.Table.props.border = {
+ default: true,
+ type: Boolean,
+};
+import "@/utils/rem.js"; //计算rem基准
import '@/assets/styles/index.scss' // global css
import '@/assets/styles/ruoyi.scss' // ruoyi css
diff --git a/src/settings.js b/src/settings.js
index 6a0b09f..8852458 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -22,7 +22,7 @@ module.exports = {
/**
* 是否固定头部
*/
- fixedHeader: false,
+ fixedHeader: true,
/**
* 是否显示logo
diff --git a/src/utils/rem.js b/src/utils/rem.js
new file mode 100644
index 0000000..746d934
--- /dev/null
+++ b/src/utils/rem.js
@@ -0,0 +1,17 @@
+// rem等比适配配置文件
+// 基准大小
+const baseSize = 16;
+// 设置 rem 函数
+function setRem() {
+ // 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
+ const scale = document.documentElement.clientWidth / 1920;
+ // 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
+ document.documentElement.style.fontSize =
+ baseSize * Math.min(scale, 2) + "px";
+}
+// 初始化
+setRem();
+// 改变浏览器窗口大小时重新设置 rem
+window.onresize = function () {
+ setRem();
+};
diff --git a/src/views/index.vue b/src/views/index.vue
index 8d62a3e..2e02021 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,19 +1,530 @@
-
-
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+ 新增
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看
+ 修改
+ 删除
+
+
+
+
+
+
+ {{ dialogTitle }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ infoTitel }}
+
+
+
+
+
楼幢数量(幢)
+
+
企业数量(家)
+
+
+
+
员工总人数(人)
+
+
占地面积(m²)
+
+
+
+
占地面积(亩)
+
+
总建筑面积(m²)
+
+
+
+
出租面积(m²)
+
+
自用面积(m²)
+
+
+
+
年租金总额(万元)
+
+
平均月租金单价(元/m²/月)
+
+
+
+
土地证面积(亩)
+
+
无证面积(亩)
+
+
+
+
房产证面积(m²)
+
+
无证面积(m²)
+
+
+
+
年总税收(万元)
+
+
亩均税收(万元/千m²)
+
+
+
+
+
\ No newline at end of file
+
+
diff --git a/vue.config.js b/vue.config.js
index f67a8d0..711724a 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -4,6 +4,12 @@ const path = require('path')
function resolve(dir) {
return path.join(__dirname, dir)
}
+const px2rem = require("postcss-px2rem"); //将项目中的px转成rem,以达到屏幕适配
+// 配置基本大小
+const postcss = px2rem({
+ // 基准大小 baseSize,需要和rem.js中相同
+ remUnit: 16,
+});
const CompressionPlugin = require('compression-webpack-plugin')
@@ -20,16 +26,16 @@ module.exports = {
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
// 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
- outputDir: 'dist',
+ outputDir: "dist",
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
- assetsDir: 'static',
+ assetsDir: "static",
// 是否开启eslint保存检测,有效值:ture | false | 'error'
- lintOnSave: process.env.NODE_ENV === 'development',
+ lintOnSave: process.env.NODE_ENV === "development",
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
productionSourceMap: false,
// webpack-dev-server 相关配置
devServer: {
- host: '0.0.0.0',
+ host: "0.0.0.0",
port: port,
open: true,
proxy: {
@@ -38,97 +44,100 @@ module.exports = {
target: `http://localhost:8080`,
changeOrigin: true,
pathRewrite: {
- ['^' + process.env.VUE_APP_BASE_API]: ''
- }
- }
+ ["^" + process.env.VUE_APP_BASE_API]: "",
+ },
+ },
},
- disableHostCheck: true
+ disableHostCheck: true,
},
css: {
loaderOptions: {
sass: {
- sassOptions: { outputStyle: "expanded" }
- }
- }
+ sassOptions: { outputStyle: "expanded" },
+ },
+ // px to rem
+ postcss: {
+ plugins: [postcss],
+ },
+ },
},
configureWebpack: {
name: name,
resolve: {
alias: {
- '@': resolve('src')
- }
+ "@": resolve("src"),
+ },
},
plugins: [
// http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
new CompressionPlugin({
- cache: false, // 不启用文件缓存
- test: /\.(js|css|html)?$/i, // 压缩文件格式
- filename: '[path].gz[query]', // 压缩后的文件名
- algorithm: 'gzip', // 使用gzip压缩
- minRatio: 0.8 // 压缩率小于1才会压缩
- })
+ cache: false, // 不启用文件缓存
+ test: /\.(js|css|html)?$/i, // 压缩文件格式
+ filename: "[path].gz[query]", // 压缩后的文件名
+ algorithm: "gzip", // 使用gzip压缩
+ minRatio: 0.8, // 压缩率小于1才会压缩
+ }),
],
},
chainWebpack(config) {
- config.plugins.delete('preload') // TODO: need test
- config.plugins.delete('prefetch') // TODO: need test
+ config.plugins.delete("preload"); // TODO: need test
+ config.plugins.delete("prefetch"); // TODO: need test
// set svg-sprite-loader
+ config.module.rule("svg").exclude.add(resolve("src/assets/icons")).end();
config.module
- .rule('svg')
- .exclude.add(resolve('src/assets/icons'))
- .end()
- config.module
- .rule('icons')
+ .rule("icons")
.test(/\.svg$/)
- .include.add(resolve('src/assets/icons'))
+ .include.add(resolve("src/assets/icons"))
.end()
- .use('svg-sprite-loader')
- .loader('svg-sprite-loader')
+ .use("svg-sprite-loader")
+ .loader("svg-sprite-loader")
.options({
- symbolId: 'icon-[name]'
+ symbolId: "icon-[name]",
})
- .end()
+ .end();
- config.when(process.env.NODE_ENV !== 'development', config => {
- config
- .plugin('ScriptExtHtmlWebpackPlugin')
- .after('html')
- .use('script-ext-html-webpack-plugin', [{
+ config.when(process.env.NODE_ENV !== "development", (config) => {
+ config
+ .plugin("ScriptExtHtmlWebpackPlugin")
+ .after("html")
+ .use("script-ext-html-webpack-plugin", [
+ {
// `runtime` must same as runtimeChunk name. default is `runtime`
- inline: /runtime\..*\.js$/
- }])
- .end()
+ inline: /runtime\..*\.js$/,
+ },
+ ])
+ .end();
- config.optimization.splitChunks({
- chunks: 'all',
- cacheGroups: {
- libs: {
- name: 'chunk-libs',
- test: /[\\/]node_modules[\\/]/,
- priority: 10,
- chunks: 'initial' // only package third parties that are initially dependent
- },
- elementUI: {
- name: 'chunk-elementUI', // split elementUI into a single package
- test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
- priority: 20 // the weight needs to be larger than libs and app or it will be packaged into libs or app
- },
- commons: {
- name: 'chunk-commons',
- test: resolve('src/components'), // can customize your rules
- minChunks: 3, // minimum common number
- priority: 5,
- reuseExistingChunk: true
- }
- }
- })
+ config.optimization.splitChunks({
+ chunks: "all",
+ cacheGroups: {
+ libs: {
+ name: "chunk-libs",
+ test: /[\\/]node_modules[\\/]/,
+ priority: 10,
+ chunks: "initial", // only package third parties that are initially dependent
+ },
+ elementUI: {
+ name: "chunk-elementUI", // split elementUI into a single package
+ test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
+ priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
+ },
+ commons: {
+ name: "chunk-commons",
+ test: resolve("src/components"), // can customize your rules
+ minChunks: 3, // minimum common number
+ priority: 5,
+ reuseExistingChunk: true,
+ },
+ },
+ });
- config.optimization.runtimeChunk('single'),
- {
- from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
- to: './' //到根目录下
- }
- })
- }
-}
+ config.optimization.runtimeChunk("single"),
+ {
+ from: path.resolve(__dirname, "./public/robots.txt"), //防爬虫文件
+ to: "./", //到根目录下
+ };
+ });
+ },
+};