Merge pull request 'projects/mescc/zjl' (#31) from projects/mescc/zjl into projects/mescc/develop
ステータスチェックはすべて成功しました
continuous-integration/drone/push Build is passing

Reviewed-on: #31
このコミットが含まれているのは:
朱菊兰 2024-06-04 09:09:27 +08:00
コミット 006d44b842
12個のファイルの変更8612行の追加8987行の削除

ファイルの表示

@ -9,7 +9,7 @@
ENV = 'development'
# 页面标题
VUE_APP_TITLE = 芋道管理系统
VUE_APP_TITLE = 发电玻璃智能管控平台
# 芋道管理系统/开发环境
# VUE_APP_BASE_API = 'http://192.168.1.70:30307'
@ -26,7 +26,7 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
VUE_APP_TENANT_ENABLE = true
# 验证码的开关
VUE_APP_CAPTCHA_ENABLE = true
VUE_APP_CAPTCHA_ENABLE = false
# 文档的开关
VUE_APP_DOC_ENABLE = true

ファイルの表示

@ -2,7 +2,7 @@
ENV = 'development'
# 页面标题
VUE_APP_TITLE = 芋道管理系统
VUE_APP_TITLE = 发电玻璃智能管控平台
# 芋道管理系统/本地环境
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'
@ -14,7 +14,7 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
VUE_APP_TENANT_ENABLE = true
# 验证码的开关
VUE_APP_CAPTCHA_ENABLE = true
VUE_APP_CAPTCHA_ENABLE = false
# 文档的开关
VUE_APP_DOC_ENABLE = true

ファイルの表示

@ -2,7 +2,7 @@
NODE_ENV = 'production'
# 页面标题
VUE_APP_TITLE = 玻璃控股信息平台
VUE_APP_TITLE = 发电玻璃智能管控平台
# 芋道管理系统/生产环境
VUE_APP_BASE_API = ''
@ -16,7 +16,7 @@ PUBLIC_PATH = ''
VUE_APP_TENANT_ENABLE = true
# 验证码的开关
VUE_APP_CAPTCHA_ENABLE = true
VUE_APP_CAPTCHA_ENABLE = false
# 文档的开关
VUE_APP_DOC_ENABLE = false

ファイルの表示

@ -1,7 +1,7 @@
NODE_ENV = production
# 页面标题
VUE_APP_TITLE = 芋道管理系统
VUE_APP_TITLE = 发电玻璃智能管控平台
# 测试环境配置
ENV = 'staging'
@ -16,7 +16,7 @@ PUBLIC_PATH = 'http://static.yudao.iocoder.cn/'
VUE_APP_TENANT_ENABLE = true
# 验证码的开关
VUE_APP_CAPTCHA_ENABLE = true
VUE_APP_CAPTCHA_ENABLE = false
# 文档的开关
VUE_APP_DOC_ENABLE = false

ファイルの表示

@ -4,7 +4,7 @@ NODE_ENV = development
ENV = 'staging'
# 页面标题
VUE_APP_TITLE = 芋道管理系统
VUE_APP_TITLE = 发电玻璃智能管控平台
# 芋道管理系统/测试环境
VUE_APP_BASE_API = 'http://127.0.0.1:48080'
@ -18,7 +18,7 @@ VUE_APP_APP_NAME ='/admin-ui-vue2/'
VUE_APP_TENANT_ENABLE = true
# 验证码的开关
VUE_APP_CAPTCHA_ENABLE = true
VUE_APP_CAPTCHA_ENABLE = false
# 文档的开关
VUE_APP_DOC_ENABLE = true

バイナリファイルは表示されません。

変更前

幅:  |  高さ:  |  サイズ: 2.7 KiB

ファイルの表示

@ -49,7 +49,7 @@
</template>
<script>
import logoImg from "@/assets/logo/logo.png";
import logoImg from "@/assets/logo/cnbm.png";
import variables from "@/assets/styles/variables.scss";
export default {
@ -70,7 +70,7 @@ export default {
},
data() {
return {
title: "玻璃控股信息平台",
title: "发电玻璃智能管控平台",
logo: logoImg,
};
},
@ -104,7 +104,7 @@ export default {
width: 32px;
height: 32px;
vertical-align: middle;
margin-right: 12px;
margin-right: 10px;
}
& .sidebar-title {
@ -113,7 +113,7 @@ export default {
color: #fff;
font-weight: 600;
line-height: 50px;
font-size: 14px;
font-size: 19px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}

ファイルの表示

@ -127,7 +127,8 @@ Router.prototype.push = function push(location) {
export default new Router({
base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/",
mode: "history", // 去掉url中的#
// mode: "history", // 去掉url中的#
mode: "hash",
scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes,
});

ファイルの表示

@ -218,7 +218,7 @@ export default {
data() {
return {
codeUrl: "",
captchaEnable: true,
captchaEnable: false,
tenantEnable: true,
mobileCodeTimer: 0,
loginForm: {

ファイルの表示

@ -6,60 +6,143 @@
* @Description:
-->
<template>
<div style="display: flex; flex-direction: column; min-height: calc(100vh - 96px - 31px)">
<div class="app-container" style="padding: 16px 24px 0; max-height: 45vh; flex-grow: 1;">
<div
style="
display: flex;
flex-direction: column;
min-height: calc(100vh - 96px - 31px);
"
>
<div
class="app-container"
style="padding: 16px; max-height: 45vh; flex-grow: 1"
>
<!-- <div style="position: relative;z-index: 999;"> -->
<el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip">
<el-form-item label="时间维度" prop="reportTime">
<el-select clearable v-model="timeSelect" placeholder="请选择">
<el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value">
<el-select
clearable
v-model="timeSelect"
placeholder="请选择"
style="width: 80px"
>
<el-option
v-for="item in timeList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item v-show="timeSelect === 'month'" label="时间范围" prop="reportTime">
<el-date-picker clearable v-model="listQuery.reportTime" type="monthrange" range-separator=""
start-placeholder="开始月份" end-placeholder="结束月份" @change="changeTime">
<el-form-item
v-show="timeSelect === 'month'"
label="时间范围"
prop="reportTime"
>
<el-date-picker
clearable
v-model="listQuery.reportTime"
type="monthrange"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份"
@change="changeTime"
>
</el-date-picker>
</el-form-item>
<el-form-item v-show="timeSelect === 'year'" label="时间范围" prop="reportTime">
<el-date-picker clearable v-model="listQuery.reportTime[0]" value-format="yyyy" type="year"
placeholder="开始时间">
<el-form-item
v-show="timeSelect === 'year'"
label="时间范围"
prop="reportTime"
>
<el-date-picker
clearable
v-model="listQuery.reportTime[0]"
value-format="yyyy"
type="year"
placeholder="开始时间"
>
</el-date-picker>
~
<el-date-picker v-model="listQuery.reportTime[1]" value-format="yyyy" type="year" placeholder="结束时间"
@change="getYear">
<el-date-picker
v-model="listQuery.reportTime[1]"
value-format="yyyy"
type="year"
placeholder="结束时间"
@change="getYear"
>
</el-date-picker>
</el-form-item>
<el-form-item label="工厂名称" prop="factoryId">
<el-select clearable v-model="listQuery.factoryId" placeholder="请选择工厂名称">
<el-option v-for="item in factoryList" :key="item.id" :label="item.name" :value="item.id">
<el-select
multiple
collapse-tags
v-model="listQuery.factoryId"
placeholder="请选择工厂名称"
>
<el-option
v-for="item in factoryList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="玻璃类型" prop="type">
<el-select clearable v-model="listQuery.type" placeholder="请选择玻璃类型">
<el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id">
<el-select
clearable
v-model="listQuery.type"
placeholder="请选择玻璃类型"
style="width: 120px"
>
<el-option
v-for="item in typeList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="getDataList">查询</el-button>
<el-button type="primary" size="small" plain @click="handleExport">导出</el-button>
<el-button type="primary" size="small" @click="getDataList"
>查询</el-button
>
<el-button type="primary" size="small" plain @click="handleExport"
>导出</el-button
>
</el-form-item>
</el-form>
<!-- </div> -->
<!-- <el-row style="height: 500px;"> -->
<!-- <div> -->
<line-chart class="yearChart" ref="lineChart" style="height: 35vh;width: 100%"></line-chart>
<line-chart
class="yearChart"
ref="lineChart"
style="height: 35vh; width: 100%"
></line-chart>
<!-- </div> -->
<!-- </el-row> -->
</div>
<!-- <el-row style="height: 400px;"> -->
<!-- </el-row> -->
<div class="app-container" style="margin-top: 18px; height: unset; flex-grow: 1; padding: 16px;">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<base-table :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize"
:table-data="tableData">
<div
class="app-container"
style="margin-top: 18px; height: unset; flex-grow: 1; padding: 16px"
>
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:table-props="tableProps"
:page="listQuery.pageNo"
:limit="listQuery.pageSize"
:table-data="tableData"
>
</base-table>
</div>
</div>
@ -69,14 +152,14 @@
// import { parseTime } from '../../core/mixins/code-filter';
// import { getGlassPage, exportGlasscExcel } from '@/api/report/glass';
// import inputTable from './inputTable.vue';
import { report } from 'process';
import lineChart from './lineChart';
import moment from 'moment'
import { report } from "process";
import lineChart from "./lineChart";
import moment from "moment";
// import FileSaver from 'file-saver'
// import * as XLSX from 'xlsx'
export default {
components: { lineChart },
data() {
data() {
return {
listQuery: {
pageSize: 10,
@ -85,50 +168,62 @@ export default {
total: 0,
type: null,
// reportType: 2,
reportTime: []
reportTime: [],
},
// startDatePicker: this.beginDate(),
// endDatePicker: this.processDate(),
yeartsStart: '',
yeartsEnd: '',
urlOptions: {
// getDataListURL: getGlassPage,
// exportURL: exportGlasscExcel
yeartsStart: "",
yeartsEnd: "",
urlOptions: {
// getDataListURL: getGlassPage,
// exportURL: exportGlasscExcel
},
timeList: [
{
value: 'month',
label:'月'
value: "day",
label: "日",
},
{
value: 'year',
label: '年'
}
value: "week",
label: "周",
},
{
value: "month",
label: "月",
},
{
value: "year",
label: "年",
},
],
factoryList: [
{
name: '测试',
id:1
}
],
typeList: [
{
name: '芯片',
id:0,
},
{
name: '标准组件',
name: "瑞昌",
id: 1,
},
{
name: 'BIPV产品',
name: "邯郸",
id: 2,
},
],
typeList: [
{
name: "芯片",
id: 0,
},
{
name: "标准组件",
id: 1,
},
{
name: "BIPV产品",
id: 2,
},
],
formConfig: [
{
type: 'title',
label: '报表管理',
type: "title",
label: "报表管理",
},
],
tableProps: [
@ -140,69 +235,72 @@ export default {
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
{
prop: 'userName',
label: '科目',
prop: "userName",
label: "科目",
},
{
prop: 'nickName',
label: '类别',
prop: "nickName",
label: "类别",
},
{
prop: 'datas',
label: '数值',
prop: "datas",
label: "数值",
// subcomponent: row
},
{
prop: 'unit',
label: '单位',
prop: "unit",
label: "单位",
// subcomponent: row
},
{
prop: 'remark',
label: '备注',
prop: "remark",
label: "备注",
// subcomponent: row
}
},
],
timeSelect:'month',
startTimeStamp:null, //
endTimeStamp:null, //
date:'凯盛玻璃控股成员企业2024生产数据',
// reportTime: '',
startTimeStamp: '',
endTimeStamp: '',
timeSelect: "month",
startTimeStamp: null, //
endTimeStamp: null, //
date: "凯盛玻璃控股成员企业2024生产数据",
// reportTime: '',
startTimeStamp: "",
endTimeStamp: "",
tableData: [
{
userName: 'userName',
nickName: '用户名',
datas:'111111'
userName: "userName",
nickName: "用户名",
datas: "111111",
},
{
userName: 'userName',
nickName: '用户名',
datas: '111111'
userName: "userName",
nickName: "用户名",
datas: "111111",
},
{
userName: 'userName',
nickName: '用户名',
datas: '111111'
userName: "userName",
nickName: "用户名",
datas: "111111",
// subcomponent: row
}
},
],
// proLineList: [],
// all: {}
};
},
mounted() {
this.getDict()
// proLineList: [],
// all: {}
};
},
mounted() {
this.getDict();
// this.getCurrentYearFirst()
// this.getDataList()
},
},
methods: {
getYear(e) {
if (this.listQuery.reportTime[0] && e - this.listQuery.reportTime[0] > 10) {
if (
this.listQuery.reportTime[0] &&
e - this.listQuery.reportTime[0] > 10
) {
this.$message({
message: '年份起止时间不能超过十年',
type: 'warning'
message: "年份起止时间不能超过十年",
type: "warning",
});
// console.log();
}
@ -210,59 +308,67 @@ export default {
},
changeTime() {
if (this.listQuery.reportTime) {
this.createStartDate = moment(new Date(this.listQuery.reportTime[0]), 'yyyy-MM-dd hh:mm:ss');
this.createEndDate = moment(new Date(this.listQuery.reportTime[1]), 'yyyy-MM-dd hh:mm:ss');
const numDays = (new Date(this.listQuery.reportTime[1]).getTime() - new Date(this.listQuery.reportTime[0]).getTime()) / (24 * 3600 * 1000); if (numDays > 730) {
this.createStartDate = moment(
new Date(this.listQuery.reportTime[0]),
"yyyy-MM-dd hh:mm:ss"
);
this.createEndDate = moment(
new Date(this.listQuery.reportTime[1]),
"yyyy-MM-dd hh:mm:ss"
);
const numDays =
(new Date(this.listQuery.reportTime[1]).getTime() -
new Date(this.listQuery.reportTime[0]).getTime()) /
(24 * 3600 * 1000);
if (numDays > 730) {
this.$message({
message: '时间范围不能超过24个月',
type: 'warning'
message: "时间范围不能超过24个月",
type: "warning",
});
this.listQuery.reportTime = [];
this.createStartDate = '';
this.createEndDate = '';
this.createStartDate = "";
this.createEndDate = "";
}
} else {
this.createStartDate = '';
this.createEndDate = '';
this.createStartDate = "";
this.createEndDate = "";
}
},
async getDict() {
this.$refs.lineChart.initChart()
// 线
// const res = await getCorePLList();
// this.proLineList = res.data;
},
this.$refs.lineChart.initChart();
// 线
// const res = await getCorePLList();
// this.proLineList = res.data;
},
//
multipliedByHundred(str) {
console.log(str);
// console.log(str)
if ( str != 0) {
if (str != 0) {
let floatVal = parseFloat(str);
if (isNaN(floatVal)) {
return 0;
}
floatVal = Math.round(str * 10000) / 100;
let strVal = floatVal.toString();
let searchVal = strVal.indexOf('.');
let searchVal = strVal.indexOf(".");
if (searchVal < 0) {
searchVal = strVal.length;
strVal += '.';
strVal += ".";
}
while (strVal.length <= searchVal + 2) {
strVal += '0';
strVal += "0";
}
return parseFloat(strVal);
}
},
async getDataList() {
},
async getDataList() {},
add0(m) {
return m < 10 ? '0' + m : m
return m < 10 ? "0" + m : m;
},
format(shijianchuo) {
//shijianchuoparseInt
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss')
var time = moment(new Date(shijianchuo)).format("YYYY-MM-DD HH:mm:ss");
// console.log(time)
// var y = time.getFullYear();
// var m = time.getMonth() + 1;
@ -270,9 +376,9 @@ export default {
// var h = time.getHours();
// var mm = time.getMinutes();
// var s = time.getSeconds();
return time
return time;
},
// changeTime(val) {
// changeTime(val) {
// if (val) {
// // console.log(val)
// // console.log(val.setHours(7, 0, 0))
@ -284,35 +390,41 @@ export default {
// this.listQuery.reportTime[0] = this.format(val.setHours(7, 0, 1)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
// this.listQuery.reportTime[1] = this.format(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
// console.log(this.listQuery.reportTime);
// } else {
// this.listQuery.reportTime = []
// }
// },
// } else {
// this.listQuery.reportTime = []
// }
// },
//yy-mm-dd hh:mm:ss
timeFun(unixtimestamp) {
var unixtimestamp = new Date(unixtimestamp);
var year = 1900 + unixtimestamp.getYear();
var month = "0" + (unixtimestamp.getMonth() + 1);
var date = "0" + unixtimestamp.getDate();
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length)
},
buttonClick(val) {
this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined;
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.getDataList();
break;
case 'export':
this.handleExport();
break;
default:
console.log(val);
}
},
/** 导出按钮操作 */
//yy-mm-dd hh:mm:ss
timeFun(unixtimestamp) {
var unixtimestamp = new Date(unixtimestamp);
var year = 1900 + unixtimestamp.getYear();
var month = "0" + (unixtimestamp.getMonth() + 1);
var date = "0" + unixtimestamp.getDate();
return (
year +
"-" +
month.substring(month.length - 2, month.length) +
"-" +
date.substring(date.length - 2, date.length)
);
},
buttonClick(val) {
this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined;
switch (val.btnName) {
case "search":
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.getDataList();
break;
case "export":
this.handleExport();
break;
default:
console.log(val);
}
},
/** 导出按钮操作 */
handleExport() {
//
// var xlsxParam = { raw: true };
@ -344,25 +456,23 @@ export default {
// return wbout;
// //do something......
// })
},
},
},
};
</script>
<style scoped>
.blueTip::before{
.blueTip::before {
display: inline-block;
content: '';
content: "";
width: 4px;
height: 18px;
background: #0B58FF;
background: #0b58ff;
border-radius: 1px;
margin-right: 8PX;
margin-right: 8px;
margin-top: 8px;
}
.app-container {
margin: 0 16px 0;
background-color: #fff;
border-radius: 4px;
padding: 16px 16px 0;

ファイルの表示

@ -714,7 +714,7 @@ export default {
//
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 20,
username: undefined,
mobile: undefined,
status: undefined,

17154
yarn.lock

ファイル差分が大きすぎるため省略します 差分を読み込み