对接后台接口及大屏天气接口

main
jinna 2 years ago
parent 25ebdefb48
commit 38c5a5f942
  1. 25
      src/api/dataStatistics/carbon.js
  2. 25
      src/api/dataStatistics/carbonIntensity.js
  3. 25
      src/api/dataStatistics/carbonTrend.js
  4. 16
      src/const/capital/productclass.js
  5. 198
      src/router/axios.js
  6. 2
      src/views/capital/shenlingList.vue
  7. 454
      src/views/dataStatistics/carbon.vue
  8. 385
      src/views/dataStatistics/carbonIntensity.vue
  9. 401
      src/views/dataStatistics/carbonTrend.vue
  10. 14
      src/views/energySources/component/header.vue
  11. 15
      src/views/energySourcesProvince/component/header.vue
  12. 54
      src/views/energySourcesProvince/component/statistics.vue
  13. 4
      vue.config.js

@ -0,0 +1,25 @@
import request from "@/router/axios";
export const getCarborList = (query) => {
return request({
url: "/api/blade-lims/carbonEmissionPlan/page",
method: "get",
params: query,
});
};
export const saveCarbon = (data) => {
return request({
url: "/api/blade-lims/carbonEmissionPlan/saveCarbon",
method: "post",
data,
});
};
export const deleteCarbon = (id) => {
return request({
url: "/api/blade-lims/carbonEmissionPlan/deleteById",
method: "get",
params: { id },
});
};

@ -0,0 +1,25 @@
import request from "@/router/axios";
export const getIntensity = (query) => {
return request({
url: "/api/blade-lims/carbonIntensity/page",
method: "get",
params: query,
});
};
export const saveIntensity = (data) => {
return request({
url: "/api/blade-lims/carbonIntensity/saveCarbon",
method: "post",
data,
});
};
export const deleteIntensity = (id) => {
return request({
url: "/api/blade-lims/carbonIntensity/deleteById",
method: "get",
params: { id },
});
};

@ -0,0 +1,25 @@
import request from "@/router/axios";
export const getTrendList = (query) => {
return request({
url: "/api/blade-lims/carbonEmission/page",
method: "get",
params: query,
});
};
export const saveTrend = (data) => {
return request({
url: "/api/blade-lims/carbonEmission/saveCarbon",
method: "post",
data,
});
};
export const deleteTrend = (id) => {
return request({
url: "/api/blade-lims/carbonEmission/deleteById",
method: "get",
params: { id },
});
};

