Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
caoqianming 2022-01-13 16:57:26 +08:00
commit a943c10fa1
10 changed files with 623 additions and 498 deletions

View File

@ -19,19 +19,13 @@
@expand-change="handlerExpand" @expand-change="handlerExpand"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
> >
<el-table-column label="任务编号" width="150"> <el-table-column label="任务编号" prop="name">
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column> </el-table-column>
<el-table-column label="产品名称"> <el-table-column label="产品名称" prop="productName" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<div style="overflow: hidden; text-overflow:ellipsis; white-space: nowrap;">{{ scope.row.productName }}</div>
</template>
</el-table-column> </el-table-column>
<el-table-column label="产品型号"> <el-table-column label="产品型号" prop="productNum">
<template slot-scope="scope">{{ scope.row.productNum }}</template>
</el-table-column> </el-table-column>
<el-table-column label="生产数量"> <el-table-column label="生产数量" prop="per">
<template slot-scope="scope">{{ scope.row.per }}</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>

View File

@ -1,19 +1,18 @@
<template> <template>
<div <div
class="slider"
ref="slider" ref="slider"
class="slider"
> >
<div <div
class="process" class="process"
:style="{ width }" :style="{ width }"
style="font-size: 12px;color: #ffffff;text-align: right"
> >
<span v-if="per">{{ per }}</span> <span v-if="per">{{ per }}</span>
<span v-else>{{ per }}</span> <span v-else>{{ per }}</span>
</div> </div>
<div class="process1" <div
:style="{width:process1Width}" class="process1"
style="font-size: 12px;color: #ffffff;text-align: right" :style="{width:process1Width}"
> >
<span v-if="per1"> {{ per1 }}</span> <span v-if="per1"> {{ per1 }}</span>
</div> </div>
@ -122,6 +121,10 @@ export default {
top: 0; top: 0;
width: 112px; width: 112px;
height: 20px; height: 20px;
font-size: 12px;
color: #ffffff;
text-align: right;
line-height: 20px;
border-radius: 3px; border-radius: 3px;
background: #409eff; background: #409eff;
} }
@ -131,10 +134,16 @@ export default {
top: 0; top: 0;
width: 10px; width: 10px;
height: 20px; height: 20px;
font-size: 12px;
color: #ffffff;
text-align: right;
line-height: 20px;
border-radius: 3px; border-radius: 3px;
background: #11c750; background: #11c750;
} }
.slider .process span{
margin-right: 5px;
}
.slider .block i { .slider .block i {
font-size: 25px; font-size: 25px;

View File

@ -29,10 +29,12 @@
v-else-if="item.field_type === 'int'" v-else-if="item.field_type === 'int'"
:label="item.field_name" :label="item.field_name"
> >
<el-input <el-input-number
style="width: 100%;"
v-model="checkForm[item.field_key]" v-model="checkForm[item.field_key]"
type="number" step-strictly
placeholder="请输入" placeholder="请输入"
:min="0"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />
</el-form-item> </el-form-item>
@ -40,9 +42,11 @@
v-else-if="item.field_type === 'float'" v-else-if="item.field_type === 'float'"
:label="item.field_name" :label="item.field_name"
> >
<el-input <el-input-number
style="width: 100%;"
v-model="checkForm[item.field_key]" v-model="checkForm[item.field_key]"
type="number" :precision="2"
:step="0.1"
placeholder="请输入" placeholder="请输入"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />
@ -120,8 +124,8 @@
<el-row v-show="hasPicture"> <el-row v-show="hasPicture">
<el-form-item label="图表"> <el-form-item label="图表">
<div> <div>
<!--<img id="canvasImg" :src="img" style="width:500px;height: 300px;display: none">--> <img id="canvasImg" :src="img" style="width:500px;height: 300px;display: none">
<img id="canvasImg" src="./../../assets/glass.png" style="width:500px;height: 300px;display: none"> <!--<img id="canvasImg" src="./../../assets/glass.png" style="width:500px;height: 300px;display: none">-->
<div style="position: relative;display: flex;flex-direction: column; <div style="position: relative;display: flex;flex-direction: column;
border: 1px solid #DCDFE6;"> border: 1px solid #DCDFE6;">
<canvas id="canvas" width="500" height="300"> <canvas id="canvas" width="500" height="300">
@ -229,9 +233,9 @@
let imag= this.formData.filter(item => { let imag= this.formData.filter(item => {
return item.field_type === 'draw'; return item.field_type === 'draw';
}); });
/* that.img = new Image(); that.img = new Image();
that.img.crossOrigin = ''; that.img.crossOrigin = '';
that.img = 'http://47.95.0.242:2222'+imag[0].draw_template;*/ that.img = 'http://47.95.0.242:2222'+imag[0].draw_template;
setTimeout(function(){ setTimeout(function(){
that.canvasInit(); that.canvasInit();
},500); },500);

View File

@ -45,11 +45,12 @@
placeholder="请输入" placeholder="请输入"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />
<el-input <el-input-number
class="halfWidth" class="halfWidth"
v-model="checkForm[item.field_key]" v-model="checkForm[item.field_key]"
type="number" step-strictly
placeholder="请输入" placeholder="请输入"
:min="0"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />
</el-form-item> </el-form-item>
@ -65,13 +66,21 @@
placeholder="请输入" placeholder="请输入"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />
<el-input <el-input-number
class="halfWidth"
v-model="checkForm[item.field_key]"
:precision="2"
:step="0.1"
placeholder="请输入"
@input="keyChange($index,item.field_key)"
/>
<!-- <el-input
class="halfWidth" class="halfWidth"
v-model="checkForm[item.field_key]" v-model="checkForm[item.field_key]"
type="number" type="number"
placeholder="请输入" placeholder="请输入"
@input="keyChange($index,item.field_key)" @input="keyChange($index,item.field_key)"
/> />-->
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-else-if="item.field_type === 'date'" v-else-if="item.field_type === 'date'"
@ -300,25 +309,15 @@
obj = item; obj = item;
that.judgeList.push(obj) that.judgeList.push(obj)
}); });
//原始表的数据 debugger;
/*for(let i=0;i<this.origins.length;i++){
let key = this.origins[i].field_key;
that.originForm[key]=this.origins[i].field_key;
that.$set(that.originForm,key,this.origins[i].field_value)
}*/
//图片地址 //图片地址
let imag= this.formData.filter(item => { let imag= this.formData.filter(item => {
return item.field_type === 'draw'; return item.field_type === 'draw';
}); });
// that.img = 'http://47.95.0.242:2222'+imag[0].draw_template; that.img = new Image();
that.img.crossOrigin = '';
/*let originImag= this.origins.filter(item => { that.img = 'http://47.95.0.242:2222'+imag[0].field_value;
return item.field_type === 'draw'; that.originImg = 'http://47.95.0.242:2222'+imag[0].origin_value;
});*/
/*that.originImg = new Image();
that.originImg.crossOrigin = '';
that.originImg = imag[0].origin_value;
*/
listJudge.forEach(item => { listJudge.forEach(item => {
let obj = new Object(); let obj = new Object();
obj = item; obj = item;

View File

@ -10,12 +10,23 @@
</div> </div>
</template> </template>
<script> <script>
import tracking from '@/assets/tracking/build/tracking-min.js';
import {faceLogin} from "@/api/testModel"; import {faceLogin} from "@/api/testModel";
import { getTickets } from "@/api/workflow"; import { getTickets } from "@/api/workflow";
import tracking from '@/assets/tracking/build/tracking-min.js';
import '@/assets/tracking/build/data/face-min.js'; import '@/assets/tracking/build/data/face-min.js';
import {createrecordform,updaterecordform} from "@/api/mtm";
export default { export default {
props: {
dialogType: {
type:String,
default:"new"
},
recordform: {
type:Object,
default:null
}
},
data() { data() {
return { return {
video: null, video: null,
@ -77,16 +88,26 @@
let imgData = {base64:img}; let imgData = {base64:img};
faceLogin(imgData).then((res) => { faceLogin(imgData).then((res) => {
if (res.code >= 200) { if (res.code >= 200) {
debugger; const isEdit = that.dialogType === "edit";
console.log(res.data); if (isEdit) {
getTickets( {token:res.data.access,page:1,page_size:10,category:'duty'}).then((resp)=>{ updaterecordform(that.recordform.id, that.recordform).then(
if(resp.code>=200){ (res) => {
debugger; if (res.code >= 200) {
console.log(resp.data); that.$emit('func',false);
} that.$message.success("成功");
}) }
that.uploadLock = false; }
this.$message.success(res.data.username+'签到成功!'); );
} else {
createrecordform(that.recordform).then((res) => {
if (res.code >= 200) {
that.$emit('func',false);
that.$message.success("成功");
}
});
}
// this.$message.success(res.data.username+'签到成功!');
/*that.$confirm("是否提交?", "提示", { /*that.$confirm("是否提交?", "提示", {
confirmButtonText: "确认", confirmButtonText: "确认",
cancelButtonText: "取消", cancelButtonText: "取消",

View File

@ -20,7 +20,7 @@
<li @click="refreshSelectedTag(selectedTag)">刷新</li> <li @click="refreshSelectedTag(selectedTag)">刷新</li>
<li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">关闭</li> <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">关闭</li>
<li @click="closeOthersTags">关闭其他</li> <li @click="closeOthersTags">关闭其他</li>
<li @click="closeAllTags(selectedTag)">关闭</li> <li @click="closeAllTags(selectedTag)">关闭</li>
</ul> </ul>
</div> </div>
</template> </template>

View File

@ -1,32 +1,30 @@
<template> <template>
<div class="dashboard-container"> <div class="dashboard-container">
<el-card class="dashboardTopCard"> <el-card class="dashboardTopCard">
<div @click="openWord">wendanag</div> <div class="CardTitleWrap">
<a href="http://www.xdocin.com/xdoc?_func=to&_format=html&_cache=1&_xdoc=http://47.95.0.242:2222/media/2021/09/07/004-%E8%AF%B7%E5%81%87%E5%8D%95_LL8uZdx.docx" target="_blank">XDOC</a>
<div class="CardTitleWrap">
<span class="verticalLine"></span><span class="dashboardCardTitle">数据统计</span> <span class="verticalLine"></span><span class="dashboardCardTitle">数据统计</span>
</div> </div>
<div class="cards"> <div class="cards" @click="toDetail('1')">
<div class="cardCurrentText">本月{{contractTotalCurrent}}</div> <div class="cardCurrentText">本月{{contractTotalCurrent}}</div>
<div class="cardTotalText">{{contractTotalCount}}</div> <div class="cardTotalText">{{contractTotalCount}}</div>
<div>合同总数</div> <div>合同总数</div>
</div> </div>
<div class="cards"> <div class="cards" @click="toDetail('2')">
<div class="cardCurrentText">本月{{orderTotalCurrent}}</div> <div class="cardCurrentText">本月{{orderTotalCurrent}}</div>
<div class="cardTotalText">{{orderTotalCount}}</div> <div class="cardTotalText">{{orderTotalCount}}</div>
<div>生产订单总数</div> <div>生产订单总数</div>
</div> </div>
<div class="cards"> <div class="cards" @click="toDetail('3')">
<div class="cardCurrentText">在制{{planTotalCurrent}}</div> <div class="cardCurrentText">在制{{planTotalCurrent}}</div>
<div class="cardTotalText">{{planTotalCount}}</div> <div class="cardTotalText">{{planTotalCount}}</div>
<div>已排产生产任务</div> <div>已排产生产任务</div>
</div> </div>
<div class="cards"> <div class="cards" @click="toDetail('4')">
<div class="cardCurrentText">本月4</div> <div class="cardCurrentText">本月4</div>
<div class="cardTotalText">20</div> <div class="cardTotalText">20</div>
<div>累计交付产品数</div> <div>累计交付产品数</div>
</div> </div>
<div class="cards"> <div class="cards" @click="toDetail('5')">
<div class="cardCurrentText">本月2</div> <div class="cardCurrentText">本月2</div>
<div class="cardTotalText">2</div> <div class="cardTotalText">2</div>
<div>累计不合格产品数</div> <div>累计不合格产品数</div>
@ -179,38 +177,60 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<div :style="{height:cardTabelHeight+'px'}"> <el-tabs type="card" :style="{height:cardTabelHeight+'px'}" v-model="activeName" @tab-click="activeNameClick">
<ul class="lists"> <el-tab-pane label="库存警告" name="库存警告">
<li class="listItem"> <ul class="lists">
<div class="itemText"> <li class="listItem">
<span>玻璃低于安全库存</span><span>2021-12-30</span> <div class="itemText">
</div> <span>玻璃低于安全库存</span><span>2021-12-30</span>
</li> </div>
<li class="listItem"> </li>
<div class="itemText"> <li class="listItem" v-for="item in warningList" :key="item.id">
<span>某某批货临近交货日期</span><span>2021-12-20</span> <div class="itemText">
</div> <span>{{item}}</span><span>2021-12-20</span>
</li> </div>
<li class="listItem"> </li>
<div class="itemText"> <!--<li class="listItem">
<span>玻璃低于安全库存</span><span>2021-11-30</span> <div class="itemText">
</div> <span>玻璃低于安全库存</span><span>2021-11-30</span>
</li> </div>
<li class="listItem"> </li>
<div class="itemText"> <li class="listItem">
<span>某某批货临近交货日期</span><span>2021-11-20</span> <div class="itemText">
</div> <span>某某批货临近交货日期</span><span>2021-11-20</span>
</li> </div>
</ul> </li>-->
</div> </ul>
<!--<el-badge :value="count.total_count" class="item" @click.native="gotoTicketPage"> </el-tab-pane>
<el-icon class="el-icon-s-management" style="font-size: 70px;color: #d29898"></el-icon> <el-tab-pane label="临近交货" name="临近交货">
</el-badge> <ul class="lists">
<div></div> <li class="listItem">
<div class="dashboard-text">name: {{ name }}</div> <div class="itemText">
<div class="dashboard-text">perms: <span>某某批货临近交货日期</span><span>2021-12-20</span>
<span v-for="perm in perms" :key="perm">{{ perm }}</span> </div>
</div>--> </li>
<li class="listItem" v-for="item in warningList" :key="item.id">
<div class="itemText">
<span>{{item}}</span><span>2021-12-20</span>
</div>
</li>
</ul>
</el-tab-pane>
<el-tab-pane label="过期提醒" name="过期提醒">
<ul class="lists">
<li class="listItem">
<div class="itemText">
<span>某某批货临近过期</span><span>2021-11-20</span>
</div>
</li>
<li class="listItem" v-for="item in warningList" :key="item.id">
<div class="itemText">
<span>{{item}}</span><span>2021-12-20</span>
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
@ -220,8 +240,10 @@
<script> <script>
import echarts from 'echarts' import echarts from 'echarts'
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getMaterialList } from "@/api/mtm";
import { getInventoryList } from "@/api/inm"; import { getInventoryList } from "@/api/inm";
import { getProductionplanList} from "@/api/pm"; import { getProductionplanList} from "@/api/pm";
import { getmaterialbatchList } from "@/api/inm";
import { getContractList , getOrderList } from "@/api/sam"; import { getContractList , getOrderList } from "@/api/sam";
export default { export default {
@ -247,6 +269,7 @@ export default {
planList:[], planList:[],
stockList:[], stockList:[],
remindList:[], remindList:[],
warningList:[],
list:[ list:[
{id:1,name:'HIehd9',card:'3337',sco:'REF-32'}, {id:1,name:'HIehd9',card:'3337',sco:'REF-32'},
{id:1,name:'HIehd9',card:'3337',sco:'REF-32'}, {id:1,name:'HIehd9',card:'3337',sco:'REF-32'},
@ -260,6 +283,7 @@ export default {
"5":'加工工具', "5":'加工工具',
"6":'辅助工装', "6":'辅助工装',
}, },
activeName:'库存警告',
seriesData:[80,95,96, 96, 96, 98, 99,100], seriesData:[80,95,96, 96, 96, 98, 99,100],
contractTotalCount:null,//合同总数 contractTotalCount:null,//合同总数
contractTotalCurrent:null, contractTotalCurrent:null,
@ -286,49 +310,56 @@ export default {
window.open("http://47.95.0.242:2222/media/2021/09/07/004-%E8%AF%B7%E5%81%87%E5%8D%95_LL8uZdx.docx"); window.open("http://47.95.0.242:2222/media/2021/09/07/004-%E8%AF%B7%E5%81%87%E5%8D%95_LL8uZdx.docx");
}, },
getStatisticsData(){ getStatisticsData(){
let that = this;
let dat = new Date(); let dat = new Date();
this.week = dat.getDay(); that.week = dat.getDay();
this.currentTime = dat.getTime(); that.currentTime = dat.getTime();
this.currentYear = dat.getFullYear(); that.currentYear = dat.getFullYear();
let month = dat.getMonth() + 1; let month = dat.getMonth() + 1;
this.currentMonth = month>9?month:'0'+month ; that.currentMonth = month>9?month:'0'+month ;
this.currentDay = dat.getDate(); that.currentDay = dat.getDate();
let create_time_start = this.currentYear+'-'+this.currentMonth+'-01'; let create_time_start = that.currentYear+'-'+that.currentMonth+'-01';
//获取合同数 //获取合同数
getContractList({page:1,page_size:1}).then((response) => { getContractList({page:1,page_size:1}).then((response) => {
if (response.data) { if (response.data) {
this.contractTotalCount = response.data.count; that.contractTotalCount = response.data.count;
} }
}); });
getContractList({page:1,page_size:1,create_time_start:create_time_start}).then((response) => { getContractList({page:1,page_size:1,create_time_start:create_time_start}).then((response) => {
if (response.data) { if (response.data) {
this.contractTotalCurrent = response.data.count; that.contractTotalCurrent = response.data.count;
} }
}); });
//获取生产订单数 //获取生产订单数
getOrderList({page:1,page_size:1}).then((response) => { getOrderList({page:1,page_size:1}).then((response) => {
if (response.data) { if (response.data) {
this.orderTotalCount = response.data.count; that.orderTotalCount = response.data.count;
} }
}); });
getOrderList({page:1,page_size:1,create_time_start:create_time_start}).then((response) => { getOrderList({page:1,page_size:1,create_time_start:create_time_start}).then((response) => {
if (response.data) { if (response.data) {
this.orderTotalCurrent = response.data.count; that.orderTotalCurrent = response.data.count;
} }
}); });
//获取已排产任务 //获取已排产任务
getProductionplanList({page:1,page_size:1}).then((response) => { getProductionplanList({page:1,page_size:1}).then((response) => {
if (response.data) { if (response.data) {
this.planTotalCount = response.data.count; that.planTotalCount = response.data.count;
} }
}); });
getProductionplanList({page:1,page_size:1,tag:'working'}).then((response) => { getProductionplanList({page:1,page_size:1,tag:'working'}).then((response) => {
if (response.data) { if (response.data) {
this.planTotalCurrent = response.data.count; that.planTotalCurrent = response.data.count;
} }
}); });
//获取交付产品 //获取交付产品
//获取不合格产品 //获取不合格产品
getMaterialList({page:0,tag:'low_inm'}).then((response) => {
if (response.data) {
that.warningList = response.data;
}
});
}, },
gotoTicketPage(){ gotoTicketPage(){
let path = this.$route.path; let path = this.$route.path;
@ -476,16 +507,30 @@ export default {
stockMore(){ stockMore(){
this.$router.push({name:'warehouse',params:{}}) this.$router.push({name:'warehouse',params:{}})
}, },
toDetail(index){
if(index==='1'){
this.$router.push({name:'contract',params:{page:1,page_size:20}})
}else if(index==='2'){
this.$router.push({name:'order',params:{page:1,page_size:20}})
}else if(index==='3'){
this.$router.push({name:'plan',params:{page:1,page_size:20}})
}else if(index==='4'){
this.$router.push({name:'product',params:{page:1,page_size:20,material__type:1}})
}else if(index==='5'){
this.$router.push({name:'product',params:{page:1,page_size:20,material__type:1}})
}
},
//便捷查询按钮 //便捷查询按钮
convenientClick(index,type){ convenientClick(index,type){
let startTime = '',endTime = '',url='',activeIndex = '1',obj = new Object(); let that = this;
let startTime = '',endTime = '',activeIndex = '1';
let dat = new Date(); let dat = new Date();
let week = dat.getDay();//0-6 let week = dat.getDay();//0-6
let currentTime = dat.getTime(); let currentTime = dat.getTime();
let currentYear = dat.getFullYear(); let currentYear = dat.getFullYear();
let currentMonth = dat.getMonth() + 1; let currentMonth = dat.getMonth() + 1;
let currentDay = dat.getDate(); let currentDay = dat.getDate();
endTime = currentYear+'-'+currentMonth+''+currentDay; endTime = currentYear+'-'+currentMonth+'-'+currentDay;
if(type==='week'){ if(type==='week'){
activeIndex = '1'; activeIndex = '1';
let num = week===0?6:week-1; let num = week===0?6:week-1;
@ -510,11 +555,16 @@ export default {
} }
startTime = yea+'-'+mon+'-01'; startTime = yea+'-'+mon+'-01';
} }
obj.startTime = startTime;
obj.endTime = endTime;
if(index==='1'){ if(index==='1'){
this.tableDate = null; this.tableDate = null;
this.tableIndex = activeIndex; this.tableIndex = activeIndex;
this.listLoadingPlan = true;
getProductionplanList({page:0,create_time_start:startTime,create_time_end:endTime}).then((response) => {
if (response.data) {
that.planList = response.data;
}
this.listLoadingPlan = false;
});
}else{ }else{
this.chartDate = null; this.chartDate = null;
this.chartIndex = activeIndex; this.chartIndex = activeIndex;
@ -523,6 +573,7 @@ export default {
}, },
//选择月份 //选择月份
searchTimeChange(index){ searchTimeChange(index){
let that = this;
let startDate = '',endDate = ''; let startDate = '',endDate = '';
let year = null,month = null,days = null; let year = null,month = null,days = null;
if(index==='1'){ if(index==='1'){
@ -532,16 +583,23 @@ export default {
month = this.tableDate.split("-")[1]; month = this.tableDate.split("-")[1];
let d = new Date(year, month, 0); let d = new Date(year, month, 0);
days = d.getDate(); days = d.getDate();
endDate = this.tableDate + '-'+days;
this.listLoadingPlan = true;
getProductionplanList({page:0,create_time_start:startDate,create_time_end:endDate}).then((response) => {
if (response.data) {
that.planList = response.data;
}
this.listLoadingPlan = false;
});
}else{ }else{
this.chartIndex = null; this.chartIndex = null;
startDate = this.chartDate+'-01'; startDate = this.chartDate+'-01';
year = this.tableDate.split("-")[0]; year = this.chartDate.split("-")[0];
month = this.tableDate.split("-")[1]; month = this.chartDate.split("-")[1];
let d = new Date(year, month, 0); let d = new Date(year, month, 0);
days = d.getDate(); days = d.getDate();
endDate = this.chartDate + '-'+days;
} }
endDate = this.chartDate + '-'+days;
console.log(startDate,endDate);
}, },
handleStockSizeChange(val){ handleStockSizeChange(val){
this.stockPageSize = val; this.stockPageSize = val;
@ -559,6 +617,36 @@ export default {
this.listLoading = false; this.listLoading = false;
}); });
}, },
activeNameClick(tab, event) {
let that = this;
// debugger;
// console.log(tab, event);
if (tab.label === '库存警告') {
getMaterialList({page:0,tag:'low_inm'}).then((response) => {
if (response.data) {
that.warningList = response.data;
that.remindTotal = response.data.length;
}
this.listLoadingPlan = false;
});
}else if(tab.label === '临近交货') {
getmaterialbatchList({page:0,tag:'expired'}).then((response) => {
if (response.data) {
that.warningList = response.data;
that.remindTotal = response.data.length;
}
this.listLoadingPlan = false;
});
} else if(tab.label === '过期提醒'){
getmaterialbatchList({page:0,tag:'expired'}).then((response) => {
if (response.data) {
that.warningList = response.data;
that.remindTotal = response.data.length;
}
this.listLoadingPlan = false;
});
}
},
handleRemindSizeChange(val){ handleRemindSizeChange(val){
this.remindPageSize = val; this.remindPageSize = val;
this.remindPage = 1; this.remindPage = 1;
@ -572,7 +660,7 @@ export default {
// let he = document.documentElement.clientHeight || document.body.clientHeight; // let he = document.documentElement.clientHeight || document.body.clientHeight;
let hei = document.getElementsByClassName('app-main')[0].clientHeight; let hei = document.getElementsByClassName('app-main')[0].clientHeight;
let heig = document.getElementsByClassName('dashboardTopCard')[0].clientHeight; let heig = document.getElementsByClassName('dashboardTopCard')[0].clientHeight;
this.cardTabelHeight = ((hei-heig)/2-80); this.cardTabelHeight = ((hei-heig-130)/2);
document.getElementById('chartColumn').style.height = this.cardTabelHeight+'px'; document.getElementById('chartColumn').style.height = this.cardTabelHeight+'px';
this.drawChart(); this.drawChart();
this.getPlanList(); this.getPlanList();
@ -711,7 +799,7 @@ export default {
.listItem{ .listItem{
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
font-size: 18px; font-size: 16px;
.itemText{ .itemText{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

View File

@ -1,86 +1,77 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-card> <el-card>
<div>
<div> <el-button type="primary" icon="el-icon-plus" @click="handleCreate">
<el-button type="primary" icon="el-icon-plus" @click="handleCreate" 新增物料
>新增物料</el-button </el-button>
> <el-input
<el-input v-model="listQuery.search"
v-model="listQuery.search" placeholder="物料名称/物料编号"
placeholder="物料名称/物料编号" style="width: 300px"
style="width: 300px" class="filter-item"
class="filter-item" @keyup.enter.native="handleFilter"
@keyup.enter.native="handleFilter" />
/> <el-button
<el-button class="filter-item"
class="filter-item" type="primary"
type="primary" icon="el-icon-search"
icon="el-icon-search" @click="handleFilter"
@click="handleFilter" >搜索
>搜索</el-button </el-button>
> <el-button
<el-button class="filter-item"
class="filter-item" type="primary"
type="primary" icon="el-icon-refresh-left"
icon="el-icon-refresh-left" @click="resetFilter"
@click="resetFilter" >重置
>重置</el-button </el-button>
> </div>
</div>
</el-card> </el-card>
<el-card style="margin-top: 2px"> <el-card style="margin-top: 2px">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick"> <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="成品" name="1"></el-tab-pane> <el-tab-pane label="成品" name="1"></el-tab-pane>
<el-tab-pane label="半成品" name="2"></el-tab-pane> <el-tab-pane label="半成品" name="2"></el-tab-pane>
<el-tab-pane label="主要原料" name="3"></el-tab-pane> <el-tab-pane label="主要原料" name="3"></el-tab-pane>
<el-tab-pane label="辅助材料" name="4"></el-tab-pane> <el-tab-pane label="辅助材料" name="4"></el-tab-pane>
<el-tab-pane label="加工工具" name="5"></el-tab-pane> <el-tab-pane label="加工工具" name="5"></el-tab-pane>
<el-tab-pane label="辅助工装" name="6"></el-tab-pane> <el-tab-pane label="辅助工装" name="6"></el-tab-pane>
</el-tabs> </el-tabs>
<el-table <el-table
v-loading="listLoading" v-loading="listLoading"
:data="materialList.results" :data="materialList.results"
border border
fit fit
stripe stripe
highlight-current-row highlight-current-row
max-height="620" max-height="620"
height="100" height="100"
v-el-height-adaptive-table="{bottomOffset: 40}" v-el-height-adaptive-table="{bottomOffset: 40}"
> >
<el-table-column type="index" width="50" /> <el-table-column type="index" width="50"/>
<el-table-column label="物料编号"> <el-table-column label="物料编号">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.number }} {{ scope.row.number }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="物料类别">
<el-table-column label="物料类别" > <template slot-scope="scope"> {{options_[scope.row.type]}}</template>
<template slot-scope="scope"> {{options_[scope.row.type]}}</template>
</el-table-column> </el-table-column>
<el-table-column label="物料名称"> <el-table-column label="物料名称">
<template slot-scope="scope">{{ scope.row.name }}</template> <template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column> </el-table-column>
<el-table-column label="规格型号"> <el-table-column label="规格型号">
<template slot-scope="scope">{{ scope.row.specification }}</template> <template slot-scope="scope">{{ scope.row.specification }}</template>
</el-table-column> </el-table-column>
<el-table-column label="单片玻璃数量" v-if="materialList.results[0].type==1"> <el-table-column label="单片玻璃数量" v-if="materialList.results[0].type==1">
<template slot-scope="scope">{{ scope.row.piece_count }}</template> <template slot-scope="scope">{{ scope.row.piece_count }}</template>
</el-table-column> </el-table-column>
<el-table-column label="计量单位"> <el-table-column label="计量单位">
<template slot-scope="scope">{{ scope.row.unit }}</template> <template slot-scope="scope">{{ scope.row.unit }}</template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间"> <el-table-column label="创建时间">
<template slot-scope="scope">{{ scope.row.create_time }}</template> <template slot-scope="scope">{{ scope.row.create_time }}</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="操作" label="操作"
@ -91,27 +82,26 @@
v-if="checkPermission(['material_update'])&&scope.row.type!=5&&scope.row.type!=6" v-if="checkPermission(['material_update'])&&scope.row.type!=5&&scope.row.type!=6"
type="primary" type="primary"
@click="handlebind(scope)" @click="handlebind(scope)"
>检查表</el-link >检查表
> </el-link>
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
type="primary" type="primary"
@click="handleEdit(scope)" @click="handleEdit(scope)"
>编辑</el-link >编辑
> </el-link>
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
type="primary" type="primary"
@click="handledetail(scope)" @click="handledetail(scope)"
>详情</el-link >详情
> </el-link>
<el-link <el-link
v-if="checkPermission(['material_delete'])" v-if="checkPermission(['material_delete'])"
type="danger" type="danger"
@click="handleDelete(scope)" @click="handleDelete(scope)"
>删除</el-link >删除
> </el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -136,46 +126,46 @@
:rules="rule1" :rules="rule1"
> >
<el-form-item label="物料名称" prop="name"> <el-form-item label="物料名称" prop="name">
<el-input v-model="material.name" placeholder="物料名称" /> <el-input v-model="material.name" placeholder="物料名称"/>
</el-form-item> </el-form-item>
<el-form-item label="物料编号" prop="number"> <el-form-item label="物料编号" prop="number">
<el-input v-model="material.number" placeholder="物料编号" /> <el-input v-model="material.number" placeholder="物料编号"/>
</el-form-item> </el-form-item>
<el-form-item label="规格型号" prop="specification"> <el-form-item label="规格型号" prop="specification">
<el-input v-model="material.specification" placeholder="规格型号" /> <el-input v-model="material.specification" placeholder="规格型号"/>
</el-form-item> </el-form-item>
<el-form-item label="计量单位" prop="unit"> <el-form-item label="计量单位" prop="unit">
<el-select style="width: 100%" v-model="material.unit" placeholder="请选择"> <el-select style="width: 100%" v-model="material.unit" placeholder="请选择">
<el-option <el-option
v-for="item in unitoptions" v-for="item in unitoptions"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="物料类别" prop="type"> <el-form-item label="物料类别" prop="type">
<el-select style="width: 100%" v-model="material.type" placeholder="请选择" > <el-select style="width: 100%" v-model="material.type" placeholder="请选择">
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="单片玻璃数量" prop="piece_count" v-if="material.type==1"> <el-form-item label="单片玻璃数量" prop="piece_count" v-if="material.type==1">
<el-input v-model="material.piece_count" placeholder="单片玻璃数量" /> <el-input v-model="material.piece_count" placeholder="单片玻璃数量"/>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort_str"> <el-form-item label="排序" prop="sort_str">
<el-input v-model="material.sort_str" placeholder="排序" /> <el-input v-model="material.sort_str" placeholder="排序"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false">取消</el-button> <el-button type="danger" @click="dialogVisible = false">取消</el-button>
@ -185,37 +175,44 @@
</div> </div>
</template> </template>
<script> <script>
import { getMaterialList,getMaterial, createMaterial,updateMaterial,deleteMaterial,getProcessList } from "@/api/mtm"; import {
import checkPermission from "@/utils/permission"; getMaterialList,
getMaterial,
createMaterial,
updateMaterial,
deleteMaterial,
getProcessList
} from "@/api/mtm";
import checkPermission from "@/utils/permission";
import { genTree } from "@/utils"; import {genTree} from "@/utils";
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
const defaultmaterial = { const defaultmaterial = {
name: "", name: "",
number: "", number: "",
processes:[], processes: [],
}; };
export default { export default {
components: { Pagination }, components: {Pagination},
data() { data() {
return { return {
material: defaultmaterial, material: defaultmaterial,
materialList: { materialList: {
count: 0, count: 0,
}, },
processOptions:[], processOptions: [],
options_:{ options_: {
"1":'成品', "1": '成品',
"2":'半成品', "2": '半成品',
"3":'主要原料', "3": '主要原料',
"4":'辅助材料', "4": '辅助材料',
"5":'加工工具', "5": '加工工具',
"6":'辅助工装', "6": '辅助工装',
}, },
options: [{ options: [{
value: 1, value: 1,
label: '成品' label: '成品'
}, { }, {
@ -234,164 +231,162 @@ export default {
value: 6, value: 6,
label: '辅助工装' label: '辅助工装'
}], }],
unitoptions:[ unitoptions: [
{ {
value: '', value: '',
label: '' label: ''
}, { }, {
value: '', value: '',
label: '' label: ''
}, },
{ {
value: '', value: '',
label: '' label: ''
}, { }, {
value: 'm2', value: 'm2',
label: 'm2' label: 'm2'
}, { }, {
value: '', value: '',
label: '' label: ''
}, },
], ],
listQuery: { listQuery: {
page: 1, page: 1,
page_size: 20, page_size: 20,
}, },
activeName:"", activeName: "",
listLoading: true,
dialogVisible: false,
dialogType: "new",
rule1: {
name: [{required: true, message: "请输入", trigger: "blur"}],
number: [{required: true, message: "请输入", trigger: "blur"}],
listLoading: true, },
dialogVisible: false, };
dialogType: "new", },
rule1: { computed: {},
name: [{ required: true, message: "请输入", trigger: "blur" }], watch: {},
number: [{ required: true, message: "请输入", trigger: "blur" }], created() {
this.getList();
}, this.getProcessList();
};
},
computed: {},
watch: {},
created() {
this.getList();
this.getProcessList();
},
methods: {
checkPermission,
//物料详情 },
handledetail(scope) methods: {
{ checkPermission,
//物料详情
handledetail(scope)
{
this.$router.push({name: "MaterialDetail", params: { id: scope.row.id,type: scope.row.type }, }) this.$router.push({name: "MaterialDetail", params: { id: scope.row.id,type: scope.row.type }, })
},
//选项卡切换 },
handleClick(tab) {
this.listLoading = true;
this.listQuery.type=tab.name; //选项卡切换
getMaterialList(this.listQuery).then((response) => { handleClick(tab) {
if (response.data) { this.listLoading = true;
this.materialList = response.data; this.listQuery.type = tab.name;
} getMaterialList(this.listQuery).then((response) => {
this.listLoading = false; if (response.data) {
}); this.materialList = response.data;
},
getList() {
this.listLoading = true;
getMaterialList(this.listQuery).then((response) => {
if (response.data) {
this.materialList = response.data;
}
this.listLoading = false;
});
},
//工序清单
getProcessList() {
getProcessList().then((res) => {
this.processOptions = res.data.results;
});
},
//绑定工序
handlebind(scope)
{
this.$router.push({name: "MaterialDO", params: { id: scope.row.id }, })
}
,
handleFilter() {
this.listQuery.page = 1;
this.getList();
},
resetFilter() {
this.activeName="";
this.listQuery = {
page: 1,
page_size: 20,
}
this.getList();
},
handleCreate() {
this.material = Object.assign({}, defaultmaterial);
this.dialogType = "new";
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});
},
handleEdit(scope) {
this.material = Object.assign({}, scope.row); // copy obj
this.dialogType = "edit";
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});
},
handleDelete(scope) {
this.$confirm("确认删除?", "警告", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "error",
})
.then(async () => {
await deleteMaterial(scope.row.id);
this.getList();
this.$message.success("成功");
})
.catch((err) => {
console.error(err);
});
},
async confirm(form) {
this.$refs[form].validate((valid) => {
if (valid) {
const isEdit = this.dialogType === "edit";
if (isEdit) {
updateMaterial(this.material.id, this.material).then((res) => {
if (res.code >= 200) {
this.getList();
this.dialogVisible = false;
this.$message.success("成功");
}
});
} else {
createMaterial(this.material).then((res) => {
if (res.code >= 200) {
this.getList();
this.dialogVisible = false;
this.$message.success("成功");
}
});
} }
} else { this.listLoading = false;
return false; });
},
getList() {
this.listLoading = true;
getMaterialList(this.listQuery).then((response) => {
if (response.data) {
this.materialList = response.data;
}
this.listLoading = false;
});
},
//工序清单
getProcessList() {
getProcessList().then((res) => {
this.processOptions = res.data.results;
});
},
//绑定工序
handlebind(scope) {
this.$router.push({name: "MaterialDO", params: {id: scope.row.id},})
}
,
handleFilter() {
this.listQuery.page = 1;
this.getList();
},
resetFilter() {
this.activeName = "";
this.listQuery = {
page: 1,
page_size: 20,
} }
}); this.getList();
},
handleCreate() {
this.material = Object.assign({}, defaultmaterial);
this.dialogType = "new";
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});
},
handleEdit(scope) {
this.material = Object.assign({}, scope.row); // copy obj
this.dialogType = "edit";
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});
},
handleDelete(scope) {
this.$confirm("确认删除?", "警告", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "error",
})
.then(async () => {
await deleteMaterial(scope.row.id);
this.getList();
this.$message.success("成功");
})
.catch((err) => {
console.error(err);
});
},
async confirm(form) {
this.$refs[form].validate((valid) => {
if (valid) {
const isEdit = this.dialogType === "edit";
if (isEdit) {
updateMaterial(this.material.id, this.material).then((res) => {
if (res.code >= 200) {
this.getList();
this.dialogVisible = false;
this.$message.success("成功");
}
});
} else {
createMaterial(this.material).then((res) => {
if (res.code >= 200) {
this.getList();
this.dialogVisible = false;
this.$message.success("成功");
}
});
}
} else {
return false;
}
});
},
}, },
}, };
};
</script> </script>

View File

@ -20,49 +20,43 @@
</el-button> </el-button>
<!--表格列表--> <!--表格列表-->
<el-table <el-table
:data="recordformList.results" :data="recordformList.results"
border border
fit fit
stripe stripe
highlight-current-row highlight-current-row
height="670" height="670"
v-el-height-adaptive-table="{ bottomOffset: 20 }" v-el-height-adaptive-table="{ bottomOffset: 20 }"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
> >
<el-table-column type="index" width="50"/> <el-table-column type="index" width="50"/>
<el-table-column label="表名称"> <el-table-column label="表名称">
<template slot-scope="scope">{{ scope.row.name }}</template> <template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column> </el-table-column>
<el-table-column label="是否启用"> <el-table-column label="是否启用">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.enabled==false"></el-tag> <el-tag v-if="scope.row.enabled==false"></el-tag>
<el-tag v-if="scope.row.enabled==true"></el-tag> <el-tag v-if="scope.row.enabled==true"></el-tag>
</template>
</template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
@click="handleLook(scope)" @click="handleLook(scope)"
>查看 >查看
</el-link </el-link>
>
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
@click="handleEdit(scope)" @click="handleEdit(scope)"
>编辑 >编辑
</el-link </el-link>
>
<el-link <el-link
v-if="checkPermission(['material_delete'])" v-if="checkPermission(['material_delete'])"
type="danger" type="danger"
@click="handleDelete(scope)" @click="handleDelete(scope)"
>删除 >删除
</el-link </el-link>
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -81,17 +75,15 @@
<el-form-item label="表格名称" prop="name"> <el-form-item label="表格名称" prop="name">
<el-input v-model="recordform.name" placeholder="表格名称"/> <el-input v-model="recordform.name" placeholder="表格名称"/>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="name"> <el-form-item label="是否启用" prop="name">
<el-switch v-model="recordform.enabled"></el-switch> <el-switch v-model="recordform.enabled"></el-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false" <el-button type="danger" @click="dialogVisible = false">取消
>取消
</el-button>
<el-button type="primary" @click="recordformconfirm('Forms')"
>确认
</el-button> </el-button>
<!--<el-button type="primary" @click="recordformconfirm('Forms')">确认</el-button>-->
<el-button type="primary" @click="recordformcon">管理员授权</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!--表格展示--> <!--表格展示-->
@ -238,9 +230,9 @@
</el-row> </el-row>
</el-form>--> </el-form>-->
<!--<div style="text-align: right">--> <!--<div style="text-align: right">-->
<!--<el-button type="primary" @click="judgeForm">--> <!--<el-button type="primary" @click="judgeForm">-->
<!--合格验证--> <!--合格验证-->
<!--</el-button>--> <!--</el-button>-->
<!--</div>--> <!--</div>-->
</el-dialog> </el-dialog>
</el-card> </el-card>
@ -256,8 +248,7 @@
icon="el-icon-plus" icon="el-icon-plus"
@click="handlefieldCreate" @click="handlefieldCreate"
>新增 >新增
</el-button </el-button>
>
<!--表格字段列表--> <!--表格字段列表-->
<el-table <el-table
:data="fieldList.results" :data="fieldList.results"
@ -270,23 +261,18 @@
> >
<el-table-column type="index" width="50"/> <el-table-column type="index" width="50"/>
<el-table-column label="字段名称"> <el-table-column label="字段名称">
<template slot-scope="scope">{{ <template slot-scope="scope">
scope.row.field_name {{scope.row.field_name}}
}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="字段类型"> <el-table-column label="字段类型">
<template slot-scope="scope">{{ <template slot-scope="scope">
options_[scope.row.field_type] {{options_[scope.row.field_type]}}
}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="字段标识"> <el-table-column label="字段标识">
<template slot-scope="scope">{{ <template slot-scope="scope">
scope.row.field_key {{scope.row.field_key}}
}}
</template> </template>
</el-table-column> </el-table-column>
<!-- <!--
@ -317,7 +303,6 @@
<el-tag v-else></el-tag> <el-tag v-else></el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link <el-link
@ -325,15 +310,13 @@
type="primary" type="primary"
@click="handlefieldEdit(scope)" @click="handlefieldEdit(scope)"
>编辑 >编辑
</el-link </el-link>
>
<el-link <el-link
v-if="checkPermission(['material_delete'])" v-if="checkPermission(['material_delete'])"
type="danger" type="danger"
@click="handlefieldDelete(scope)" @click="handlefieldDelete(scope)"
>删除 >删除
</el-link </el-link>
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -383,8 +366,7 @@
field.field_type == 'radio' || field.field_type == 'radio' ||
field.field_type == 'checkbox' || field.field_type == 'checkbox' ||
field.field_type == 'select' || field.field_type == 'select' ||
field.field_type == 'selects' field.field_type == 'selects'"
"
> >
<el-button @click.prevent="addDomain" style="border: none"> <el-button @click.prevent="addDomain" style="border: none">
<i class="el-icon-circle-plus-outline"></i> <i class="el-icon-circle-plus-outline"></i>
@ -527,6 +509,17 @@
</el-col> </el-col>
</el-row> </el-row>
</el-card> </el-card>
<el-dialog :visible.sync="limitedPhoto">
<div style="font-size: 28px;color: #333333;text-align: center;font-weight: bold;margin-bottom: 15px;">权限验证</div>
<div class="testTracking">
<faceLogin
name="faceLogin"
:dialogType="dialogType"
:recordform="recordform"
@func="getMsgFormSon"
></faceLogin>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -536,6 +529,7 @@
import {getEquipmentAll} from "@/api/equipment"; import {getEquipmentAll} from "@/api/equipment";
import vueJsonEditor from "vue-json-editor"; import vueJsonEditor from "vue-json-editor";
import {upUrl, upHeaders} from "@/api/file"; import {upUrl, upHeaders} from "@/api/file";
import faceLogin from '@/components/faceLogin/faceLogin.vue'
import { import {
getrecordformList, getrecordformList,
createrecordform, createrecordform,
@ -557,11 +551,11 @@
number: "", number: "",
}; };
const defaultrecordform = {enabled:false}; const defaultrecordform = {enabled: false};
const defaultfield = {}; const defaultfield = {};
let preDrawAry = []; let preDrawAry = [];
export default { export default {
components: {Pagination, vueJsonEditor, Treeselect, customForm}, components: {Pagination, vueJsonEditor, Treeselect, customForm,faceLogin},
data() { data() {
return { return {
step: defaultstep, step: defaultstep,
@ -576,13 +570,15 @@
dialogVisibleForm: false, dialogVisibleForm: false,
dialogTypes: "new", dialogTypes: "new",
field: { field: {
field_type: "", field_type: null,
field_key: "", field_key: "",
field_name: "", field_name: null,
sort: "", sort: null,
parent: "", parent: null,
help_text: "", help_text: null,
draw_template: "",//图片模板 rule_expression: null,
display_expression: null,
draw_template: null,//图片模板
field_choice: [""], field_choice: [""],
}, },
field_choice: [""], field_choice: [""],
@ -699,6 +695,7 @@
imgData: '', imgData: '',
canvasImg: '', canvasImg: '',
judgeList: [], judgeList: [],
limitedPhoto:false
}; };
}, },
computed: {}, computed: {},
@ -836,9 +833,9 @@
that.$set(that.checkForm, key, '') that.$set(that.checkForm, key, '')
} }
that.dialogVisibleForm = true; that.dialogVisibleForm = true;
/* setTimeout(function () { /* setTimeout(function () {
that.canvasInit(); that.canvasInit();
}, 500);*/ }, 500);*/
} }
}); });
that.fieldLists(); that.fieldLists();
@ -888,9 +885,10 @@
this.recordform = Object.assign({}, defaultrecordform); this.recordform = Object.assign({}, defaultrecordform);
this.dialogType = "new"; this.dialogType = "new";
this.dialogVisible = true; this.dialogVisible = true;
this.$nextTick(() => { this.$refs["Forms"].resetFields();
this.$refs["Forms"].clearValidate(); // this.$nextTick(() => {
}); // this.$refs["Forms"].resetFields();
// });
}, },
//新增字段 //新增字段
handlefieldCreate() { handlefieldCreate() {
@ -898,7 +896,18 @@
// this.field = Object.assign({}, defaultfield); // this.field = Object.assign({}, defaultfield);
this.dialogType1 = "new"; this.dialogType1 = "new";
this.dialogVisible1 = true; this.dialogVisible1 = true;
// this.$refs["Form"].resetFields();
this.$nextTick(() => { this.$nextTick(() => {
this.field.field_type= null;
this.field.field_key= null;
this.field.field_name= null;
this.field.sort= null;
this.field.parent= null;
this.field.help_text= null;
this.field.draw_template= null;
this.field.field_choice= null;
this.field.rule_expression= null;
this.field.display_expression= null;
this.$refs["Form"].clearValidate(); this.$refs["Form"].clearValidate();
}); });
}, },
@ -1016,6 +1025,16 @@
} }
}); });
}, },
recordformcon(){
this.recordform.material = this.material;
this.recordform.type = 2;
this.limitedPhoto = true;
},
getMsgFormSon(data){
this.limitedPhoto = data;
this.recordformLists();
this.dialogVisible = false;
},
}, },
}; };
</script> </script>

