diff --git a/src/api/common/uploadAttachment.js b/src/api/common/uploadAttachment.js
index cd4a11b..1279d26 100644
--- a/src/api/common/uploadAttachment.js
+++ b/src/api/common/uploadAttachment.js
@@ -51,7 +51,7 @@ export const extUploader = function () {
// 内部方式上传
this._Upload_inner = (url, data) => {
- console.log('使用内部上传: ' + process.env.VUE_APP_BASE_API + url);
+ //console.log('使用内部上传: ' + process.env.VUE_APP_BASE_API + url);
return request({
url: url,
method: 'post',
@@ -66,7 +66,7 @@ export const extUploader = function () {
data.append('token', this._token);
else
data.token = this._token;
- console.log('使用外部上传: ' + this._remoteHost + url);
+ //console.log('使用外部上传: ' + this._remoteHost + url);
return request({
url: url,
method: 'post',
@@ -86,13 +86,13 @@ export const extUploader = function () {
this._token = resp.data;
this._remoteHost = resp.fileServerAddress;
this._usingExternal = true;
- console.log('使用外部上传: ' + this._remoteHost);
+ //console.log('使用外部上传: ' + this._remoteHost);
}
else {
this._token = null;
this._remoteHost = null;
this._usingExternal = false;
- console.log('使用内部上传');
+ //console.log('使用内部上传');
}
this._supportExternal = true;
}).catch(() => {
@@ -100,7 +100,7 @@ export const extUploader = function () {
this._remoteHost = null;
this._usingExternal = false;
this._supportExternal = false;
- console.log('未配置文件外部服务, 将使用内部上传');
+ //console.log('未配置文件外部服务, 将使用内部上传');
});
};
@@ -151,7 +151,7 @@ export const extUploader = function () {
throw '请先调用Init进行初始化';
if (this._UsingExternal()) {
return this._Upload_external(extUrl, data).catch(() => {
- console.log('外部上传失败! 尝试转为内部上传');
+ //console.log('外部上传失败! 尝试转为内部上传');
this.ForceDisableExternal();
return this._Upload_inner(innerUrl, data);
});
diff --git a/src/api/index.js b/src/api/index.js
index 415f945..fbea89b 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1 +1,9 @@
import request from '@/utils/request';
+
+export function getStatistic (query) {
+ return request({
+ url: '/api/asset/three/statistic',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/src/api/login.js b/src/api/login.js
index 0020b19..5bd417b 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -37,4 +37,4 @@ export function logout () {
url: '/api/logout',
method: 'post'
})
-}
\ No newline at end of file
+}
diff --git a/src/components/charts/bar-dimensional/index.html b/src/components/charts/bar-dimensional/index.html
new file mode 100644
index 0000000..d60fced
--- /dev/null
+++ b/src/components/charts/bar-dimensional/index.html
@@ -0,0 +1 @@
+
diff --git a/src/components/charts/bar-dimensional/index.js b/src/components/charts/bar-dimensional/index.js
new file mode 100644
index 0000000..aecf5aa
--- /dev/null
+++ b/src/components/charts/bar-dimensional/index.js
@@ -0,0 +1,378 @@
+import * as echarts from 'echarts';
+import elementResizeDetectorMaker from 'element-resize-detector';
+import fa from "element-ui/src/locale/lang/fa";
+export default {
+ props: {
+ id: {
+ type: String,
+ default: 'bar'
+ },
+ data: {
+ type: Array,
+ default: function () {
+ return [
+ {
+ name: '1月',
+ value: '10'
+ },
+ {
+ name: '2月',
+ value: '19'
+ }
+ ];
+ }
+ },
+ unit: {
+ type: String,
+ default: '单位:万元'
+ },
+ color: {
+ type: Array,
+ default: function () {
+ return ['rgba(15, 252, 252, 1)', 'rgba(53, 197, 124, 1)']
+ }
+ },
+ barBorderRadius: {
+ type: Array,
+ default: function () {
+ return [0, 0, 0, 0]
+ }
+ }
+ },
+ data () {
+ return {
+ chart: null
+ };
+ },
+ mounted () {
+ this.initChart();
+ },
+ computed: {
+ },
+ methods: {
+ // 设置监听器 页面尺寸变化重新绘制图表
+ initResizeCallBack () {
+ const erd = elementResizeDetectorMaker();
+ erd.listenTo(document.getElementById(this.id), () => {
+ this.$nextTick(() => {
+ this.chart.resize();
+ });
+ });
+ },
+ initChart () {
+ this.chart = echarts.init(document.getElementById(this.id));
+ this.chartSetOption();
+ },
+ chartSetOption () {
+ let xAxisData = [];
+ let data = [];
+ this.data.forEach(item => {
+ xAxisData.push(item.name)
+ data.push(item.value)
+ });
+ const CubeLeft = echarts.graphic.extendShape({
+ shape: {
+ x: 0,
+ y: 0,
+ },
+ buildPath: function (ctx, shape) {
+ const xAxisPoint = shape.xAxisPoint;
+ const c0 = [shape.x, shape.y];
+ const c1 = [shape.x - 9, shape.y - 9];
+ const c2 = [xAxisPoint[0] - 9, xAxisPoint[1] - 9];
+ const c3 = [xAxisPoint[0], xAxisPoint[1]];
+ ctx
+ .moveTo(c0[0], c0[1])
+ .lineTo(c1[0], c1[1])
+ .lineTo(c2[0], c2[1])
+ .lineTo(c3[0], c3[1])
+ .closePath();
+ },
+ });
+ const CubeRight = echarts.graphic.extendShape({
+ shape: {
+ x: 0,
+ y: 0,
+ },
+ buildPath: function (ctx, shape) {
+ const xAxisPoint = shape.xAxisPoint;
+ const c1 = [shape.x, shape.y];
+ const c2 = [xAxisPoint[0], xAxisPoint[1]];
+ const c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9];
+ const c4 = [shape.x + 18, shape.y - 9];
+ ctx
+ .moveTo(c1[0], c1[1])
+ .lineTo(c2[0], c2[1])
+ .lineTo(c3[0], c3[1])
+ .lineTo(c4[0], c4[1])
+ .closePath();
+ },
+ });
+ const CubeTop = echarts.graphic.extendShape({
+ shape: {
+ x: 0,
+ y: 0,
+ },
+ buildPath: function (ctx, shape) {
+ const c1 = [shape.x, shape.y];
+ const c2 = [shape.x + 18, shape.y - 9];
+ const c3 = [shape.x + 9, shape.y - 18];
+ const c4 = [shape.x - 9, shape.y - 9];
+ ctx
+ .moveTo(c1[0], c1[1])
+ .lineTo(c2[0], c2[1])
+ .lineTo(c3[0], c3[1])
+ .lineTo(c4[0], c4[1])
+ .closePath();
+ },
+ });
+ echarts.graphic.registerShape("CubeLeft", CubeLeft);
+ echarts.graphic.registerShape("CubeRight", CubeRight);
+ echarts.graphic.registerShape("CubeTop", CubeTop);
+ const MAX = [
+ 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,
+ ];
+ const VALUE = [
+ 201, 123, 379, 234, 165, 123, 379, 234, 165, 379, 234, 165,
+ ];
+ const option = {
+ // backgroundColor: "#010d3a",
+ title: {
+ text: "",
+ top: 32,
+ left: 18,
+ textStyle: {
+ color: "#00F6FF",
+ fontSize: 24,
+ },
+ },
+ grid: {
+ left: "0%",
+ right: "0%",
+ bottom: "5%",
+ top: "15%",
+ containLabel: true,
+ z: 22,
+ },
+ xAxis: {
+ splitArea: {
+ show: false,
+ areaStyle: {
+ color: ['RGBA(13, 31, 64, 1)']
+ }
+ },
+ splitLine: {
+ show: false,
+ lineStyle: {
+ color: ['rgba(18, 40, 83, 1)'],
+ width: 100
+ }
+ },
+ type: "category",
+ gridIndex: 0,
+ data: [
+ "A镇",
+ "A镇",
+ "A镇",
+ "A镇",
+ "A镇",
+ "A镇",
+ "A镇"
+ ],
+ axisTick: {
+ alignWithLabel: true,
+ },
+ axisLine: {
+ lineStyle: {
+ color: "#0c3b71",
+ },
+ },
+ axisLabel: {
+ show: true,
+ color: 'rgba(185, 211, 235, 1)'
+ }
+ },
+ yAxis: {
+ name: this.unit,
+ type: "value",
+ nameTextStyle: {
+ color: 'rgba(185, 211, 235, 1)'
+ },
+ axisLabel: {
+ formatter: "{value}",
+ textStyle: {
+ color: "rgba(185, 211, 235, 1)",
+ },
+ },
+ axisLine: {
+ lineStyle: {
+ color: "#27b4c2",
+ },
+ },
+ axisTick: {
+ show: false,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "#11366e",
+ },
+ },
+ },
+ series: [
+ {
+ type: "custom",
+ renderItem: function (params, api) {
+ const location = api.coord([api.value(0), api.value(1)]);
+ return {
+ type: "group",
+ children: [
+ {
+ type: "CubeLeft",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: "rgba(7,29,97,.6)",
+ },
+ },
+ {
+ type: "CubeRight",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: "rgba(10,35,108,.7)",
+ },
+ },
+ {
+ type: "CubeTop",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: "rgba(11,42,106,.8)",
+ },
+ },
+ ],
+ };
+ },
+ data: MAX,
+ },
+ {
+ type: "custom",
+ renderItem: (params, api) => {
+ const location = api.coord([api.value(0), api.value(1)]);
+ return {
+ type: "group",
+ children: [
+ {
+ type: "CubeLeft",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: "#10fafa",
+ },
+ {
+ offset: 1,
+ color: "#0a97a1",
+ },
+ ]),
+ },
+ },
+ {
+ type: "CubeRight",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: "#0a97a2",
+ },
+ {
+ offset: 1,
+ color: "#10fafa",
+ },
+ ]),
+ },
+ },
+ {
+ type: "CubeTop",
+ shape: {
+ api,
+ xValue: api.value(0),
+ yValue: api.value(1),
+ x: location[0],
+ y: location[1],
+ xAxisPoint: api.coord([api.value(0), 0]),
+ },
+ style: {
+ fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: "#10fcfc",
+ },
+ {
+ offset: 1,
+ color: "#10fcfc",
+ },
+ ]),
+ },
+ },
+ ],
+ };
+ },
+ data: VALUE,
+ },
+ {
+ type: "bar",
+ label: {
+ normal: {
+ show: false,
+ },
+ },
+ itemStyle: {
+ color: "transparent",
+ },
+ data: MAX,
+ },
+ ],
+ };
+
+ this.chart.setOption(option);
+ this.initResizeCallBack();
+
+ }
+ }
+};
diff --git a/src/components/charts/bar-dimensional/index.scss b/src/components/charts/bar-dimensional/index.scss
new file mode 100644
index 0000000..b89d9dc
--- /dev/null
+++ b/src/components/charts/bar-dimensional/index.scss
@@ -0,0 +1,6 @@
+.chart {
+ overflow: visible;
+ width: 100%;
+ height: 100%;
+ z-index: 2;
+}
\ No newline at end of file
diff --git a/src/components/charts/bar-dimensional/index.vue b/src/components/charts/bar-dimensional/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/charts/bar-dimensional/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/charts/bar/index.js b/src/components/charts/bar/index.js
index cf4da97..02b9322 100644
--- a/src/components/charts/bar/index.js
+++ b/src/components/charts/bar/index.js
@@ -30,6 +30,12 @@ export default {
default: function () {
return ['rgba(15, 252, 252, 1)', 'rgba(53, 197, 124, 1)']
}
+ },
+ barBorderRadius: {
+ type: Array,
+ default: function () {
+ return [0, 0, 0, 0]
+ }
}
},
data () {
@@ -38,7 +44,9 @@ export default {
};
},
mounted () {
- this.initChart();
+ setTimeout(()=>{
+ this.initChart();
+ },1000)
},
computed: {
},
@@ -59,10 +67,14 @@ export default {
chartSetOption () {
let xAxisData = [];
let data = [];
+ let bgData = [];
this.data.forEach(item => {
xAxisData.push(item.name)
data.push(item.value)
+ bgData.push(100)
});
+
+ //console.log(data);
const option = {
color: ["#3398DB"],
tooltip: {
@@ -167,7 +179,7 @@ export default {
],
series: [
{
- name: "合格率",
+ name: "面积",
type: "bar",
barWidth: 15,
xAxisIndex: 0,
@@ -179,6 +191,7 @@ export default {
},
itemStyle: {
normal: {
+ barBorderRadius: this.barBorderRadius,
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
@@ -216,11 +229,10 @@ export default {
style: api.style()
};
},
- data: [100, 100, 100, 100, 100, 100, 100]
- },
-
- ],
- };;
+ data: bgData
+ }
+ ]
+ };
this.chart.setOption(option);
this.initResizeCallBack();
diff --git a/src/components/charts/pie/index.js b/src/components/charts/pie/index.js
index bdf1f3b..8062057 100644
--- a/src/components/charts/pie/index.js
+++ b/src/components/charts/pie/index.js
@@ -6,6 +6,14 @@ export default {
type: String,
default: 'pie'
},
+ titleNum: {
+ type: String,
+ default: "1000 万元"
+ },
+ title: {
+ type: String,
+ default: "总债务"
+ },
data: {
type: Array,
default: function () {
@@ -96,7 +104,7 @@ export default {
const option = {
title: [
{
- text: "总债务",
+ text: this.title,
left: "center",
top: "40%",
padding: [0, 0],
@@ -107,7 +115,7 @@ export default {
},
},
{
- text: "1000 万元",
+ text: this.titleNum,
left: "center",
top: "50%",
padding: [0, 0],
diff --git a/src/components/footer/footer_bk.png b/src/components/footer/footer_bk.png
new file mode 100644
index 0000000..3a4293c
Binary files /dev/null and b/src/components/footer/footer_bk.png differ
diff --git a/src/components/footer/index.html b/src/components/footer/index.html
new file mode 100644
index 0000000..21c38b4
--- /dev/null
+++ b/src/components/footer/index.html
@@ -0,0 +1 @@
+
diff --git a/src/components/footer/index.js b/src/components/footer/index.js
new file mode 100644
index 0000000..74b4e8c
--- /dev/null
+++ b/src/components/footer/index.js
@@ -0,0 +1,35 @@
+
+export default {
+
+ computed: {
+ },
+ props: {
+ callBack: {
+ type: Boolean,
+ default: false
+ },
+ title: {
+ type: String,
+ default: '我是标题'
+ },
+ back: {
+ type: Boolean,
+ default: false
+ },
+ backName: {
+ type: String,
+ default: '返回'
+ }
+ },
+ data () {
+ return {
+ };
+ },
+ created () {
+ },
+ methods: {
+ goback () {
+ this.$router.go(-1)
+ }
+ }
+};
diff --git a/src/components/footer/index.scss b/src/components/footer/index.scss
new file mode 100644
index 0000000..849cee7
--- /dev/null
+++ b/src/components/footer/index.scss
@@ -0,0 +1,9 @@
+.header {
+ position: absolute;
+ bottom: 0;
+ background: url('footer_bk.png');
+ background-size: 100% 100%;
+ width: 100%;
+ height: 20px;
+ z-index: 9;
+}
diff --git a/src/components/footer/index.vue b/src/components/footer/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/footer/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/headerNew/back.png b/src/components/headerNew/back.png
new file mode 100644
index 0000000..25f10c1
Binary files /dev/null and b/src/components/headerNew/back.png differ
diff --git a/src/components/headerNew/header_bk.png b/src/components/headerNew/header_bk.png
new file mode 100644
index 0000000..aee171a
Binary files /dev/null and b/src/components/headerNew/header_bk.png differ
diff --git a/src/components/headerNew/index.html b/src/components/headerNew/index.html
new file mode 100644
index 0000000..fc499b7
--- /dev/null
+++ b/src/components/headerNew/index.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/src/components/headerNew/index.js b/src/components/headerNew/index.js
new file mode 100644
index 0000000..74b4e8c
--- /dev/null
+++ b/src/components/headerNew/index.js
@@ -0,0 +1,35 @@
+
+export default {
+
+ computed: {
+ },
+ props: {
+ callBack: {
+ type: Boolean,
+ default: false
+ },
+ title: {
+ type: String,
+ default: '我是标题'
+ },
+ back: {
+ type: Boolean,
+ default: false
+ },
+ backName: {
+ type: String,
+ default: '返回'
+ }
+ },
+ data () {
+ return {
+ };
+ },
+ created () {
+ },
+ methods: {
+ goback () {
+ this.$router.go(-1)
+ }
+ }
+};
diff --git a/src/components/headerNew/index.scss b/src/components/headerNew/index.scss
new file mode 100644
index 0000000..5add025
--- /dev/null
+++ b/src/components/headerNew/index.scss
@@ -0,0 +1,47 @@
+.header {
+ position: relative;
+ background: url('./header_bk.png');
+ background-size: 100% 100%;
+ width: 100%;
+ height: 90px;
+ z-index: 9;
+
+ .title {
+ overflow: visible;
+ padding: 0 20px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(calc(-50% + 7.5px), -50%);
+ font-size: 30px;
+ letter-spacing: 15px;
+ // font-style: italic;
+ font-weight: 600;
+ background: linear-gradient(180deg, #FFFFFF 38.330078125%, #9be6f4 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ color: transparent;
+ }
+
+ .left {
+ position: absolute;
+ left: 20px;
+ top: 20px;
+ }
+
+ .right {
+ position: absolute;
+ right: 20px;
+ bottom: 10px;
+
+ .back {
+ cursor: pointer;
+ background: url('./back.png');
+ background-size: 100% 100%;
+ width: 42px;
+ height: 42px;
+ }
+ }
+
+
+}
diff --git a/src/components/headerNew/index.vue b/src/components/headerNew/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/headerNew/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/left/index.html b/src/components/left/index.html
new file mode 100644
index 0000000..21c38b4
--- /dev/null
+++ b/src/components/left/index.html
@@ -0,0 +1 @@
+
diff --git a/src/components/left/index.js b/src/components/left/index.js
new file mode 100644
index 0000000..74b4e8c
--- /dev/null
+++ b/src/components/left/index.js
@@ -0,0 +1,35 @@
+
+export default {
+
+ computed: {
+ },
+ props: {
+ callBack: {
+ type: Boolean,
+ default: false
+ },
+ title: {
+ type: String,
+ default: '我是标题'
+ },
+ back: {
+ type: Boolean,
+ default: false
+ },
+ backName: {
+ type: String,
+ default: '返回'
+ }
+ },
+ data () {
+ return {
+ };
+ },
+ created () {
+ },
+ methods: {
+ goback () {
+ this.$router.go(-1)
+ }
+ }
+};
diff --git a/src/components/left/index.scss b/src/components/left/index.scss
new file mode 100644
index 0000000..c16dfe7
--- /dev/null
+++ b/src/components/left/index.scss
@@ -0,0 +1,9 @@
+.header {
+ position: absolute;
+ bottom: 0;
+ background: url('left_bk.png');
+ background-size: 100% 100%;
+ width: 20px;
+ height: 100%;
+ z-index: 9;
+}
diff --git a/src/components/left/index.vue b/src/components/left/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/left/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/left/left_bk.png b/src/components/left/left_bk.png
new file mode 100644
index 0000000..03cf4d6
Binary files /dev/null and b/src/components/left/left_bk.png differ
diff --git a/src/components/pannelNew/close.png b/src/components/pannelNew/close.png
new file mode 100644
index 0000000..371277f
Binary files /dev/null and b/src/components/pannelNew/close.png differ
diff --git a/src/components/pannelNew/header_bg.png b/src/components/pannelNew/header_bg.png
new file mode 100644
index 0000000..b145904
Binary files /dev/null and b/src/components/pannelNew/header_bg.png differ
diff --git a/src/components/pannelNew/icon.png b/src/components/pannelNew/icon.png
new file mode 100644
index 0000000..aee23d0
Binary files /dev/null and b/src/components/pannelNew/icon.png differ
diff --git a/src/components/pannelNew/index.html b/src/components/pannelNew/index.html
new file mode 100644
index 0000000..4540f2b
--- /dev/null
+++ b/src/components/pannelNew/index.html
@@ -0,0 +1,25 @@
+
diff --git a/src/components/pannelNew/index.js b/src/components/pannelNew/index.js
new file mode 100644
index 0000000..450729e
--- /dev/null
+++ b/src/components/pannelNew/index.js
@@ -0,0 +1,54 @@
+export default {
+ props: {
+ // 定义标题
+ title: {
+ type: String,
+ default: '我是标题'
+ },
+ bkClass: {
+ type: String,
+ default: 'bk_normal'
+ },
+ /**
+ * 是否可以伸缩
+ */
+ flexIble: {
+ type: Boolean,
+ default: false
+ },
+ // 定义跳转页面url
+ uri: {
+ type: String,
+ default: ''
+ },
+ // 定义组件高度
+ height: {
+ type: String,
+ default: '300'
+ },
+ // 定义组件高度
+ width: {
+ type: String,
+ default: '430'
+ }
+ },
+ computed: {
+ style: function () {
+ return {
+ height: this.height + 'px',
+ width: this.isOpen ? 1000 + 'px' : this.width + 'px'
+ };
+ }
+ },
+ data () {
+ return {
+ // 是否展开
+ isOpen: false
+ };
+ },
+ methods: {
+ open () {
+ this.isOpen = !this.isOpen
+ }
+ }
+};
diff --git a/src/components/pannelNew/index.scss b/src/components/pannelNew/index.scss
new file mode 100644
index 0000000..588e643
--- /dev/null
+++ b/src/components/pannelNew/index.scss
@@ -0,0 +1,153 @@
+.pannel {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+
+ // 頭部區域
+ .header_box {
+ position: relative;
+ //height: 35px;
+ overflow: visible !important;
+
+ .top_line {
+ display: flex;
+ justify-content: space-between;
+ background-color: rgba(22, 60, 114, 1);
+ width: 100%;
+ height: 2px;
+
+ .left_sign {
+ height: 2px;
+ width: 13px;
+ background-color: rgba(53, 143, 255, 1);
+ }
+
+ .right_sign {
+ height: 2px;
+ width: 13px;
+ background-color: rgba(53, 143, 255, 1);
+ }
+ }
+
+ .header {
+ margin-top: 2px;
+ height: 45px;
+ background: #01142c url("header_bg.png") no-repeat -8px center;
+ background-size: 102% auto;
+ justify-content: space-between;
+
+ .title_bk {
+ // font-style: italic;
+ font-weight: 600;
+ height: 50px;
+ margin-left: 20px;
+ line-height: 38px;
+ text-align: center;
+
+ .icon {
+ display: block;
+ background: url('./icon.png');
+ background-size: 100% 100%;
+ width: 18px;
+ height: 18px;
+ }
+
+ p {
+ margin-left: 10px;
+ }
+ }
+
+ .more {
+ margin-right: 20px;
+ }
+ }
+
+ .light {
+ position: absolute;
+ bottom: -2px;
+ left: 30px;
+ background: url('./light.png');
+ background-size: 100% 100%;
+ width: 280px;
+ height: 30px;
+ animation: lightmove 4s infinite;
+ }
+ }
+
+ // 内容区域
+ .body {
+ //margin: 2px;
+ padding: 10px;
+ width: 100%;
+ position: relative;
+ flex: 1;
+ background-color: #01142c;
+ overflow: hidden;
+
+ .bottom_line {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: flex;
+ justify-content: space-between;
+ background-color: rgba(22, 60, 114, 1);
+ width: 100%;
+ height: 2px;
+
+ .left_sign {
+ height: 2px;
+ width: 13px;
+ background-color: rgba(53, 143, 255, 1);
+ }
+
+ .right_sign {
+ height: 2px;
+ width: 13px;
+ background-color: rgba(53, 143, 255, 1);
+ }
+ }
+
+ div {
+ width: 100%;
+ height: 100%;
+ }
+ }
+}
+
+.flexIble {
+ z-index: 4;
+ width: 16px;
+ height: 16px;
+ background: url('./close.png');
+ background-size: 100% 100%;
+}
+
+.flexIble_open {
+ width: 16px;
+ height: 16px;
+ background: url('./open.png') !important;
+ background-size: 100% 100%;
+}
+
+@keyframes lightmove {
+
+ /* 动画关键帧 */
+ 0% {
+ opacity: 1;
+ transform: translateX(0px);
+ /* 样式 */
+ }
+
+ 50% {
+ opacity: 0.2;
+ transform: translateX(170px);
+ }
+
+ /* 。。。 */
+ 100% {
+ opacity: 1;
+ transform: translateX(0px);
+ /* 样式 */
+ }
+}
diff --git a/src/components/pannelNew/index.vue b/src/components/pannelNew/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/pannelNew/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/pannelNew/light.png b/src/components/pannelNew/light.png
new file mode 100644
index 0000000..7138952
Binary files /dev/null and b/src/components/pannelNew/light.png differ
diff --git a/src/components/pannelNew/open.png b/src/components/pannelNew/open.png
new file mode 100644
index 0000000..6e25781
Binary files /dev/null and b/src/components/pannelNew/open.png differ
diff --git a/src/components/right/index.html b/src/components/right/index.html
new file mode 100644
index 0000000..21c38b4
--- /dev/null
+++ b/src/components/right/index.html
@@ -0,0 +1 @@
+
diff --git a/src/components/right/index.js b/src/components/right/index.js
new file mode 100644
index 0000000..74b4e8c
--- /dev/null
+++ b/src/components/right/index.js
@@ -0,0 +1,35 @@
+
+export default {
+
+ computed: {
+ },
+ props: {
+ callBack: {
+ type: Boolean,
+ default: false
+ },
+ title: {
+ type: String,
+ default: '我是标题'
+ },
+ back: {
+ type: Boolean,
+ default: false
+ },
+ backName: {
+ type: String,
+ default: '返回'
+ }
+ },
+ data () {
+ return {
+ };
+ },
+ created () {
+ },
+ methods: {
+ goback () {
+ this.$router.go(-1)
+ }
+ }
+};
diff --git a/src/components/right/index.scss b/src/components/right/index.scss
new file mode 100644
index 0000000..78ffea4
--- /dev/null
+++ b/src/components/right/index.scss
@@ -0,0 +1,10 @@
+.header {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ background: url('right_bk.png');
+ background-size: 100% 100%;
+ width: 20px;
+ height: 100%;
+ z-index: 9;
+}
diff --git a/src/components/right/index.vue b/src/components/right/index.vue
new file mode 100644
index 0000000..5ca257a
--- /dev/null
+++ b/src/components/right/index.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/right/right_bk.png b/src/components/right/right_bk.png
new file mode 100644
index 0000000..bcbe895
Binary files /dev/null and b/src/components/right/right_bk.png differ
diff --git a/src/directive/index.js b/src/directive/index.js
index cdd849a..52213de 100644
--- a/src/directive/index.js
+++ b/src/directive/index.js
@@ -2,7 +2,7 @@
export default {
increase: { // 自增
inserted: function (el) {
- console.log('【inserted】 inserted');
+ //console.log('【inserted】 inserted');
const endText = el.innerText;
// const endText = el.dataset.value;
const end = el.innerText * 1;
diff --git a/src/router/index.js b/src/router/index.js
index 427cfcb..1bf88a3 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -36,6 +36,12 @@ const routes = [
path: '/property',
name: 'property',
component: () => import('@/views/property/index.vue')
+ },
+ // // 三清五治
+ {
+ path: '/sanqing',
+ name: 'sanqing',
+ component: () => import('@/views/sanqing/index.vue')
}
];
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index ed57960..c730755 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -223,7 +223,7 @@ const user = {
}
getConfig().then((num) => {
- // console.log(res)
+ // //console.log(res)
if (num && num.code == 200) {
let content = num.data;
commit('SET_DEPTLEVEL', content.deptLevel)
diff --git a/src/style/_base.scss b/src/style/_base.scss
index 308be54..e5b385d 100644
--- a/src/style/_base.scss
+++ b/src/style/_base.scss
@@ -124,4 +124,4 @@ body {
background-color: rgba(6, 24, 24, 0.585);
border-radius: 4px;
box-shadow: 0px 0px 13px 0px #48B7FF inset;
-}
\ No newline at end of file
+}
diff --git a/src/utils/request.js b/src/utils/request.js
index 16d5ab1..6e2f8ef 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -43,7 +43,7 @@ service.interceptors.request.use(config => {
}
return config
}, error => {
- //console.log(error)
+ ////console.log(error)
Promise.reject(error)
})
@@ -87,11 +87,11 @@ service.interceptors.response.use(res => {
}
} catch (e) {
- console.log(e)
+ //console.log(e)
}
},
error => {
- //console.log('err' + error)
+ ////console.log('err' + error)
let { message } = error;
if (message == "Network Error") {
message = "后端接口连接异常";
diff --git a/src/views/capital/comps/left/bottom/1/index.js b/src/views/capital/comps/left/bottom/1/index.js
index f436a1c..6bd2c3d 100644
--- a/src/views/capital/comps/left/bottom/1/index.js
+++ b/src/views/capital/comps/left/bottom/1/index.js
@@ -21,7 +21,7 @@ export default {
},
methods: {
tabChange (info) {
- console.log(info);
+ //console.log(info);
this.tabIndex = info.id
}
}
diff --git a/src/views/login/index.js b/src/views/login/index.js
index 465be40..fd00451 100644
--- a/src/views/login/index.js
+++ b/src/views/login/index.js
@@ -143,7 +143,7 @@ export default {
}
})
.catch((error) => {
- console.log(error);
+ //console.log(error);
const errorString = error + "";
this.loading = false;
if (errorString.indexOf("证书无效") > -1) {
diff --git a/src/views/nav/data.js b/src/views/nav/data.js
index 7679b60..1c81576 100644
--- a/src/views/nav/data.js
+++ b/src/views/nav/data.js
@@ -1,17 +1,26 @@
export default [
- {
- icon: require('./1.png'),
- path: '/capital',
- name: '资金一张图'
- },
- {
- icon: require('./3.png'),
- path: '/property',
- name: '资产一张图'
- },
- {
- icon: require('./2.png'),
- path: '/resources',
- name: '资源一张图'
- }
-]
\ No newline at end of file
+ [
+ {
+ icon: require('./1.png'),
+ path: '/capital',
+ name: '资金一张图'
+ },
+ {
+ icon: require('./3.png'),
+ path: '/property',
+ name: '资产一张图'
+ },
+ {
+ icon: require('./2.png'),
+ path: '/resources',
+ name: '资源一张图'
+ },
+ ],
+ [
+ {
+ icon: require('./2.png'),
+ path: '/sanqing',
+ name: '三清五治一张图'
+ }
+ ]
+]
diff --git a/src/views/nav/index.html b/src/views/nav/index.html
index df8905b..035c631 100644
--- a/src/views/nav/index.html
+++ b/src/views/nav/index.html
@@ -2,10 +2,17 @@
-
-
![]()
-
{{item.name}}
-
+
+
+
+
+
![]()
+
{{item2.name}}
+
+
+
+
+
diff --git a/src/views/nav/index.scss b/src/views/nav/index.scss
index 82af04f..7790c77 100644
--- a/src/views/nav/index.scss
+++ b/src/views/nav/index.scss
@@ -30,7 +30,13 @@
left: 50%;
top: 26%;
transform: translateX(-50%);
+ width: 70%;
+}
+
+.flex_block{
display: flex;
+ align-items: center;
+ padding: 2vh 4vh;
}
.item {
@@ -63,4 +69,8 @@
font-size: 36px;
margin-bottom: 50px;
}
-}
\ No newline at end of file
+}
+
+::v-deep .el-carousel__arrow{
+ font-size: 32px;
+}
diff --git a/src/views/property/comps/left/bottom/1/index.js b/src/views/property/comps/left/bottom/1/index.js
index caa8597..c66c658 100644
--- a/src/views/property/comps/left/bottom/1/index.js
+++ b/src/views/property/comps/left/bottom/1/index.js
@@ -29,7 +29,7 @@ export default {
},
methods: {
tabChange (info) {
- console.log(info);
+ //console.log(info);
this.tabIndex = info.id
}
}
diff --git a/src/views/property/main-gis/index.js b/src/views/property/main-gis/index.js
index ff7e5de..9b8e310 100644
--- a/src/views/property/main-gis/index.js
+++ b/src/views/property/main-gis/index.js
@@ -28,7 +28,7 @@ export default {
deptLayer: "", // 坐标点图层
countyBorderLayerName: "", // 区县边界图层名称
townBorderLayerName: "", // 乡镇边界图层名称
- villageBorderLayerName: "", // 村边界图层名称
+ //villageBorderLayerName: "", // 村边界图层名称
groupBorderLayerName: "", // 组边界图层名称
LegendData: [
{
@@ -446,7 +446,7 @@ export default {
let features = [];
permanentList.forEach(item => {
if (item.theGeom != null && item.theGeom !== '') {
- // console.log(222, useType, item);
+ // //console.log(222, useType, item);
const { useType } = item
let icon = iconMap[useType + '']
let fs = gis.getFeature2(item, icon)
@@ -459,9 +459,9 @@ export default {
gis.mapSetFit(features)
},
// 添加村边界
- addVillageBorder (deptId) {
- gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptId)
- },
+ // addVillageBorder (deptId) {
+ // gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptId)
+ // },
// 获取geoserver的地址
getGeoServerUrl () {
// 获取geoserver的地址
@@ -669,7 +669,7 @@ export default {
},
// 添加乡镇边界
addTownBorder (deptIds) {
- console.log(this.townBorderLayerName);
+ //console.log(this.townBorderLayerName);
gis.addImageLayer(this.mapGeoServerUrl, this.townBorderLayerName, deptIds)
},
// 添加村边界
diff --git a/src/views/resources/comps/left/bottom/1/index.js b/src/views/resources/comps/left/bottom/1/index.js
index caa8597..c66c658 100644
--- a/src/views/resources/comps/left/bottom/1/index.js
+++ b/src/views/resources/comps/left/bottom/1/index.js
@@ -29,7 +29,7 @@ export default {
},
methods: {
tabChange (info) {
- console.log(info);
+ //console.log(info);
this.tabIndex = info.id
}
}
diff --git a/src/views/resources/main-gis/index.js b/src/views/resources/main-gis/index.js
index ce0cd96..d6dfbbb 100644
--- a/src/views/resources/main-gis/index.js
+++ b/src/views/resources/main-gis/index.js
@@ -285,18 +285,18 @@ export default {
addTownBorder (deptIds) {
gis.addImageLayer(this.mapGeoServerUrl, this.townBorderLayerName, deptIds)
},
- // 添加村边界
- addVillageBorder (deptIds) {
- gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds)
- },
- // 获取资源列表
- getResourceList (deptId) {
- getResourceListByDeptId(deptId).then(response => {
- if (response.data && response.data.length > 0) {
- this.addResourceLayer(response.data);
- }
- });
- },
+ // // 添加村边界
+ // addVillageBorder (deptIds) {
+ // gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds)
+ // },
+ // // 获取资源列表
+ // getResourceList (deptId) {
+ // getResourceListByDeptId(deptId).then(response => {
+ // if (response.data && response.data.length > 0) {
+ // this.addResourceLayer(response.data);
+ // }
+ // });
+ // },
// 获取geoserver的地址
getGeoServerUrl () {
// 获取geoserver的地址
@@ -391,7 +391,7 @@ export default {
// // 获取资源列表
this.getResourceList(deptId);
let dept2 = this.addrOptions[0];
- console.log(this.addrOptions, 'this.addrOptions');
+ //console.log(this.addrOptions, 'this.addrOptions');
if (dept2.deptLevel === '5') {
// 登录身份为市级领导
this.userRole = 'cityLeader';
@@ -543,7 +543,7 @@ export default {
},
// 创建矢量数据源
addDeptLayer (nextDeptSet, locationIcon) {
- console.log('nextDeptSet', nextDeptSet);
+ //console.log('nextDeptSet', nextDeptSet);
let features = [];
nextDeptSet.forEach(item => {
let fs = gis.getFeature(item, this.yellowIcon)
diff --git a/src/views/sanqing/comps/buttom/1/bg.png b/src/views/sanqing/comps/buttom/1/bg.png
new file mode 100644
index 0000000..66e819f
Binary files /dev/null and b/src/views/sanqing/comps/buttom/1/bg.png differ
diff --git a/src/views/sanqing/comps/buttom/1/bg2.png b/src/views/sanqing/comps/buttom/1/bg2.png
new file mode 100644
index 0000000..ed83a8a
Binary files /dev/null and b/src/views/sanqing/comps/buttom/1/bg2.png differ
diff --git a/src/views/sanqing/comps/buttom/1/data.js b/src/views/sanqing/comps/buttom/1/data.js
new file mode 100644
index 0000000..68746f0
--- /dev/null
+++ b/src/views/sanqing/comps/buttom/1/data.js
@@ -0,0 +1,34 @@
+export default [
+ [
+ {
+ show: true,
+ name: '农用地(亩)',
+ value: '716'
+ },
+ {
+ show: true,
+ name: '建设用地(亩)',
+ value: '716'
+ },
+ {
+ show: true,
+ name: '未利用地(亩)',
+ value: '716'
+ },
+ {
+ show: true,
+ name: '农用地(宗)',
+ value: '716'
+ },
+ {
+ show: true,
+ name: '建设用地(宗)',
+ value: '716'
+ },
+ {
+ show: true,
+ name: '未利用地(宗)',
+ value: '103'
+ }
+ ]
+]
\ No newline at end of file
diff --git a/src/views/sanqing/comps/buttom/1/index.html b/src/views/sanqing/comps/buttom/1/index.html
new file mode 100644
index 0000000..c78c677
--- /dev/null
+++ b/src/views/sanqing/comps/buttom/1/index.html
@@ -0,0 +1,64 @@
+
+
+
+
+
集体资源资产统计
+
+
数量
+
{{data.jtzyzc.num}}个
+
+
+
用地面积
+
{{data.jtzyzc.ydmj}}亩
+
+
+
建筑面积
+
{{data.jtzyzc.jzmj}}㎡
+
+
+
+
+
农业设施设备统计
+
+
数量
+
{{data.nysssb.num}}个
+
+
+
用地面积
+
{{data.nysssb.ydmj}}亩
+
+
+
建筑面积
+
{{data.nysssb.jzmj}}㎡
+
+
+
+
+
农户资产统计
+
+
数量
+
{{data.nhzc.num}}个
+
+
+
用地面积
+
{{data.nhzc.ydmj}}亩
+
+
+
建筑面积
+
{{data.nhzc.jzmj}}㎡
+
+
+
+
+
+
+
{{data.xy23}}万元
+
2023年盘活效益
+
+
+
+
{{data.xy24}}万元
+
2024年盘活效益
+
+
+
diff --git a/src/views/sanqing/comps/buttom/1/index.js b/src/views/sanqing/comps/buttom/1/index.js
new file mode 100644
index 0000000..66dadbc
--- /dev/null
+++ b/src/views/sanqing/comps/buttom/1/index.js
@@ -0,0 +1,24 @@
+import BlockValue from '@/components/value/index.vue';
+export default {
+ components: {
+ BlockValue
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ };
+ },
+ created () {
+ },
+ mounted () {
+ },
+ methods: {
+ }
+};
diff --git a/src/views/sanqing/comps/buttom/1/index.scss b/src/views/sanqing/comps/buttom/1/index.scss
new file mode 100644
index 0000000..7239e4b
--- /dev/null
+++ b/src/views/sanqing/comps/buttom/1/index.scss
@@ -0,0 +1,89 @@
+.buttom2 {
+ width: 960px;
+ display: flex;
+ justify-content: space-between;
+ .flex_main{
+ background: url("bg.png") no-repeat 10px center;
+ background-size: calc(100% - 10px) 100%;
+ width: 220px;
+ height: 150px;
+ padding: 15px 15px 15px 25px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ margin-bottom: 15px;
+ position: relative;
+ .flex_block{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ p:nth-child(1){
+ color: #e6f1ff;
+ }
+ }
+ .tt{
+ text-shadow: 2px 2px 4px #000000;
+ font-size: 18px;
+ font-weight: bold;
+ }
+ i{
+ display: block;
+ height: 100%;
+ width: 5px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+ &:nth-child(1){
+ i{
+ background-color: #00d6f8;
+ }
+ .flex_block{
+ p:nth-child(2){
+ color: #00d6f8;
+ }
+ }
+ }
+ &:nth-child(2){
+ i{
+ background-color: #f7cc3a;
+ }
+ .flex_block{
+ p:nth-child(2){
+ color: #f7cc3a;
+ }
+ }
+ }
+ &:nth-child(3){
+ i{
+ background-color: #04e26f;
+ }
+ .flex_block{
+ p:nth-child(2){
+ color: #04e26f;
+ }
+ }
+ }
+ }
+
+ .flex_main_right{
+ background: url("bg2.png") no-repeat center;
+ background-size: 100% 100%;
+ width: 220px;
+ height: 100px;
+ margin-bottom: 15px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-evenly;
+ p:nth-child(1){
+ color: #01d5f8;
+ font-size: 26px;
+ font-weight: bold;
+ span{
+ font-size: 14px;
+ }
+ }
+ }
+
+}
diff --git a/src/views/sanqing/comps/buttom/1/index.vue b/src/views/sanqing/comps/buttom/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/buttom/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/bottom/1/index.html b/src/views/sanqing/comps/left/bottom/1/index.html
new file mode 100644
index 0000000..2691f24
--- /dev/null
+++ b/src/views/sanqing/comps/left/bottom/1/index.html
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/bottom/1/index.js b/src/views/sanqing/comps/left/bottom/1/index.js
new file mode 100644
index 0000000..828bb7a
--- /dev/null
+++ b/src/views/sanqing/comps/left/bottom/1/index.js
@@ -0,0 +1,34 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Pie from '@/components/charts/pie/index.vue';
+
+export default {
+ components: {
+ Pie,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ pannelTabData: [],
+ tabIndex: '1'
+ };
+ },
+ created () {
+ },
+ mounted () {
+
+ },
+ methods: {
+ tabChange (info) {
+ //console.log(info);
+ this.tabIndex = info.id
+ }
+ }
+};
diff --git a/src/views/sanqing/comps/left/bottom/1/index.scss b/src/views/sanqing/comps/left/bottom/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/left/bottom/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/left/bottom/1/index.vue b/src/views/sanqing/comps/left/bottom/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/left/bottom/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/middle/1/index.html b/src/views/sanqing/comps/left/middle/1/index.html
new file mode 100644
index 0000000..b92bd2b
--- /dev/null
+++ b/src/views/sanqing/comps/left/middle/1/index.html
@@ -0,0 +1,12 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/middle/1/index.js b/src/views/sanqing/comps/left/middle/1/index.js
new file mode 100644
index 0000000..3eb9d98
--- /dev/null
+++ b/src/views/sanqing/comps/left/middle/1/index.js
@@ -0,0 +1,32 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Bar from '@/components/charts/bar/index.vue';
+
+export default {
+ components: {
+ Bar,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ nysssbDeptList:[]
+ };
+ },
+ created () {
+ },
+ mounted () {
+
+ },
+ methods: {
+ tabChange (info) {
+ this.tabIndex = info.id
+ }
+ }
+};
diff --git a/src/views/sanqing/comps/left/middle/1/index.scss b/src/views/sanqing/comps/left/middle/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/left/middle/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/left/middle/1/index.vue b/src/views/sanqing/comps/left/middle/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/left/middle/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/top/1/index.html b/src/views/sanqing/comps/left/top/1/index.html
new file mode 100644
index 0000000..ae76dc1
--- /dev/null
+++ b/src/views/sanqing/comps/left/top/1/index.html
@@ -0,0 +1,12 @@
+
+
+
diff --git a/src/views/sanqing/comps/left/top/1/index.js b/src/views/sanqing/comps/left/top/1/index.js
new file mode 100644
index 0000000..a3d0bf3
--- /dev/null
+++ b/src/views/sanqing/comps/left/top/1/index.js
@@ -0,0 +1,29 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Bar from '@/components/charts/bar/index.vue';
+
+export default {
+ components: {
+ Bar,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+
+ };
+ },
+ created () {
+ },
+ mounted () {
+
+ },
+ methods: {
+ }
+};
diff --git a/src/views/sanqing/comps/left/top/1/index.scss b/src/views/sanqing/comps/left/top/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/left/top/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/left/top/1/index.vue b/src/views/sanqing/comps/left/top/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/left/top/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/bottom/1/index.html b/src/views/sanqing/comps/right/bottom/1/index.html
new file mode 100644
index 0000000..85f46d9
--- /dev/null
+++ b/src/views/sanqing/comps/right/bottom/1/index.html
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/bottom/1/index.js b/src/views/sanqing/comps/right/bottom/1/index.js
new file mode 100644
index 0000000..b400c4e
--- /dev/null
+++ b/src/views/sanqing/comps/right/bottom/1/index.js
@@ -0,0 +1,60 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Bar from '@/components/charts/bar-dimensional/index.vue';
+
+export default {
+ components: {
+ Bar,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ chartData: [
+ {
+ name: 'A镇',
+ value: '100'
+ },
+ {
+ name: 'A镇',
+ value: '190'
+ },
+ {
+ name: 'A镇',
+ value: '180'
+ },
+ {
+ name: 'A镇',
+ value: '170'
+ },
+ {
+ name: 'A镇',
+ value: '160'
+ },
+ {
+ name: 'A镇',
+ value: '150'
+ },
+ {
+ name: 'A镇',
+ value: '240'
+ }
+ ]
+ };
+ },
+ created () {
+ },
+ mounted () {
+ },
+ methods: {
+ tabChange (info) {
+ this.tabIndex = info.id
+ }
+ }
+};
diff --git a/src/views/sanqing/comps/right/bottom/1/index.scss b/src/views/sanqing/comps/right/bottom/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/right/bottom/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/right/bottom/1/index.vue b/src/views/sanqing/comps/right/bottom/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/right/bottom/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/middle/1/index.html b/src/views/sanqing/comps/right/middle/1/index.html
new file mode 100644
index 0000000..f19ed55
--- /dev/null
+++ b/src/views/sanqing/comps/right/middle/1/index.html
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/middle/1/index.js b/src/views/sanqing/comps/right/middle/1/index.js
new file mode 100644
index 0000000..1e2c228
--- /dev/null
+++ b/src/views/sanqing/comps/right/middle/1/index.js
@@ -0,0 +1,60 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Bar from '@/components/charts/bar/index.vue';
+
+export default {
+ components: {
+ Bar,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ chartData: [
+ {
+ name: 'A镇',
+ value: '100'
+ },
+ {
+ name: 'A镇',
+ value: '190'
+ },
+ {
+ name: 'A镇',
+ value: '180'
+ },
+ {
+ name: 'A镇',
+ value: '170'
+ },
+ {
+ name: 'A镇',
+ value: '160'
+ },
+ {
+ name: 'A镇',
+ value: '150'
+ },
+ {
+ name: 'A镇',
+ value: '240'
+ }
+ ]
+ };
+ },
+ created () {
+ },
+ mounted () {
+ },
+ methods: {
+ tabChange (info) {
+ this.tabIndex = info.id
+ }
+ }
+};
diff --git a/src/views/sanqing/comps/right/middle/1/index.scss b/src/views/sanqing/comps/right/middle/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/right/middle/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/right/middle/1/index.vue b/src/views/sanqing/comps/right/middle/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/right/middle/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/top/1/index.html b/src/views/sanqing/comps/right/top/1/index.html
new file mode 100644
index 0000000..bb0edd1
--- /dev/null
+++ b/src/views/sanqing/comps/right/top/1/index.html
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/views/sanqing/comps/right/top/1/index.js b/src/views/sanqing/comps/right/top/1/index.js
new file mode 100644
index 0000000..569f1d7
--- /dev/null
+++ b/src/views/sanqing/comps/right/top/1/index.js
@@ -0,0 +1,57 @@
+import Pannel from '@/components/pannelNew/index.vue';
+import Bar from '@/components/charts/bar/index.vue';
+
+export default {
+ components: {
+ Bar,
+ Pannel
+ },
+ props: {
+ data: {
+ type: Array,
+ default: function () {
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ chartData: [
+ {
+ name: 'A镇',
+ value: '100'
+ },
+ {
+ name: 'A镇',
+ value: '190'
+ },
+ {
+ name: 'A镇',
+ value: '180'
+ },
+ {
+ name: 'A镇',
+ value: '170'
+ },
+ {
+ name: 'A镇',
+ value: '160'
+ },
+ {
+ name: 'A镇',
+ value: '150'
+ },
+ {
+ name: 'A镇',
+ value: '240'
+ }
+ ]
+ };
+ },
+ created () {
+ },
+ mounted () {
+ },
+ methods: {
+ }
+};
diff --git a/src/views/sanqing/comps/right/top/1/index.scss b/src/views/sanqing/comps/right/top/1/index.scss
new file mode 100644
index 0000000..9027da6
--- /dev/null
+++ b/src/views/sanqing/comps/right/top/1/index.scss
@@ -0,0 +1,17 @@
+.full {
+ display: flex;
+ flex-direction: column;
+
+ .top {
+ height: 50px !important;
+ width: 100%;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: flex-end;
+ }
+
+ .buttom {
+ flex: 1;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/comps/right/top/1/index.vue b/src/views/sanqing/comps/right/top/1/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/comps/right/top/1/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/data.js b/src/views/sanqing/data.js
new file mode 100644
index 0000000..37c8abf
--- /dev/null
+++ b/src/views/sanqing/data.js
@@ -0,0 +1,28 @@
+export const comps = {
+ '1': {
+ left: [{
+ name: 'Left11',
+ data: []
+ },{
+ name: 'Left21',
+ data: []
+ },{
+ name: 'Left31',
+ data: []
+ }],
+ right: [{
+ name: 'Right11',
+ data: []
+ },{
+ name: 'Right21',
+ data: []
+ },{
+ name: 'Right31',
+ data: []
+ }],
+ buttom: [{
+ name: 'Bottom1',
+ data: {}
+ }]
+ }
+}
diff --git a/src/views/sanqing/icon/yellow.png b/src/views/sanqing/icon/yellow.png
new file mode 100644
index 0000000..f5f29b0
Binary files /dev/null and b/src/views/sanqing/icon/yellow.png differ
diff --git a/src/views/sanqing/index.html b/src/views/sanqing/index.html
new file mode 100644
index 0000000..90c87a3
--- /dev/null
+++ b/src/views/sanqing/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/sanqing/index.js b/src/views/sanqing/index.js
new file mode 100644
index 0000000..3eebf70
--- /dev/null
+++ b/src/views/sanqing/index.js
@@ -0,0 +1,112 @@
+import Header from '@/components/headerNew/index.vue';
+import Footer from '@/components/footer/index.vue';
+import Left from '@/components/left/index.vue';
+import Right from '@/components/right/index.vue';
+import Tabs from '@/components/tabs/index.vue';
+
+import Left11 from './comps/left/top/1/index.vue';
+import Left21 from './comps/left/middle/1/index.vue';
+import Left31 from './comps/left/bottom/1/index.vue';
+import Right11 from './comps/right/top/1/index.vue';
+import Right21 from './comps/right/middle/1/index.vue';
+import Right31 from './comps/right/bottom/1/index.vue';
+import Bottom1 from './comps/buttom/1/index.vue';
+import MainGis from './main-gis/index.vue';
+
+import { comps } from './data.js'
+
+import { getStatistic } from "@/api/index";
+import { getInfo } from "@/api/login";
+
+export default {
+ components: {
+ MainGis,
+ Header,
+ Footer,
+ Left,
+ Right,
+ Tabs,
+ Left11,
+ Left21,
+ Left31,
+ Right11,
+ Right21,
+ Right31,
+ Bottom1
+ },
+ data () {
+ return {
+ comps,
+ tab: '1',
+ allData: {}
+ };
+ },
+ computed: {
+ currentComp: function () {
+ return this.comps[this.tab]
+ }
+ },
+ created () {
+ getInfo().then(res => {
+ getStatistic({ deptId: res.user.deptId }).then((response) => {
+ response.data.jtzyzcDeptList.map(rr => {
+ this.currentComp.left[0].data.push({
+ name: rr.deptName,
+ value: rr.ydmj
+ })
+ })
+ response.data.nysssbDeptList.map(rr => {
+ this.currentComp.left[1].data.push({
+ name: rr.deptName,
+ value: rr.ydmj
+ })
+ })
+ response.data.nhzcDeptList.map(rr => {
+ this.currentComp.left[2].data.push({
+ name: rr.deptName,
+ value: rr.ydmj
+ })
+ })
+
+ response.data.jtzyzcTypeList.map(rr => {
+ this.currentComp.right[0].data.push({
+ name: rr.threeDetailType,
+ value: rr.ydmj
+ })
+ })
+ response.data.nysssbTypeList.map(rr => {
+ this.currentComp.right[1].data.push({
+ name: rr.threeDetailType,
+ value: rr.ydmj
+ })
+ })
+ response.data.nhzcTypeList.map(rr => {
+ this.currentComp.right[2].data.push({
+ name: rr.threeDetailType,
+ value: rr.ydmj
+ })
+ })
+
+ this.currentComp.buttom[0].data = {
+ jtzyzc: response.data.jtzyzc,//集体资源资产
+ nysssb: response.data.nysssb,//农业设施设备
+ nhzc: response.data.nhzc,
+ xy23: response.data.xy23,
+ xy24: response.data.xy24
+ }
+
+
+ console.log(this.currentComp)
+ this.allData = response.data;
+ });
+ })
+ },
+ mounted () {
+
+ },
+ methods: {
+ tabChange (info) {
+ this.tab = info.id;
+ }
+ }
+};
diff --git a/src/views/sanqing/index.scss b/src/views/sanqing/index.scss
new file mode 100644
index 0000000..5eb23a3
--- /dev/null
+++ b/src/views/sanqing/index.scss
@@ -0,0 +1,11 @@
+.map {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+.buttom_side {
+ top: 100px;
+ bottom: auto;
+}
diff --git a/src/views/sanqing/index.vue b/src/views/sanqing/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/src/views/sanqing/main-gis/close.png b/src/views/sanqing/main-gis/close.png
new file mode 100644
index 0000000..0a8337d
Binary files /dev/null and b/src/views/sanqing/main-gis/close.png differ
diff --git a/src/views/sanqing/main-gis/icon/blue.png b/src/views/sanqing/main-gis/icon/blue.png
new file mode 100644
index 0000000..1771c93
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/blue.png differ
diff --git a/src/views/sanqing/main-gis/icon/cyan.png b/src/views/sanqing/main-gis/icon/cyan.png
new file mode 100644
index 0000000..6c085d8
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/cyan.png differ
diff --git a/src/views/sanqing/main-gis/icon/gc_icon.png b/src/views/sanqing/main-gis/icon/gc_icon.png
new file mode 100644
index 0000000..9c5fc74
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/gc_icon.png differ
diff --git a/src/views/sanqing/main-gis/icon/green.png b/src/views/sanqing/main-gis/icon/green.png
new file mode 100644
index 0000000..4198a27
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/green.png differ
diff --git a/src/views/sanqing/main-gis/icon/ld_icon.png b/src/views/sanqing/main-gis/icon/ld_icon.png
new file mode 100644
index 0000000..355b5f2
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/ld_icon.png differ
diff --git a/src/views/sanqing/main-gis/icon/ljd_icon.png b/src/views/sanqing/main-gis/icon/ljd_icon.png
new file mode 100644
index 0000000..01be038
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/ljd_icon.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_1.png b/src/views/sanqing/main-gis/icon/map_icon_1.png
new file mode 100644
index 0000000..2e32425
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_1.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_2.png b/src/views/sanqing/main-gis/icon/map_icon_2.png
new file mode 100644
index 0000000..15446ee
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_2.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_3.png b/src/views/sanqing/main-gis/icon/map_icon_3.png
new file mode 100644
index 0000000..2f64349
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_3.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_4.png b/src/views/sanqing/main-gis/icon/map_icon_4.png
new file mode 100644
index 0000000..4c1da52
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_4.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_5.png b/src/views/sanqing/main-gis/icon/map_icon_5.png
new file mode 100644
index 0000000..f7a877d
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_5.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_6.png b/src/views/sanqing/main-gis/icon/map_icon_6.png
new file mode 100644
index 0000000..961e13e
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_6.png differ
diff --git a/src/views/sanqing/main-gis/icon/map_icon_7.png b/src/views/sanqing/main-gis/icon/map_icon_7.png
new file mode 100644
index 0000000..1617fdd
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/map_icon_7.png differ
diff --git a/src/views/sanqing/main-gis/icon/pink.png b/src/views/sanqing/main-gis/icon/pink.png
new file mode 100644
index 0000000..34e09da
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/pink.png differ
diff --git a/src/views/sanqing/main-gis/icon/red.png b/src/views/sanqing/main-gis/icon/red.png
new file mode 100644
index 0000000..dd24cb3
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/red.png differ
diff --git a/src/views/sanqing/main-gis/icon/sxt_icon.png b/src/views/sanqing/main-gis/icon/sxt_icon.png
new file mode 100644
index 0000000..ff4b093
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/sxt_icon.png differ
diff --git a/src/views/sanqing/main-gis/icon/wsz_icon.png b/src/views/sanqing/main-gis/icon/wsz_icon.png
new file mode 100644
index 0000000..1b48993
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/wsz_icon.png differ
diff --git a/src/views/sanqing/main-gis/icon/yellow copy.png b/src/views/sanqing/main-gis/icon/yellow copy.png
new file mode 100644
index 0000000..f5f29b0
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/yellow copy.png differ
diff --git a/src/views/sanqing/main-gis/icon/yellow.png b/src/views/sanqing/main-gis/icon/yellow.png
new file mode 100644
index 0000000..f5f29b0
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/yellow.png differ
diff --git a/src/views/sanqing/main-gis/icon/zc_icon copy.png b/src/views/sanqing/main-gis/icon/zc_icon copy.png
new file mode 100644
index 0000000..ebc48c9
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/zc_icon copy.png differ
diff --git a/src/views/sanqing/main-gis/icon/zc_icon.png b/src/views/sanqing/main-gis/icon/zc_icon.png
new file mode 100644
index 0000000..ebc48c9
Binary files /dev/null and b/src/views/sanqing/main-gis/icon/zc_icon.png differ
diff --git a/src/views/sanqing/main-gis/index.html b/src/views/sanqing/main-gis/index.html
new file mode 100644
index 0000000..0ded639
--- /dev/null
+++ b/src/views/sanqing/main-gis/index.html
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{resourceDetail.name}}详情
+
+
+
+
+
+
资源编码
+
{{resourceDetail.code}}
+
+
+
资源名称
+
{{resourceDetail.name}}
+
+
+
资源类型
+
{{resourceDetail.resourceSort}}
+
+
+
总面积(亩)
+
{{resourceDetail.totalArea}}
+
+
+
资产状态
+
{{resourceDetail.status}}
+
+
+
使用情况
+
{{resourceDetail.useType}}
+
+
+
坐落位置
+
{{resourceDetail.location}}
+
+
+
东至
+
{{resourceDetail.east}}
+
+
+
西至
+
{{resourceDetail.west}}
+
+
+
南至
+
{{resourceDetail.south}}
+
+
+
北至
+
{{resourceDetail.north}}
+
+
+
备注
+
{{resourceDetail.remark}}
+
+
+
附件
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.label }}
+ ({{ data.children.length }})
+
+
+
+
+
diff --git a/src/views/sanqing/main-gis/index.js b/src/views/sanqing/main-gis/index.js
new file mode 100644
index 0000000..a839162
--- /dev/null
+++ b/src/views/sanqing/main-gis/index.js
@@ -0,0 +1,604 @@
+
+import GisUtils from '@/utils/gis.js';
+import {
+ fromLonLat
+} from 'ol/proj'
+import { getPermanentListByDeptId, listPermanent } from "@/api/asset/permanent.js";
+import { getInfo } from "@/api/login";
+import { getResourceListByDeptId, listResource } from "@/api/asset/resource.js";
+import Legend from '@/components/legend/index.vue';
+import { attachmentList } from "@/api/common/uploadAttachment.js";
+import { treeselect, getDept, listDeptExcludeChild } from "@/api/system/dept";
+import { getConfigKey } from "@/api/system/config";
+import { treeselectByDeptId } from "@/api/system/dept";
+let gis = null;
+export default {
+ components: {
+ Legend
+ },
+ data () {
+ return {
+ yellowIcon: require('./icon/yellow.png'),
+ //三务公开请求参数
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ title: null,
+ openType: '1',
+ detailedCategoriesType: null,
+ villageType: null,
+ openItems: null,
+ meetingOpenType: null,
+ deptId: null,
+ isWechat: null,
+ status: null,
+ translate_dict: 1,
+ },
+
+ //零工公开请求参数
+ tempWorkerOpenQueryParams: {
+ // 分页
+ pageNum: 1,
+ pageSize: 10,
+ // 查询排序
+ //orderByColumn: "id",
+ //isAsc: "desc",
+ bookId: null,
+ deptId: null,
+ deptName: null,
+ openNy: null,
+ openYear: null,
+ openName: null,
+ openFile: null,
+ openPic: null,
+ remark: null,
+ translate_dict: 1,
+ },
+
+ //重大事项公开请求参数
+ majorEventOpenQueryParams: {
+ // 分页
+ pageNum: 1,
+ pageSize: 10,
+ // 查询排序
+ //orderByColumn: "id",
+ //isAsc: "desc",
+ bookId: null,
+ deptId: null,
+ deptName: null,
+ openNy: null,
+ openYear: null,
+ openDate: null,
+ openName: null,
+ openFile: null,
+ openPic: null,
+ content: null,
+ remark: null,
+ translate_dict: 1,
+ },
+
+ //补贴资金管理请求参数
+ subsidyFundsQueryParams: {
+ // 分页
+ pageNum: 1,
+ pageSize: 10,
+ // 查询排序
+ orderByColumn: "id",
+ isAsc: "desc",
+ year: null,
+ areaName: null,
+ name: null,
+ idCard: null,
+ itemName: null,
+ releaseDate: null,
+ translate_dict: 1,
+ },
+
+ //固定资产请求参数
+ permanentQueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ code: null,
+ name: null,
+ assetType: null,
+ operationType: null,
+ addType: null,
+ useType: null,
+ assetStatus: '1',
+ translate_dict: 1,
+ },
+
+ //资源资产请求参数
+ resourceListQueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ bookId: null,
+ deptId: null,
+ code: null,
+ name: null,
+ resourceType: null,
+ /*farmingResourceType: null,
+ buildResourceType: null,
+ unusedResourceType: null,*/
+ resourceSort: null,
+ totalArea: null,
+ location: null,
+ east: null,
+ west: null,
+ south: null,
+ north: null,
+ sumArea: null,
+ groupArea: null,
+ groupValue: null,
+ rentArea: null,
+ rentValue: null,
+ rentLessee: null,
+ rentStartTime: null,
+ rentEndTime: null,
+ otherArea: null,
+ otherValue: null,
+ farmerArea: null,
+ circulationArea: null,
+ circulationValue: null,
+ investmentArea: null,
+ investmentValue: null,
+ investmentLessee: null,
+ investmentStartTime: null,
+ investmentEndTime: null,
+ status: null,
+ translate_dict: 1,
+ },
+ //合同信息请求参数
+ contractionByPermanentQueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ bookId: null,
+ deptId: null,
+ code: null,
+ name: null,
+ assetType: null,
+ firstParty: null,
+ secondParty: null,
+ collectionPay: null,
+ contractionSource: null,
+ totalAmount: null,
+ receivedAmount: null,
+ settledAmount: null,
+ buildingTime: null,
+ startTime: null,
+ endTime: null,
+ num: null,
+ unit: null,
+ price: null,
+ contractionStatus: null,
+ translate_dict: 1,
+ },
+ addrText: [100,],
+ deptTreeProps: {
+ checkStrictly: true,
+ },
+ addrOptions: [],
+ //资产信息详情弹窗
+ showResourceDetail: false,
+ mapGeoServerUrl: "", // geoserver地址
+ mapBorder: "", // 地图边界
+ deptLayer: "", // 坐标点图层
+ countyBorderLayerName: "", // 区县边界图层名称
+ townBorderLayerName: "", // 乡镇边界图层名称
+ villageBorderLayerName: "", // 村边界图层名称
+ groupBorderLayerName: "", // 组边界图层名称
+ LegendData: [
+ {
+ iconStyle: {
+ background: 'rgba(38,252,128,0.45)',
+ borderColor: '#26FC80',
+ border: '2px solid #26FC80'
+ },
+ name: '自用'
+ },
+ {
+ iconStyle: {
+ background: 'rgba(232,246,0,0.45)',
+ borderColor: '#E8F600',
+ border: '2px solid #E8F600'
+ },
+ name: '闲置'
+ },
+ {
+ iconStyle: {
+ background: 'rgba(16,252,252,0.45)',
+ borderColor: '#10FCFC',
+ border: '2px solid #10FCFC'
+ },
+ name: '出租'
+ },
+ {
+ iconStyle: {
+ background: 'rgba(198,0,255,0.45)',
+ borderColor: '#C600FF',
+ border: '2px solid #C600FF'
+ },
+ name: '其他'
+ }
+ ],
+ };
+ },
+ computed: {
+ },
+ created () {
+ this.getGeoServerUrl();
+ },
+ mounted () {
+ getInfo().then(res => {
+ treeselectByDeptId({ deptId: res.user.deptId }).then((resp) => {
+ this.addrOptions = resp.data;
+ this.headerTitle = res.user.deptName + '阳光村务一张图';
+ listDeptExcludeChild(res.user.loginDeptId).then((resp) => {
+ let deptOptions = [res.user.loginDeptId];
+ resp.data.map(resm => {
+ if (res.user.parentDeptName == resm.deptName) {
+ deptOptions.unshift(resm.deptId)
+ deptOptions.unshift(resm.parentId)
+ }
+ })
+ this.addrText = deptOptions;
+ });
+ this.queryParams.deptId = res.user.loginDeptId;
+ this.tempWorkerOpenQueryParams.deptId = res.user.loginDeptId;
+ this.majorEventOpenQueryParams.deptId = res.user.loginDeptId;
+ this.subsidyFundsQueryParams.deptId = res.user.loginDeptId;
+ this.permanentQueryParams.deptId = res.user.loginDeptId;
+ this.resourceListQueryParams.deptId = res.user.loginDeptId;
+ this.contractionByPermanentQueryParams.deptId = res.user.loginDeptId;
+ //列表请求
+ this.getAllList();
+ // 加载地图
+ this.initMap(res.user.loginDeptId);
+
+ // 获取村边界的图层名称
+ this.getVillageBorderLayerName();
+ });
+
+ })
+ // treeselect().then((resp) => {
+ // this.addrOptions = resp.data
+ // getInfo().then(res => {
+ // this.initMap(res.user.loginDeptId);
+ // // 加载地图
+ // })
+ // });
+
+
+ },
+ methods: {
+ // 获取村边界的图层名称
+ getVillageBorderLayerName () {
+ getConfigKey("geoserver.layer.villageBorder").then(response => {
+ this.villageBorderLayerName = response.msg;
+ });
+ },
+ // 添加区县边界
+ addCountyBorder (deptIds) {
+ gis.addImageLayer(this.mapGeoServerUrl, this.countyBorderLayerName, deptIds)
+ },
+ // 添加乡镇边界
+ addTownBorder (deptIds) {
+ gis.addImageLayer(this.mapGeoServerUrl, this.townBorderLayerName, deptIds)
+ },
+ // // 添加村边界
+ // addVillageBorder (deptIds) {
+ // gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds)
+ // },
+ // // 获取资源列表
+ // getResourceList (deptId) {
+ // getResourceListByDeptId(deptId).then(response => {
+ // if (response.data && response.data.length > 0) {
+ // this.addResourceLayer(response.data);
+ // }
+ // });
+ // },
+ // 获取geoserver的地址
+ getGeoServerUrl () {
+ // 获取geoserver的地址
+ getConfigKey("system.geoServer.url").then(response => {
+ this.mapGeoServerUrl = response.msg;
+ });
+ // 获取区县边界图层名称
+ getConfigKey("geoserver.layer.countyBorder").then(response => {
+ this.countyBorderLayerName = response.msg;
+ });
+ // 获取乡镇边界的图层名称
+ getConfigKey("geoserver.layer.townBorder").then(response => {
+ this.townBorderLayerName = response.msg;
+ });
+ // 获取村边界的图层名称
+ getConfigKey("geoserver.layer.villageBorder").then(response => {
+ this.villageBorderLayerName = response.msg;
+ });
+ // 获取组边界的图层名称
+ getConfigKey("geoserver.layer.groupBorder").then(response => {
+ this.groupBorderLayerName = response.msg;
+ });
+ },
+ selectAddress (value) {
+ const deptId = value[value.length - 1];
+ this.queryParams.deptId = deptId;
+ this.tempWorkerOpenQueryParams.deptId = deptId;
+ this.majorEventOpenQueryParams.deptId = deptId;
+ this.subsidyFundsQueryParams.deptId = deptId;
+ this.permanentQueryParams.deptId = deptId;
+ this.resourceListQueryParams.deptId = deptId;
+ this.contractionByPermanentQueryParams.deptId = deptId;
+ this.infoTotal = undefined;
+ this.resourceTotal = undefined;
+ this.permanentTotal = undefined;
+ this.subsidyFundsTotal = undefined;
+ this.majorEventOpenTotal = undefined;
+ this.tempWorkerOpenTotal = undefined;
+ this.affairsTotal = undefined;
+ this.affairsList = [];
+ this.tempWorkerOpenList = [];
+ this.majorEventOpenList = [];
+ this.subsidyFundsList = [];
+ this.permanentList = [];
+ this.resourceList = [];
+ this.infoList = [];
+ this.getAllList();
+
+ gis.getMapContainer().removeLayer(this.villageBorder);
+ this.villageBorder = '';
+ // 添加村边界
+ this.addVillageBorder(deptId);
+ gis.getMapContainer().removeLayer(this.permanentLayer);
+ this.permanentLayer = '';
+ // 获取资产列表
+ this.getPermanentList(deptId);
+ gis.getMapContainer().removeLayer(this.resourceLayer);
+ this.resourceLayer = '';
+ // 获取资源列表
+ this.getResourceList(deptId);
+ let node = this.$refs["cascader"].panel.getNodeByValue(value);
+ const dept = node.data;
+ const deptData = {
+ deptId: dept.id,
+ deptName: dept.label,
+ lat: dept.lat,
+ lng: dept.lng,
+ deptLevel: dept.deptLevel,
+ orgCode: dept.orgCode
+ };
+ let deptList = [];
+ deptList.push(deptData);
+ gis.getMapContainer().removeLayer(this.deptLayer);
+ this.deptLayer = '';
+ // 添加坐标点图层
+ this.addDeptLayer(deptList, 'yellow.png');
+ gis.getMapContainer().getView().animate({
+ // 只设置需要的属性即可
+ center: fromLonLat([dept.lng, dept.lat]), // 中心点
+ duration: 500, // 缩放持续时间,默认不需要设置
+ });
+ },
+ // 添加村边界
+ addVillageBorder (deptIds) {
+ gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds)
+ },
+ // 加载地图
+ initMap (deptId) {
+ gis = new GisUtils('map2')
+ gis.addTianDiTuLayer()
+ gis.addAnnotationLayer()
+ // // 获取资源列表
+ this.getResourceList(deptId);
+ let dept2 = this.addrOptions[0];
+ //console.log(this.addrOptions, 'this.addrOptions');
+ if (dept2.deptLevel === '5') {
+ // 登录身份为市级领导
+ this.userRole = 'cityLeader';
+ this.cityId = dept.id;
+ this.currentDeptLevel = '5';
+ // 添加区县边界
+ this.addCountyBorder(dept.children.map(item => item.id));
+ } else if (dept2.deptLevel === '4') {
+ // 登录身份为县级领导
+ this.userRole = 'countyLeader';
+ this.countyId = dept2.id;
+ this.currentDeptLevel = '4';
+ // 添加乡镇边界
+ this.addTownBorder(dept2.children.map(item => item.id));
+ gis.getView().setZoom(11);
+ } else if (dept2.deptLevel === '3') {
+ // 登录身份为镇级领导
+ this.userRole = 'townLeader';
+ this.townId = dept2.id;
+ this.currentDeptLevel = '3';
+ // 添加村边界
+ this.addVillageBorder(dept2.children.map(item => item.id));
+ gis.getView().setZoom(13);
+ }
+ // 添加坐标点图层
+ if (dept2.children) {
+ this.addDeptLayer(dept2.children);
+ }
+ gis.getMapContainer().on("click", (evt) => {
+ let feature = gis.getMapContainer().forEachFeatureAtPixel(
+ evt.pixel,
+ (feature) => feature
+ );
+ if (feature) {
+ // 镇级:加载村级坐标点
+ if (feature.get('deptLevel') === '3') {
+ gis.getMapContainer().getView().animate({
+ center: fromLonLat([feature.get('lng'), feature.get('lat')]), // 中心点
+ zoom: 12, // 缩放级别
+ rotation: undefined, // 缩放完成view视图旋转弧度
+ duration: 1000, // 缩放持续时间,默认不需要设置
+ });
+ } else {
+ this.listDialogHidden('detail');
+ this.openResourceDialog(feature.values_.detail);
+ }
+ }
+ });
+
+ // 缩小地图,重新加载页面
+ gis.getMapContainer().on("moveend", (evt) => {
+ const zoom = gis.getMapContainer().getView().getZoom();
+ if (this.villagePointLayer && zoom < 10.5) {
+ gis.getMapContainer().removeLayer(this.villagePointLayer);
+ this.villagePointLayer = "";
+ }
+ });
+ },
+ listDialogHidden (type) {
+ if (type == 'detail') {
+ //合同信息详情弹窗
+ this.showInfoDetail = false;
+ //资源信息详情弹窗
+ this.showResourceDetail = false;
+ //资产信息详情弹窗
+ this.showPermanentDetail = false;
+ //农业补贴详情弹窗
+ this.showSubsidyFundsDetail = false;
+ //重大事项详情弹窗
+ this.showMajorEventDetail = false;
+ //零工公开详情弹窗
+ this.showTempWorkerDetail = false;
+ //三务公开详情弹窗
+ this.showAffairsDetail = false;
+ } else {
+ //三务公开列表弹窗
+ this.showAffairs = false;
+ //零工公开列表弹窗
+ this.showTempWorker = false;
+ //重大事项列表弹窗
+ this.showMajorEvent = false;
+ //农业补贴列表弹窗
+ this.showSubsidyFunds = false;
+ //资产信息列表弹窗
+ this.showPermanent = false;
+ //资源信息列表弹窗
+ this.showResource = false;
+ //合同信息列表弹窗
+ this.showInfo = false;
+ //合同信息详情弹窗
+ this.showInfoDetail = false;
+ //资源信息详情弹窗
+ this.showResourceDetail = false;
+ //资产信息详情弹窗
+ this.showPermanentDetail = false;
+ //农业补贴详情弹窗
+ this.showSubsidyFundsDetail = false;
+ //重大事项详情弹窗
+ this.showMajorEventDetail = false;
+ //零工公开详情弹窗
+ this.showTempWorkerDetail = false;
+ //三务公开详情弹窗
+ this.showAffairsDetail = false;
+ }
+
+ },
+ openResourceDialog (data) {
+ data.fileList = [];
+ let parmasData = {
+ tableId: data.id,
+ tableName: 't_asset_resource',
+ bizPath: 'asset',
+ };
+ attachmentList(parmasData).then((res) => {
+ if (res.code == 200) {
+ let UattachmentList = res.rows;
+ for (let i = 0; i < UattachmentList.length; i++) {
+ let fileName = UattachmentList[i].fileName;
+ let subIndex = fileName.lastIndexOf(".");
+ let ext = fileName.substring(subIndex + 1, fileName.length);
+ let urls = "";
+ let type = "";
+ if (ext == "xlsx" || ext == "xls") {
+ urls = require("@/assets/images/icon_excel.jpg");
+ type = 'excel';
+ } else if (ext == "doc" || ext == "docx") {
+ urls = require("@/assets/images/icon_word.jpg");
+ type = 'word';
+ } else if (ext == "pdf") {
+ urls = require("@/assets/images/icon_pdf.jpg");
+ type = 'pdf';
+ } else if (ext == "zip") {
+ urls = require("@/assets/images/icon_zip.jpg");
+ type = 'zip';
+ } else {
+ urls = '/api' + UattachmentList[i].fileUrl;
+ type = 'image';
+ }
+ data.fileList.push({
+ url: urls,
+ urlApi: '/api' + UattachmentList[i].fileUrl,
+ type: type
+ })
+ }
+ this.showResourceDetail = true;
+ this.resourceDetail = data;
+ }
+ });
+ },
+ // 创建矢量数据源
+ addDeptLayer (nextDeptSet, locationIcon) {
+ //console.log('nextDeptSet', nextDeptSet);
+ let features = [];
+ nextDeptSet.forEach(item => {
+ let fs = gis.getFeature(item, this.yellowIcon)
+ features.push(fs);
+ });
+ gis.getVectorLayerByFs(features)
+ gis.mapSetFit(features)
+ },
+ // 获取资源列表
+ getResourceList (deptId) {
+ getResourceListByDeptId(deptId).then(response => {
+ if (response.data && response.data.length > 0) {
+ this.addResourceLayer(response.data);
+ }
+ });
+ },
+ // 添加资源图层
+ addResourceLayer (resourceList) {
+ let features = [];
+ resourceList.forEach(item => {
+ if (item.theGeom != null && item.theGeom !== '') {
+ const { useType } = item
+ let color = this.LegendData[useType - 1 + '']
+ let fs = gis.getFeature3(item, color.iconStyle.background, color.iconStyle.borderColor)
+ features.push(fs);
+ }
+ });
+ gis.getVectorLayerByFs(features)
+ gis.mapSetFit(features)
+ },
+ // 获取资产列表
+ getPermanentList (deptId) {
+ getPermanentListByDeptId(deptId).then(response => {
+ if (response.data && response.data.length > 0) {
+ this.addPermanentLayer(response.data);
+ }
+ });
+ },
+ getAllList () {
+ //三务公开
+ // this.getList(null);
+ // //零工公开
+ // this.getTempWorkerOpenList();
+ // //重大事项公开
+ // this.getMajorEventOpenList();
+ // //补贴资金管理
+ // this.getSubsidyFundsList();
+ // //固定资产
+ // this.getPermanentListList();
+ // //资源资产
+ // this.getResourceListList();
+ // //合同信息
+ // this.getContractionByPermanentList();
+ // //资金情况
+ // this.getFundAndBankAmountByDeptIdArray();
+ },
+ }
+};
diff --git a/src/views/sanqing/main-gis/index.scss b/src/views/sanqing/main-gis/index.scss
new file mode 100644
index 0000000..7ef9f94
--- /dev/null
+++ b/src/views/sanqing/main-gis/index.scss
@@ -0,0 +1,244 @@
+.map {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+
+ .legend_pos {
+ z-index: 21 !important;
+ position: absolute;
+ top: 100px;
+ right: 480px;
+
+ .legend_full {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ .legend_item {
+ display: flex;
+ justify-content: center;
+ // border: 1px solid red;
+ align-items: center;
+
+ .icon {
+ width: 16px;
+ height: 16px;
+ border-radius: 2px;
+ margin-right: 10px;
+ }
+ }
+
+ }
+ }
+
+ .mask {
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ box-shadow: inset 350px 0px 400px 100px RGBA(3, 12, 27, 1), inset -350px 0 400px 100px RGBA(3, 12, 27, 1); // 左
+ /* 四周黑色 */
+ pointer-events: none;
+ /* 允许地图事件穿透 */
+ }
+}
+
+//选择地址
+.select_address {
+ height: 30px;
+ width: 300px;
+ position: absolute;
+ left: 480px;
+ top: 112px;
+ z-index: 302;
+
+ //
+ //
+ ::v-deep {
+ .el-input--suffix {
+ // background: url('../../../../assets/images/dataScreen/bigDataMonitoring2/stockCooperative/addText_bg.png') center center no-repeat !important;
+ background-size: 100% 100% !important;
+ height: 35px;
+ width: 280px;
+
+ .el-input__inner {
+ background: none !important;
+ border: 0 none !important;
+ color: #a7dbff;
+ font-size: 1.66vh;
+ text-align: center;
+ padding: 0;
+ padding-top: .9vh;
+ }
+
+ .el-input__icon {
+ display: none !important;
+ }
+ }
+ }
+}
+
+.gl_pop_cash {
+ background: rgba(10, 25, 47, 0.8);
+ position: absolute;
+ border: 1px solid #063a95;
+ border-left: 0.15vw solid #357dfa;
+ padding: 0 1vw;
+ z-index: 11;
+
+ .head_main {
+ height: 4.62vh;
+ padding-top: 0.55vh;
+ display: flex;
+ align-items: center;
+ position: relative;
+ justify-content: space-between;
+
+ .title {
+ color: #ffad00;
+ font-size: 1.66vh;
+ }
+
+ .close {
+ background: url('./close.png');
+ // border: 1px solid red;
+ background-size: 100% 100%;
+ width: 1.48vh;
+ height: 1.48vh;
+ cursor: pointer;
+ }
+
+ .xs_main {
+ height: 0.55vh;
+ position: absolute;
+ width: 100%;
+ bottom: -0.55vh;
+ display: flex;
+ align-items: center;
+
+ .block {
+ width: 2.34vw;
+ display: flex;
+
+ .point {
+ width: .55vh;
+ height: .55vh;
+ margin-right: 0.36vw;
+
+ &.p1 {
+ background: rgba(53, 125, 250, 1)
+ }
+
+ &.p2 {
+ background: rgba(53, 125, 250, .7)
+ }
+
+ &.p3 {
+ background: rgba(53, 125, 250, .4)
+ }
+ }
+
+ }
+
+ .xs_x {
+ height: 1px;
+ flex: 1;
+ background: #214284;
+ }
+ }
+ }
+
+ .echarts_main {
+ .headers {
+ height: 3.33vh;
+ font-size: 1.48vh;
+ color: #0befca;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-right: 0.53vw;
+ background: rgba(11, 239, 202, .2);
+ margin-bottom: 0.9vh
+ }
+
+ .desc_main {
+ overflow-y: scroll;
+ padding-right: 0.33vw;
+
+ .analysisTable_list {
+ margin: 0;
+ padding: 0;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .flex_item {
+ cursor: pointer;
+ list-style: none;
+ margin: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ color: #fff;
+ font-size: 1.29vh;
+ position: relative;
+ height: 3.2vh;
+
+ &:nth-child(2n) {
+ background: rgba(53, 125, 250, .1);
+ }
+ }
+ }
+ }
+ }
+
+}
+
+.pop_statistical_desc {
+ width: 20.2vw;
+ margin: 0;
+ right: 23vw;
+ top: 35vh;
+ padding-bottom: 1.04vw !important;
+
+ .head_main {
+ .title {
+ color: #fff;
+ }
+ }
+
+ .echarts_main {
+ margin-top: 1.66vh;
+
+ div {
+ display: flex;
+ align-items: center;
+
+ &:nth-child(even) {
+ background: rgba(32, 89, 188, 0.2);
+ }
+
+ p {
+ &:nth-child(1) {
+ width: 8vw;
+ padding-left: 1vw;
+ flex-shrink: 0;
+ }
+
+ &:nth-child(2) {
+ color: #ffad00;
+ }
+
+ margin: 0;
+ color: #ffffff;
+ font-size:1.33vh;
+ line-height: 3.92vh;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/views/sanqing/main-gis/index.vue b/src/views/sanqing/main-gis/index.vue
new file mode 100644
index 0000000..b0a7bb3
--- /dev/null
+++ b/src/views/sanqing/main-gis/index.vue
@@ -0,0 +1,4 @@
+
+
+
diff --git a/vue.config.js b/vue.config.js
index e871203..9211618 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -18,9 +18,10 @@ module.exports = {
// target: `http://localhost:8080/`, // 本地开发环境
target: `http://218.59.175.43:92`, // 内网测试环境
// target: `http://116.255.223.226:8082/nsgk_test/`, // 公网测试环境
+ // target: `http://192.168.0.105:8090`, // 公网测试环境
changeOrigin: true,
onProxyReq: function (proxyReq, req) {
- console.log(
+ //console.log(
'[HPM] Origin changed from ' +
req.headers.host +
' ~> ' +
@@ -33,7 +34,7 @@ module.exports = {
logLevel: 'debug',
changeOrigin: true,
onProxyReq: function (proxyReq, req) {
- console.log(
+ //console.log(
'[HPM] Origin changed from ' +
req.headers.host +
' ~> ' +