@ -147,14 +147,14 @@ export const tableOption = {
// value: 1,
slot: true,
},
{
label: "危险品",
prop: "danger",
type: "switch",
overHidden: true,
span: 8,
dicData: statisticsTypeDic,
},
// {
// label: "危险品",
// prop: "danger",
// type: "switch",
// overHidden: true,
// span: 8,
// dicData: statisticsTypeDic,
// },
{
label: "排序",
prop: "sort",

@ -5,16 +5,16 @@
* isSerialize是否开启form表单提交
* isToken是否需要token
*/
import axios from 'axios';
import store from '@/store/';
import router from '@/router/router';
import {serialize} from '@/util/util';
import {getToken} from '@/util/auth';
import {Message} from 'element-ui';
import website from '@/config/website';
import {Base64} from 'js-base64';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import axios from "axios";
import store from "@/store/";
import router from "@/router/router";
import { serialize } from "@/util/util";
import { getToken } from "@/util/auth";
import { Message } from "element-ui";
import website from "@/config/website";
import { Base64 } from "js-base64";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
//默认超时时间
axios.defaults.timeout = 60000;
@ -26,100 +26,110 @@ axios.defaults.validateStatus = function (status) {
axios.defaults.withCredentials = true;
// NProgress 配置
NProgress.configure({
showSpinner: false
showSpinner: false,
});
//http request拦截
axios.interceptors.request.use(config => {
//开启 progress bar
NProgress.start();
const meta = (config.meta || {});
const isToken = meta.isToken === false;
config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
//让每个请求携带token
if (getToken() && !isToken) {
config.headers[website.tokenHeader] = 'bearer ' + getToken()
}
//headers中配置text请求
if (config.text === true) {
config.headers["Content-Type"] = "text/plain";
}
//headers中配置serialize为true开启序列化
if (config.method === 'post' && meta.isSerialize === true) {
config.data = serialize(config.data);
axios.interceptors.request.use(
(config) => {
//开启 progress bar
NProgress.start();
const meta = config.meta || {};
const isToken = meta.isToken === false;
config.headers["Authorization"] = `Basic ${Base64.encode(
`${website.clientId}:${website.clientSecret}`
)}`;
//让每个请求携带token
if (getToken() && !isToken) {
config.headers[website.tokenHeader] = "bearer " + getToken();
}
//headers中配置text请求
if (config.text === true) {
config.headers["Content-Type"] = "text/plain";
}
//headers中配置serialize为true开启序列化
if (config.method === "post" && meta.isSerialize === true) {
config.data = serialize(config.data);
}
return config;
},
(error) => {
return Promise.reject(error);
}
return config
}, error => {
return Promise.reject(error)
});
);
//http response 拦截
axios.interceptors.response.use(res => {
// console.log(res);
//关闭 progress bar
NProgress.done();
//获取状态码
const status = res.data.code || res.status;
const statusWhiteList = website.statusWhiteList || [];
const message = res.data.msg || res.data.error_description || '未知错误';
//如果在白名单里则自行catch逻辑处理
if (statusWhiteList.includes(status)) return Promise.reject(res);
//如果是401则跳转到登录页面
if (status === 401) store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
// 如果请求为非200否者默认统一处理
if (status !== 200) {
if(status === 413) {
Message({
message: '上传的文件过大!',
type: 'error',
duration: 1500
});
}else {
Message({
message: message,
type: 'error'
});
axios.interceptors.response.use(
(res) => {
// console.log(res);
//关闭 progress bar
NProgress.done();
//获取状态码
const status = res.data.code || res.status;
const statusWhiteList = website.statusWhiteList || [];
const message = res.data.msg || res.data.error_description || "未知错误";
console.log("status ===>", status);
//如果在白名单里则自行catch逻辑处理
if (statusWhiteList.includes(status)) return Promise.reject(res);
//如果是401则跳转到登录页面
if (status === 401)
store.dispatch("FedLogOut").then(() => router.push({ path: "/login" }));
// 如果请求为非200否者默认统一处理
if (status != 200) {
if (status === 413) {
Message({
message: "上传的文件过大!",
type: "error",
duration: 1500,
});
} else {
Message({
message: message,
type: "error",
});
}
return Promise.reject(new Error(message));
}
return Promise.reject(new Error(message))
}
return res;
}, error => {
NProgress.done();
switch (error.res.status) {
case 400:
Message({
message: error.res.data,
type:'error',
duration: 1500,
customClass:'element-error-message-zindex'
})
break
case 401:
router.push({name:'login'})
break
case 405:
Message({
message: 'http请求方式有误',
type:'error',
duration: 1500,
customClass:'element-error-message-zindex'
})
break
return res;
},
(error) => {
NProgress.done();
switch (error.res.status) {
case 400:
Message({
message: error.res.data,
type: "error",
duration: 1500,
customClass: "element-error-message-zindex",
});
break;
case 401:
router.push({ name: "login" });
break;
case 405:
Message({
message: "http请求方式有误",
type: "error",
duration: 1500,
customClass: "element-error-message-zindex",
});
break;
case 500:
Message({
message: '服务器错误,请稍后再试',
type:'error',
customClass:'element-error-message-zindex'
})
break
message: "服务器错误,请稍后再试",
type: "error",
customClass: "element-error-message-zindex",
});
break;
case 501:
Message({
message: '服务器不支持当前请求所需要的某个功能',
type:'error',
message: "服务器不支持当前请求所需要的某个功能",
type: "error",
duration: 1500,
customClass:'element-error-message-zindex'
})
break
customClass: "element-error-message-zindex",
});
break;
}
return Promise.reject(new Error(error));
}
return Promise.reject(new Error(error));
});
);
export default axios;

@ -503,7 +503,7 @@ export default {
//
this.getUserInfo()
//
this.loadLeftTreeData(2)
// this.loadLeftTreeData(2)
let currentStatus = this.$route.query.entrustStatus
// if( this.$store.state.client.shenlingPage){
// this.page[0].current = this.$store.state.client.shenlingPage.page

@ -0,0 +1,454 @@
<template>
<basic-container>
<avue-crud
id="avue-id"
ref="crud"
:option="option"
:data="data"
:page.sync="page"
:table-loading="loading"
@row-save="rowSave"
@row-update="rowUpdate"
@row-del="rowDel"
@current-change="currentChange"
@size-change="sizeChange"
>
<template slot="menuLeft">
<el-form
ref="searchForm"
:model="searchForm"
label-width="120px"
style="border: 0px solid red; margin-bottom: 8px"
>
<el-row>
<el-col style="margin-left: 18px" :span="3.5">
<el-button class="search" @click="searchHandle(0)"
>查询</el-button
>
</el-col>
</el-row>
</el-form>
</template>
<template slot-scope="{ type }" slot="menuForm">
<el-button
size="small"
@click="$refs.crud.closeDialog()"
class="button-el"
>取消</el-button
>
<el-button
size="small"
v-if="type == 'add'"
@click="$refs.crud.rowSave()"
class="button-el"
>确定</el-button
>
<el-button
size="small"
v-if="type == 'edit'"
@click="$refs.crud.rowUpdate()"
class="button-el"
>提交</el-button
>
</template>
<template slot="menuRight">
<el-button class="search" style="width: 120px" @click="$refs.crud.rowAdd()"
>新建</el-button
>
</template>
<template slot-scope="{ row, index }" slot="menu">
<el-button @click="$refs.crud.rowEdit(row, index)" class="look"
>编辑</el-button
>
<el-button @click="$refs.crud.rowDel(row, index)" class="look"
>删除</el-button
>
</template>
</avue-crud>
</basic-container>
</template>
<script>
import {getCarborList,saveCarbon,deleteCarbon} from "@/api/dataStatistics/carbon";
export default {
data() {
return {
loading: false,
page: {
current: 1,
total: 1,
size: 10,
},
//
searchForm: {
name: "",
},
searchText: {
flag: 3,
addText: "新增",
},
option: {
searchMenuSpan: 8,
selection: true,
index: true,
delBtn: false,
editBtn: false,
labelSuffix: " ", //
labelWidth: 120,
gutter: 20, //input
expandLevel: 3,
headerAlign: "left",
menuWidth: 450,
align: "left",
menuPosition: "left",
tree: true,
menuBtn: false,
submitBtn: true,
emptyBtn: false,
addBtn: false,
searchBtn: false,
columnBtn: false,
refreshBtn: false,
tip: false,
border: false,
saveBtn: false,
cancelBtn: false,
dialogWidth: 920,
updateBtn: false,
labelPosition: "top",
dialogCustomClass: "custom",
indexLabel: "序号",
column: [
{
type: "year",
span: 8,
label: "日期",
prop: "currentYear",
overHidden: true,
align: "left",
format:'yyyy',
valueFormat:'yyyy',
rules:[
{required:true,message:'请选择日期',trigger:'blur'},
]
},
{
type: "input",
span: 8,
label: "碳排放计划量",
prop: "totalCarbonPlan",
// search: true,
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写碳排放计划量',trigger:'blur'},
{
pattern:/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "碳排放计划量必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
{
type: "input",
span: 8,
label: "碳排放计划量(kg/万元)",
prop: "carbonPlan",
// search: true,
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写碳排放计划量(kg/万元)',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "碳排放计划量(kg/万元)必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
{
type: "input",
label: "光伏发电",
span: 8,
prop: "pvPower",
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写光伏发电',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "光伏发电必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
{
type: "input",
span: 8,
label: "工艺优化",
prop: "processOpt",
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写工艺优化',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "工艺优化必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
{
type: "input",
span: 8,
label: "设备更换",
prop: "equipReplace",
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写设备更换',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "设备更换必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
],
},
};
},
mounted() {
if (JSON.stringify(this.$store.state.client.supplierParams) !== "{}") {
this.searchForm = this.$store.state.client.supplierParams;
}
this.onLoad();
},
methods: {
//
currentChange(currentPage) {
this.page.current = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.size = pageSize;
this.onLoad();
},
//
searchHandle(item, index) {
this.page.current = 1;
if (index === 1) {
this.searchForm = {
name: "",
};
} else {
this.searchForm = item;
}
this.onLoad();
this.$store.dispatch("changeSetting", {
title: "supplierParams",
form: this.searchForm,
});
},
//
addHandle() {
this.$refs.crud.rowAdd();
},
onLoad() {
this.loading = true;
const { current, size } = this.page;
getCarborList( Object.assign({ current, size })).then((res) => {
const {records,total} = res.data.data
this.data = records
this.page.total = total
this.loading = false;
});
},
//
rowSave(from, done, loading) {
saveCarbon(from).then((res) => {
if(res.data.code == 200){
this.$message.success("新增成功");
this.onLoad();
}
});
done();
},
//
rowDel(form, index) {
this.$confirm("此操作会删除该数据,且无法恢复,确定要删除吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deleteCarbon(form.id).then((res) => {
this.$message.success("删除成功");
this.onLoad();
});
});
},
//
rowUpdate(form, index, done, loading) {
let params = {
currentYear:form.currentYear,
id:form.id,
totalCarbonPlan:form.totalCarbonPlan,
carbonPlan:form.carbonPlan,
pvPower:form.pvPower,
processOpt:form.processOpt,
equipReplace:form.equipReplace
}
saveCarbon(params).then((res) => {
this.$message.success("编辑成功");
this.onLoad();
done();
});
},
},
};
</script>
<style lang="scss" scoped>
//
.button-el {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
.button-el:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
::v-deep .el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {
border-bottom: 1px solid #f0f3f7;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .avue-crud .el-table th {
color: #999999;
font-weight: 400;
background: #f6f8fa;
height: 66px;
}
::v-deep .avue-crud .el-table td {
height: 66px;
color: #333333;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
}
//
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
width: 70px;
height: 36px;
border-radius: 0;
padding: 10px;
border-color: #e4e7ec;
color: #333333;
}
/deep/ .avue-crud__pagination {
height: 20px;
padding: 10px;
// padding-top: 30px;
// padding-bottom: 30px;
}
.search-input {
width: 255px;
height: 46px;
margin-left: 10px;
/deep/ .el-input__inner {
width: 255px;
height: 46px;
}
}
.search {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
// margin-left:18px!important;
margin-right: 0 !important;
}
//
.reset {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
margin-left: 18px !important;
border-radius: 0px;
}
.search-picker {
width: 240px;
height: 46px;
border-radius: 0;
margin-left: 10px;
}
.search-select {
width: 240px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 240px;
height: 46px;
}
}
.search_select {
width: 150px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 150px;
height: 46px;
}
}
//
.buttonOne {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
.buttonOne:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
::v-deep .el-pagination .el-select .el-input .el-input__inner {
height: 20px;
}
</style>

@ -0,0 +1,385 @@
<template>
<basic-container>
<avue-crud
id="avue-id"
ref="crud"
:option="option"
:data="data"
:page.sync="page"
:table-loading="loading"
@row-save="rowSave"
@row-update="rowUpdate"
@row-del="rowDel"
@current-change="currentChange"
@size-change="sizeChange"
>
<template slot="menuLeft">
<el-form
ref="searchForm"
:model="searchForm"
label-width="120px"
style="border: 0px solid red; margin-bottom: 8px"
>
<el-row>
<el-col style="margin-left: 18px" :span="3.5">
<el-button class="search" @click="searchHandle(0)"
>查询</el-button
>
</el-col>
</el-row>
</el-form>
</template>
<template slot-scope="{ type }" slot="menuForm">
<el-button
size="small"
@click="$refs.crud.closeDialog()"
class="button-el"
>取消</el-button
>
<el-button
size="small"
v-if="type == 'add'"
@click="$refs.crud.rowSave()"
class="button-el"
>确定</el-button
>
<el-button
size="small"
v-if="type == 'edit'"
@click="$refs.crud.rowUpdate()"
class="button-el"
>提交</el-button
>
</template>
<template slot="menuRight">
<el-button class="search" style="width: 120px" @click="$refs.crud.rowAdd()"
>新建</el-button
>
</template>
<template slot-scope="{ row, index }" slot="menu">
<el-button @click="$refs.crud.rowEdit(row, index)" class="look"
>编辑</el-button
>
<el-button @click="$refs.crud.rowDel(row, index)" class="look"
>删除</el-button
>
</template>
</avue-crud>
</basic-container>
</template>
<script>
import {getIntensity,saveIntensity,deleteIntensity} from "@/api/dataStatistics/carbonIntensity";
export default {
data() {
return {
loading: false,
page: {
current: 1,
total: 1,
size: 10,
},
//
searchForm: {
name: "",
},
searchText: {
flag: 3,
addText: "新增",
},
option: {
searchMenuSpan: 8,
selection: true,
index: true,
delBtn: false,
editBtn: false,
labelSuffix: " ", //
labelWidth: 120,
gutter: 20, //input
expandLevel: 3,
headerAlign: "left",
menuWidth: 450,
align: "left",
menuPosition: "left",
tree: true,
menuBtn: false,
submitBtn: true,
emptyBtn: false,
addBtn: false,
searchBtn: false,
columnBtn: false,
refreshBtn: false,
tip: false,
border: false,
saveBtn: false,
cancelBtn: false,
dialogWidth: 920,
updateBtn: false,
labelPosition: "top",
dialogCustomClass: "custom",
indexLabel: "序号",
column: [
{
type: "month",
span: 8,
label: "日期",
prop: "currentMonth",
overHidden: true,
align: "left",
format:'yyyy-MM',
valueFormat:'yyyy-MM',
rules:[
{required:true,message:'请选择日期',trigger:'blur'},
]
},
{
type: "input",
span: 8,
label: "碳排放强度",
prop: "intensity",
// search: true,
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写碳排放强度',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "碳排放计划量必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
],
},
};
},
mounted() {
if (JSON.stringify(this.$store.state.client.supplierParams) !== "{}") {
this.searchForm = this.$store.state.client.supplierParams;
}
this.onLoad();
},
methods: {
//
currentChange(currentPage) {
this.page.current = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.size = pageSize;
this.onLoad();
},
//
searchHandle(item, index) {
this.page.current = 1;
if (index === 1) {
this.searchForm = {
name: "",
};
} else {
this.searchForm = item;
}
this.onLoad();
this.$store.dispatch("changeSetting", {
title: "supplierParams",
form: this.searchForm,
});
},
//
addHandle() {
this.$refs.crud.rowAdd();
},
onLoad() {
this.loading = true;
const { current, size } = this.page;
getIntensity( Object.assign({ current, size })).then((res) => {
const {records,total} = res.data.data
this.data = records
this.page.total = total
this.loading = false;
});
},
//
rowSave(form, done, loading) {
saveIntensity(form).then((res) => {
if(res.data.code == 200){
this.$message.success("新增成功");
this.onLoad();
}
});
done();
},
//
rowDel(form, index) {
this.$confirm("此操作会删除该数据,且无法恢复,确定要删除吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deleteIntensity(form.id).then((res) => {
this.$message.success("删除成功");
this.onLoad();
});
});
},
//
rowUpdate(form, index, done, loading) {
let params = {
id:form.id,
currentMonth:form.currentMonth,
intensity:form.intensity
}
saveIntensity(params).then((res) => {
if(res.data.code == 200){
this.$message.success("编辑成功");
this.onLoad();
}
done();
});
},
},
};
</script>
<style lang="scss" scoped>
//
.button-el {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
.button-el:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
::v-deep .el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {
border-bottom: 1px solid #f0f3f7;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .avue-crud .el-table th {
color: #999999;
font-weight: 400;
background: #f6f8fa;
height: 66px;
}
::v-deep .avue-crud .el-table td {
height: 66px;
color: #333333;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
}
//
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
width: 70px;
height: 36px;
border-radius: 0;
padding: 10px;
border-color: #e4e7ec;
color: #333333;
}
/deep/ .avue-crud__pagination {
height: 20px;
padding: 10px;
// padding-top: 30px;
// padding-bottom: 30px;
}
.search-input {
width: 255px;
height: 46px;
margin-left: 10px;
/deep/ .el-input__inner {
width: 255px;
height: 46px;
}
}
.search {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
// margin-left:18px!important;
margin-right: 0 !important;
}
//
.reset {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
margin-left: 18px !important;
border-radius: 0px;
}
.search-picker {
width: 240px;
height: 46px;
border-radius: 0;
margin-left: 10px;
}
.search-select {
width: 240px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 240px;
height: 46px;
}
}
.search_select {
width: 150px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 150px;
height: 46px;
}
}
//
.buttonOne {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
.buttonOne:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
::v-deep .el-pagination .el-select .el-input .el-input__inner {
height: 20px;
}
</style>

@ -0,0 +1,401 @@
<template>
<basic-container>
<avue-crud
id="avue-id"
ref="crud"
:option="option"
:data="data"
:page.sync="page"
:table-loading="loading"
@row-save="rowSave"
@row-update="rowUpdate"
@row-del="rowDel"
@current-change="currentChange"
@size-change="sizeChange"
>
<template slot="menuLeft">
<el-form
ref="searchForm"
:model="searchForm"
label-width="120px"
style="border: 0px solid red; margin-bottom: 8px"
>
<el-row>
<!-- <el-col :span="2.5">
<el-select
v-model="searchForm.status"
class="search-select"
placeholder="请选择状态"
>
<el-option label="启用" :value="1"></el-option>
<el-option label="停用" :value="0"></el-option>
</el-select>
</el-col> -->
<el-col style="margin-left: 18px" :span="3.5">
<el-button class="search" @click="searchHandle(0)"
>查询</el-button
>
<!-- <el-button class="reset" @click="searchHandle(1)">重置</el-button> -->
</el-col>
</el-row>
</el-form>
</template>
<template slot-scope="{ type }" slot="menuForm">
<el-button
size="small"
@click="$refs.crud.closeDialog()"
class="button-el"
>取消</el-button
>
<el-button
size="small"
v-if="type == 'add'"
@click="$refs.crud.rowSave()"
class="button-el"
>确定</el-button
>
<el-button
size="small"
v-if="type == 'edit'"
@click="$refs.crud.rowUpdate()"
class="button-el"
>提交</el-button
>
</template>
<template slot="menuRight">
<el-button class="search" style="width: 120px" @click="$refs.crud.rowAdd()"
>新建</el-button
>
</template>
<template slot-scope="{ row, index }" slot="menu">
<el-button @click="$refs.crud.rowEdit(row, index)" class="look"
>编辑</el-button
>
<el-button @click="$refs.crud.rowDel(row, index)" class="look"
>删除</el-button
>
</template>
</avue-crud>
</basic-container>
</template>
<script>
import {getTrendList,saveTrend,deleteTrend} from "@/api/dataStatistics/carbonTrend";
export default {
data() {
return {
loading: false,
page: {
current: 1,
total: 1,
size: 10,
},
//
searchForm: {
name: "",
},
searchText: {
flag: 3,
addText: "新增",
},
option: {
searchMenuSpan: 8,
selection: true,
index: true,
delBtn: false,
editBtn: false,
labelSuffix: " ", //
labelWidth: 120,
gutter: 20, //input
expandLevel: 3,
headerAlign: "left",
menuWidth: 450,
align: "left",
menuPosition: "left",
tree: true,
menuBtn: false,
submitBtn: true,
emptyBtn: false,
addBtn: false,
searchBtn: false,
columnBtn: false,
refreshBtn: false,
tip: false,
border: false,
saveBtn: false,
cancelBtn: false,
dialogWidth: 920,
updateBtn: false,
labelPosition: "top",
dialogCustomClass: "custom",
indexLabel: "序号",
column: [
{
type: "month",
span: 8,
label: "日期",
prop: "currentMonth",
overHidden: true,
align: "left",
format:'yyyy-MM',
valueFormat:'yyyy-MM',
rules:[
{required:true,message:'请选择日期',trigger:'blur'},
]
},
{
type: "input",
span: 8,
label: "碳排放量",
prop: "emissions",
// search: true,
overHidden: true,
align: "left",
rules: [
{required:true,message:'请填写碳排放计划量',trigger:'blur'},
{
pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
message: "碳排放计划量必须大于0且最多只有两位小数",
trigger: "blur",
},
],
},
],
},
};
},
mounted() {
if (JSON.stringify(this.$store.state.client.supplierParams) !== "{}") {
this.searchForm = this.$store.state.client.supplierParams;
}
this.onLoad();
},
methods: {
//
currentChange(currentPage) {
this.page.current = currentPage;
this.onLoad();
},
sizeChange(pageSize) {
this.page.size = pageSize;
this.onLoad();
},
//
searchHandle(item, index) {
this.page.current = 1;
if (index === 1) {
this.searchForm = {
name: "",
};
} else {
this.searchForm = item;
}
this.onLoad();
this.$store.dispatch("changeSetting", {
title: "supplierParams",
form: this.searchForm,
});
},
//
addHandle() {
this.$refs.crud.rowAdd();
},
onLoad() {
this.loading = true;
const { current, size } = this.page;
getTrendList( Object.assign({ current, size })).then((res) => {
const {records,total} = res.data.data
this.data = records
this.page.total = total
this.loading = false;
});
},
//
rowSave(form, done, loading) {
console.log('add ====>',form)
saveTrend(form).then((res) => {
if(res.data.code == 200){
this.$message.success("新增成功");
this.onLoad();
}else{
this.$message.error(res.data.msg);
this.onLoad();
}
});
done();
},
//
rowDel(form, index) {
this.$confirm("此操作会删除该数据,且无法恢复,确定要删除吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deleteTrend(form.id).then((res) => {
this.$message.success("删除成功");
this.onLoad();
});
});
},
//
rowUpdate(form, index, done, loading) {
console.log(form, "from");
let params = {
currentMonth:form.currentMonth,
emissions:form.emissions,
id:form.id
}
saveTrend(params).then((res) => {
if(res.data.code == 200){
this.$message.success("编辑成功");
this.onLoad();
}
done();
});
},
},
};
</script>
<style lang="scss" scoped>
//
.button-el {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
.button-el:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
::v-deep .el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {
border-bottom: 1px solid #f0f3f7;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .avue-crud .el-table th {
color: #999999;
font-weight: 400;
background: #f6f8fa;
height: 66px;
}
::v-deep .avue-crud .el-table td {
height: 66px;
color: #333333;
}
::v-deep .el-table .el-table__cell.is-center {
text-align: left;
}
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
}
//
::v-deep .el-table__row .el-button--default,
.el-table__row .el-button--text {
background-color: #fff !important;
width: 70px;
height: 36px;
border-radius: 0;
padding: 10px;
border-color: #e4e7ec;
color: #333333;
}
/deep/ .avue-crud__pagination {
height: 20px;
padding: 10px;
// padding-top: 30px;
// padding-bottom: 30px;
}
.search-input {
width: 255px;
height: 46px;
margin-left: 10px;
/deep/ .el-input__inner {
width: 255px;
height: 46px;
}
}
.search {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
// margin-left:18px!important;
margin-right: 0 !important;
}
//
.reset {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
margin-left: 18px !important;
border-radius: 0px;
}
.search-picker {
width: 240px;
height: 46px;
border-radius: 0;
margin-left: 10px;
}
.search-select {
width: 240px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 240px;
height: 46px;
}
}
.search_select {
width: 150px !important;
height: 46px;
border-radius: 0;
margin-left: 10px;
/deep/ .el-input__inner {
width: 150px;
height: 46px;
}
}
//
.buttonOne {
color: #999999;
background-color: #fff;
border-color: #e4e7ec;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
.buttonOne:hover {
color: #fff;
background-color: #1e60f5;
border-color: #1e60f5;
height: 46px;
width: 100px;
border-radius: 0px;
margin-left: 20px;
}
//
::v-deep .el-pagination .el-select .el-input .el-input__inner {
height: 20px;
}
</style>

@ -12,7 +12,7 @@
{{ $moment().format('dddd') }}
</div>
<div>
11 多云转晴
{{temp}} {{text}}
</div>
</div>
@ -23,23 +23,29 @@
</template>
<script>
import { getWeather } from "@/api/energySourcesProvince/energySourcesProvince"
import { mapGetters } from "vuex";
export default {
data() {
return {
time: '',
timeFun: null
timeFun: null,
temp:'',
text:'',
};
},
computed:{
...mapGetters(["userInfo", "permission"]),
},
created() {
getWeather().then(res => {
this.temp = res.data.now.temp
this.text = res.data.now.text
})
this.timeFun = setInterval(() => {
this.time = this.$moment().format('HH:mm:ss')
}, 1000)
this.timeFun()
// this.timeFun()
},
methods: {
},

@ -12,7 +12,7 @@
{{ $moment().format('dddd') }}
</div>
<div>
11 多云转晴
{{temp}} {{text}}
</div>
</div>
@ -31,20 +31,23 @@ export default {
data() {
return {
time: '',
timesFun: null
timesFun: null,
temp:'',
text:'',
};
},
computed: {
...mapGetters(["userInfo", "permission"]),
},
created() {
// getWeather().then(res => {
// })
getWeather().then(res => {
this.temp = res.data.now.temp
this.text = res.data.now.text
})
this.timesFun = setInterval(() => {
this.time = this.$moment().format('HH:mm:ss')
}, 1000)
this.timesFun()
// this.timesFun()
},
methods: {
},

@ -20,14 +20,14 @@
<span class="rank" v-if="scope.$index <= 2" :style="rankStyle(scope.$index)">TOP.{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column prop="address" label="用电量(kw·h)">
<el-table-column prop="electricity" label="用电量(kw·h)">
<template slot-scope="scope">
<span style="color: #11F150;">{{ scope.row.address }}</span>
<span style="color: #11F150;">{{ scope.row.electricity }}</span>
</template>
</el-table-column>
<el-table-column prop="date" label="碳排放量(t)">
<el-table-column prop="carbon" label="碳排放量(t)">
<template slot-scope="scope">
<span style="color: #FBB02D;">{{ scope.row.date }}</span>
<span style="color: #FBB02D;">{{ scope.row.carbon }}</span>
</template>
</el-table-column>
</el-table>
@ -35,6 +35,7 @@
</template>
<script>
import {getEnterprisePower} from "@/api/energySourcesProvince/energySourcesProvince";
import tit from "./tit.vue";
export default {
data() {
@ -45,44 +46,26 @@ export default {
{ id: 3, name: "日" },
],
timeActiveIndex1: 0,
tableData: [{
date: '11.22',
name: '巨人机床有限公司',
address: 29,
}, {
date: '11.22',
name: '王小虎',
address: 0,
}, {
date: '11.22',
name: '王小虎',
address: 29,
}, {
date: '11.22',
name: '王小虎',
address: 29,
}, {
date: '11.22',
name: '王小虎',
address: 29,
}, {
date: '11.22',
name: '王小虎',
address: 29,
}, {
date: '11.22',
name: '王小虎',
address: 29,
}]
tableData: [],
today:this.$moment().format('YYYY-MM-DD'),
month:this.$moment().format('YYYY-MM'),
year:this.$moment().format('YYYY'),
};
},
components: {
tit
},
created() {
let params = {currentYear:this.year}
this.getData(params)
},
methods: {
getData(params){
getEnterprisePower(params).then(res =>{
console.log('res ===>',res)
this.tableData = res.data.data
})
},
rankStyle(i) {
if (i === 0) {
return "background: #E73F3F"
@ -94,6 +77,9 @@ export default {
},
timeClick(index) {
this.timeActiveIndex1 = index;
let params = index == 0 ? {currentYear:this.year} : index == 1 ? {currentMonth:this.month} : index == 2 ? {today:this.today} : ''
console.log('params ====>',params)
this.getData(params)
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 === 0) {

@ -48,8 +48,8 @@ module.exports = {
"^/xumumodel": "/xumumodel",
},
},
'/weathers': {
target: 'https://api.map.baidu.com',
"/weathers": {
target: "https://devapi.qweather.com",
changeOrigin: true,
ws: true,
secure: false,

Loading…
Cancel
Save