Compare commits

...

2 Commits

Author SHA1 Message Date
cxc
6c5de74adf 备份 2022-06-24 17:38:12 +08:00
cxc
c1a79aa727 bugfix 2022-05-30 16:56:43 +08:00
110 changed files with 2435 additions and 1637 deletions

View File

@ -40,7 +40,7 @@
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.21.0",
"clipboard": "2.0.6",
"core-js": "3.8.1",
"core-js": "^3.22.5",
"echarts": "4.9.0",
"echarts-liquidfill": "^2.0.2",
"echarts5": "npm:echarts@^5.2.2",

View File

@ -1,106 +1,118 @@
import axios from 'axios'
import { Notification, MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import axios from "axios";
import { Notification, MessageBox, Message } from "element-ui";
import store from "@/store";
import { getToken } from "@/utils/auth";
import errorCode from "@/utils/errorCode";
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 10000
})
timeout: 10000,
});
// request拦截器
service.interceptors.request.use(config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?';
for (const propName of Object.keys(config.params)) {
const value = config.params[propName];
var part = encodeURIComponent(propName) + "=";
if (value !== null && typeof(value) !== "undefined") {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
if (value[key] !== null && typeof (value[key]) !== 'undefined') {
let params = propName + '[' + key + ']';
let subPart = encodeURIComponent(params) + '=';
url += subPart + encodeURIComponent(value[key]) + '&';
service.interceptors.request.use(
(config) => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false;
if (getToken() && !isToken) {
config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数
if (config.method === "get" && config.params) {
let url = config.url + "?";
for (const propName of Object.keys(config.params)) {
const value = config.params[propName];
var part = encodeURIComponent(propName) + "=";
if (value !== null && typeof value !== "undefined") {
if (typeof value === "object") {
for (const key of Object.keys(value)) {
if (value[key] !== null && typeof value[key] !== "undefined") {
let params = propName + "[" + key + "]";
let subPart = encodeURIComponent(params) + "=";
url += subPart + encodeURIComponent(value[key]) + "&";
}
}
} else {
url += part + encodeURIComponent(value) + "&";
}
} else {
url += part + encodeURIComponent(value) + "&";
}
}
url = url.slice(0, -1);
config.params = {};
config.url = url;
}
url = url.slice(0, -1);
config.params = {};
config.url = url;
return config;
},
(error) => {
console.log(error);
Promise.reject(error);
}
return config
}, error => {
console.log(error)
Promise.reject(error)
})
);
// 响应拦截器
service.interceptors.response.use(res => {
service.interceptors.response.use(
(res) => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
const msg = errorCode[code] || res.data.msg || errorCode["default"];
if (code === 401) {
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
MessageBox.confirm(
"登录状态已过期,您可以继续留在该页面,或者重新登录",
"系统提示",
{
confirmButtonText: "重新登录",
cancelButtonText: "取消",
type: "warning",
}
).then(() => {
store.dispatch('LogOut').then(() => {
location.href = '/index';
)
.then(() => {
store.dispatch("LogOut").then(() => {
location.href = "/index";
});
})
}).catch(() => {});
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
.catch(() => {});
return Promise.reject("无效的会话,或者会话已过期,请重新登录。");
} else if (code === 500) {
Message({
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
type: "error",
});
return Promise.reject(new Error(msg));
} else if (code !== 200) {
Notification.error({
title: msg
})
return Promise.reject('error')
title: msg,
});
return Promise.reject("error");
} else {
return res.data
return res.data;
}
},
error => {
console.log('err' + error)
(error) => {
console.log("err" + error);
let { message } = error;
if (message == "Network Error") {
message = "后端接口连接异常";
}
else if (message.includes("timeout")) {
} else if (message.includes("timeout")) {
message = "系统接口请求超时";
}
else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常";
} else if (message.includes("Request failed with status code")) {
console.dir(error);
message =
error.config.url +
"系统接口" +
message.substr(message.length - 3) +
"异常";
}
Message({
message: message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
type: "error",
duration: 5 * 1000,
});
return Promise.reject(error);
}
)
);
export default service
export default service;

View File

@ -61,7 +61,7 @@ export default {
} else {
// 实例化socket
this.socket = new WebSocket(this.path)
console.log(this.socket)
// console.log(this.socket)
// 监听socket连接
this.socket.onopen = this.open
// 监听socket错误信息
@ -77,9 +77,9 @@ export default {
console.log('连接错误')
},
getMessage (msg) {
console.log('getMessage')
// console.log('getMessage')
const data = JSON.parse(msg.data)
console.log(data)
// console.log(data)
if (data.isRefresh) {
console.log('服务端数据更新');
this.isRefresh = true;

View File

@ -33,7 +33,7 @@ export default {
const { width, height } = this;
const wh = window.innerHeight / height;
const ww = window.innerWidth / width;
console.log(ww < wh ? ww : wh);
// console.log(ww < wh ? ww : wh);
return ww < wh ? ww : wh;
},
setScale() {

View File

@ -33,7 +33,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -18,7 +18,7 @@ import resize from '../../dashboard/mixins/resize'
import 'echarts-liquidfill'
export default {
mixins: [resize],
name: 'bottom1',
name: 'bottom2',
components: {
container4,
},
@ -32,7 +32,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -58,7 +58,7 @@
<div class="box">
<i>{{ handleMillion(val.completedChargeQuantity) }}/</i
><i class="num">{{ handleMillion(val.targetChargeQuantity) }}</i
><span class="num2">亿件</span>
><span class="num2">千吨</span>
</div>
<!-- <div style="width: 100%">
<progressBar
@ -103,8 +103,8 @@ require("echarts/theme/macarons"); // echarts theme
import resize from "../../dashboard/mixins/resize";
export default {
name: "Center1",
mixins: [resize],
name: "left1",
components: {
container3,
rocketTit,

View File

@ -100,7 +100,7 @@ import resize from "../../dashboard/mixins/resize";
import request from "@/utils/request";
export default {
mixins: [resize],
name: "left1",
name: "center2",
components: {
container4,
rocketTit,
@ -138,7 +138,7 @@ export default {
url: "/hx/cockpitOverview/todayDynamics",
method: "get",
}).then((res) => {
console.log(res);
// console.log(res);
if (200 == res.code) {
this.month = res.data.month;
this.today = res.data.today;

View File

@ -11,7 +11,7 @@
layout="prev, pager, next"
background
:total="total"
:page-size="7"
:page-size="pageSize"
:current-page.sync="currentPage1"
@current-change="handleCurrentChange"
>
@ -67,7 +67,8 @@ export default {
data() {
return {
currentPage1: 1,
total: 30,
total: 0,
pageSize: 4,
titData: [],
valData: [],
time: null,
@ -103,10 +104,13 @@ export default {
},
methods: {
start() {
// 每隔一段时间,页码+1判断是否到最后一页是则将页码重设为1
this.time = setInterval(() => {
let size = this.currentPage1 + 1;
if (size * 6 > this.total) size = 1;
this.handleCurrentChange(size);
this.currentPage1 = this.currentPage1 + 1;
this.handleCurrentChange(this.currentPage1);
if (this.currentPage1 >= this.total / this.pageSize) {
this.currentPage1 = 0;
}
}, 5000);
},
end() {
@ -127,10 +131,22 @@ export default {
method: "get",
}).then((res) => {
this.res = res.data;
// console.log(res.data);
// TODO: 分页
this.total = this.res.list.length;
for (let i = 0; i < this.res.list.length; i++) {
const item = this.res.list[i];
this.titData.push(item.indicator_name);
this.valData.push({ value: item.cate, name: item.indicator_name });
this.valData.push({
value: item.cate,
name: item.indicator_name,
tooltip: {
trigger: "item",
formatter: `{b}</br>目标数:${item.targetTasks}</br>完成数:${
item.completedTasks
}<br>完成率:${item.cate.toFixed(2)}%`,
},
});
}
this.setPageData(val);
});
@ -139,16 +155,23 @@ export default {
setPageData(val) {
let titData = [];
let valData = [];
if (!val) {
titData = this.titData.slice(0, 7);
// 如果没有传入页码
// titData = this.titData.slice(0, 7);
titData = this.titData.slice(0, this.pageSize);
// valData = this.valData.slice(0, 7);
valData = this.valData;
} else {
titData = this.titData.slice((val - 1) * 7, 7 * val);
// titData = this.titData.slice((val - 1) * 7, 7 * val);
titData = this.titData.slice(
(val - 1) * this.pageSize,
this.pageSize * val
);
// valData = this.valData.slice((val - 1) * 7, 7 * val);
valData = this.valData;
}
// console.log(titData, valData, val);
const calcAverageValue = (data, name) => {
const items = data.filter((d) => d.name === name);
return items.length
@ -293,7 +316,7 @@ export default {
color: ["#ccc", "red"],
yAxis: [
{
name: "",
name: "万元",
splitLine: {
show: true,
// 改变轴线颜色

View File

@ -86,7 +86,7 @@ export default {
type: "value",
name: "万元",
min: 0,
max: 250,
// max: 250,
interval: 50,
axisLabel: {
formatter: "{value}",
@ -106,7 +106,7 @@ export default {
{
type: "value",
min: 0,
max: 50,
// max: 50,
interval: 5,
axisLabel: {
formatter: "{value} %",
@ -222,6 +222,8 @@ export default {
FORECASTPROFIT.push(item.FORECASTPROFIT);
TARGETPROFIT.push((item.COMPLETEDPROFIT / item.TARGETPROFIT) * 100);
}
// console.log(COMPLETEDPROFIT);
// console.log(Math.max(...COMPLETEDPROFIT, ...FORECASTPROFIT));
this.chart.setOption({
tooltip: {
trigger: "axis",
@ -265,8 +267,12 @@ export default {
type: "value",
name: "万元",
min: 0,
max: 250,
interval: 50,
// max: 250,
interval:
Math.ceil(
Math.max(...COMPLETEDPROFIT, ...FORECASTPROFIT) / 8 / 50
) * 50,
// splitNumber: 5,
axisLabel: {
formatter: "{value}",
},
@ -402,4 +408,4 @@ export default {
color: rgba(16, 152, 255, 1);
line-height: 35px;
}
</style>
</style>

View File

@ -10,7 +10,9 @@
<div class="box">
<span style="font-size: 25px; margin-right: 3px">·</span>
<span>已完成任务/完成率</span>
<i class="num">{{ rate.completedTotal }}/{{ rate.rate }}%</i>
<i class="num"
>{{ rate.completedTotal }}/{{ rate.rate.toFixed(2) }}%</i
>
<progressBar :percentage="rate.rate" />
</div>
</div>
@ -40,7 +42,7 @@ import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
export default {
// mixins: [resize],
name: "left1",
name: "right1",
components: {
rocketTit,
container2,
@ -76,7 +78,7 @@ export default {
method: "get",
}).then((res) => {
if (200 == res.code) {
this.rate = res.data.rate;
if (res.data.rate) this.rate = res.data.rate;
let valData = [];
let titData = [];
for (let i = 0; i < res.data.list.length; i++) {
@ -173,7 +175,7 @@ export default {
this.chart1.setOption({
tooltip: {
trigger: "axis",
formatter: "{a1}<br/>{b1}{c1}",
formatter: "{b}</br>{a0}{c0}</br>{a1}{c1}</br>{a2}{c2}",
},
legend: {
data: ["预测", "实际", "目标完成率"],

View File

@ -61,7 +61,7 @@ export default {
url: "/hx/cockpitOverview/chargeQuantityList",
method: "get",
}).then((res) => {
console.log(res);
// console.log(res);
let titData = [];
let actualQuantity = [];
@ -121,7 +121,7 @@ export default {
yAxis: [
{
type: "value",
name: "万元",
name: "",
min: 0,
axisLabel: {
formatter: "{value}",

View File

@ -33,7 +33,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -32,7 +32,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -26,7 +26,7 @@ import rocketTit from '../components/rocketTit/index.vue'
import container1 from '../components/container1/index.vue'
import left1 from './left1.vue'
import left2 from './left2.vue'
import left2 from './left2New.vue'
import center1 from './center.vue'
import right1 from './right1.vue'
import bottom1 from './bottom1.vue'

View File

@ -125,8 +125,9 @@
"
>
<el-col style="text-align: center" :span="3">序号</el-col>
<el-col style="text-align: center" :span="7">责任令</el-col>
<el-col style="text-align: center" :span="7">部门</el-col>
<el-col style="text-align: center" :span="7">项目名称</el-col>
<el-col style="text-align: center" :span="7">计划名称</el-col>
<!-- <el-col style="text-align: center" :span="7">部门</el-col> -->
<el-col style="text-align: center" :span="7">完成情况</el-col>
</el-row>
</el-col>
@ -145,18 +146,24 @@
<el-col style="text-align: center" :span="3">{{
item.id
}}</el-col>
<el-col
style="text-align: center"
:title="item.projectName"
:span="7"
>{{ item.projectName }}</el-col
>
<el-col
style="text-align: center"
:title="item.workPlanName"
:span="7"
>{{ item.workPlanName }}</el-col
>
<el-col
<!-- <el-col
style="text-align: center"
:title="item.deptName"
:span="7"
>{{ item.deptName }}</el-col
>
> -->
<el-col style="text-align: center" :span="7">
<section class="box">
<span

View File

@ -1,341 +1,374 @@
<template>
<div>
<container3 title="应用系统">
<div style="height: 100%; width: 100%" ref="chart"></div>
</container3>
</div>
<div>
<container3 title="应用系统">
<div style="height: 100%; width: 100%" ref="chart"></div>
</container3>
</div>
</template>
<script>
import scalseBox from '../components/scaleBox.vue'
import bigScreenHead from '../components/bigScreenHead/index.vue'
import rocketTit from '../components/rocketTit/index.vue'
import container3 from './components/container3/index.vue'
import bigScreenTabs from '../components/bigScreenTabs/index.vue'
import colorList from '@/utils/colorPalette'
import vueSeamlessScroll from 'vue-seamless-scroll'
import scalseBox from "../components/scaleBox.vue";
import bigScreenHead from "../components/bigScreenHead/index.vue";
import rocketTit from "../components/rocketTit/index.vue";
import container3 from "./components/container3/index.vue";
import bigScreenTabs from "../components/bigScreenTabs/index.vue";
import colorList from "@/utils/colorPalette";
import vueSeamlessScroll from "vue-seamless-scroll";
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from '../../dashboard/mixins/resize'
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
import resize from "../../dashboard/mixins/resize";
export default {
mixins: [resize],
name: 'left2',
components: {
scalseBox,
bigScreenHead,
bigScreenTabs,
rocketTit,
container3,
vueSeamlessScroll,
},
data() {
return {
colorList,
mixins: [resize],
name: "left2",
components: {
scalseBox,
bigScreenHead,
bigScreenTabs,
rocketTit,
container3,
vueSeamlessScroll,
},
data() {
return {
colorList,
dateRange: [],
chart: null,
}
},
mounted() {
this.$nextTick(() => {
this.initChart()
})
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
initChart() {
this.request({
url: '/hx/informationManagement/getHxSystemRadarPic',
method: 'get',
}).then(({ data }) => {
this.chart = echarts.init(this.$refs.chart)
this.setOptions(data)
})
},
setOptions(resData) {
let newList = [] // 新的累计数组
let newTotal = []
let titList = [] // 标题title
let titData = [] // 雷达指标名称
let month = [] // 当月
let monthTotal = [] // 当月累计
for (let i = 0; i < resData.length; i++) {
const item = resData[i]
titList.push(item.systemName + '系统')
newTotal.push([])
newList.push([])
titData.push([])
month.push([])
monthTotal.push([])
for (let j = 0; j < item.month.length; j++) {
const item2 = item.month[j]
// newList[i] = newList[i].concat(item2.indexName)
newList[i].push(item2.indexName)
titData[i].push({
name: item2.indexName,
axisLabel: {
show: j == 0 ? true : false,
},
})
month[i].push(item2.allount)
}
// 对累计数组排序并去除无关指标
for (let m = 0; m < newList[i].length; m++) {
const item4 = newList[i][m]
for (let k = 0; k < item.total.length; k++) {
const item3 = item.total[k]
if (item4 == item3.indexName) {
newTotal[i].push(item3)
}
}
}
item.total = newTotal[i]
for (let j = 0; j < item.total.length; j++) {
const item2 = item.total[j]
if (titData[i][j]) {
// Object.assign(titData[i][j], { max: item2.allount })
}
if (newList[i].indexOf(item2.indexName) !== -1) {
monthTotal[i].push(item2.allount)
}
// monthTotal[i].push(item2.allount)
}
}
this.chart.setOption({
title: [
{
text: titList[0],
left: '9%',
bottom: 5,
textStyle: {
color: '#fff',
fontStyle: 'normal',
fontWeight: '600',
fontFamily: 'sans-serif',
fontSize: 18,
},
},
{
text: titList[1],
left: '34%',
bottom: 5,
textStyle: {
color: '#fff',
fontStyle: 'normal',
fontWeight: '600',
fontFamily: 'sans-serif',
fontSize: 18,
},
},
{
text: titList[2],
left: '58%',
bottom: 5,
textStyle: {
color: '#fff',
fontStyle: 'normal',
fontWeight: '600',
fontFamily: 'sans-serif',
fontSize: 18,
},
},
{
text: titList[3],
left: '85%',
bottom: 5,
textStyle: {
color: '#fff',
fontStyle: 'normal',
fontWeight: '600',
fontFamily: 'sans-serif',
fontSize: 18,
},
},
],
tooltip: {
trigger: 'axis',
},
legend: {
left: 'center',
data: ['当月', '累积'],
textStyle: {
color: '#fff',
},
},
color: ['#5B8FF9', '#5AD8A6'],
radar: [
{
indicator: titData[0],
// indicator: [
// { name: '登陆频次', max: 6500, axisLabel: { show: true }, color: '#fff' },
// { name: '指标二', max: 16000, color: '#fff' },
// { name: '指标三', max: 30000, color: '#fff' },
// { name: '指标四', max: 38000, color: '#fff' },
// { name: '指标五', max: 52000, color: '#fff' },
// { name: '指标六', max: 25000, color: '#fff' },
// ],
center: ['12.5%', '50%'],
radius: 70,
// name: {
// // (圆外的标签)雷达图每个指示器名称的配置项。
// textStyle: {
// color: '#fff',
// },
// },
// 最大值
// axisLabel: {
// color: '#fff',
// },
},
{
indicator: titData[1],
radius: 70,
center: ['37.5%', '50%'],
},
{
indicator: titData[2],
center: ['62.5%', '50%'],
radius: 70,
},
{
indicator: titData[3],
center: ['87.5%', '50%'],
radius: 70,
},
],
series: [
...titData.map((e, index) => {
return {
type: 'radar',
radarIndex: index,
data: [
{
value: month[index],
name: '当月',
},
{
value: monthTotal[index],
name: '累积',
},
],
}
}),
// {
// type: 'radar',
// data: [
// {
// value: month[0],
// name: '当月',
// label: {
// normal: {
// // show: true,
// color: '#fff',
// },
// },
// },
// {
// value: monthTotal[0],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 1,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 2,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 3,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
],
})
},
},
}
dateRange: [],
chart: null,
};
},
mounted() {
this.$nextTick(() => {
this.initChart();
});
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart() {
this.request({
url: "/hx/informationManagement/getHxSystemRadarPic",
method: "get",
}).then(({ data }) => {
this.chart = echarts.init(this.$refs.chart);
this.setOptions(data);
});
},
setOptions(resData) {
let newList = []; // 新的累计数组
let newTotal = [];
let titList = []; // 标题title
let titData = []; // 雷达指标名称
let month = []; // 当月
let monthTotal = []; // 当月累计
for (let i = 0; i < resData.length; i++) {
const item = resData[i];
titList.push(item.systemName + "系统");
newTotal.push([]);
newList.push([]);
titData.push([]);
month.push([]);
monthTotal.push([]);
for (let j = 0; j < item.month.length; j++) {
const item2 = item.month[j];
// newList[i] = newList[i].concat(item2.indexName)
newList[i].push(item2.indexName);
titData[i].push({
name: item2.indexName,
axisLabel: {
show: j == 0 ? true : false,
},
});
month[i].push(item2.allount);
}
// 对累计数组排序并去除无关指标
for (let m = 0; m < newList[i].length; m++) {
const item4 = newList[i][m];
for (let k = 0; k < item.total.length; k++) {
const item3 = item.total[k];
if (item4 == item3.indexName) {
newTotal[i].push(item3);
}
}
}
item.total = newTotal[i];
for (let j = 0; j < item.total.length; j++) {
const item2 = item.total[j];
if (titData[i][j]) {
// Object.assign(titData[i][j], { max: item2.allount })
}
if (newList[i].indexOf(item2.indexName) !== -1) {
monthTotal[i].push(item2.allount);
}
// monthTotal[i].push(item2.allount)
}
}
// console.log(titData);
// console.log(titList);
// console.log(month);
// console.log(monthTotal);
this.chart.setOption({
title: [
{
text: titList[0],
left: "9%",
bottom: 5,
textStyle: {
color: "#fff",
fontStyle: "normal",
fontWeight: "600",
fontFamily: "sans-serif",
fontSize: 18,
},
},
{
text: titList[1],
left: "34%",
bottom: 5,
textStyle: {
color: "#fff",
fontStyle: "normal",
fontWeight: "600",
fontFamily: "sans-serif",
fontSize: 18,
},
},
{
text: titList[2],
left: "58%",
bottom: 5,
textStyle: {
color: "#fff",
fontStyle: "normal",
fontWeight: "600",
fontFamily: "sans-serif",
fontSize: 18,
},
},
{
text: titList[3],
left: "85%",
bottom: 5,
textStyle: {
color: "#fff",
fontStyle: "normal",
fontWeight: "600",
fontFamily: "sans-serif",
fontSize: 18,
},
},
],
tooltip: {
trigger: "axis",
},
legend: {
left: "center",
data: ["当月", "累积"],
textStyle: {
color: "#fff",
},
},
color: ["#5B8FF9", "#5AD8A6"],
radar: titData.map((el, index) => {
console.log(el);
return el.length > 0
? {
indicator: el,
// indicator: [
// { name: '登陆频次', max: 6500, axisLabel: { show: true }, color: '#fff' },
// { name: '指标二', max: 16000, color: '#fff' },
// { name: '指标三', max: 30000, color: '#fff' },
// { name: '指标四', max: 38000, color: '#fff' },
// { name: '指标五', max: 52000, color: '#fff' },
// { name: '指标六', max: 25000, color: '#fff' },
// ],
center: [`${12.5 + index * 25}%`, "50%"],
radius: 70,
// name: {
// // (圆外的标签)雷达图每个指示器名称的配置项。
// textStyle: {
// color: '#fff',
// },
// },
// 最大值
// axisLabel: {
// color: '#fff',
// },
}
: false;
}),
// radar: [
// {
// indicator: titData[0],
// // indicator: [
// // { name: '登陆频次', max: 6500, axisLabel: { show: true }, color: '#fff' },
// // { name: '指标二', max: 16000, color: '#fff' },
// // { name: '指标三', max: 30000, color: '#fff' },
// // { name: '指标四', max: 38000, color: '#fff' },
// // { name: '指标五', max: 52000, color: '#fff' },
// // { name: '指标六', max: 25000, color: '#fff' },
// // ],
// center: ["12.5%", "50%"],
// radius: 70,
// // name: {
// // // (圆外的标签)雷达图每个指示器名称的配置项。
// // textStyle: {
// // color: '#fff',
// // },
// // },
// // 最大值
// // axisLabel: {
// // color: '#fff',
// // },
// },
// {
// indicator: titData[1],
// radius: 70,
// center: ["37.5%", "50%"],
// },
// {
// indicator: titData[2],
// center: ["62.5%", "50%"],
// radius: 70,
// },
// {
// indicator: titData[3],
// center: ["87.5%", "50%"],
// radius: 70,
// },
// ],
series: [
...titData.map((e, index) => {
return {
type: "radar",
radarIndex: index,
data: [
{
value: month[index],
name: "当月",
},
{
value: monthTotal[index],
name: "累积",
},
],
};
}),
// {
// type: 'radar',
// data: [
// {
// value: month[0],
// name: '当月',
// label: {
// normal: {
// // show: true,
// color: '#fff',
// },
// },
// },
// {
// value: monthTotal[0],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 1,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 2,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
// {
// type: 'radar',
// radarIndex: 3,
// data: [
// {
// value: [4200, 3000, 20000, 35000, 50000, 18000],
// name: '当月',
// },
// {
// value: [5000, 14000, 28000, 26000, 42000, 21000],
// name: '累积',
// },
// ],
// },
],
});
},
},
};
</script>
<style lang="scss" scoped>
.warp-scroll {
height: 215px;
width: 100%;
margin: 0 auto;
overflow: hidden;
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
display: flex;
justify-content: space-between;
font-size: 15px;
}
li {
display: block;
height: 42px;
line-height: 42px;
background: #2a437d;
opacity: 0.6;
// box-shadow: 0px 1px 0px 0px rgba(139, 177, 237, 0.5);
margin-bottom: 1px;
img {
vertical-align: sub;
margin-right: 5px;
}
}
}
height: 215px;
width: 100%;
margin: 0 auto;
overflow: hidden;
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
display: flex;
justify-content: space-between;
font-size: 15px;
}
li {
display: block;
height: 42px;
line-height: 42px;
background: #2a437d;
opacity: 0.6;
// box-shadow: 0px 1px 0px 0px rgba(139, 177, 237, 0.5);
margin-bottom: 1px;
img {
vertical-align: sub;
margin-right: 5px;
}
}
}
}
.box {
display: flex;
justify-content: center;
align-items: center;
display: flex;
justify-content: center;
align-items: center;
}
.wrap {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
}
</style>

View File

@ -0,0 +1,202 @@
<template>
<div>
<container3 title="应用系统">
<div style="height: 100%; width: 100%" ref="chart"></div>
</container3>
</div>
</template>
<script>
import scalseBox from "../components/scaleBox.vue";
import bigScreenHead from "../components/bigScreenHead/index.vue";
import rocketTit from "../components/rocketTit/index.vue";
import container3 from "./components/container3/index.vue";
import bigScreenTabs from "../components/bigScreenTabs/index.vue";
import colorList from "@/utils/colorPalette";
import vueSeamlessScroll from "vue-seamless-scroll";
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
import resize from "../../dashboard/mixins/resize";
export default {
mixins: [resize],
name: "left2",
components: {
scalseBox,
bigScreenHead,
bigScreenTabs,
rocketTit,
container3,
vueSeamlessScroll,
},
data() {
return {
colorList,
dateRange: [],
chart: null,
};
},
mounted() {
this.$nextTick(() => {
this.initChart();
});
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart() {
this.request({
url: "/hx/informationManagement/getHxSystemRadarPic",
method: "get",
}).then(({ data }) => {
this.chart = echarts.init(this.$refs.chart);
this.setOptions(data);
});
},
setOptions(resData) {
const radarTitleList = []; //雷达标题列表
let radarIndexNameList = []; // 雷达指标列表
const radarMonthDataList = []; // 雷达当月数据列表
const radarTotalDataList = []; // 雷达当月数据列表
for (const radarDataItem of resData) {
radarTitleList.push(`${radarDataItem.systemName}系统`);
const radarMonthIndexNameList = []; // 当月指标列表
const radarMonthTotalIndexNameList = []; // 累计指标列表
radarIndexNameList.push(
radarDataItem.total.map((el, idx) => {
return {
name: el.indexName,
axisLabel: {
show: idx === 0 ? true : false,
},
};
})
);
radarMonthDataList.push(
radarDataItem.month.map((el) => {
return el.allount;
})
);
radarTotalDataList.push(
radarDataItem.total.map((el) => {
return el.allount;
})
);
}
this.chart.setOption({
title: radarTitleList.map((el, index) => {
return {
text: el,
left: `${9 + 25 * index}%`,
bottom: 5,
textStyle: {
color: "#fff",
fontStyle: "normal",
fontWeight: "600",
fontFamily: "sans-serif",
fontSize: 18,
},
};
}),
tooltip: {
trigger: "axis",
},
legend: {
left: "center",
data: ["当月", "累积"],
textStyle: {
color: "#fff",
},
},
color: ["#5B8FF9", "#5AD8A6"],
radar: radarIndexNameList.map((el, index) => {
// // console.log(el);
return el.length > 0
? {
indicator: el,
center: [`${12.5 + index * 25}%`, "50%"],
radius: 70,
}
: false;
}),
series: [
...radarIndexNameList.map((e, index) => {
// console.log(e);
// console.log("----" + index);
// console.log(radarMonthDataList[index]);
return {
type: "radar",
radarIndex: index,
data: [
{
value: radarMonthDataList[index],
name: "当月",
},
{
value: radarTotalDataList[index],
name: "累积",
},
],
};
}),
],
});
},
},
};
</script>
<style lang="scss" scoped>
.warp-scroll {
height: 215px;
width: 100%;
margin: 0 auto;
overflow: hidden;
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
display: flex;
justify-content: space-between;
font-size: 15px;
}
li {
display: block;
height: 42px;
line-height: 42px;
background: #2a437d;
opacity: 0.6;
// box-shadow: 0px 1px 0px 0px rgba(139, 177, 237, 0.5);
margin-bottom: 1px;
img {
vertical-align: sub;
margin-right: 5px;
}
}
}
}
.box {
display: flex;
justify-content: center;
align-items: center;
}
.wrap {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
}
</style>

View File

@ -73,7 +73,7 @@
<el-col style="text-align: center" :span="4">
<section class="box">
<span
v-if="item.status == '已完成'"
v-if="item.completed == '已完成'"
style="
color: #6fd1b4;
font-size: 25px;
@ -90,7 +90,7 @@
"
>·</span
>
<span v-if="item.status == '已完成'">已完成</span>
<span v-if="item.completed == '已完成'">已完成</span>
<span v-else>未完成</span>
</section>
</el-col>
@ -111,6 +111,7 @@ import bigScreenTabs from "../components/bigScreenTabs/index.vue";
import progressBar from "@/views/bigScreen/components/progress/index.vue";
import colorList from "@/utils/colorPalette";
import vueSeamlessScroll from "vue-seamless-scroll";
// import {Liquid} from '@antv/g2plot';
// import resize from '../../dashboard/mixins/resize'
import echarts from "echarts";
@ -128,7 +129,7 @@ export default {
data() {
return {
chart: null,
value: new Date().getFullYear() + "-" + (new Date().getMonth() + 1),
value: new Date().getFullYear() + "-" + new Date().getMonth() + 1,
chart2: null,
data: [
{ value: 154, name: "类别一" },
@ -176,6 +177,11 @@ export default {
],
};
},
// computed:{
// value(){
// return new Date().getFullYear() + "-" + new Date().getMonth() + 1,
// }
// },
mounted() {
this.$nextTick(() => {
this.initChart();
@ -301,14 +307,24 @@ export default {
},
],
series: [
// {
// name: "完成率",
// type: "bar",
// z: "-1",
// barGap: "-75%",
// barWidth: 30,
// itemStyle: {
// color: "rgba(85, 197, 162, .3)",
// },
// yAxisIndex: 1,
// data: rate,
// },
{
name: "完成率",
type: "bar",
type: "line",
z: "-1",
barGap: "-75%",
barWidth: 30,
itemStyle: {
color: "rgba(85, 197, 162, .3)",
color: "#ffee8a",
},
yAxisIndex: 1,
data: rate,
@ -508,6 +524,16 @@ export default {
},
},
created() {
const month = new Date().getMonth() + 1;
let prevMonth = "";
if (month === 1) {
prevMonth = "12";
} else if (month <= 10) {
prevMonth = `0${month - 1}`;
} else {
prevMonth = `${month - 1}`;
}
this.value = `${new Date().getFullYear()}-${prevMonth}`;
this.getData();
},
};

View File

@ -125,7 +125,8 @@
</div>
</div>
<div class="center_box">
<rocketTit>经营指标完成率</rocketTit>
<rocketTit v-if="index2 === 0">部门收入完成率</rocketTit>
<rocketTit v-else>经营指标完成率</rocketTit>
<el-date-picker
v-model="month"
value-format="yyyy-MM"
@ -138,7 +139,7 @@
<bigScreenTabs
slot="datePicker"
v-model="index2"
:titleArr="['全年', '月']"
:titleArr="['全年', '月']"
></bigScreenTabs>
<div
style="height: 182px; width: 100%"

View File

@ -276,7 +276,7 @@ export default {
params: { type: type },
}).then((res) => {
if (200 == res.code) {
console.log(res);
// console.log(res);
if (type == 1) {
this.scrollList1 = res.data.list;
this.listData = Array(this.scrollList1.length).fill(0);

View File

@ -501,7 +501,7 @@ export default {
// }
}
}
console.log(newRate);
// console.log(newRate);
this.chart2 = echarts5.init(this.$refs.chart2);
this.chart2.setOption({
color: colorList,

View File

@ -33,7 +33,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -32,7 +32,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -5,7 +5,7 @@
<div class="data-item">
<div><span style="font-weight: bold">质量体系整改率</span></div>
<div class="box">
<span>{{ percentage }}%</span>
<span>{{ (percentage * 100).toFixed(2) }}%</span>
</div>
<!-- <div style="width: 100%">
<progressBar :percentage="percentage" />
@ -59,7 +59,7 @@
<div class="data-item">
<div><span style="font-weight: bold">质量计划完成率</span></div>
<div class="box">
<span>{{ dataInfo.planCompleteRate.toFixed(2) }}</span
<span>{{ (dataInfo.planCompleteRate * 100).toFixed(2) }}</span
>%<span style="color: #55c5a2; margin: 0 5px; font-size: 16px">{{
dataInfo.qualityPlanCompleteTotal
}}</span>
@ -71,7 +71,7 @@
<div class="data-item">
<div><span style="font-weight: bold">质量检查完成率</span></div>
<div class="box">
<span>{{ dataInfo.checkCompleteRate.toFixed(2) }}</span
<span>{{ (dataInfo.checkCompleteRate * 100).toFixed(2) }}</span
>%<span style="color: #55c5a2; margin: 0 5px; font-size: 16px">{{
dataInfo.qualityNotificationCompleteTotal
}}</span>

View File

@ -1,310 +1,312 @@
<template>
<div>
<container3 title="质量体系">
<div class="wrap">
<el-row class="content1" style="height: 100%">
<el-col :span="8" style="height: 100%">
<div style="height: 100%; width: 100%" ref="chart2"></div>
</el-col>
<el-col :span="16" style="height: 100%">
<div style="height: 100%; width: 100%" ref="chart"></div>
</el-col>
</el-row>
</div>
</container3>
</div>
<div>
<container3 title="质量体系">
<div class="wrap">
<el-row class="content1" style="height: 100%">
<el-col :span="8" style="height: 100%">
<div style="height: 100%; width: 100%" ref="chart2"></div>
</el-col>
<el-col :span="16" style="height: 100%">
<div style="height: 100%; width: 100%" ref="chart"></div>
</el-col>
</el-row>
</div>
</container3>
</div>
</template>
<script>
import scalseBox from '../components/scaleBox.vue'
import bigScreenHead from '../components/bigScreenHead/index.vue'
import rocketTit from '../components/rocketTit/index.vue'
import container3 from './components/container3/index.vue'
import bigScreenTabs from '../components/bigScreenTabs/index.vue'
import colorList from '@/utils/colorPalette'
import { blueColorList, greenColorList, yelloColorList } from '@/utils/gradualColor'
import vueSeamlessScroll from 'vue-seamless-scroll'
import scalseBox from "../components/scaleBox.vue";
import bigScreenHead from "../components/bigScreenHead/index.vue";
import rocketTit from "../components/rocketTit/index.vue";
import container3 from "./components/container3/index.vue";
import bigScreenTabs from "../components/bigScreenTabs/index.vue";
import colorList from "@/utils/colorPalette";
import {
blueColorList,
greenColorList,
yelloColorList,
} from "@/utils/gradualColor";
import vueSeamlessScroll from "vue-seamless-scroll";
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from '../../dashboard/mixins/resize'
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
import resize from "../../dashboard/mixins/resize";
export default {
mixins: [resize],
name: 'left2',
components: {
scalseBox,
bigScreenHead,
bigScreenTabs,
rocketTit,
container3,
vueSeamlessScroll,
},
data() {
return {
index: 0,
colorList,
mixins: [resize],
name: "left2",
components: {
scalseBox,
bigScreenHead,
bigScreenTabs,
rocketTit,
container3,
vueSeamlessScroll,
},
data() {
return {
index: 0,
colorList,
chart: null,
chart2: null,
series: [],
}
},
mounted() {
this.$nextTick(() => {
this.initChart()
this.initLine()
})
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
initChart() {
this.request({
url: '/hx/qualityAssurance/getQualitySystem/2',
method: 'get',
}).then(({ data: resData }) => {
let newData = []
let source = []
let product = ['product']
for (let i = 0; i < resData.allSystem.length; i++) {
const element = resData.allSystem[i]
product.push(element)
this.series.push({ type: 'scatter' })
}
// console.log(product)
chart: null,
chart2: null,
series: [],
};
},
mounted() {
this.$nextTick(() => {
this.initChart();
this.initLine();
});
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart() {
this.request({
url: "/hx/qualityAssurance/getQualitySystem/2",
method: "get",
}).then(({ data: resData }) => {
let newData = [];
let source = [];
let product = ["product"];
for (let i = 0; i < resData.allSystem.length; i++) {
const element = resData.allSystem[i];
product.push(element);
this.series.push({ type: "scatter" });
}
const tempList = resData.allList.map((el) => {
return resData.allSystem.map((sys) => {
return {
systemName: sys,
total: el.list.find((item) => {
return item.systemName === sys;
})
? el.list.find((item) => {
return item.systemName === sys;
}).total
: undefined,
};
});
});
// console.log(source);
// console.log(product);
tempList.forEach((el) => {
source.push(
el.map((item) => {
return item.total;
})
);
});
for (let i = 0; i < resData.allList.length; i++) {
const item = resData.allList[i]
for (let k = 0; k < resData.allSystem.length; k++) {
const item3 = resData.allSystem[k]
if (!item['list'][k]) {
item['list'][k] = {
total: 0,
systemName: item3,
}
}
}
for (let j = 0; j < item['list'].length; j++) {
const item2 = item['list'][j]
// console.log(j)
// console.log(item2)
// console.log(source[j])
if (source[j]) {
source[j].push(item2.total)
} else {
source[j] = []
source[j].push(item2.total)
}
}
}
for (let i = 0; i < resData.allDept.length; i++) {
const item = resData.allDept[i]
source[i].unshift(item)
}
source.unshift(product)
// console.log(source)
// console.log(newData)
this.chart = echarts.init(this.$refs.chart)
this.chart.setOption({
legend: {
textStyle: {
color: '#fff',
},
right: '10%',
top: '3%',
data: resData.allSystem,
},
tooltip: {},
color: this.colorList,
grid: {
left: '8%',
top: '10%',
},
dataset: {
source,
},
xAxis: {
type: 'category',
// splitLine: {
// lineStyle: {
// type: 'dashed',
// },
// },
splitLine: {
show: false, //不显示网格线
},
splitArea: {
show: false, //不显示网格区域
},
axisLine: {
lineStyle: {
color: 'rgb(255, 255, 255)',
},
},
},
yAxis: {
type: 'value',
scale: true,
splitLine: {
show: false, //不显示网格线
},
splitArea: {
show: false, //不显示网格区域
},
axisLine: {
lineStyle: {
color: 'rgb(255, 255, 255)',
},
},
},
series: this.series,
})
})
},
initLine() {
this.request({
url: '/hx/qualityAssurance/getQualitySystem/1',
method: 'get',
}).then(({ data }) => {
this.chart2 = echarts.init(this.$refs.chart2)
this.setOptions2(data)
})
},
setOptions2(resData) {
resData.elementsList.map(item => {
item['value'] = item.total
})
let newList = []
for (const k in resData.reviewList[0]) {
let str = ''
if (k == 'externalTotal') {
str = '外审'
} else if (k == 'internalTotal') {
str = '内审'
} else {
str = '第三方审核'
}
newList.push({
value: resData.reviewList[0][k],
name: str,
})
}
// console.log(newList)
this.chart2.setOption({
tooltip: {
trigger: 'item',
},
legend: {
top: '5%',
right: '5%',
orient: 'vertical',
// left: 'right',
textStyle: {
color: '#fff', //legend字体颜色
},
},
series: [
{
name: '',
type: 'pie',
radius: ['60%', '80%'],
center: ['30%', '50%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center',
},
emphasis: {
label: {
show: false,
fontSize: '40',
fontWeight: 'bold',
},
},
labelLine: {
show: false,
},
data: resData.elementsList,
color: blueColorList,
},
{
name: '',
type: 'pie',
radius: ['35%', '55%'],
center: ['30%', '50%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center',
},
emphasis: {
label: {
show: false,
fontSize: '40',
fontWeight: 'bold',
},
},
labelLine: {
show: false,
},
data: newList,
color: greenColorList,
},
],
})
},
},
}
for (let i = 0; i < resData.allDept.length; i++) {
// debugger;
const item = resData.allDept[i];
source[i].unshift(item);
}
source.unshift(product);
// console.log(source);
// // console.log(newData)
this.chart = echarts.init(this.$refs.chart);
this.chart.setOption({
legend: {
textStyle: {
color: "#fff",
},
right: "10%",
top: "3%",
data: resData.allSystem,
},
tooltip: {},
color: this.colorList,
grid: {
left: "8%",
top: "10%",
},
dataset: {
source,
},
xAxis: {
type: "category",
// splitLine: {
// lineStyle: {
// type: 'dashed',
// },
// },
splitLine: {
show: false, //不显示网格线
},
splitArea: {
show: false, //不显示网格区域
},
axisLine: {
lineStyle: {
color: "rgb(255, 255, 255)",
},
},
},
yAxis: {
type: "value",
// scale: true,
splitLine: {
show: false, //不显示网格线
},
splitArea: {
show: false, //不显示网格区域
},
axisLine: {
lineStyle: {
color: "rgb(255, 255, 255)",
},
},
},
series: this.series,
});
// // console.log(this.$refs.chart.dataset);
});
},
initLine() {
this.request({
url: "/hx/qualityAssurance/getQualitySystem/1",
method: "get",
}).then(({ data }) => {
this.chart2 = echarts.init(this.$refs.chart2);
this.setOptions2(data);
});
},
setOptions2(resData) {
resData.elementsList.map((item) => {
item["value"] = item.total;
});
let newList = [];
for (const k in resData.reviewList[0]) {
let str = "";
if (k == "externalTotal") {
str = "外审";
} else if (k == "internalTotal") {
str = "内审";
} else {
str = "第三方审核";
}
newList.push({
value: resData.reviewList[0][k],
name: str,
});
}
// // console.log(newList)
this.chart2.setOption({
tooltip: {
trigger: "item",
},
legend: {
top: "5%",
right: "5%",
orient: "vertical",
// left: 'right',
textStyle: {
color: "#fff", //legend字体颜色
},
},
series: [
{
name: "",
type: "pie",
radius: ["60%", "80%"],
center: ["30%", "50%"],
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
emphasis: {
label: {
show: false,
fontSize: "40",
fontWeight: "bold",
},
},
labelLine: {
show: false,
},
data: resData.elementsList,
color: blueColorList,
},
{
name: "",
type: "pie",
radius: ["35%", "55%"],
center: ["30%", "50%"],
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
emphasis: {
label: {
show: false,
fontSize: "40",
fontWeight: "bold",
},
},
labelLine: {
show: false,
},
data: newList,
color: greenColorList,
},
],
});
},
},
};
</script>
<style lang="scss" scoped>
.warp-scroll {
height: 215px;
width: 100%;
margin: 0 auto;
overflow: hidden;
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
display: flex;
justify-content: space-between;
font-size: 15px;
}
li {
display: block;
height: 42px;
line-height: 42px;
background: #2a437d;
opacity: 0.6;
// box-shadow: 0px 1px 0px 0px rgba(139, 177, 237, 0.5);
margin-bottom: 1px;
img {
vertical-align: sub;
margin-right: 5px;
}
}
}
height: 215px;
width: 100%;
margin: 0 auto;
overflow: hidden;
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
display: flex;
justify-content: space-between;
font-size: 15px;
}
li {
display: block;
height: 42px;
line-height: 42px;
background: #2a437d;
opacity: 0.6;
// box-shadow: 0px 1px 0px 0px rgba(139, 177, 237, 0.5);
margin-bottom: 1px;
img {
vertical-align: sub;
margin-right: 5px;
}
}
}
}
.box {
display: flex;
justify-content: center;
align-items: center;
display: flex;
justify-content: center;
align-items: center;
}
.wrap {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
}
</style>

View File

@ -44,7 +44,7 @@
>
<el-col style="text-align: center" :span="4">序号</el-col>
<el-col style="text-align: center" :span="8">部门</el-col>
<el-col style="text-align: center" :span="12">作业内容</el-col>
<el-col style="text-align: center" :span="12">案例名称</el-col>
</el-row>
</el-col>
<vue-seamless-scroll
@ -68,7 +68,7 @@
style="text-align: center"
:title="item.faultRevelation"
:span="12"
>{{ item.faultRevelation }}</el-col
>{{ item.remark }}</el-col
>
</el-row>
</li>
@ -679,7 +679,7 @@ export default {
});
},
setOptions22(resData) {
console.log(resData);
// console.log(resData);
let deptName = [];
let cate = []; // 率
let completed = []; // 完成

View File

@ -170,7 +170,8 @@ export default {
this.request({
url: "/hx/scientificProduction/getHxFactoryResourcesPic",
}).then(({ data }) => {
this.dataInfo = data;
// console.log(data);
if (data) this.dataInfo = data;
});
this.request({
url: "/hx/scientificProduction/getHxCarUsePic1",

View File

@ -1,139 +1,139 @@
<template>
<container2 title="本周计划">
<div style="height: 100%; width: 100%" ref="chart"></div>
</container2>
<container2 title="本周计划">
<div style="height: 100%; width: 100%" ref="chart"></div>
</container2>
</template>
<script>
import container2 from './components/container2/index.vue'
import echarts from 'echarts'
import container2 from "./components/container2/index.vue";
import echarts from "echarts";
export default {
components: {
container2, //#endregion,
},
data() {
return {
chart: null,
}
},
mounted() {
this.$nextTick(() => {
this.initChart()
})
},
methods: {
initChart() {
this.request({
url: '/hx/scientificProduction/getHxWeekPlanUsePic',
}).then(({ data }) => {
this.chart = echarts.init(this.$refs.chart)
this.setOptions(data)
})
},
setOptions(resData) {
// realCharge // 装药
// realDeliver // 交付
// realFlawDetection // 探伤
// realHousing // 壳体入厂
let real = [] // 实际
let target = [] // 目标
let rate = [] // 率
target.push(resData.targetFlawDetection)
target.push(resData.targetCharge)
target.push(resData.targetDeliver)
target.push(resData.targetHousing)
real.push(resData.flawDetectionRate)
real.push(resData.chargeRate)
real.push(resData.deliverRate)
real.push(resData.housingRate)
this.chart.setOption({
tooltip: {
trigger: 'axis',
// formatter: '{a1}<br/>{b1}{c1}',
},
// legend: {
// data: ['数量', '完成率'],
// textStyle: {
// color: '#fff', //legend字体颜色
// },
// // selectedMode: false,
// },
grid: {
containLabel: true,
left: 20,
right: 10,
top: 10,
bottom: 10,
},
xAxis: {
data: ['探伤', '装药', '交付', '壳体入厂'],
axisLine: {
lineStyle: {
color: 'rgb(255, 255, 255)',
},
},
},
// dataZoom: {
// type: 'slider',
// start: 0,
// end: 50,
// },
color: ['#ccc', 'red'],
yAxis: {
name: '',
splitLine: {
show: true,
// 改变轴线颜色
lineStyle: {
// 使用深浅的间隔色
color: ['rgba(255, 255, 255,.5)'],
},
},
// axisLabel: {
// formatter: '{value}%',
// },
axisLine: {
lineStyle: {
color: 'rgb(255, 255, 255)',
},
},
},
series: [
{
name: '目标',
type: 'bar',
z: '-1',
barGap: '-100%',
barWidth: 30,
itemStyle: {
color: 'rgba(126, 167, 252, .3)',
},
data: target,
},
{
name: '数量',
type: 'bar',
barWidth: 30,
// position: [0, 0],
itemStyle: {
color: '#7EA7FC',
},
data: real,
},
// {
// name: '目标',
// type: 'scatter',
// symbol: 'rect',
// symbolSize: [30, 4],
// symbolOffset: [3, 0],
// position: [0, 0],
// itemStyle: {
// color: '#F6D97E',
// },
// data: [20, 30, 45, 20, 20, 30, 20, 30, 40, 20, 90, 90],
// },
],
})
},
},
}
components: {
container2, //#endregion,
},
data() {
return {
chart: null,
};
},
mounted() {
this.$nextTick(() => {
this.initChart();
});
},
methods: {
initChart() {
this.request({
url: "/hx/scientificProduction/getHxWeekPlanUsePic",
}).then(({ data }) => {
this.chart = echarts.init(this.$refs.chart);
if (data) this.setOptions(data);
});
},
setOptions(resData) {
// realCharge // 装药
// realDeliver // 交付
// realFlawDetection // 探伤
// realHousing // 壳体入厂
let real = []; // 实际
let target = []; // 目标
let rate = []; // 率
target.push(resData.targetFlawDetection);
target.push(resData.targetCharge);
target.push(resData.targetDeliver);
target.push(resData.targetHousing);
real.push(resData.flawDetectionRate);
real.push(resData.chargeRate);
real.push(resData.deliverRate);
real.push(resData.housingRate);
this.chart.setOption({
tooltip: {
trigger: "axis",
// formatter: '{a1}<br/>{b1}{c1}',
},
// legend: {
// data: ['数量', '完成率'],
// textStyle: {
// color: '#fff', //legend字体颜色
// },
// // selectedMode: false,
// },
grid: {
containLabel: true,
left: 20,
right: 10,
top: 10,
bottom: 10,
},
xAxis: {
data: ["探伤", "装药", "交付", "壳体入厂"],
axisLine: {
lineStyle: {
color: "rgb(255, 255, 255)",
},
},
},
// dataZoom: {
// type: 'slider',
// start: 0,
// end: 50,
// },
color: ["#ccc", "red"],
yAxis: {
name: "",
splitLine: {
show: true,
// 改变轴线颜色
lineStyle: {
// 使用深浅的间隔色
color: ["rgba(255, 255, 255,.5)"],
},
},
// axisLabel: {
// formatter: '{value}%',
// },
axisLine: {
lineStyle: {
color: "rgb(255, 255, 255)",
},
},
},
series: [
{
name: "目标",
type: "bar",
z: "-1",
barGap: "-100%",
barWidth: 30,
itemStyle: {
color: "rgba(126, 167, 252, .3)",
},
data: target,
},
{
name: "数量",
type: "bar",
barWidth: 30,
// position: [0, 0],
itemStyle: {
color: "#7EA7FC",
},
data: real,
},
// {
// name: '目标',
// type: 'scatter',
// symbol: 'rect',
// symbolSize: [30, 4],
// symbolOffset: [3, 0],
// position: [0, 0],
// itemStyle: {
// color: '#F6D97E',
// },
// data: [20, 30, 45, 20, 20, 30, 20, 30, 40, 20, 90, 90],
// },
],
});
},
},
};
</script>

View File

@ -74,6 +74,7 @@ export default {
});
},
setOptions(list) {
console.log(list);
this.chart.setOption({
tooltip: {
trigger: "axis",
@ -219,6 +220,18 @@ export default {
},
symbol: "none",
},
{
name: "装药完成率",
yAxisIndex: 1,
type: "line",
smooth: false,
itemStyle: {
color: "#F6D97E",
},
data: list.map((e) => e.chargeRate),
// data: [23, 43, 23, 43, 54, 54, 54],
symbol: "none",
},
{
name: "总装完成率",
yAxisIndex: 1,
@ -231,18 +244,6 @@ export default {
// data: [600, 500, 700, 620, 750, 800, 900],
symbol: "none",
},
{
name: "装药完成率",
yAxisIndex: 1,
type: "line",
smooth: false,
itemStyle: {
color: "#F6D97E",
},
data: list.map((e) => e.chargeRate),
// data: [650, 550, 750, 670, 780, 900, 900],
symbol: "none",
},
],
});
},

View File

@ -12,6 +12,20 @@
</container1>
<container1 style="margin-right: 14px" title="生产计划">
<div class="trends">
<div style="text-align: right; margin-right: 30px">
<el-date-picker
style="width: 30%"
v-model="prodMonthlyPlan"
value-format="yyyy-MM"
type="month"
size="mini"
placeholder="选择月"
:clearable="false"
:editable="false"
@change="initChart2"
>
</el-date-picker>
</div>
<div style="height: 100%; width: 100%" ref="chart2"></div>
</div>
</container1>
@ -27,7 +41,7 @@
</container1>
<container1 style="margin-right: 14px" title="单台产品信息">
<div class="trends" style="text-align: center">
<img :src="dataInfo.pic" alt="" />
<img :src="dataInfo.pic" alt="" width="100%" />
</div>
</container1>
</div>
@ -47,6 +61,7 @@ import {
} from "@/utils/gradualColor";
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
export default {
components: {
@ -65,12 +80,13 @@ export default {
chart3: null,
listData: [1, 2, 3, 4, 5, 6, 7, 8],
customColor: colorList,
prodMonthlyPlan: "", //
};
},
mounted() {
this.$nextTick(() => {
this.initChart();
this.initChart2();
this.initChart2(this.prodMonthlyPlan);
this.initChart3();
});
},
@ -176,7 +192,7 @@ export default {
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
},
name: "付",
name: "付",
type: "bar",
stack: "total",
// label: {
@ -193,9 +209,9 @@ export default {
});
},
initChart2() {
initChart2(month) {
this.request({
url: "/hx/scientificProduction/getProductionPlanPic",
url: "/hx/scientificProduction/getProductionPlanPic?month=" + month,
}).then(({ data }) => {
this.chart2 = echarts.init(this.$refs.chart2);
this.setOptions2(data);
@ -253,50 +269,76 @@ export default {
};
},
setOptions2(resData) {
let adiabat = []; // 绝热数量
let deliver = []; // 交付数量
let charge = []; // 装药数量
let assembly = []; // 总装数量
const xAixsList = resData.map((el) => el.productModel); // 横坐标列表
let titData = resData.allModel;
delete resData.allModel;
let titList = [];
for (let index = 0; index < titData.length; index++) {
adiabat.push([]);
deliver.push([]);
charge.push([]);
assembly.push([]);
}
let newData = {};
for (let i = 0; i < resData.list.length; i++) {
const item = resData.list[i];
for (const key in item) {
newData[key] = item[key];
}
}
for (const key in newData) {
if (Object.hasOwnProperty.call(newData, key)) {
const item = newData[key];
titList.push(key);
for (let i = 0; i < item.length; i++) {
const ele = item[i];
let index = titData.findIndex((e) => e == ele.productModel);
adiabat[index][titList.length - 1] = ele.adiabat;
deliver[index][titList.length - 1] = ele.deliver;
charge[index][titList.length - 1] = ele.charge;
assembly[index][titList.length - 1] = ele.assembly;
}
}
}
// console.log(adiabat)
// console.log(deliver)
// console.log(charge)
// console.log(assembly)
const adiabatList = []; // 绝热
adiabatList.push(resData.map((el) => el.realAdiabat)); // 实际
adiabatList.push(resData.map((el) => el.forecastAdiabat)); // 预测
const deliverList = [];
deliverList.push(resData.map((el) => el.realDeliver)); // 交付数量列表
deliverList.push(resData.map((el) => el.forecastDeliver)); // 交付数量列表
const chargeList = [];
chargeList.push(resData.map((el) => el.realCharge)); //装药数量列表
chargeList.push(resData.map((el) => el.forecastCharge)); //装药数量列表
const assemblyList = [];
assemblyList.push(resData.map((el) => el.realAssembly)); // 总装数列表
assemblyList.push(resData.map((el) => el.forecastAssembly)); // 总装数列表
// // console.log(adiabatList);
// // return;
// let adiabat = []; // 绝热数量
// let deliver = []; // 交付数量
// let charge = []; // 装药数量
// let assembly = []; // 总装数量
// let titData = resData.allModel;
// delete resData.allModel;
// let titList = [];
// for (let index = 0; index < titData.length; index++) {
// adiabat.push([]);
// deliver.push([]);
// charge.push([]);
// assembly.push([]);
// }
// let newData = {};
// for (let i = 0; i < resData.list.length; i++) {
// const item = resData.list[i];
// for (const key in item) {
// newData[key] = item[key];
// }
// }
// for (const key in newData) {
// if (Object.hasOwnProperty.call(newData, key)) {
// const item = newData[key];
// titList.push(key);
// for (let i = 0; i < item.length; i++) {
// const ele = item[i];
// let index = titData.findIndex((e) => e == ele.productModel);
// adiabat[index][titList.length - 1] = ele.adiabat;
// deliver[index][titList.length - 1] = ele.deliver;
// charge[index][titList.length - 1] = ele.charge;
// assembly[index][titList.length - 1] = ele.assembly;
// }
// }
// }
// // console.log(adiabat);
// // console.log(deliver)
// // console.log(charge)
// // console.log(assembly)
// debugger
// // console.log(resData);
// const adiabatList = [];
// // console.log(xAixsList);
this.chart2.setOption({
tooltip: {
formatter: (params, ticket, callback) => {
const type = ["实际", "预测"];
// // console.log(type[params.dataIndex]);
// console.log(params.seriesIndex % 2);
let seriesName = params.seriesName;
let newSeriesName = seriesName.split(",");
let name = params.name;
@ -304,14 +346,17 @@ export default {
return `
<div>
<div>${name}</div>
<div><span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${params.color};"></span> ${newSeriesName[0]}</div>
<div>${newSeriesName[1]} ${num}</div>
<div>${type[params.seriesIndex % 2]} ${num}</div>
</div>
`;
},
// <div><span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${
// params.color
// };"></span> ${newSeriesName[0]} ${num}</div>
},
legend: {
data: ["绝热", "交付", "装药", "总装"],
data: ["绝热", "装药", "总装", "交付"],
textStyle: {
color: "#fff", //legend字体颜色
},
@ -331,23 +376,23 @@ export default {
// color: '#fff',
// },
// },
dataZoom: [
{
type: "slider",
textStyle: {
color: "#fff",
},
startValue: this.dataZoomStart(titList.length, 4, "start"),
endValue: this.dataZoomStart(titList.length, 4, "end"),
},
{
type: "inside",
},
],
// dataZoom: [
// {
// type: "slider",
// textStyle: {
// color: "#fff",
// },
// startValue: this.dataZoomStart(xAixsList.length, 4, "start"),
// endValue: this.dataZoomStart(xAixsList.length, 4, "end"),
// },
// {
// type: "inside",
// },
// ],
xAxis: [
{
type: "category",
data: titList,
data: xAixsList,
axisLine: {
lineStyle: {
color: "rgb(255, 255, 255)",
@ -380,70 +425,154 @@ export default {
},
],
series: [
...adiabat.map((e, index) => {
...adiabatList.map((el, index) => {
return {
// name: '绝热',
name: "绝热," + titData[index],
name: "绝热",
type: "bar",
stack: "adiabat",
data: el,
emphasis: {
focus: "series",
},
// barWidth: 30,
data: e,
itemStyle: {
color: blueColorList[index],
},
};
}),
...deliver.map((e, index) => {
...chargeList.map((el, index) => {
return {
// name: '交付',
name: "交付," + titData[index],
type: "bar",
stack: "deliver",
emphasis: {
focus: "series",
},
// barWidth: 30,
data: e,
itemStyle: {
color: greenColorList[index],
},
};
}),
...charge.map((e, index) => {
return {
// name: '装药',
name: "装药," + titData[index],
name: "装药",
type: "bar",
data: el,
stack: "charge",
emphasis: {
focus: "series",
},
// barWidth: 30,
data: e,
itemStyle: {
color: yelloColorList[index],
},
};
}),
...assembly.map((e, index) => {
...assemblyList.map((el, index) => {
return {
// name: '总装',
name: "总装," + titData[index],
name: "总装",
type: "bar",
data: el,
stack: "assembly",
emphasis: {
focus: "series",
},
// barWidth: 30,
data: e,
itemStyle: {
color: redColorList[index],
},
};
}),
...deliverList.map((el, index) => {
return {
name: "交付",
type: "bar",
data: el,
stack: "deliver",
emphasis: {
focus: "series",
},
itemStyle: {
color: greenColorList[index],
},
};
}),
// {
// name: "装药",
// type: "bar",
// data: chargeList,
// emphasis: {
// focus: "series",
// },
// },
// {
// name: "总装",
// type: "bar",
// data: assemblyList,
// emphasis: {
// focus: "series",
// },
// },
// {
// name: "交付",
// type: "bar",
// data: deliverList,
// emphasis: {
// focus: "series",
// },
// },
// ...adiabatList.map((e, index) => {
// return {
// // name: '绝热',
// name: "绝热," + titData[index],
// type: "bar",
// stack: "adiabat",
// emphasis: {
// focus: "series",
// },
// // barWidth: 30,
// data: e,
// itemStyle: {
// color: blueColorList[index],
// },
// };
// }),
// ...charge.map((e, index) => {
// return {
// // name: '装药',
// name: "装药," + titData[index],
// type: "bar",
// stack: "charge",
// emphasis: {
// focus: "series",
// },
// // barWidth: 30,
// data: e,
// itemStyle: {
// color: yelloColorList[index],
// },
// };
// }),
// ...assembly.map((e, index) => {
// return {
// // name: '总装',
// name: "总装," + titData[index],
// type: "bar",
// stack: "assembly",
// emphasis: {
// focus: "series",
// },
// // barWidth: 30,
// data: e,
// itemStyle: {
// color: redColorList[index],
// },
// };
// }),
// ...deliver.map((e, index) => {
// return {
// // name: '交付',
// name: "交付," + titData[index],
// type: "bar",
// stack: "deliver",
// emphasis: {
// focus: "series",
// },
// // barWidth: 30,
// data: e,
// itemStyle: {
// color: greenColorList[index],
// },
// };
// }),
// {
// name: '绝热',
// type: 'bar',
@ -554,7 +683,7 @@ export default {
});
},
setOptions3(resData) {
// console.log(resData)
// // console.log(resData)
let models = [];
let adiabat = [];
@ -568,10 +697,10 @@ export default {
for (let i = 0; i < resData.length; i++) {
const item = resData[i];
models.push(item.model);
adiabat.push(item.adiabat);
charge.push(item.charge);
deliver.push(item.deliver);
assembly.push(item.assembly);
adiabat.push(item.realAdiabat);
charge.push(item.realCharge);
deliver.push(item.realDeliver);
assembly.push(item.realAssembly);
review.push(item.review);
settlement.push(item.settlement);
productionNumber.push(item.productionNumber);
@ -625,16 +754,16 @@ export default {
type: "bar",
data: charge,
},
{
name: "交付数(地试数)",
type: "bar",
data: deliver,
},
{
name: "总装数",
type: "bar",
data: assembly,
},
{
name: "交付数(地试数)",
type: "bar",
data: deliver,
},
{
name: "评审数",
type: "bar",
@ -655,6 +784,12 @@ export default {
},
},
created() {
const month = new Date().getMonth() + 1;
if (month < 10) {
this.prodMonthlyPlan = `${new Date().getFullYear()}-0${month}`;
} else {
this.prodMonthlyPlan = `${new Date().getFullYear()}-${month}`;
}
this.getData();
},
};
@ -665,4 +800,25 @@ export default {
height: 100%;
padding: 0 25px;
}
::v-deep .el-date-editor {
border-radius: 0;
box-shadow: none !important;
border: 1px solid rgba(255, 255, 255, 0.2);
vertical-align: middle;
color: #fff;
background-color: transparent;
.el-range-input,
.el-range-separator {
color: #fff;
}
.el-range-editor.is-active {
border-color: #fff !important;
}
input {
background-color: transparent;
color: #fff;
}
}
</style>

View File

@ -69,7 +69,7 @@
item.projectName
}}</el-col>
<el-col style="text-align: center" :span="7">{{
item.category
item.name
}}</el-col>
<el-col style="text-align: center" :span="5">{{
item.total

View File

@ -33,7 +33,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -32,7 +32,7 @@ export default {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params, ticket, callback) {
console.log(params)
// console.log(params)
var res = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res += '<br/>' + params[i].seriesName + ' : ' + Math.abs(params[i].value);

View File

@ -1,6 +1,6 @@
<template>
<div>
<container3>
<container100>
<img
v-if="pic.length"
class="img"
@ -82,7 +82,7 @@
</div>
<div class="box">
<i
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
getItem(sourceLevelCount, "一级").COUNTNUMBER
}}</i
><span class="num2"></span>
@ -94,7 +94,7 @@
</div>
<div class="box">
<i
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
getItem(sourceLevelCount, "二级").COUNTNUMBER
}}</i
><span class="num2"></span>
@ -106,7 +106,7 @@
</div>
<div class="box">
<i
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
>{{ getItem(pointLevelCount, "级").COUNTNUMBER }}/{{
getItem(sourceLevelCount, "三级").COUNTNUMBER
}}</i
><span class="num2"></span>
@ -120,12 +120,12 @@
</div>
</div>
</div>
</container3>
</container100>
</div>
</template>
<script>
import container3 from "../components/container3/index.vue";
import container100 from "../components/container3/index.vue";
import rocketTit from "../components/rocketTit/index.vue";
import progressBar from "./../components/progress/index.vue";
@ -136,7 +136,7 @@ export default {
mixins: [resize],
name: "left1",
components: {
container3,
container100,
rocketTit,
progressBar,
},
@ -145,15 +145,15 @@ export default {
pic: "",
pointLevelCount: [
{
name: "级",
name: "级",
COUNTNUMBER: 0,
},
{
name: "级",
name: "级",
COUNTNUMBER: 0,
},
{
name: "级",
name: "级",
COUNTNUMBER: 0,
},
],
@ -189,12 +189,17 @@ export default {
this.$bus.emit("getTarget", item);
},
getItem(list, name) {
for (let index = 0; index < list.length; index++) {
const item = list[index];
if (name == item.name) {
return item;
}
}
return list.find((item) => {
return item.name === name;
});
// for (let index = 0; index < list.length; index++) {
// const item = list[index];
// console.log(item.name + "---" + name + "---" + (name == item.name));
// if (name == item.name) {
// // console.log(item);
// return item;
// }
// }
},
getData() {
this.request({
@ -202,10 +207,17 @@ export default {
method: "get",
}).then((res) => {
if (200 == res.code) {
console.log(res.data);
this.pointLevelCount = res.data.pointLevelCount;
this.sourceLevelCount = res.data.sourceLevelCount;
this.points = res.data.points;
// console.log(res.data);
if (res.data.pointLevelCount) {
this.pointLevelCount = res.data.pointLevelCount;
}
if (res.data.sourceLevelCount) {
this.sourceLevelCount = res.data.sourceLevelCount;
}
if (res.data.points) {
this.points = res.data.points;
}
}
});
this.request({

View File

@ -140,7 +140,7 @@ import container3 from "./components/container3/index.vue";
import bigScreenTabs from "../components/bigScreenTabs/index.vue";
import colorList from "@/utils/colorPalette";
import vueSeamlessScroll from "vue-seamless-scroll";
// import _ from 'loda'
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
import resize from "../../dashboard/mixins/resize";
@ -431,6 +431,7 @@ export default {
this.chart3 = echarts.init(this.$refs.chart3);
// list 列表数据, mapList柱状图数据
let { list, mapList } = res.data;
console.log(list);
// 根据troubleItem处理list
// {"a1": true, "a2": true}
let troubleList = this.troubleItem;
@ -449,7 +450,7 @@ export default {
}
if (troubleList.updateSuggest && troubleList.tempUpdateMethod) {
troubleTitleList.push({ name: "措施", span: 5 });
troubleTitleList.push({ name: "整改情况", span: 5 });
}
if (troubleList.responsiblePerson) {
@ -467,11 +468,11 @@ export default {
});
this.troubleTitleList = troubleTitleList;
console.log(troubleTitleList);
// 处理list得到troubleDataList
let tmpObj = {};
list.map((e, i) => {
// let obj = {};
list.forEach((e, i) => {});
this.scrollList = list.map((e, i) => {
let tmpObj = {};
tmpObj["序号"] = i;
if (troubleList.responsibleUnit) {
tmpObj["车间名称"] = e.responsibleUnit;
@ -480,7 +481,7 @@ export default {
tmpObj["隐患内容"] = e.address + " " + e.existProblem;
}
if (troubleList.updateSuggest && troubleList.tempUpdateMethod) {
tmpObj["措施"] = e.updateSuggest + " " + e.tempUpdateMethod;
tmpObj["整改情况"] = e.updateSuggest + " " + e.tempUpdateMethod;
}
if (troubleList.responsiblePerson) {
tmpObj["责任人"] = e.responsibleUnit;
@ -488,16 +489,18 @@ export default {
if (troubleList.category) {
tmpObj["类别"] = e.category;
}
console.log(tmpObj);
console.log();
troubleDataList.push(tmpObj);
return tmpObj;
});
console.log("scrollList");
console.log(troubleDataList);
// console.log("scrollList");
// console.log(troubleDataList);
// 得到
this.scrollList = troubleDataList;
// this.scrollList = troubleDataList;
this.listData2 = Array(this.scrollList.length).fill(0);
this.$refs.seamlessScroll.reset();
this.chart3.setOption({
@ -629,7 +632,7 @@ export default {
if (200 == res.code) {
// 如何处理列表数据
this.troubleItem = JSON.parse(res.data);
console.log(this.troubleItem);
// // console.log(this.troubleItem);
}
});
},

View File

@ -10,7 +10,7 @@
</el-row> -->
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="图片" align="center" prop="bigPic" width="100">
<template slot-scope="scope">
<el-image style="width: 100px; height: 100px" :src="scope.row.bigPic" fit="cover"></el-image>

View File

@ -27,7 +27,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="今日日期" align="center" prop="todayDate" />
<el-table-column
label="今日运行设备数"

View File

@ -27,7 +27,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="本月收入" align="center" prop="income" />
<el-table-column label="本月支出" align="center" prop="expenditure" />

View File

@ -1,170 +1,193 @@
<template>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8 fr">
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="importTemplate"
>导出模板</el-button
>
</el-col>
</el-row>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8 fr">
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="importTemplate"
>导出模板</el-button
>
</el-col>
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="指标名称" align="center" prop="indicatorName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="经营责任书目标数量" align="center" prop="targetTasks" />
<el-table-column label="经营责任书已完成数量" align="center" prop="completedTasks" />
</el-table>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" type="index" width="80" />
<pagination
v-show="total > 0"
:total="total"
:autoScroll="false"
:pageSizes="[2, 5, 10, 20]"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-table-column label="指标名称" align="center" prop="indicatorName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column
label="经营责任书目标数量"
align="center"
prop="targetTasks"
/>
<el-table-column
label="经营责任书已完成数量"
align="center"
prop="completedTasks"
/>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:autoScroll="false"
:pageSizes="[2, 5, 10, 20]"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
<!-- 用户导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
<!-- <el-link
<span>仅允许导入xlsxlsx格式文件</span>
<!-- <el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
> -->
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</el-row>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</el-row>
</template>
<script>
import { leftOneList, importTemplate } from './indexApi'
import { getToken } from '@/utils/auth'
import { leftOneList, importTemplate } from "./indexApi";
import { getToken } from "@/utils/auth";
export default {
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: this.page_size,
},
// 用户信息
userList: [],
// 总条数
total: 0,
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: '',
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: 'Bearer ' + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + '/hx/businessResponsibility/importData',
},
}
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true
leftOneList(this.queryParams).then(res => {
this.userList = res.rows
this.total = res.total
this.loading = false
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams
this.$modal
.confirm('是否确认导出所有用户数据项?')
.then(() => {
this.exportLoading = true
return exportUser(queryParams)
})
.then(response => {
this.$download.name(response.msg)
this.exportLoading = false
})
.catch(() => {})
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = '数据导入'
this.upload.open = true
},
/** 下载模板操作 */
importTemplate() {
importTemplate().then(response => {
this.$download.name(response.msg)
})
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false
this.upload.isUploading = false
this.$refs.upload.clearFiles()
this.$alert(response.msg, '导入结果', { dangerouslyUseHTMLString: true })
this.getList()
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit()
},
},
created() {
this.getList()
},
}
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: this.page_size,
},
// 用户信息
userList: [],
// 总条数
total: 0,
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url:
process.env.VUE_APP_BASE_API +
"/hx/businessResponsibility/importData",
},
};
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true;
leftOneList(this.queryParams).then((res) => {
this.userList = res.rows;
this.total = res.total;
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$modal
.confirm("是否确认导出所有用户数据项?")
.then(() => {
this.exportLoading = true;
return exportUser(queryParams);
})
.then((response) => {
this.$download.name(response.msg);
this.exportLoading = false;
})
.catch(() => {});
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "数据导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
importTemplate().then((response) => {
this.$download.name(response.msg);
});
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
},
created() {
this.getList();
},
};
</script>

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="预测收入(件)" align="center" prop="forecastRevenue" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="型号名称" align="center" prop="translateName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="任务数" align="center" prop="completedTaskNumber" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="型号名称" align="center" prop="productName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="交付数量(件)" align="center" prop="actualDeliveryQuantity" />

View File

@ -10,7 +10,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="预测装药量(件)" align="center" prop="forecastQuantity" />
<el-table-column label="实际装药量(件)" align="center" prop="actualQuantity" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="工房名称" align="center" prop="workHomeName" />
<el-table-column label="横坐标百分比(不要%号)" align="center" prop="abscissa" />
<el-table-column label="纵坐标百分比(不要%号)" align="center" prop="ordinate" />

View File

@ -17,7 +17,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="大图类型" align="center" prop="type">
<template slot-scope="scope">
<div v-if="scope.row.type == '1'">危险点图</div>

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="工房总数" align="center" prop="workshopTotal" />
<el-table-column label="作业工房数" align="center" prop="workingWorkshopTotal" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="汽车名称" align="center" prop="carName" />
<el-table-column label="作业内容" align="center" prop="workContent" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="周开始日期" align="center" prop="month" />
<el-table-column label="周结束日期" align="center" prop="serialNumber" />
<el-table-column label="实际探伤完成量" align="center" prop="realFlawDetection" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="工房名称" align="center" prop="workHome" />
<el-table-column label="车间名称" align="center" prop="workshop" />
<el-table-column label="产品" align="center" prop="product" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="编号" align="center" prop="numberNo" />
<el-table-column label="称量" align="center" prop="weighing" />
<el-table-column label="混合" align="center" prop="blend" />

View File

@ -27,7 +27,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="酯工作内容" align="center" prop="jobContent" />
<el-table-column label="开车时间" align="center" prop="driveDate" />
<el-table-column

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="工位名称" align="center" prop="stationName" />
<el-table-column label="升温工位数" align="center" prop="riseNumber" />
<el-table-column label="降温工位数" align="center" prop="coolingNumber" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="年份" align="center" prop="year" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="实际装药量" align="center" prop="realCharge" />

View File

@ -1,175 +1,227 @@
<template>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8 fr">
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="importTemplate"
>导出模板</el-button
>
</el-col>
</el-row>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8 fr">
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="importTemplate"
>导出模板</el-button
>
</el-col>
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="生产数量" align="center" prop="productionNumber" />
<el-table-column label="绝热数量" align="center" prop="adiabat" />
<el-table-column label="装药数量" align="center" prop="charge" />
<el-table-column label="总装数量" align="center" prop="assembly" />
<el-table-column label="交付数量" align="center" prop="deliver" />
<el-table-column label="评审数量" align="center" prop="review" />
<el-table-column label="结算数量" align="center" prop="settlement" />
</el-table>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" type="index" width="80" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column
label="生产数量"
align="center"
prop="productionNumber"
/>
<el-table-column
label="实际绝热数量"
align="center"
prop="realAdiabat"
/>
<el-table-column
label="预测绝热数量"
align="center"
prop="forecastAdiabat"
/>
<el-table-column
label="实际装药数量"
align="center"
prop="realCharge"
/>
<el-table-column
label="预测装药数量"
align="center"
prop="forecastCharge"
/>
<el-table-column
label="实际总装数量"
align="center"
prop="realAssembly"
/>
<el-table-column
label="预测总装数量"
align="center"
prop="forecastAssembly"
/>
<el-table-column
label="实际交付数量"
align="center"
prop="realDeliver"
/>
<el-table-column
label="预测交付数量"
align="center"
prop="forecastDeliver"
/>
<el-table-column label="评审数量" align="center" prop="review" />
<el-table-column label="结算数量" align="center" prop="settlement" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:autoScroll="false"
:pageSizes="[2, 5, 10, 20]"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<pagination
v-show="total > 0"
:total="total"
:autoScroll="false"
:pageSizes="[2, 5, 10, 20]"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
<!-- 用户导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
<!-- <el-link
<span>仅允许导入xlsxlsx格式文件</span>
<!-- <el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
> -->
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</el-row>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</el-row>
</template>
<script>
import { leftTwoList, leftTwoImportTemplate } from './indexApi'
import { getToken } from '@/utils/auth'
import { leftTwoList, leftTwoImportTemplate } from "./indexApi";
import { getToken } from "@/utils/auth";
export default {
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: this.page_size,
},
// 用户信息
userList: [],
// 总条数
total: 0,
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: '',
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: 'Bearer ' + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + '/hx/productionPlan/importData',
},
}
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true
leftTwoList(this.queryParams).then(res => {
this.userList = res.rows
this.total = res.total
this.loading = false
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams
this.$modal
.confirm('是否确认导出所有用户数据项?')
.then(() => {
this.exportLoading = true
return exportUser(queryParams)
})
.then(response => {
this.$download.name(response.msg)
this.exportLoading = false
})
.catch(() => {})
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = '数据导入'
this.upload.open = true
},
/** 下载模板操作 */
importTemplate() {
leftTwoImportTemplate().then(response => {
this.$download.name(response.msg)
})
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false
this.upload.isUploading = false
this.$refs.upload.clearFiles()
this.$alert(response.msg, '导入结果', { dangerouslyUseHTMLString: true })
this.getList()
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit()
},
},
created() {
this.getList()
},
}
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: this.page_size,
},
// 用户信息
userList: [],
// 总条数
total: 0,
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/hx/productionPlan/importData",
},
};
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true;
leftTwoList(this.queryParams).then((res) => {
this.userList = res.rows;
this.total = res.total;
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$modal
.confirm("是否确认导出所有用户数据项?")
.then(() => {
this.exportLoading = true;
return exportUser(queryParams);
})
.then((response) => {
this.$download.name(response.msg);
this.exportLoading = false;
})
.catch(() => {});
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "数据导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
leftTwoImportTemplate().then((response) => {
this.$download.name(response.msg);
});
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
},
created() {
this.getList();
},
};
</script>

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="类型(原材料/配套件)" align="center" prop="category" />
<el-table-column label="型号名称" align="center" prop="name" />
<el-table-column label="现有可满足生产台数" align="center" prop="existing" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="分类(原材料/配套件)" align="center" prop="category" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="原材料或配套件的名称" align="center" prop="name" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="库房编号" align="center" prop="numberNo" />
<el-table-column label="库房名称" align="center" prop="name" />
<el-table-column label="库房类型" align="center" prop="category" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="实际军品收入累计数" align="center" prop="realMilitaryIncome" />
<el-table-column label="目标军品收入数" align="center" prop="targetMilitaryIncome" />
<el-table-column label="实际装药量累计数" align="center" prop="realCharge" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="大型装药量数量" align="center" prop="bigCharge" />
<el-table-column label="中型装药量数量" align="center" prop="mediumCharge" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="归属(厂计划/六院计划)" align="center" prop="ascription" />
<el-table-column label="型号" align="center" prop="model" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="物资名称" align="center" prop="materialName" />
<el-table-column label="现有库存" align="center" prop="stock" />
<el-table-column label="是否开始备货采购" align="center" prop="startPurchase" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="年份" align="center" prop="year" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="实际累计生产数量(件)" align="center" prop="realTotal" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="绝热完成数量" align="center" prop="realInsulate" />
<el-table-column label="绝热计划数量" align="center" prop="targetInsulate" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="工作内容" align="center" prop="jobContent" />
<el-table-column label="进展情况" align="center" prop="progress" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="绝热完成数量(个)" align="center" prop="realAdiabat" />
<el-table-column label="装药完成数(个)" align="center" prop="realCharge" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="工作内容" align="center" prop="jobContent" />
<el-table-column label="会议名称" align="center" prop="meetingName" />
<el-table-column label="督办领导" align="center" prop="checkLeader" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="班组名称" align="center" prop="teamName" />
<el-table-column label="人员数量" align="center" prop="peopleTotal" />

View File

@ -38,7 +38,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="实际收入(万)" align="center" prop="realIncome" />
<el-table-column label="实际利润(万)" align="center" prop="realProfit" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="实际收入" align="center" prop="realIncome" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="预算执行率" align="center" prop="budgetImplementationRate" />

View File

@ -12,7 +12,7 @@
<left5 />
<el-divider content-position="left"><span class="text-bold-18">全厂经营指标列表</span></el-divider>
<center1 />
<el-divider content-position="left"><span class="text-bold-18">部门收入完成率</span></el-divider>
<el-divider content-position="left"><span class="text-bold-18">经营指标/部门收入</span></el-divider>
<center2 />
<el-divider content-position="left"><span class="text-bold-18">成本分析</span></el-divider>
<center3 />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="年度" align="center" prop="year" />
<el-table-column label="五力名称" align="center" prop="fiveForce" />
<el-table-column label="指标名称" align="center" prop="indexName" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="项目名称" align="center" prop="projectName" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月度" align="center" prop="month" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="目标收入" align="center" prop="targetIncome" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="合同名称" align="center" prop="contractName" />
<el-table-column label="签订日期" align="center" prop="contractDate" />
<el-table-column label="计划数量" align="center" prop="planQuantity" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="预测收入" align="center" prop="forecastIncome" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="综合计划数量(件)" align="center" prop="comprehensivePlanTotal" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="公示内容" align="center" prop="publicityContent" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="负责人" align="center" prop="director" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="目标收入" align="center" prop="targetIncome" />
<el-table-column label="实际收入" align="center" prop="realIncome" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="合同日期" align="center" prop="contractDate" />
<el-table-column label="产业类型" align="center" prop="industryCategory" />
<el-table-column label="合同编号" align="center" prop="contractNo" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="预测收入" align="center" prop="forecastIncome" />

View File

@ -27,7 +27,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="月份" align="center" prop="month" />
<el-table-column
label="全厂质量体系问题总数"

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="SPC参数" align="center" prop="spcName" />
<el-table-column label="关键参数类别" align="center" prop="paramCategory" />
<el-table-column label="产品实物" align="center" prop="product" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="SPC参数" align="center" prop="spcName" />
<el-table-column label="产品实物名称" align="center" prop="productName" />
<el-table-column label="实际值" align="center" prop="realValue" />

View File

@ -1,61 +1,91 @@
<template>
<div class="app-container">
<el-divider content-position="left"><span class="text-bold-18">质量计划</span></el-divider>
<left1 />
<el-divider content-position="left"><span class="text-bold-18">质量体系要素</span></el-divider>
<left2 />
<el-divider content-position="left"><span class="text-bold-18">质量体系审查</span></el-divider>
<left3 />
<el-divider content-position="left"><span class="text-bold-18">视频检验系统实况</span></el-divider>
<left4 />
<el-divider content-position="left"><span class="text-bold-18">质量管理合格率</span></el-divider>
<center1 />
<el-divider content-position="left"><span class="text-bold-18">关键参数SPC分析</span></el-divider>
<center2 />
<el-divider content-position="left"><span class="text-bold-18">产品实际SPC列表</span></el-divider>
<center3 />
<el-divider content-position="left"><span class="text-bold-18">质量问题</span></el-divider>
<right1 />
<el-divider content-position="left"><span class="text-bold-18">质量检查分析</span></el-divider>
<right2 />
<el-divider content-position="left"><span class="text-bold-18">质量案例</span></el-divider>
<right3 />
</div>
<div class="app-container">
<el-divider content-position="left"
><span class="text-bold-18">质量计划</span></el-divider
>
<left1 />
<el-divider content-position="left"
><span class="text-bold-18">质量体系要素</span></el-divider
>
<left2 />
<el-divider content-position="left"
><span class="text-bold-18">质量体系审查</span></el-divider
>
<left3 />
<el-divider content-position="left"
><span class="text-bold-18">视频检验系统实况</span></el-divider
>
<left4 />
<el-divider content-position="left"
><span class="text-bold-18">质量管理合格率</span></el-divider
>
<center1 />
<el-divider content-position="left"
><span class="text-bold-18">关键参数SPC分析</span></el-divider
>
<center2 />
<el-divider content-position="left"
><span class="text-bold-18">产品实际SPC列表</span></el-divider
>
<center3 />
<el-divider content-position="left"
><span class="text-bold-18">质量问题</span></el-divider
>
<el-alert size="small" type="warning" style="margin-bottom: 10px"
>维度123分别型号类别部门
上传数据表格也加上注释在不同维度下名称有不同含义型号维度下名称为型号1型号2类别维度下名称为工艺外形部门维度下名称为部门1部门2</el-alert
>
<right1 />
<el-divider content-position="left"
><span class="text-bold-18">质量检查分析</span></el-divider
>
<right2 />
<el-divider content-position="left"
><span class="text-bold-18">质量案例</span></el-divider
>
<right3 />
<el-divider content-position="left"
><span class="text-bold-18">产品合格率</span></el-divider
>
<productQualified />
</div>
</template>
<script>
import left1 from './left1.vue'
import left2 from './left2.vue'
import left3 from './left3.vue'
import left4 from './left4.vue'
import center1 from './center1.vue'
import center2 from './center2.vue'
import center3 from './center3.vue'
import right1 from './right1.vue'
import right2 from './right2.vue'
import right3 from './right3.vue'
import left1 from "./left1.vue";
import left2 from "./left2.vue";
import left3 from "./left3.vue";
import left4 from "./left4.vue";
import center1 from "./center1.vue";
import center2 from "./center2.vue";
import center3 from "./center3.vue";
import right1 from "./right1.vue";
import right2 from "./right2.vue";
import right3 from "./right3.vue";
import productQualified from "./productQualified.vue";
export default {
components: {
left1,
left2,
left3,
left4,
center1,
center2,
center3,
right1,
right2,
right3,
},
}
components: {
left1,
left2,
left3,
left4,
center1,
center2,
center3,
right1,
right2,
right3,
productQualified,
},
};
</script>
<style lang="scss" scoped>
.app-container {
.el-divider:nth-child(n + 2) {
margin-top: 50px;
}
.el-divider:nth-child(n + 2) {
margin-top: 50px;
}
}
.text-bold-18 {
font-size: 18px;
font-weight: bold;
font-size: 18px;
font-weight: bold;
}
</style>

View File

@ -1,141 +1,156 @@
import request from '@/utils/request'
import request from "@/utils/request";
/** --------------- left1 --------------- */
// 质量计划列表
export function leftOneList(params) {
return request({
url: '/hx/qualityPlan/list',
params,
})
return request({
url: "/hx/qualityPlan/list",
params,
});
}
// 导出模板
export function importTemplate() {
return request({
url: '/hx/qualityPlan/importTemplate',
})
return request({
url: "/hx/qualityPlan/importTemplate",
});
}
/** --------------- left2 --------------- */
// 质量体系要素列表
export function leftTwoList(params) {
return request({
url: '/hx/qualitySystem/list',
params,
})
return request({
url: "/hx/qualitySystem/list",
params,
});
}
// 导出模板
export function leftTwoImportTemplate() {
return request({
url: '/hx/qualitySystem/importTemplate',
})
return request({
url: "/hx/qualitySystem/importTemplate",
});
}
/** --------------- left3 --------------- */
// 质量体系审查列表
export function leftThreeList(params) {
return request({
url: '/hx/qualitySystem/reviewList',
params,
})
return request({
url: "/hx/qualitySystem/reviewList",
params,
});
}
// 导出模板
export function leftThreeImportTemplate() {
return request({
url: '/hx/qualitySystem/importReviewTemplate',
})
return request({
url: "/hx/qualitySystem/importReviewTemplate",
});
}
/** --------------- left4 --------------- */
// 质量体系审查列表
export function leftFourList(params) {
return request({
url: '/hx/videoSystem/list',
params,
})
return request({
url: "/hx/videoSystem/list",
params,
});
}
// 导出模板
export function leftFourImportTemplate() {
return request({
url: '/hx/videoSystem/importTemplate',
})
return request({
url: "/hx/videoSystem/importTemplate",
});
}
/** --------------- center1 --------------- */
export function centerOneList(params) {
return request({
url: '/hx/qualityManage/list',
params,
})
return request({
url: "/hx/qualityManage/list",
params,
});
}
// 导出模板
export function centerOneImportTemplate() {
return request({
url: '/hx/qualityManage/importTemplate',
})
return request({
url: "/hx/qualityManage/importTemplate",
});
}
/** --------------- center2 --------------- */
// 关键参数SPC分析
export function centerTwoList(params) {
return request({
url: '/hx/spcInfo/list',
params,
})
return request({
url: "/hx/spcInfo/list",
params,
});
}
// 导出模板
export function centerTwoImportTemplate() {
return request({
url: '/hx/spcInfo/importTemplate',
})
return request({
url: "/hx/spcInfo/importTemplate",
});
}
/** --------------- center3 --------------- */
// 产品实际SPC列表
export function centerThreeList(params) {
return request({
url: '/hx/spcProduct/list',
params,
})
return request({
url: "/hx/spcProduct/list",
params,
});
}
// 导出模板
export function centerThreeImportTemplate() {
return request({
url: '/hx/spcProduct/importTemplate',
})
return request({
url: "/hx/spcProduct/importTemplate",
});
}
/** --------------- right1 --------------- */
// 质量问题
export function rightOneList(params) {
return request({
url: '/hx/qualityProblem/list',
params,
})
return request({
url: "/hx/qualityProblem/list",
params,
});
}
// 导出模板
export function rightOneImportTemplate() {
return request({
url: '/hx/qualityProblem/importTemplate',
})
return request({
url: "/hx/qualityProblem/importTemplate",
});
}
/** --------------- right2 --------------- */
// 质量检查分析
export function rightTwoList(params) {
return request({
url: '/hx/qualityInspect/list',
params,
})
return request({
url: "/hx/qualityInspect/list",
params,
});
}
// 导出模板
export function rightTwoImportTemplate() {
return request({
url: '/hx/qualityInspect/importTemplate',
})
return request({
url: "/hx/qualityInspect/importTemplate",
});
}
/** --------------- right3 --------------- */
// 质量案例
export function rightThreeList(params) {
return request({
url: '/hx/qualityCase/list',
params,
})
return request({
url: "/hx/qualityCase/list",
params,
});
}
// 导出模板
export function rightThreeImportTemplate() {
return request({
url: '/hx/qualityCase/importTemplate',
})
return request({
url: "/hx/qualityCase/importTemplate",
});
}
/** --------------- --------------- */
// 产品合格率列表
export function productQualifiedList(params) {
return request({
url: "/hx/productQualified/list",
params,
});
}
// 导出模板
export function productQualifiedImportTemplate() {
return request({
url: "/hx/productQualified/importTemplate",
});
}

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="完成数" align="center" prop="completeNumber" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="todayDate" />
<el-table-column label="体系要素名称" align="center" prop="systemName" />

View File

@ -20,11 +20,11 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="内审数量" align="center" prop="internalReviewNumber" />
<el-table-column label="外审数量" align="center" prop="externalReviewNumber" />
<el-table-column label="第三方审数量" align="center" prop="otherReviewNumber" />
<el-table-column label="内审问题数量" align="center" prop="internalReviewNumber" />
<el-table-column label="外审问题数量" align="center" prop="externalReviewNumber" />
<el-table-column label="第三方审问题数量" align="center" prop="otherReviewNumber" />
</el-table>
<pagination

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="视频点名称" align="center" prop="videoName" />
<el-table-column label="视频点地址" align="center" prop="videoAddress" />
<el-table-column label="实况信息" align="center" prop="videoNowInfo" />

View File

@ -0,0 +1,189 @@
<template>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-row :gutter="10" class="mb8 fr">
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="importTemplate"
>导出模板</el-button
>
</el-col>
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" type="index" width="80" />
<el-table-column label="产品名称" align="center" prop="productName" />
<el-table-column label="产品型号" align="center" prop="productModel" />
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column
label="合格数量"
align="center"
prop="qualifiedTotal"
/>
<el-table-column label="总数量" align="center" prop="total" />
<el-table-column label="类型" align="center" prop="total">
<template slot-scope="scope">
<span v-if="scope.row.category == `1`">大型</span>
<span v-else-if="scope.row.category == `2`">中型</span>
<span v-else-if="scope.row.category == `3`">小型</span>
<span v-else>未知</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:autoScroll="false"
:pageSizes="[2, 5, 10, 20]"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
<!-- 用户导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</el-row>
</template>
<script>
import {
productQualifiedList,
productQualifiedImportTemplate,
} from "./indexApi";
import { getToken } from "@/utils/auth";
export default {
data() {
return {
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: this.page_size,
},
// 用户信息
userList: [],
// 总条数
total: 0,
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/hx/productQualified/importData",
},
};
},
methods: {
/** 查询用户列表 */
getList() {
this.loading = true;
productQualifiedList(this.queryParams).then((res) => {
this.userList = res.rows;
this.total = res.total;
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$modal
.confirm("是否确认导出所有数据项?")
.then(() => {
this.exportLoading = true;
return exportUser(queryParams);
})
.then((response) => {
this.$download.name(response.msg);
this.exportLoading = false;
})
.catch(() => {});
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "数据导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
productQualifiedImportTemplate().then((response) => {
this.$download.name(response.msg);
});
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
},
created() {
this.getList();
},
};
</script>

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="完成总数" align="center" prop="completedTotal" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="月份" align="center" prop="month" />
<el-table-column label="完成数" align="center" prop="completedTotal" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="班组名" align="center" prop="className" />
<el-table-column label="日期" align="center" prop="todayDate" />
<el-table-column label="案例名称" align="center" prop="remark" />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="危险场所名称" align="center" prop="placeName" />
<el-table-column label="类型" align="center" prop="placeType" />
<el-table-column label="初始数量" align="center" prop="initTotal" />

View File

@ -17,7 +17,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="视频类型" align="center" prop="category">
<template slot-scope="scope">
<div v-if="scope.row.category == '1'">奖惩播放</div>

View File

@ -8,7 +8,7 @@
<left3 />
<el-divider content-position="left"><span class="text-bold-18">安全隐患管理</span></el-divider>
<left4 />
<el-divider content-position="left"><span class="text-bold-18">危险场所管理</span></el-divider>
<el-divider content-position="left"><span class="text-bold-18">危险场所压减管理</span></el-divider>
<center1 />
<el-divider content-position="left"><span class="text-bold-18">视频管理</span></el-divider>
<center2 />

View File

@ -20,7 +20,7 @@
</el-row>
<el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" prop="id" width="80" />
<el-table-column label="序号" align="center" type="index" width="80"/>
<el-table-column label="危险源名称" align="center" prop="sourceName" />
<el-table-column label="部门名称" align="center" prop="deptName" />
<el-table-column label="等级" align="center" prop="level" />

Some files were not shown because too many files have changed in this diff Show More