Commit d33fbf21 authored by renjintao's avatar renjintao

Merge branch 'product' of git.mes123.com:zhouyx/mes-ui into product

parents 91adb124 142cbf51
<template>
<div style="padding: 0;" class="excute">
<DataGrid
style="margin-top:2px; margin-bottom: -20px;"
style="margin-top:2px; margin-bottom: -5px;"
:columns="columns"
ref="grid"
:easy="false"
......@@ -9,8 +9,8 @@
:set="false"
:border="false"
:data="data1"
:page="false"
:height="gridHeight"
:page="false"
:size="size"
></DataGrid>
<Modal v-model="editModal" title="编辑" footer-hide width="800">
......@@ -60,7 +60,7 @@ export default {
insertlModal: false,
rowIndex: null,
curId: 0,
gridHeight: 50,
gridHeight: 150,
size: "small",
columns: [
{ title: " ", width: 130 },
......
......@@ -28,13 +28,17 @@
<Icon type="md-git-compare" />
</a>
<DropdownMenu slot="list" style="text-align: center;">
<DropdownItem v-for="li in items" :key="li.value" v-dragging="{ item: li, list: items}">
<DropdownItem
v-for="li in items"
:key="li.value"
v-dragging="{ item: li, list: items}"
>
<a href="#">
<Icon type="md-apps" />
</a>
<span>{{li.name}}</span>
</DropdownItem>
</DropdownMenu>
</DropdownItem>
</DropdownMenu>
</Dropdown>
</div>
<div class="slider">
......@@ -111,7 +115,7 @@
<span slot="close"></span>
</i-switch>
</FormItem>
<FormItem :label="l('discrete_percent')" prop="discrete_percent">
<FormItem :label="l('discrete_percent')" prop="discrete_percent">
<Slider
v-model="entity.discrete_percent"
:step="1"
......@@ -126,10 +130,10 @@
:disabled="count==0"
:min="1"
:max="count==0?1:count"
@on-change="setDiscrete"
@on-change="setDiscrete"
></InputNumber>
<!-- <span>{{count}}</span> -->
</FormItem>
</FormItem>
</div>
</Col>
</Row>
......@@ -145,7 +149,12 @@ import Api from "./api";
export default {
data() {
return {
items:[{name:"是否多台",value:"multiple"},{name:"转序规则",value:"planState"},{name:"加班策略",value:"over"},{name:"是否离散",value:"dis"}],
items: [
{ name: "是否多台", value: "multiple" },
{ name: "转序规则", value: "planState" },
{ name: "加班策略", value: "over" },
{ name: "是否离散", value: "dis" }
],
entity: {
partTaskPk: 0,
opTaskPk: 0,
......@@ -158,10 +167,10 @@ export default {
overTime: "不加班", //"六日加班", 不加班 加班
efficiencyValue: 11, // 效率系数, 必须大于 0
shopId: -1,
dis:false,
isDiscrete: "否",//是否离散 是否
dis: false,
isDiscrete: "否", //是否离散 是否
discrete: 1, //离散数值 必须大于 1
discrete_percent:0,
discrete_percent: 0,
multiple: false,
multipleEquip: "否", //"是否多台安排设备", 否 是
multipleCount: 1, //多台数量
......@@ -235,12 +244,12 @@ export default {
this.apsGet(); //获取参数级别和转序等的关系
},
mounted() {
this.$dragging.$on('dragged', ({ value }) => {
localStorage.setItem("apsitems",JSON.stringify(value.list));
})
var items=localStorage.getItem("apsitems");
if(items){
this.items=JSON.parse(items);
this.$dragging.$on("dragged", ({ value }) => {
localStorage.setItem("apsitems", JSON.stringify(value.list));
});
var items = localStorage.getItem("apsitems");
if (items) {
this.items = JSON.parse(items);
}
},
methods: {
......@@ -264,13 +273,13 @@ export default {
});
},
setParameter(v) {
this.entity.multiple=false;
this.entity.planState=false;
this.entity.over=false;
this.entity.dis=false;
for(var i=0;i<v;i++){
this.entity[this.items[i].value]=true;
}
this.entity.multiple = false;
this.entity.planState = false;
this.entity.over = false;
this.entity.dis = false;
for (var i = 0; i < v; i++) {
this.entity[this.items[i].value] = true;
}
},
handleSubmit() {
this.$refs.form.validate(valid => {
......@@ -284,10 +293,10 @@ export default {
this.entity.flog = 1;
return;
}
if(this.entity.multipleEquipPks){
if (this.entity.multipleEquipPks) {
this.entity.multipleEquipIds = this.entity.multipleEquipPks.join();
}
//
//
this.entity.planMethod = !this.entity.planState ? "重叠" : "平行";
this.entity.overTime = !this.entity.over ? "不加班" : "加班";
this.entity.isDiscrete = this.entity.dis ? "是" : "否";
......@@ -314,13 +323,14 @@ export default {
let vkey = "mes_op_task_plan_simulate" + "." + key;
return this.$t(vkey) || key;
},
setPercent(v){
this.entity.discrete=Math.round(((this.count-1)*v-this.count)/100);
setPercent(v) {
this.entity.discrete = Math.round(
((this.count - 1) * v - this.count) / 100
);
},
setDiscrete(v){
this.entity.discrete_percent=(
(100 * this.count - 100 * this.entity.discrete) / (this.count - 1)
);
setDiscrete(v) {
this.entity.discrete_percent =
(100 * this.count - 100 * this.entity.discrete) / (this.count - 1);
}
},
computed: {
......@@ -346,36 +356,38 @@ export default {
},
opTaskPk(v, n) {
this.entity.opTaskPk = v;
if(v>0){
console.log("detail",this.row);
let entity={
if (v > 0) {
console.log("detail", this.row);
let entity = {
partTaskPk: this.row.part_task_pk,
opTaskPk: this.row.op_task_pk,
taskSeq: this.row.task_seq,
flog: 0, //参数应用范围
calId: -1,
planState: this.row.plan_method=="平行",
calId: parseInt(this.row.cal_id),
planState: this.row.plan_method == "平行",
planMethod: this.row.plan_method, // 平行 重叠
over: this.row.over_time=="加班",
over: this.row.over_time == "加班",
overTime: this.row.over_time, //"六日加班", 不加班 加班
efficiencyValue:this.row.efficiency_value|1, // 效率系数, 必须大于 0
efficiencyValue: this.row.efficiency_value | 1, // 效率系数, 必须大于 0
shopId: -1,
isDiscrete: this.row.isdiscrete=="是",
discrete: this.row.discrete_value|1, //离散数值 必须大于 1
multiple: this.row.multi_machine=="是",
multipleEquip: this.row.multi_machine|"否", //"是否多台安排设备", 否 是
dis: this.row.isdiscrete == "是",
isDiscrete: this.row.isdiscrete ? "是" : "否", //是否离散 是否
discrete: this.row.discrete_value | 1, //离散数值 必须大于 1
multiple: this.row.multi_machine == "是",
multipleEquip: this.row.multi_machine | "否", //"是否多台安排设备", 否 是
multipleCount: 1, //多台数量
multipleEquipPks: [],
multipleEquipIds: "", //"设备id", 用英文逗号分隔
}
this.entity=entity
multipleEquipIds: "" //"设备id", 用英文逗号分隔
};
this.entity = entity;
console.warn("detail", this.entity, this.row);
}
this.entity.taskSeq = this.taskSeq;
},
count(v, n) {
this.entity.discrete = 1;
},
}
}
};
</script>
......
<template>
<div>
<div id="myChart" style="width:380px;height:300px;margin:0 auto;top: 0px;"></div>
<div id="myChart" style="width:380px;height:400px;margin:0 auto;top: 30px;"></div>
</div>
</template>
<script>
......
......@@ -118,9 +118,7 @@ export default {
}
},
downUrl: fileUrlDown,
columns: {
count:7,
},
columns: [],
comondata:[
{
productName: "受电弓",
......
.new_body{
&{
background: #fff;
}
}
.set_card{
padding: 12px 30px 0;
.set_card_box{
......@@ -18,6 +23,7 @@
width: 150px;
height: 120px;
text-align: center;
margin: 0 auto;
}
.statu_box{
line-height: 30px;
......@@ -32,11 +38,11 @@
margin: 0 10px 0 0;
}
.set_masage{
min-height: 125px;
height: 125px;
line-height: 25px;
.time_bg{
background: #267feb49;
line-height: 34px;
margin: 0 auto;
width: 160px;
text-align: center;
border-radius: 3px;
......@@ -44,8 +50,13 @@
}
.set_masage02{
line-height: 35px;
height: 144px;
text-align: center;
}
}
.echarts02{
height: 462px;
}
}
}
#echarts{
......@@ -58,7 +69,7 @@
.tips_item{
background: #eff1f7;
margin: 20px;
line-height: 38px;
line-height: 58px;
padding: 0 20px;
.item_top{
border-bottom: 1px solid #b1b1b1;
......
......@@ -2,7 +2,7 @@
@import "./mnc.less";
</style>
<template>
<div>
<div class="new_body">
<a class="back_href" @click="goView">
<Icon type="ios-undo-outline" size="24" />返回设备监控
</a>
......@@ -74,7 +74,7 @@
<p class="set_top">设备状态</p>
<div class="set_card_body">
<Row>
<Col span="9">
<Col span="24">
<div class="set_img statu_box">
<img v-if="formData.statu=='关机'" src="../image/guan.png" alt="">
<img v-else-if="formData.statu=='空闲'" src="../image/kong.png" alt="">
......@@ -83,7 +83,7 @@
<p>{{formData.statu}}</p>
</div>
</Col>
<Col span="15">
<Col span="24">
<div class="set_masage set_masage02">
<p>当前状态开始时间:</p>
<p class="time_bg">11:45:05</p>
......@@ -96,7 +96,7 @@
</div>
<div class="set_card_box">
<p class="set_top">加工状态统计</p>
<div class="center">
<div class="center echarts02">
<Echart2 ></Echart2>
</div>
</div>
......
import axios from 'axios';
import util from '@/libs/util';
import util from '@/libs/util';
import Setting from '@/setting';
import QS from 'querystring';
import { Message, Notice } from 'view-design';
import {
Message,
Notice
} from 'view-design';
// 创建一个错误
function errorCreate (msg) {
const err = new Error(msg);
errorLog(err);
throw err;
function errorCreate(msg) {
const err = new Error(msg);
errorLog(err);
throw err;
}
// 记录和显示错误
function errorLog (err) {
if(err&&err.response&&err.response.status==500){
console.log(err.response)
Message.error({
content: err.response.data.error.message,
duration: 5
})
return;
}
// 添加到日志
$nuxt.$store.dispatch('admin/log/push', {
message: '数据请求异常',
type: 'error',
meta: {
error: err
}
});
// 打印到控制台
if (process.env.NODE_ENV === 'development') {
util.log.error('>>>>>> Error >>>>>>');
console.warn(err.response);
console.log(err);
function errorLog(err) {
if (err && err.response && err.response.status == 500) {
console.log(err.response)
Message.error({
content: err.response.data.error.message,
duration: 5
})
return;
}
// 添加到日志
$nuxt.$store.dispatch('admin/log/push', {
message: '数据请求异常',
type: 'error',
meta: {
error: err
}
// 显示提示,可配置使用 iView 的 $Message 还是 $Notice 组件来显示
// if (Setting.errorModalType === 'Message') {
// Message.error({
// content: err.message,
// duration: Setting.modalDuration
// });
// } else if (Setting.errorModalType === 'Notice') {
// Notice.error({
// title: '提示',
// desc: err.message,
// duration: Setting.modalDuration
// });
// }
});
// 打印到控制台
if (process.env.NODE_ENV === 'development') {
util.log.error('>>>>>> Error >>>>>>');
console.warn(err.response);
console.log(err);
}
// 显示提示,可配置使用 iView 的 $Message 还是 $Notice 组件来显示
// if (Setting.errorModalType === 'Message') {
// Message.error({
// content: err.message,
// duration: Setting.modalDuration
// });
// } else if (Setting.errorModalType === 'Notice') {
// Notice.error({
// title: '提示',
// desc: err.message,
// duration: Setting.modalDuration
// });
// }
}
// 创建一个 axios 实例
const service = axios.create({
baseURL: Setting.apiBaseURL,
timeout: 60000, // 请求超时时间
transformRequest:[(data)=>{
function dateFormat(date, fmt) {
if (null == date || undefined == date) return '';
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"S+": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
Date.prototype.toJSON = function () {
return dateFormat(this, 'yyyy-MM-ddThh:mm:ss.SSSZ')
}
return JSON.stringify(data)
}]
baseURL: Setting.apiBaseURL,
timeout: 60000, // 请求超时时间
transformRequest: [(data) => {
function dateFormat(date, fmt) {
if (null == date || undefined == date) return '';
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"S+": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
Date.prototype.toJSON = function () {
return dateFormat(this, 'yyyy-MM-ddThh:mm:ss.SSSZ')
}
return JSON.stringify(data)
}]
});
// 设置post请求头
service.defaults.headers.post['Content-Type'] = 'application/json';
service.defaults.headers.put['Content-Type'] = 'application/json';
// 请求拦截器
service.interceptors.request.use(
config => {
// 在请求发送之前做一些处理
const token = util.cookies.get('token');
// 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
config.headers['Authorization'] = 'Bearer '+token;
return config;
},
error => {
// 发送失败
// console.log(error);
Promise.reject(error);
config => {
// 在请求发送之前做一些处理
// const token = util.cookies.get('token');
const token = sessionStorage.getItem('token');
if (token) {
// 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
config.headers['Authorization'] = 'Bearer ' + token;
}
return config;
},
error => {
// 发送失败
// console.log(error);
Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
response => {
// dataAxios 是 axios 返回数据中的 data
const dataAxios = response.data;
// 这个状态码是和后端约定的
const { code } = dataAxios;
// 根据 code 进行判断
if (code === undefined) {
// 如果没有 code 代表这不是项目后端开发的接口
return dataAxios;
} else {
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
return dataAxios.data;
case 'xxx':
// [ 示例 ] 其它和后台约定的 code
errorCreate(`[ code: xxx ] ${dataAxios.msg}: ${response.config.url}`);
break;
default:
// 不是正确的 code
errorCreate(`${dataAxios.msg}: ${response.config.url}`);
break;
}
}
},
error => {
if (error && error.response) {
if(error.response.status=="401"){
window.location.href = '/account/login';
return;
}
switch (error.response.status) {
case 400: error.message = '请求错误'; break;
case 401: error.message = '未授权,请登录'; break;
case 403: error.message = '拒绝访问'; break;
case 404: error.message = `请求地址出错: ${error.response.config.url}`; break;
case 408: error.message = '请求超时'; break;
case 500: error.message = '服务器内部错误'; break;
case 501: error.message = '服务未实现'; break;
case 502: error.message = '网关错误'; break;
case 503: error.message = '服务不可用'; break;
case 504: error.message = '网关超时'; break;
case 505: error.message = 'HTTP版本不受支持'; break;
default: break;
}
response => {
// dataAxios 是 axios 返回数据中的 data
const dataAxios = response.data;
// 这个状态码是和后端约定的
const {
code
} = dataAxios;
// 根据 code 进行判断
if (code === undefined) {
// 如果没有 code 代表这不是项目后端开发的接口
return dataAxios;
} else {
// 有 code 代表这是一个后端接口 可以进行进一步的判断
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
return dataAxios.data;
case 'xxx':
// [ 示例 ] 其它和后台约定的 code
errorCreate(`[ code: xxx ] ${dataAxios.msg}: ${response.config.url}`);
break;
default:
// 不是正确的 code
errorCreate(`${dataAxios.msg}: ${response.config.url}`);
break;
}
}
},
error => {
const token = sessionStorage.getItem('token');
if (!token) {
window.location.href = '/account/login';
return;
}
if (error && error.response) {
if (error.response.status == "401") {
window.location.href = '/account/login';
return;
}
switch (error.response.status) {
case 400:
error.message = '请求错误';
break;
case 401:
error.message = '未授权,请登录';
break;
case 403:
error.message = '拒绝访问';
break;
case 404:
error.message = `请求地址出错: ${error.response.config.url}`;
break;
case 408:
error.message = '请求超时';
break;
case 500:
error.message = '服务器内部错误';
break;
case 501:
error.message = '服务未实现';
break;
case 502:
error.message = '网关错误';
break;
case 503:
error.message = '服务不可用';
break;
case 504:
error.message = '网关超时';
break;
case 505:
error.message = 'HTTP版本不受支持';
break;
default:
break;
}
}
errorLog(error);
// console.warn("Erro:",error)
return Promise.reject(error);
}
errorLog(error);
return Promise.reject(error);
}
);
let api=service.get;
let get=(url,params)=>{
if(params){
return api(url,{"params":params})
}else{
return api(url)
}
let api = service.get;
let get = (url, params) => {
if (params) {
return api(url, {
"params": params
})
} else {
return api(url)
}
}
service.get=get;
service.get = get;
export default service;
......@@ -37,7 +37,6 @@ export const actions = {
// token 代表用户当前登录状态 建议在网络请求中携带 token
// 如有必要 token 需要定时更新,默认保存一天,可在 setting.js 中修改
// 如果你的 token 不是通过 cookie 携带,而是普通字段,也可视情况存储在 localStorage
console.warn(res);
if (res.result) {
util.cookies.set('uuid', res.result.userId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment