Commit fb5d624d authored by 周远喜's avatar 周远喜

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

parents e9b1096e 07734a85
......@@ -1241,12 +1241,12 @@ html [type=button] {
left: 0;
text-align: center;
padding: 20px 0;
background: #d0d2d9;
background: #08080894;
div {
height: 25px;
font-size: 14px;
color: #333;
color: #ffffff;
line-height: 28px;
}
......
......@@ -165,6 +165,11 @@
padding: 10px 12px 10px 0;
box-sizing: border-box;
}
.footers{
.ivu-form .ivu-form-item-label{
color: white;
}
}
.ivu-input {
font-size: 14px;
......
......@@ -2,7 +2,7 @@
<div>
<div v-if="theme=='list'" class="flex fd userSelect">
<div class="fg1 users">
<dl v-for="(g,i) in group">
<dl v-for="(g,i) in group" :key="i">
<dt :class="{checked:g.opened}" class="flex fc-b">
<div class="ib fg">
<Checkbox v-model="g.checked" @on-change="checkAll(g,i)">
......@@ -18,6 +18,7 @@
<dd
v-show="g.opened"
v-for="(li,j) in g.children"
:key="j"
@click="checkItem(i,j,li)"
:class="{checked:li.checked}"
>{{li.userName}}</dd>
......
......@@ -603,9 +603,9 @@ export default {
currentNodeName: '当前环节',
nextNodeId: '下一环节Id',
nextNodeName: '下一环节',
creatorUserId: '创建用户Id',
creator: '创建人',
creationTime: '创建时间',
creatorUserId: '发起用户Id',
creator: '发起人',
creationTime: '发起时间',
},
processList: { //工艺规程列表
id: 'id',
......
......@@ -22195,8 +22195,8 @@
},
"vue-class-component": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.3.tgz",
"integrity": "sha512-oEqYpXKaFN+TaXU+mRLEx8dX0ah85aAJEe61mpdoUrq0Bhe/6sWhyZX1JjMQLhVsHAkncyhedhmCdDVSasUtDw=="
"resolved": "https://registry.npm.taobao.org/vue-class-component/download/vue-class-component-7.2.3.tgz",
"integrity": "sha1-pbGr1TUTpyrVEJh1Li3t1JmAfMo="
},
"vue-client-only": {
"version": "2.0.0",
......@@ -22420,8 +22420,13 @@
},
"vue-slider-component": {
"version": "3.1.5",
<<<<<<< HEAD
"resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-3.1.5.tgz",
"integrity": "sha512-RIDL2cjIfSMKxv7IeNQ5gn936SAaLi+UKc97xd8yN92zz0n5dK343GGSay/3ypzhR1C5YIN3n7/LclUQrIDoFg==",
=======
"resolved": "https://registry.npm.taobao.org/vue-slider-component/download/vue-slider-component-3.1.5.tgz?cache=0&sync_timestamp=1590980161427&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-slider-component%2Fdownload%2Fvue-slider-component-3.1.5.tgz",
"integrity": "sha1-2a1vGhBcigp7cvW4+VZW0HuOTDY=",
>>>>>>> 07734a85a7ff7845f4f995bf7879d342b5bda7d3
"requires": {
"core-js": "^3.6.5",
"vue-property-decorator": "^8.0.0"
......@@ -22429,8 +22434,13 @@
"dependencies": {
"core-js": {
"version": "3.6.5",
<<<<<<< HEAD
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
=======
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz",
"integrity": "sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo="
>>>>>>> 07734a85a7ff7845f4f995bf7879d342b5bda7d3
}
}
},
......
......@@ -31,4 +31,7 @@ export default {
getpoolordercount(){//各排产池订单数量
return Api.get(`${PlanUrl}/messchedule/getpoolordercount`);
},
listbyuser(params) {//获取当前登录用户可操作的排产
return Api.post(`${authUrl}/api/services/app/setschedulecompany/listbyuser`, params);
},
}
\ No newline at end of file
......@@ -26,6 +26,7 @@
overflow-count="99"
style="margin-right:15px;"
type="info"
v-if="showAps"
>
<a href="javascript:;" @click="goAps">APS排产&nbsp;&nbsp;&nbsp;</a>
</Badge>
......@@ -34,6 +35,7 @@
overflow-count="99"
style="margin-right:15px;"
type="info"
v-if="showAi"
>
<a href="javascript:;">智能排产&nbsp;&nbsp;&nbsp;</a>
</Badge>
......@@ -42,10 +44,11 @@
overflow-count="99"
style="margin-right:15px;"
type="info"
v-if="showAll"
>
<a href="javascript:;" @click="goCemplate">整机排产&nbsp;&nbsp;&nbsp;</a>
</Badge>
<Badge :count="this.$store.state.countRun" overflow-count="99" type="info">
<Badge :count="this.$store.state.countRun" overflow-count="99" type="info" v-if="showRun">
<a href="javascript:;" @click="goStream">流水排产&nbsp;&nbsp;&nbsp;</a>
</Badge>
</template>
......@@ -82,7 +85,14 @@
<Modal v-model="scheduleModal" title="移入排产" width="800">
<p>&nbsp;</p>
<h4>请选择排产模型:</h4>
<Dictionary code="aps.plan.scheduleType" v-model="scheduleType" class="radioList" :border="true" type="radio" @on-change="onchangeScheduleType"></Dictionary>
<Dictionary
code="aps.plan.scheduleType"
v-model="scheduleType"
class="radioList"
:border="true"
type="radio"
@on-change="onchangeScheduleType"
></Dictionary>
<p class="pl30 pt10" v-show="scheduleType!=null">
确定将订单
<span class="fwBold">{{resultsOrderList}}</span> 移入
......@@ -310,7 +320,13 @@ export default {
h(
"op",
{
attrs: { oprate: "detail",title: params.row.mainRoutingSetStatus == 0? "工艺派发": "移入排产"},
attrs: {
oprate: "detail",
title:
params.row.mainRoutingSetStatus == 0
? "工艺派发"
: "移入排产"
},
style: {
color: params.row.mainRoutingSetStatus == 0 ? "red" : ""
},
......@@ -331,7 +347,14 @@ export default {
h(
"op",
{
attrs: { oprate: "detail",title: params.row.isSupportingFinish == 2|| params.row.isSupportingFinish == 3? "配套派发": "" },
attrs: {
oprate: "detail",
title:
params.row.isSupportingFinish == 2 ||
params.row.isSupportingFinish == 3
? "配套派发"
: ""
},
style: {
color: params.row.mainRoutingSetStatus == 0 ? "red" : ""
},
......@@ -365,7 +388,11 @@ export default {
scheduleStatus: 0, //排产标识
resultsOrderList: "",
scheduleType: null,
scheduleTypeName: ""
scheduleTypeName: "",
showAps: false,
showAi: false,
showAll: false,
showRun: false
};
},
mounted() {
......@@ -640,6 +667,29 @@ export default {
},
//进入页面加载排产count-----
loadInitCount() {
let currentUserId = this.$store.state.userInfo.userId;
let para = { id: currentUserId };
Api.listbyuser(para).then(datas => {
if (datas.success && datas.result && datas.result.length > 0) {
datas.result.forEach(dateScheduleId => {
switch (dateScheduleId.apsScheduleId) {
case 1:
this.showAps = true;
break;
case 2:
this.showAll = true;
break;
case 3:
this.showRun = true;
break;
default:
this.showAi = true;
}
});
}
});
this.$store.commit("setCountAps", 0);
this.$store.commit("setCountAi", 0);
this.$store.commit("setCountAll", 0);
......
......@@ -9,7 +9,7 @@
<p class="dispatch_part_top">
<b class="mr10">设备列表</b>
{{listSheBei.length}}
<!-- {{ids}} -->
<span style="display:none">{{ids}}</span>
</p>
<div class="dispatch_part_body" :style="{height:byheight}">
<h4 class="tc" v-if="this.listSheBei.length==0">暂无数据</h4>
......@@ -33,12 +33,13 @@
<p class="show_btn">
<a @click="showRow(item.id,item.btnShow)">
<Tooltip content="所属程序列表">
<Icon v-if="btnModal" type="ios-arrow-down" />
<Icon v-if="item.btnShow" type="ios-arrow-down" />
<Icon v-else type="ios-arrow-up" />
</Tooltip>
</a>
</p>
<div class="h60" v-if="!btnModal">
<div class="h60" v-if="item.btnShow">
<span style="display:none"> {{liOrderIds}} </span>
<Row class="card_body02" v-for="(li,index) in item.row" :key="index">
<Col span="8" class="dispatch_li">
<Checkbox v-model="li.checked">程序名:{{li.mdcNmae}}</Checkbox>
......@@ -46,7 +47,6 @@
<Col span="8" class="dispatch_li">大小:{{li.size}}</Col>
<Col span="8" class="dispatch_li">下载时间:{{li.downTime}}</Col>
</Row>
<!-- {{liOrderIds}} -->
</div>
</div>
</div>
......@@ -100,7 +100,7 @@
</Modal>
<!-- 底部 -->
<FooterToolbar style="height:65px" v-show="showOperate&&footerToolbar">
<!-- <span>已选程序:{{chengXuIds.length}}</span> -->
<!-- <span v-if="beyong">已选程序:{{chengXuIds.length}}</span> -->
<Button class="span ml20" type="primary" v-if="xiaZai" @click="downFile">下载</Button>
<Button class="span ml20" type="primary" v-if="beyong" @click="fileBeyong">文本对比</Button>
<Button @click="footerToolbar=false">取消</Button>
......@@ -200,21 +200,19 @@ export default {
{
mdcNmae: "00123_281",
id:101,
size: "128Mb",
size: "120Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},
{
},{
mdcNmae: "00123_282",
id:102,
size: "128Mb",
size: "133Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},
{
},{
mdcNmae: "00123_283",
id:103,
size: "128Mb",
size: "100Mb",
downTime: "2020-05-26 10:30:26",
checked: false
}
......@@ -230,25 +228,59 @@ export default {
id: 2,
row: [
{
mdcNmae: "00123_281",
mdcNmae: "00123_284",
id:201,
size: "128Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},
{
mdcNmae: "00123_282",
},{
mdcNmae: "00123_285",
id:202,
size: "128Mb",
size: "118Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},
{
mdcNmae: "00123_283",
},{
mdcNmae: "00123_286",
id:203,
size: "100Mb",
downTime: "2020-05-26 10:30:26",
checked: false
}
]
},{
dncCode: "19212_0665003",
dncName: "数控机床03",
dncUser: "刘蕾",
dncArea: "区域03",
dncStatue: "空闲",
checked: false,
btnShow: false,
id: 3,
row: [
{
mdcNmae: "00123_287",
id:201,
size: "128Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},{
mdcNmae: "00123_288",
id:202,
size: "110Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},{
mdcNmae: "00123_289",
id:203,
size: "130Mb",
downTime: "2020-05-26 10:30:26",
checked: false
},{
mdcNmae: "00123_290",
id:203,
size: "135Mb",
downTime: "2020-05-26 10:30:26",
checked: false
}
]
}
......@@ -292,7 +324,6 @@ export default {
endTime: "2020/05/26 "
}
],
btnModal: true,//箭头
listTitle: [], //订单号列表
newList: [], //选中数据
chaiModal: false, //拆分弹框
......@@ -386,14 +417,12 @@ export default {
this.footerToolbar = true;
},
// 切换箭头
showRow(id,btn){
// console.log(id)
// let ss=!btnModal
// this.listSheBei.map(u=>{
// })
// console.log(btnModal = ss)
this.btnModal = !this.btnModal
showRow(rowid,btn){
this.listSheBei.map(u=>{
if(u.id==rowid){
u.btnShow = !u.btnShow
}
})
},
// 获取查询人员
getselectuser(id) {
......@@ -472,10 +501,11 @@ export default {
this.getUserInfoFn();
},
downFile(){
this.$Message.success("下载文件")
this.$Message.success("下载文件中...")
},
fileBeyong(){
this.$Message.success("对比文件")
this.$router.push("/dncmnc/dnc/difftext");
},
// 打开抽屉
openDrawer() {
......@@ -609,8 +639,13 @@ export default {
}
});
if (ids.length > 0) {
this.footerToolbar = true;
this.xiaZai = true;
// if(this.liOrderIds.length>0){
// this.$Message.info("设备和所属程序不能同时选择!")
// }else{
this.footerToolbar = true;
this.xiaZai = true;
this.beyong = false;
// }
}
return ids;
},
......@@ -633,23 +668,35 @@ export default {
return orders;
},
liOrderIds() {
let liOrderIds = [];
let rowList ;
this.listSheBei.map(u => { rowList = u.row });
// rowList.map(item=>{ rowData.push(item) })
// rowList.map(tm=>{
// if(tm.checked){
// liOrderIds.push(tm.id)
// }
// })
let rowList = [] ;
let liOrderIds = [] ;
let cardData = this.listSheBei;
for(let i=0;i<cardData.length;i++){
cardData[i].row.map(u=>{
rowList.push(u)
})
}
rowList.map(tem => {
if (tem.checked) {
liOrderIds.push(tem.id);
}
});
if(liOrderIds.length > 0){
if(this.ids.length > 0){
this.$Message.info("设备和所属程序不能同时选择!")
this.footerToolbar = false;
}else{
this.footerToolbar = true;
this.xiaZai = false;
this.beyong = true;
}
}
return liOrderIds;
// this.footerToolbar = true;
return rowList;
},
showOperate() {
return (
this.ids.length > 0 && (this.chengXuIds.length > 0 )
// || this.liOrderIds.length > 0
(this.ids.length > 0 || this.liOrderIds.length > 0) && (this.chengXuIds.length > 0 )
);
}
},
......
<style lang="less" scoped>
@import "./dispatch.less";
</style>
<template>
<div class="diff_box">
<a class="back_href" @click="goView">
<Icon type="ios-undo-outline" size="24" />返回设备监控
</a>
<div class="diff_card">
<div class="diff_top">
程序名:00123_281
</div>
<div class="diff_top">
程序名:1288-268 &nbsp;&nbsp;
绑定设备:数控机床
</div>
<img src="../image/textdiff.png" alt="">
</div>
</div>
</template>
<script>
import Api from "./api";
export default {
components: {},
data() {
return {
action: Api.index,
byheight: "450px",
};
},
created() {
// this.getUserInfoFn();
this.byheight = window.innerHeight - 178 + "px";
},
mounted() {
this.byheight = window.innerHeight - 178 + "px";
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
methods: {
goView(){
//返回数控程序传输页面
this.$router.push("/dncmnc/dnc/datalist");
},},
computed: {},
watch: {}
};
</script>
<style lang="less">
.diff_card{
width: 100%;
height: 86vh;
.diff_top{
width: 50%;
float: left;
text-align: center;
}
img{
display: block;
width: 90%;
margin: 0vh auto;
}
}
</style>
\ No newline at end of file
<template>
<div>
<div id="myChart03" style="width:865px;height:316px;top: 0px;"></div>
<div id="myChart03" style="width:895px;height:316px;top: 0px;"></div>
</div>
</template>
<script>
......
<template>
<div>
<div id="gauge01" style="width:200px;height:150px;top: 0px;"></div>
<div id="myChart04" style="width:100%;height:340px;margin:20px auto;top: 0px;"></div>
</div>
</template>
<script>
......@@ -17,141 +17,61 @@ export default {
},
loadEchart() {
// 基于准备好的dom,初始化echarts实例
var gauge01 = this.$echarts.init(document.getElementById('gauge01'))
var score = 78;
var name = '名称';
var myChart04 = this.$echarts.init(document.getElementById('myChart04'))
var option = {
series: [
title: {
text: ''
},
legend: {
data: ['开机', '关机', '故障', '运行'],
right: 55,
},
tooltip: {
trigger: 'axis'
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
data: ['1日', '2日', '3日', '4日', '5日', '6日', '7日', '8日', '9日', '10日', '11日', '12日', '13日',
'14日', '15日', '16日', '17日', '18日']
},
yAxis: {
type: 'value'
},
series: [
{
type: 'gauge',
min: 0,
max: 100,
radius: '80%',
startAngle: 180,
endAngle: 0,
axisLine: {
show: false,
lineStyle: {
opacity: 0,
width: 12
}
},
splitLine: {
show: false
},
pointer: {
show: false
},
axisTick: {
splitNumber: 10,
length: 12,
lineStyle: {
color: '#004fb0'
}
},
title: {
show: true,
fontSize: 16,
color: '#5faeff',
offsetCenter: [0, '-115%']
},
detail: {
formatter: function (value) {
return '{a|' + value + '} {b|分}'
},
offsetCenter: [0,-20],
rich: {
a: {
fontSize: 32,
color: '#15e198'
},
b: {
fontSize: 14,
color: '#15e198',
padding: [0, 0, 5, 0]
}
}
},
data: [{value: [score], name: name}]
name: '开机',
type: 'bar',
barWidth: 8,
data: [120, 132, 101, 134, 90, 230, 210,120, 132, 101, 134, 90, 230, 210,120, 132, 101, 134]
},
{
name: 'score',
type: 'pie',
startAngle: 180,
hoverAnimation: false,
radius: [105, 115],
label: {
normal: {
show: false
}
},
data: [
{
value: 0.4,
name: 0.4,
itemStyle: {
normal: {
color: '#fff'
}
}
},
{
value: 0.4,
itemStyle: {
normal: {
color: 'transparent'
}
}
}
]
name: '关机',
type: 'bar',
barWidth: 8,
data: [220, 182, 191, 234, 290, 330, 310,220, 182, 191, 234, 290, 330, 310,220, 182, 191, 234, 290, 330, 310]
},
{
name: 'score',
type: 'pie',
startAngle: 180,
hoverAnimation: false,
radius: [105, 115],
label: {
normal: {
show: false
}
},
data: [
{
value: [(score * 0.5 /100).toFixed(2)],
name: [(score * 0.5 /100).toFixed(2)],
itemStyle: {
normal: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0, color: '#15e198'
}, {
offset: 1, color: '#409eff'
}]
}
}
}
},
{
value: [1- (score * 0.5 /100).toFixed(2)],
itemStyle: {
normal: {
color: 'transparent'
}
}
}
]
name: '故障',
type: 'bar',
barWidth: 8,
data: [150, 232, 201, 154, 190, 330, 410,150, 232, 201, 154, 190, 330, 410,150, 232, 201, 154, 190, 330, 410]
},
{
name: '运行',
type: 'bar',
barWidth: 8,
data: [320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320]
}
]
]
}
// 绘制图表
gauge01.setOption(option)
myChart04.setOption(option)
}
},
mounted() {
......
This diff is collapsed.
......@@ -42,24 +42,30 @@
border-radius: 3px;
}
}
.set_masage02{
line-height: 35px;
}
}
}
}
#echarts{
.set_echarts{
.echart3{
height: 800px;
}
.tips{
// padding: 20px;
.tips_item{
background: #eff1f7;
margin: 20px;
line-height: 36px;
line-height: 38px;
padding: 0 20px;
.item_top{
border-bottom: 1px solid #b1b1b1;
}
.item_center{
text-align: center;
line-height: 32px;
// line-height: 32px;
}
.item_right{
float: right;
......
......@@ -80,7 +80,7 @@
</div>
</Col>
<Col span="15">
<div class="set_masage">
<div class="set_masage set_masage02">
<p>当前状态开始时间:</p>
<p class="time_bg">11:45:05</p>
<p>当前状态持续时间:</p>
......@@ -102,13 +102,13 @@
<p class="set_top">加工状态实时信息</p>
<div class="set_echarts">
<Row>
<Col span="16">
<Col span="17">
<div class="echart3">
<Echart3 ></Echart3>
<Echart4 ></Echart4>
<Echart5 ></Echart5>
</div>
</Col>
<Col span="8">
<Col span="7">
<div class="tips">
<div class="tips_item">
<Row class="item_top">
......@@ -164,12 +164,12 @@
<script>
import Echart2 from './compose/echart2'
import Echart3 from './compose/echart3'
import Echart4 from './compose/echart4'
import Echart5 from './compose/echart5'
export default {
components: {
Echart2,
Echart3,
Echart4,
Echart5,
},
data(){
return{
......
<style lang="less" scope>
@import "../shen.less";
</style>
<template>
<div class="new-detail" style="width:90%;margin:0 auto">
<div class="new-detail">
<Row>
<Filed :span="8" name="编码:">{{!entity.code?'未分配':entity.code}}</Filed>
<Filed :span="8" name="名称:">{{entity.name}}</Filed>
<Filed :span="8" name="状态:">
<State code="materail.category.status" :value="parseInt(entity.status)" />
<State code="materail.main.status" :value="parseInt(entity.status)" />
</Filed>
<Filed :span="8" name="版本:">
<State code="material.main.version" :value="parseInt(entity.version)" />
</Filed>
<Filed :span="8" name="版本:">{{entity.version}}</Filed>
<Filed :span="8" name="描述:">{{entity.description}}</Filed>
</Row>
<Divider orientation="left">扩展属性</Divider>
<Divider orientation="center"><h3>扩展属性</h3></Divider>
<Row>
<Filed v-for="li in fileds" :key="li.field" :span="li.span" :name="li.title+':'">
<State v-if="li.dataType==3" :code="li.note" :value="entity[li.field]" />
<div v-else-if="li.dataType==8">{{entity[li.field]}}</div>
<div v-else-if="li.dataType==5" v-html="entity[li.field]"></div>
<DTSpan v-else-if="li.dataType==4" :value="entity[li.field]" />
<DTSpan v-else-if="li.dataType==4" :value="entity[li.field]" />
<span v-else>{{entity[li.field]}}</span>
<State
v-if="li.unitName&&(li.dataType==1||li.dataType==2)"
:code="li.note"
:value="entity[li.field]"
/>
<State
v-if="li.unitName&&(li.dataType==1||li.dataType==2)"
:code="li.note"
:value="entity[li.field]"
/>
</Filed>
</Row>
</div>
......
......@@ -288,3 +288,11 @@ export default {
watch: {}
}
</script>
<style lang="less">
// .footers{
// .ivu-form .ivu-form-item-label{
// color: white!important;
// }
// }
</style>
\ No newline at end of file
<template>
<div class="myBug">
<Tabs :animated="false" @on-click="tab" value="3">
......@@ -103,6 +104,29 @@ export default {
key: "schemaId",
hide: true
},
{
title: this.l("status"),
key: "status",
align: "center",
width: 120,
high: true,
code: "Handle.todoList.status"
},
{
title: this.l("creatorUserId"),
key: "creatorUserId",
hide: true
},
{
title: this.l("creator"),
key: "creator",
align: "center"
},
{
title: this.l("creationTime"),
key: "creationTime",
align: "center"
},
{
title: this.l("schemaName"),
key: "schemaName"
......@@ -135,27 +159,6 @@ export default {
title: this.l("nextNodeName"),
key: "nextNodeName"
},
{
title: this.l("status"),
key: "status",
high: true,
code: "Handle.todoList.status"
},
{
title: this.l("creatorUserId"),
key: "creatorUserId",
hide: true
},
{
title: this.l("creator"),
key: "creator",
align: "center"
},
{
title: this.l("creationTime"),
key: "creationTime",
align: "center"
},
{
title: "操作",
......
<style lang="less" scope>
@import "./shen.less";
</style>
<template>
<div class="Design">
<h3>{{ processTitle }}</h3>
......@@ -10,7 +13,6 @@
{{ item.name }} &nbsp;(
<state code="workflow.form.audit.type" :value="item.operation" />)
<Icon v-if="item.isFixed" title="固定" type="ios-lock" />
<span class="auditedTime">{{item.auditedTime}}</span>
</p>
<div class="content">
<div class="records" v-if="index==cur">
......@@ -22,30 +24,16 @@
class="mr5"
/>
</div>
<div v-else-if="index>cur">
<CheckboxGroup v-model="immutData">
<span>审批人:</span>
<Checkbox
v-for="(item1, index1) in item.defaultUsers.immutable"
:key="index1"
:label="item1"
:disabled="item.isFixed"
>
<User :value="item1" style="margin-right:5px;" />
</Checkbox>
</CheckboxGroup>
</div>
<div class="wait" v-else>
<span>审批人:</span>
<User
v-for="(item2, index2) in item.defaultUsers.immutable"
:key="index2"
:value="item2"
class="mr5"
/>
</div>
<div style="width:98%" v-if="com(item.records).length>0">
<Table :columns="columns" border size="small" width="90%" :data="com(item.records)"></Table>
<!-- <Table :columns="columns" border size="small" width="90%" :data="com(item.records)"></Table> -->
<p class="shen_row" v-for="(item3, index3) in item.records" :key="index3" :value="item3">
<User class="user_span" :value="item3.operatorId"/>
<span class="plr row_time">{{item3.operationTime}}</span>
<state code="workflow.record.status" :value="item3.status" type="text"></state>
<span class="plr remark" v-if="item3.remark">{{item3.remark}}</span>
<a class="plr row_ditill" v-if="item3.contextData" @click="edit(item3)">详情</a>
<!-- <span>{{item3.contextData}}</span> -->
</p>
</div>
</div>
</TimelineItem>
......@@ -57,12 +45,16 @@ import Api from './api'
export default {
name: 'process',
components: {},
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
},
data() {
return {
currentUserId: 0,
processTitle: '审批流程',
currentNodeId: null,
dataImmut: [],
creatRows: [],
cur: 0,
columns: [
{
......@@ -136,8 +128,8 @@ export default {
Api.getdetail({ Id: this.idVal }).then((r) => {
if (r.success) {
this.dataImmut = r.result.nodes
this.processTitle = r.result.schemaName
this.currentNodeId = r.result.currentNodeId
let idUser = []
r.result.nodes.map((u, i) => {
//查找当前节点索引
if (u.id == this.currentNodeId) {
......@@ -152,6 +144,7 @@ export default {
// console.log("this.dataImmut[this.cur + 1]:",this.dataImmut[this.cur + 1],this.cur,this.dataImmut.length )
this.immutData = this.dataImmut[this.cur + 1].defaultUsers.immutable||(this.dataImmut[this.cur + 1].defaultUsers.mutable)//审核人员bug
}
} else {
this.$Message.error('加载失败')
}
......@@ -178,8 +171,8 @@ export default {
com(items) {
if(items)
return items.filter((u) => {
return [2, 3, 5,6].indexOf(u.status) > -1
})
return [2, 3, 5, 6].indexOf(u.status) > -1
})
else
return [];
},
......@@ -191,12 +184,4 @@ export default {
computed: {},
watch: {}
}
</script>
<style lang="less">
.Design{
margin:20px auto; width:90%;
.ivu-timeline-item-head{
background-color: transparent;
}
}
</style>
\ No newline at end of file
</script>
\ No newline at end of file
<style lang="less" scope>
@import "./shen.less";
</style>
<template>
<div class="Design">
<h3>{{ processTitle }}</h3>
<Divider />
<Timeline>
<TimelineItem v-for="(item, index) in dataImmut" :key="index">
<Badge :count="index + 1" slot="dot" :type="type(index)"></Badge>
<p class="title">
<state code="workflow.record.status" :value="item.status" type="tag" />
{{ item.name }} &nbsp;(
<state code="workflow.form.audit.type" :value="item.operation" />)
<Icon v-if="item.isFixed" title="固定" type="ios-lock" />
<!-- <span class="auditedTime">{{item.auditedTime}}</span> -->
</p>
<div class="content">
<div class="records" v-if="index==cur">
<span>审批人:</span>
<User
v-for="(item3, index3) in item.records"
:key="index3"
:value="item3.operatorId"
class="mr5"
/>
</div>
<div v-else-if="index>cur">
<CheckboxGroup v-model="immutData">
<span>审批人:</span>
<Checkbox
v-for="(item1, index1) in item.defaultUsers.immutable"
:key="index1"
:label="item1"
:disabled="item.isFixed"
>
<User :value="item1" style="margin-right:5px;" />
</Checkbox>
</CheckboxGroup>
</div>
<div class="wait" v-else>
<span>审批人:</span>
<User
v-for="(item2, index2) in item.defaultUsers.immutable"
:key="index2"
:value="item2"
class="mr5"
/>
</div>
<div style="width:98%" v-if="com(item.records).length>0">
<Table :columns="columns" border size="small" width="90%" :data="com(item.records)"></Table>
<p>
<state code="workflow.record.status" :value="item.status" type="text"></state>
<!-- <User :value="item.operatorId" class="mr5"/> -->
<span>{{item.auditedTime}}</span>
<!-- <span>{{item}}</span> -->
</p>
</div>
</div>
</TimelineItem>
</Timeline>
</div>
</template>
<script>
import Api from './api'
export default {
name: 'process',
components: {},
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
},
data() {
return {
currentUserId: 0,
processTitle: '审批流程',
currentNodeId: null,
dataImmut: [],
cur: 0,
columns: [
{
key: 'status',
title: '结果',
align: 'left',
width: 100,
render: (h, params) => {
return h('state', {
attrs: {
value: params.row.status,
code: 'workflow.record.status'
}
})
}
},
{
key: 'operatorId',
title: '操作人',
align: 'left',
width: 100,
easy: true,
high: true,
render: (h, params) => {
return h('User', { attrs: { value: params.row.operatorId } })
}
},
{
title: '时间',
key: 'operationTime',
width: 200,
align: 'center'
},
{
title: '备注',
key: 'remark',
align: 'center'
},
{
key: 'contextData',
title: '详细',
width: 100,
align: 'left',
render: (h, params) => {
if (params.row.contextData.length > 2)
return h(
'a',
{ on: { click: () => this.edit(params.row) } },
'详情'
)
return h('span', '')
}
}
],
dataMut: [],
immutData: [],
schemaId: ''
}
},
props: {
idVal: {
type: String,
default: ''
}
},
created() {
this.currentUserId=this.$store.state.userInfo.userId
this.dataImmut = []
this.dataMut = []
Api.getdetail({ Id: this.idVal }).then((r) => {
if (r.success) {
this.dataImmut = r.result.nodes
this.processTitle = r.result.schemaName
this.currentNodeId = r.result.currentNodeId
r.result.nodes.map((u, i) => {
//查找当前节点索引
if (u.id == this.currentNodeId) {
this.cur = i
};
// if(u.defaultUsers.mutable&&u.defaultUsers.mutable.length>0){
// u.defaultUsers.immutable=u.defaultUsers.immutable.concat(u.defaultUsers.mutable)
u.defaultUsers.immutable=u.defaultUsers.immutable||(u.defaultUsers.mutable)//审核人员bug
// }
})
if (this.dataImmut.length > this.cur + 1) {
// console.log("this.dataImmut[this.cur + 1]:",this.dataImmut[this.cur + 1],this.cur,this.dataImmut.length )
this.immutData = this.dataImmut[this.cur + 1].defaultUsers.immutable||(this.dataImmut[this.cur + 1].defaultUsers.mutable)//审核人员bug
}
} else {
this.$Message.error('加载失败')
}
})
},
methods: {
load(v) {},
type(i) {
if (i < this.cur) {
return 'primary'
} else if (i == this.cur) {
return 'info'
} else if (i == this.cur + 1) {
return 'warning'
} else {
return 'normal'
}
},
edit(record) {
// alert(record.id)
this.$emit('node-click', record)
console.log(record)
},
com(items) {
if(items)
return items.filter((u) => {
return [2, 3, 5, 6].indexOf(u.status) > -1
})
else
return [];
},
l(key) {
key = 'orderInfo' + '.' + key
return this.$t(key)
}
},
computed: {},
watch: {}
}
</script>
\ No newline at end of file
.new-detail{
margin: 0 auto;
width: 98%;
background: #fff;
box-shadow: 0px 2px 6px rgba(0,0,0,0.16);
}
.Design{
margin:20px auto;
width: 98%;
padding: 20px;
background: #fff;
box-shadow: 0px 2px 6px rgba(0,0,0,0.16);
.ivu-timeline-item-head{
background-color: transparent;
}
.shen_row{
border-bottom: 1px solid #ccc;
line-height: 30px;
padding: 0 0 0 5px;
.user_span{
max-width: 150px;
width: 120px;
}
.row_time{
width: 180px;
}
.row_ditill{
width: 150px;
}
.plr{
display: inline-block;
padding: 0 20px;
}
.remark{
max-width: 1260px;
min-width: 100px;
}
}
}
\ No newline at end of file
......@@ -20,9 +20,11 @@
<Filed :span="8" name="编码:">{{!entity.code?'未分配':entity.code}}</Filed>
<Filed :span="8" name="名称:">{{entity.name}}</Filed>
<Filed :span="8" name="状态:">
<State code="materail.category.status" :value="parseInt(entity.status)" />
<State code="material.main.status" :value="parseInt(entity.status)" />
</Filed>
<Filed :span="8" name="版本:">
<State code="material.main.version" :value="parseInt(entity.version)" />
</Filed>
<Filed :span="8" name="版本:">{{entity.version}}</Filed>
<Filed :span="8" name="描述:">{{entity.description}}</Filed>
</Row>
<Divider orientation="left">扩展属性</Divider>
......@@ -117,7 +119,7 @@ export default {
}).then(r => {
if (r.result) {
this.fileds = r.result.filter(function(item) {
console.log(item);
// console.log(item);
item.span = 8;
if (item.dataType == 8 || item.dataType == 5) {
item.span = 24;
......
......@@ -136,11 +136,11 @@ export default {
align: "left",
code: "material.main.version"
},
{
key: "description",
title: "描述",
align: "left"
},
// {
// key: "description",
// title: "描述",
// align: "left"
// },
{
key: "creationTime",
title: "创建时间",
......@@ -159,7 +159,7 @@ export default {
title: "操作",
key: "action",
width: 150,
align: "center",
align: "left",
render: (h, params) => {
return h("div", { class: "action" }, [
h(
......@@ -226,6 +226,8 @@ export default {
return data;
},
onSelect(a, b) {
// console.log(a);
// console.log(b);
//批量选择
this.rootCategoryId = a[0].rootCategoryId;
this.selectRows = a;
......@@ -265,7 +267,7 @@ export default {
});
this.cols = this.$u.clone(this.columns);
let extra = items.map(u => {
// console.log(u);
console.log(u);
var col = {
key: u.field,
title: u.title
......@@ -360,7 +362,7 @@ export default {
watch: {
nodeInfo: {
handler(newName, oldName) {
console.log("ovo", newName, oldName);
// console.log("ovo", newName, oldName);
if (newName.rootCategoryId) {
this.initCols(() => {
if (newName.categoryId) {
......@@ -379,9 +381,10 @@ export default {
}
};
</script>
<style lang="less" scoped>
.spare-parts {
width: 100%;
height: 100%;
<style lang="less" >
.master-data {
.ivu-footer-toolbar-right {
margin-right: 72% !important;
}
}
</style>
\ No newline at end of file
......@@ -6,9 +6,11 @@
<Filed :span="8" name="编码:">{{!entity.code?'未分配':entity.code}}</Filed>
<Filed :span="8" name="名称:">{{entity.name}}</Filed>
<Filed :span="8" name="状态:">
<State code="materail.category.status" :value="parseInt(entity.status)" />
<State code="material.main.status" :value="parseInt(entity.status)" />
</Filed>
<Filed :span="8" name="版本:">
<State code="material.main.version" :value="parseInt(entity.version)" />
</Filed>
<Filed :span="8" name="版本:">{{entity.version}}</Filed>
<Filed :span="8" name="描述:">{{entity.description}}</Filed>
</Row>
<Divider orientation="left">扩展属性</Divider>
......@@ -28,14 +30,26 @@
</Filed>
</Row>
</div>
<Table
<DataGrid
v-if="osrOneList2"
:columns="cols"
ref="grid"
:conditions="easySearch"
:action="action"
:initsearch="sets"
:tool="false"
:page="false"
:height="300"
:format="formatFun"
/>
<!-- <Table
:loading="loading"
border
:columns="cols"
:data="dataList"
class="tableCommon"
v-if="osrOneList2"
></Table>
></Table>-->
<Process ref="userProcess" schemaIdVal="b6303ddc-8b5e-40a3-a51b-294657d1d913" />
<div slot="footer">
<Button @click="modalInfo">取消</Button>
......@@ -68,12 +82,13 @@ export default {
components: {
Process
},
props: ["eid", "rootCategoryId", "rowsTable"],
props: ["eid", "rootCategoryId", "nodeInfo", "rowsTable"],
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
data() {
return {
action: Api.index,
rowId: "",
entity: {},
metCodesStrTxt: "",
......@@ -83,6 +98,17 @@ export default {
divHeight: "300px",
osrOneList1: false, //一条数据显示
osrOneList2: false,
sets: v => {
v.categoryId = this.nodeInfo.categoryId;
v.rootCategoryId = this.nodeInfo.rootCategoryId;
},
easySearch: {
keys: { op: "code,name", value: null },
categoryId: {
op: "In",
value: this.nodeInfo.ids
}
},
info: true,
ruleValidate: {},
orderSearchForm: {
......@@ -138,13 +164,22 @@ export default {
{
key: "version",
title: "版本",
align: "left"
},
{
key: "description",
title: "描述",
align: "left"
align: "left",
render: (h, params) => {
return h("state", {
props: {
code: "material.main.version",
type: "text",
value: params.row.status + ""
}
});
}
}
// {
// key: "description",
// title: "描述",
// align: "left"
// }
]
};
},
......@@ -159,7 +194,6 @@ export default {
this.osrOneList1 = false;
this.osrOneList2 = true;
this.getTable();
this.dataList = this.rowsTable;
}
},
mounted() {
......@@ -172,6 +206,11 @@ export default {
};
},
methods: {
//格式化原始数据
formatFun(data) {
data = this.rowsTable;
return data;
},
getDetails(v) {
Api.get({ id: v }).then(r => {
if (r.result) {
......@@ -239,6 +278,19 @@ export default {
if (u.dataType == 3) {
col.code = u.note;
}
if (u.dataType == 4) {
col.type = "date";
}
if (u.unitName && (u.dataType == 1 || u.dataType == 2)) {
var units = this.$store.getters.dictionaryByKey(
"material.main.unitName"
);
let item = units.filter(p => {
return p.code == u.unitName;
});
// console.log(units, item);
col.title += "(" + item[0].name + ")";
}
return col;
});
this.cols = this.cols.concat(extra);
......@@ -302,6 +354,13 @@ export default {
modalInfo() {
this.$emit("on-close");
}
},
watch: {
rootCategoryId(v) {
if (v) {
this.easySearch.categoryId.value = "-1";
}
}
}
};
</script>
......
......@@ -41,6 +41,7 @@ export default {
this.showMenu = true;
},
productSearch(id, item, ids) {
console.log(item)
this.parent.parentName = item.title;
this.parent.id = id;
this.parent.ids = ids;
......
<template>
<div class="bom">
<Layout>
<Sider width="300">
<div class="p-list">ddd</div>
</Sider>
<Content>ff</Content>
</Layout>
</div>
</template>
<style lang="less">
.bom {
.ivu-layout-sider {
background: rgba(255, 255, 255, 1);
margin-right: 10px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
height: 90vh;
padding: 10px;
overflow: auto;
}
.ivu-layout-content {
// margin-left: 5px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
padding: 10px;
height: 90vh;
overflow: auto;
}
}
</style>
\ No newline at end of file
......@@ -31,7 +31,7 @@
<Col :span="12">名称:{{row.name}}</Col>
<Col :span="12" class="btn-click">物料编号:{{row.mmcode}}</Col>
</Row>
<Row class="row-down">
<Row class="row-down" :gutter="20">
<Col span="7">
<div class="img-i">
<img :src="downUrl +row.productUrl" />
......@@ -42,6 +42,9 @@
<div>图号:{{row.drawingNo}}</div>
<div>主制单位:{{row.madeCompanyTitle}}</div>
<p class="a-icon">
<a @click="bom(row.id)">
<Icon type="ios-brush" />BOM
</a>&nbsp;
<a @click="edit(row.id)">
<Icon type="md-create" />编辑
</a>&nbsp;
......@@ -57,7 +60,7 @@
</div>
</template>
</DataGrid>
<Modal v-model="modal" :title="title" width="1200" footer-hide>
<Modal v-model="modal" :title="title" width="1200" footer-hide :fullscreen="fullscreen">
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" :parents="parent" />
</Modal>
</div>
......@@ -85,6 +88,7 @@ export default {
data() {
return {
action: Api.index,
fullscreen: false,
easySearch: {
keys: { op: "mmcode,name,productCode", value: null }
},
......@@ -121,28 +125,43 @@ export default {
this.$refs.grid.reload(this.easySearch);
},
add() {
this.curId = 0;
this.title = "新增";
this.detail = () => import("./add");
this.modal = true;
if (this.parent.id) {
this.curId = 0;
this.title = "新增";
this.detail = () => import("./add");
this.modal = true;
this.fullscreen = false;
} else {
this.$Message.error("请先选择产品分类");
}
},
copy(id) {
this.curId = id;
this.title = "克隆";
this.detail = () => import("./add");
this.modal = true;
this.fullscreen = false;
},
view(id) {
this.curId = id;
this.title = "详情";
this.detail = () => import("./detail");
this.modal = true;
this.fullscreen = false;
},
edit(id) {
this.curId = id;
this.title = "编辑";
this.detail = () => import("./edit");
this.modal = true;
this.fullscreen = false;
},
bom(id) {
this.curId = id;
this.title = "BOM";
this.detail = () => import("./bom");
this.modal = true;
this.fullscreen = true;
},
remove(row) {
this.$Modal.confirm({
......
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