View File

@ -3,29 +3,28 @@
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>生产任务列表</span> <span>生产任务列表</span>
</div> </div>
<el-input <el-input
v-model="listQuery1.search" v-model="listQuery1.search"
placeholder="任务编号/订单编号/合同编号/产品名称" placeholder="任务编号/订单编号/合同编号/产品名称"
style="width: 300px" style="width: 300px"
class="filter-item" class="filter-item"
@keyup.enter.native="handleFilter" @keyup.enter.native="handleFilter"
/> />
<el-button <el-button
class="filter-item" class="filter-item"
type="primary" type="primary"
icon="el-icon-search" icon="el-icon-search"
@click="handleFilter" @click="handleFilter"
>搜索</el-button >搜索
> </el-button>
<el-button <el-button
class="filter-item" class="filter-item"
type="primary" type="primary"
icon="el-icon-refresh-left" icon="el-icon-refresh-left"
@click="resetFilter" @click="resetFilter"
>重置</el-button >重置
> </el-button>
<el-table <el-table
:data="productionplanList.results" :data="productionplanList.results"
border border
@ -33,11 +32,8 @@
stripe stripe
style="width: 100%" style="width: 100%"
height="300" height="300"
> >
<el-table-column type="index" width="50"/> <el-table-column type="index" width="50"/>
<el-table-column label="任务编号" width="110"> <el-table-column label="任务编号" width="110">
<template slot-scope="scope">{{ scope.row.number }}</template> <template slot-scope="scope">{{ scope.row.number }}</template>
</el-table-column> </el-table-column>
@ -47,7 +43,6 @@
<el-table-column label="合同编号" width="110"> <el-table-column label="合同编号" width="110">
<template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.order_.contract_.number }}</template> <template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.order_.contract_.number }}</template>
</el-table-column> </el-table-column>
<el-table-column label="产品名称" width="150" show-overflow-tooltip> <el-table-column label="产品名称" width="150" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.product_.name }}</template> <template slot-scope="scope">{{ scope.row.product_.name }}</template>
</el-table-column> </el-table-column>
@ -60,7 +55,7 @@
<el-table-column label="生产数量" width="110"> <el-table-column label="生产数量" width="110">
<template slot-scope="scope">{{ scope.row.count }}</template> <template slot-scope="scope">{{ scope.row.count }}</template>
</el-table-column> </el-table-column>
<el-table-column label="状态" width="110"> <el-table-column label="状态" width="110">
<template slot-scope="scope">{{ state_[scope.row.state] }}</template> <template slot-scope="scope">{{ state_[scope.row.state] }}</template>
</el-table-column> </el-table-column>
<el-table-column label="计划开工时间" width="110"> <el-table-column label="计划开工时间" width="110">
@ -135,7 +130,7 @@
<template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.contract_.number }}</template> <template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.contract_.number }}</template>
</el-table-column> </el-table-column>
<el-table-column label="合同名称" show-overflow-tooltip width="110"> <el-table-column label="合同名称" show-overflow-tooltip width="110">
<template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.contract_.name }}</template> <template slot-scope="scope" v-if="scope.row.contract">{{ scope.row.contract_.name }}</template>
</el-table-column> </el-table-column>
<el-table-column label="所需产品" show-overflow-tooltip width="150"> <el-table-column label="所需产品" show-overflow-tooltip width="150">
<template slot-scope="scope">{{ scope.row.product_.name }}</template> <template slot-scope="scope">{{ scope.row.product_.name }}</template>
@ -231,7 +226,7 @@
</div> </div>
</template> </template>
<script> <script>
import gantt from "@/components/Gantt/index"; import gantt from "@/components/Gantt/index";
import {getordertoplan} from "@/api/sam"; import {getordertoplan} from "@/api/sam";
import {createProductionplan, getProductionplanList, createsubplan} from "@/api/pm"; import {createProductionplan, getProductionplanList, createsubplan} from "@/api/pm";
import {getMaterialList} from "@/api/mtm"; import {getMaterialList} from "@/api/mtm";
@ -242,20 +237,21 @@
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
const defaulteorderplan = {}; const defaulteorderplan = {};
export default { export default {
components: {Pagination,gantt}, components: {Pagination, gantt},
data() { data() {
return { return {
orderplan: defaulteorderplan, orderplan: defaulteorderplan,
orderList: { orderList: {
count: 0, count: 0,
}, },
state_:{ state_: {
10:'制定中', 10: '制定中',
20:'已下达', 20: '已下达',
30:'已接受', 30: '已接受',
40:'生产中', 40: '生产中',
50:'已完成', 50: '已完成',
60:'军检完成'}, 60: '军检完成'
},
listQuery: { listQuery: {
page: 1, page: 1,
page_size: 20, page_size: 20,
@ -277,7 +273,7 @@
number: [{required: true, message: "请输入", trigger: "blur"}], number: [{required: true, message: "请输入", trigger: "blur"}],
}, },
proList:[], proList: [],
}; };
}, },
computed: {}, computed: {},
@ -309,7 +305,7 @@
if (response.data) { if (response.data) {
this.productionplanList = response.data; this.productionplanList = response.data;
let list = response.data.results; let list = response.data.results;
let arr= []; let arr = [];
list.forEach(item => { list.forEach(item => {
if (!item.children || item.children.length < 1) { if (!item.children || item.children.length < 1) {
let startTime = new Date(item.start_date).getTime(); let startTime = new Date(item.start_date).getTime();
@ -334,18 +330,18 @@
this.listLoading = false; this.listLoading = false;
}); });
}, },
//搜索生产计划 //搜索生产计划
handleFilter() { handleFilter() {
this.listQuery1.page = 1; this.listQuery1.page = 1;
this.getplanList(); this.getplanList();
}, },
resetFilter() { resetFilter() {
this.listQuery1 = { this.listQuery1 = {
page: 1, page: 1,
page_size: 20, page_size: 20,
} }
this.getplanList(); this.getplanList();
}, },
handleclick(scope) { handleclick(scope) {
this.orderID = scope.row.id; this.orderID = scope.row.id;
this.countsx = scope.row.count; this.countsx = scope.row.count;
@ -402,12 +398,12 @@
}); });
}, },
activeNameClick(tab, event){ activeNameClick(tab, event) {
debugger; debugger;
console.log(tab, event); console.log(tab, event);
if(tab.label==='甘特图'){ if (tab.label === '甘特图') {
this.ganttShow = true; this.ganttShow = true;
}else{ } else {
this.ganttShow = false; this.ganttShow = false;
} }
}, },