Commit 2525380d by lyy

Merge branch 'master' of http://test.siger-data.com:9000/jiawei.su/Laisi_AutoMES2 into master

parents 76c4f5d7 c26b36f0
<template>
<div>
<div class="divborder newSearchDiv">
<div class="filter">
<label>工装类型:</label>
<Cascader class="searchSelect" :data="frockTypeTree" clearable change-on-select v-model="frockType" @on-change="changeFrockType"></Cascader>
</div>
<div class="filter">
<label>工装名称:</label>
<Input type="text" class="searchInput" v-model="frockname" />
</div>
<div class="filter">
<label>状态:</label>
<Select v-model="status" clearable class="searchSelect">
<Option :value="1">可用</Option>
<Option :value="0">停用</Option>
</Select>
</div>
<div class="searchBtn">
<Button type="primary" class="twoWord" icon="ios-search" @click="tosearch()">{{ $t(1001) }}</Button>
<Button type="success" class="twoWord" icon="md-add-circle" @click="add()">{{$t('1002')}}</Button>
<Button type="warning" class="twoWord" icon="ios-create-outline" @click="edit()">{{$t('1003')}}</Button>
<Button type="primary" class="fourWord" icon="md-download" @click="loadexcel()">{{$t('1005')}}</Button>
<Upload
style="display:inline-block"
ref="upload"
:action="action"
name="excel-file"
:headers="headers"
:show-upload-list="false"
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
>
<Button
type="primary"
class="fourWord"
icon="md-cloud-upload"
>{{$t('1006')}}</Button>
</Upload>
<Button type="primary" class="fourWord" icon="ios-cloud-download" @click="search(1)">{{$t('1007')}}</Button>
</div>
</div>
<div class="divborder newTableDiv">
<Table
class="tableClass"
@on-current-change="handleRowChange"
highlight-row
:data="tableData1"
:columns="tableColumns1"
></Table>
<div class="pageDiv">
<div class="pageDirection">
<Page
:total="total"
:current="page"
@on-change="changePage"
show-elevator
show-sizer
show-total
@on-page-size-change="handlePageSize"
:page-size-opts="[10,20,30,40,100]"
></Page>
</div>
</div>
</div>
<Modal class="newModalClass" v-model="addmodal" :styles="{width:'650px'}">
<p slot="header">
<span v-show="type==1">{{$t('1002')}}</span>
<span v-show="type==2">{{$t('1003')}}</span>
</p>
<div class="demo-spin-col">
<Spin fix v-if="spinShow">
<div>正在上传...</div>
</Spin>
<div class="filter">
<label><i>*</i>工装类型:</label>
<Cascader class="searchSelect" :data="frockTypeTree" v-model="parentType" change-on-select @on-change="changeFrockType1"></Cascader>
</div>
<div class="filter">
<label><i>*</i>管理类型:</label>
<Select v-model="addmtype" class="searchSelect">
<Option :value="1">单件</Option>
<Option :value="2">批次</Option>
</Select>
</div>
<div class="filter">
<label><i>*</i>工装名称:</label>
<Input type="text" class="searchInput" v-model="addfrockname" />
</div>
<div class="filter">
<label><i>*</i>工装料号:</label>
<Input type="text" class="searchInput" v-model="addfrockno" />
</div>
<div class="filter">
<label><i>*</i>工装编号:</label>
<Input type="text" class="searchInput" v-model="addfrockcode" />
</div>
<div class="filter">
<label><i>*</i>规格型号:</label>
<Input type="text" class="searchInput" v-model="addfrockspec" />
</div>
<div class="filter">
<label><i>*</i>数量:</label>
<InputNumber type="text" class="searchInput" :min="1" :formatter="value => `${parseInt(value)}`" v-model="addnum" />
</div>
<div class="filter">
<label><i>*</i>状态:</label>
<RadioGroup v-model="addstatus">
<Radio label="1"><span>可用</span></Radio>
<Radio label="0"><span>停用</span></Radio>
</RadioGroup>
</div>
<div class="filter">
<label>备注:</label>
<Input type="text" class="searchInput" v-model="addremark" />
</div>
<div>
<label>上传文件:</label>
<div class="accountInfoUploadFile">
<Upload
ref="upload"
:show-upload-list="false"
:on-success="handleSuccess"
:before-upload="handleBeforeUpload"
:on-error="handleError"
type="drag"
:headers="headers"
:action="UploadAction">
<div class="descicon" style="">
<Icon type="md-cloud-upload" size="15"></Icon>
<span>上传文件</span>
</div>
</Upload>
<div v-show="filename" class="hasfile">{{filename}}<Icon @click.native="delfile" type="ios-close-circle" size="15" /></div>
</div>
</div>
</div>
<div slot="footer">
<Button type="text" size="large" @click="this.addmodal=false">{{$t('1033')}}</Button>
<Button type="primary" size="large" @click="addPost()">{{$t('1011')}}</Button>
</div>
</Modal>
</div>
</template>
<script>
export default {
data(){
return {
//导入方法
action: this.axios.publicPath + "wms/Upload/Submit?templateName=StorageLocation",
headers: {
token: localStorage.getItem("token"),
timestamp: localStorage.getItem("timestamp"),
nonce: localStorage.getItem("nonce"),
sign: localStorage.getItem("sign"),
},
//搜索
frockTypeTree:[],//树形结构
frockType:[],//工装类型
frockTypeid:'',
frockcode:'',//工装编号
frockname:'',//工装名称
status:'',//状态
//列表
total:0,
page:1,
pagesize:10,
tableData1:[],
tableColumns1:[
{
type: "index2",
title: this.$t("1008"),
key: "xuhao",
render: (h, params) => {
return h(
"span",
params.index + (this.page - 1) * this.pagesize + 1
);
},
},
{
title:'工装类型',
key:'category'
},
{
title:'管理类型',
key:'managetype',
render:(h,params)=>{
let str = '';
if(params.row.managetype===1){
str = '单件';
}else if(params.row.managetype===2){
str = '批次';
}
return h('span',str);
}
},
{
title:'工装料号',
key:'partnumber'
},
{
title:'工装名称',
key:'name'
},
{
title:'工装编号',
key:'code'
},
{
title:'规格型号',
key:'specification'
},
{
title:'数量',
key:'number'
},
{
title:'状态',
key:'status',
render:(h,params)=>{
let str = '';
if(params.row.status===1){
str = '可用';
}else{
str = '停用';
}
return h('span',str);
}
},
{
title:'备注',
key:'remark'
},
{
title:'附件',
key:'filename',
render:(h,params)=>{
return h('span',{
style:{
color:'#2b85e4',
cursor:'pointer'
},
on:{
click:()=>{
let name = params.row.filename;
let url = params.row.fileurl;
if(url){
this.downFile(url,name);
}
}
}
},params.row.filename);
}
},
{
title:'维护人',
key:'updator'
},
{
title:'维护时间',
key:'updatetime'
}
],
//弹窗
detailobj:{},
addmodal:false,
type:0,//1添加 2编辑
parentType:[],//父级类型
parentTypeid:'',
frockTypename:'',//工装类型名称
addmtype:1,//管理类型
addfrockname:'',//工装名称
addfrockno:'',//工装料号
addfrockcode:'',//工装编号
addnum:0,
addstatus:'1',//状态 1可用 0停用
addfrockspec:'',//规格型号
addremark:'',//备注
filename: '',//文件名称
fileurl:'',//文件路径
UploadAction: this.axios.publicPath + "config/upload/UploadImage",
headers: {
token: localStorage.getItem("token"),
timestamp: localStorage.getItem("timestamp"),
nonce: localStorage.getItem("nonce"),
sign: localStorage.getItem("sign"),
},
spinShow:false,
}
},
created(){
this.initFrockType();//工装类型
this.tosearch();
this.tableColumns1 = this.$time.initTableTitle(this.tableColumns1);
},
methods:{
//工装类型
initFrockType(){
this.axios.request({
url: "/acc/FixtureTools/GetCategoryList",
method: "get",
})
.then((res) => {
if (res.data.ret == 1) {
let arr = res.data.data;
this.contentTree(arr);
this.frockTypeTree = arr;
}
});
},
contentTree (arr) {
arr.forEach(ele => {
ele.disabled = false;
if (
ele.children != undefined &&
ele.children != null &&
ele.children.length != 0
) {
this.contentTree(ele.children);
}else{
ele.children = []
}
});
},
changeFrockType(value){
this.frockTypeid = "";
if(value!=undefined && value.length){
this.frockTypeid = value[value.length - 1];
}
},
changeFrockType1(value){
this.parentTypeid = "";
this.parentType = [];
if(value!=undefined && value.length){
this.parentTypeid = value[value.length - 1];
this.parentType = value;
}
},
//获取工装列表
getFrocks(){
// this.axios.request({
// url: "/fms/accountInfo/frockList",
// method: "get",
// })
// .then((res) => {
// this.frockList = [];
// let data = res.data.data;
// if (res.data.ret == 1&&Array.isArray(data)&&data.length) {
// this.frockList = data;
// }
// });
},
tosearch(){
this.page = 1;
this.pagesize = 10;
this.search(0);
},
search(toexcel){
let params = {
category:this.frockType,//工装类型id
code:this.frockcode,
name:this.frockname,
state:this.status, //0停用 1可用
page:this.page,
pagesize:this.pagesize,
toexcel:toexcel //0查询 1导出
}
this.detailobj = {};
this.axios.request({
url: "/acc/FixtureTools/GetPageList",
params,
method: "get",
})
.then((res) => {
if(toexcel === 1){
if (res.data.ret === 1) {
window.location.href =
axios.publicPath + "" + res.data.data;
} else {
this.$Message.error(this.$t(res.data.msg));
}
}
else{
this.total = 0;
this.tableData1 = [];
let data = res.data.data;
if (res.data.ret == 1 &&Array.isArray(data)&&data.length) {
this.total = res.data.total;
this.tableData1 = res.data.data;
}
}
});
},
add(){
this.type = 1;
this.parentType = [];//工装类型 清空
this.parentTypeid = '';
this.addmtype = 1;//管理类型
this.addfrockname = '';//工装名称
this.addfrockno = '';//工装料号
this.addfrockcode = '';//工装编号
this.addnum = 1;
this.addfrockspec = '';
this.addstatus = '1';//状态 1可用 0停用
this.addremark = '';//备注
this.filename = '';//文件名称
this.fileurl = '';//文件路径
this.addmodal = true;
},
edit(){
if(!this.detailobj || !this.detailobj.id){
this.$Message.error(this.$t('1017'));
return false;
}
this.type = 2;
this.parentTypeid = this.detailobj.categoryid;
this.parentType = this.detailobj.categoryids;
this.addmtype = this.detailobj.managetype;//管理类型
this.addfrockname = this.detailobj.name;//工装名称
this.addfrockno = this.detailobj.partnumber;//工装料号
this.addfrockcode = this.detailobj.code;//工装编号
this.addnum = this.detailobj.number;
this.addfrockspec = this.detailobj.specification;
this.addstatus = this.detailobj.status+'';//状态 1可用 0停用
this.addremark = this.detailobj.remark;//备注
this.filename = this.detailobj.filename;//文件名称
this.fileurl = this.detailobj.fileurl;//文件路径
this.addmodal = true;
},
addPost(){
if(!this.parentTypeid){
this.$Message.error("请选择工装类型");
return false;
}
if(!this.addfrockname){
this.$Message.error("请输入工装名称");
return false;
}
if(!this.addfrockno){
this.$Message.error("请输入工装料号");
return false;
}
if(!this.addfrockcode){
this.$Message.error("请输入工装编号");
return false;
}
if(!this.addfrockspec){
this.$Message.error("请输入规格型号");
return false;
}
if(!this.addnum){
this.$Message.error("请输入工装数量");
return false;
}
let url = '';
let id = '';
if(this.type === 1){
url = '/acc/FixtureTools/Add';
id = 0;
}
else{
url = '/acc/FixtureTools/Update';
id = this.detailobj.id;
}
let data = {
id:id,
categoryid:this.parentTypeid,//工装类型id
managetype:this.addmtype,
partnumber:this.addfrockno,//料号
code:this.addfrockcode,//编号
name:this.addfrockname,//名称
specifition:this.addfrockspec,//规格型号
number:this.addnum,//数量
remark:this.addremark,//备注
status:this.addstatus,//附件
fileurl:this.fileurl,
filename:this.filename
}
this.axios.request({
url: url,
data,
method: "post",
}).then((res) => {
if (res.data.ret == 1) {
this.addmodal = false;
if(this.type===1){
this.tosearch();
this.$Message.success(this.$t('1055'));
}
else{
this.$Message.success(this.$t('1060'));
this.search(0);
}
} else {
this.$Message.error(this.$t(res.data.msg+''));
}
});
},
/*********文件上传 start******** */
handleBeforeUpload(file){
this.spinShow = true;
if(!file){
this.spinShow = false;
return false;
}
},
handleSuccess (res,file) {
this.spinShow = false;
if (res.ret == 1) {
this.$Message.success(this.$t("100378"));
this.filename = file.name;
this.fileurl = res.data;
} else {
this.$Message.error(this.$t(res.msg+''));
}
},
handleError(){
this.$Message.error(this.$t("600512") + "!");
},
delfile(){
this.filename = '';
this.fileurl = '';
},
/*********文件上传 end******** */
//下载文件
downFile(url,fileName){
let params = {
file_url: url,
};
this.axios.request({
url: "/config/Download/DownloadFile",
params,
method: "get",
responseType: "blob"
})
.then((res) => {
if (res.data.ret === 1) {
var info = res.data.data;
var content = info.content;
// 创建隐藏的可下载链接
var eleLink = document.createElement("a");
eleLink.download = fileName;
eleLink.style.display = "none";
// 字符内容转变成blob地址
var blob = new Blob([content]);
eleLink.href = URL.createObjectURL(blob);
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
} else {
this.$Message.error(this.$t(res.data.msg));
}
})
// console.log(fileName)
// console.log(data)
// let url = window.URL.createObjectURL(new Blob([data]));
// let link = document.createElement("a");
// link.style.display = "none";
// link.href = url;
// link.setAttribute("download", fileName);
// document.body.appendChild(link);
// link.click();
},
//导出模板
loadexcel() {
// this.axios.request({
// url: "/config/Download/GetTemplate?name=StorageLocation",
// method: "get",
// })
// .then((res) => {
// if (res.data.ret === 1) {
// window.location.href =
// this.axios.publicPath + "" + res.data.data;
// } else {
// this.$Message.error(this.$t(res.data.msg));
// }
// });
},
handleRowChange(currentRow, oldCurrentRow) {
this.detailobj = currentRow;
},
handlePageSize(value) {
this.page = 1;
this.pagesize = value;
this.search(0);
},
changePage(value) {
this.page = value;
this.search(0);
},
handleFormatError(file) {
this.$Message.error(
this.$t("950396") + file.name + this.$t("950397")
);
},
handleSuccess(res, file) {
if (res.ret == 1) {
this.$Message.success(this.$t("950398"));
this.tosearch();
} else {
if ((res.msg + "").indexOf(",") != -1) {
inittip(res.msg);
} else {
this.$Message.error(this.$t(res.data));
}
}
},
handleError() {
this.$Message.error(this.$t("2010006") + "!");
},
}
}
</script>
<style lang="less">
.accountInfoUploadFile{
display:inline-block;
position: relative;
left: 5px;
.ivu-upload{
display: inline-block;
width: 140px;
height: 29px;
vertical-align: middle;
.descicon{
width: 140px;
height:29px;
line-height: 29px;
}
}
.ivu-upload-drag{
border:1px solid #dcdee2!important;
}
.ivu-upload-drag:hover {
border: 1px solid #2d8cf0!important;
}
.hasfile{
display: inline-block;
position: relative;
left: -140px;
top: 29px;
i{
color: red;
font-size: 15px;
cursor: pointer;
vertical-align: top;
}
}
}
</style>
\ No newline at end of file
......@@ -7,14 +7,11 @@
</div>
<div class="filter">
<label>工装编号:</label>
<Select v-model="frockCode" label-in-value clearable filterable filter-by-label class="searchSelect">
<Option
v-for="(item,index) in frockList"
:value="item.id"
:key="index"
:label="item.name"
>{{ item.name }}</Option>
</Select>
<Input type="text" class="searchInput" v-model="frockcode" />
</div>
<div class="filter">
<label>工装名称:</label>
<Input type="text" class="searchInput" v-model="frockname" />
</div>
<div class="filter">
<label>状态:</label>
......@@ -26,8 +23,7 @@
<div class="searchBtn">
<Button type="primary" class="twoWord" icon="ios-search" @click="tosearch()">{{ $t(1001) }}</Button>
<Button type="success" class="twoWord" icon="md-add-circle" @click="add()">{{$t('1002')}}</Button>
<!-- <Button type="warning" class="twoWord" icon="ios-create-outline" @click="edit()">{{$t('1003')}}</Button>
<Button type="error" class="twoWord intervalRight" icon="md-close-circle" @click="dele()">{{ $t(1004) }}</Button>
<Button type="warning" class="twoWord" icon="ios-create-outline" @click="edit()">{{$t('1003')}}</Button>
<Button type="primary" class="fourWord" icon="md-download" @click="loadexcel()">{{$t('1005')}}</Button>
<Upload
style="display:inline-block"
......@@ -47,7 +43,7 @@
icon="md-cloud-upload"
>{{$t('1006')}}</Button>
</Upload>
<Button type="primary" class="fourWord" icon="ios-cloud-download" @click="Export()">{{$t('1007')}}</Button> -->
<Button type="primary" class="fourWord" icon="ios-cloud-download" @click="search(1)">{{$t('1007')}}</Button>
</div>
</div>
<div class="divborder newTableDiv">
......@@ -79,33 +75,40 @@
<span v-show="type==1">{{$t('1002')}}</span>
<span v-show="type==2">{{$t('1003')}}</span>
</p>
<div style="">
<div class="demo-spin-col">
<Spin fix v-if="spinShow">
<div>正在上传...</div>
</Spin>
<div class="filter">
<label>工装类型:</label>
<Cascader class="searchSelect" :data="frockTypeTree" change-on-select v-model="parentType" @on-change="changeFrockType1"></Cascader>
<label><i>*</i>工装类型:</label>
<Cascader class="searchSelect" :data="frockTypeTree" v-model="parentType" change-on-select @on-change="changeFrockType1"></Cascader>
</div>
<div class="filter">
<label><i>*</i>管理类型:</label>
<Select v-model="mtype" clearable class="searchSelect">
<Select v-model="addmtype" class="searchSelect">
<Option :value="1">单件</Option>
<Option :value="2">批次</Option>
</Select>
</div>
<div class="filter">
<label><i>*</i>工装名称:</label>
<Input type="text" class="searchInput" v-model="frockname" />
<Input type="text" class="searchInput" v-model="addfrockname" />
</div>
<div class="filter">
<label><i>*</i>工装料号:</label>
<Input type="text" class="searchInput" v-model="frockno" />
<Input type="text" class="searchInput" v-model="addfrockno" />
</div>
<div class="filter">
<label><i>*</i>工装编号:</label>
<Input type="text" class="searchInput" v-model="frockcode" />
<Input type="text" class="searchInput" v-model="addfrockcode" />
</div>
<div class="filter">
<label><i>*</i>规格型号:</label>
<Input type="text" class="searchInput" v-model="addfrockspec" />
</div>
<div class="filter">
<label><i>*</i>数量:</label>
<InputNumber type="text" class="searchInput" :formatter="value => `${parseInt(value)}`" v-model="num" />
<InputNumber type="text" class="searchInput" :min="1" :formatter="value => `${parseInt(value)}`" v-model="addnum" />
</div>
<div class="filter">
<label><i>*</i>状态:</label>
......@@ -116,19 +119,26 @@
</div>
<div class="filter">
<label>备注:</label>
<Input type="text" class="searchInput" v-model="remark" />
<Input type="text" class="searchInput" v-model="addremark" />
</div>
<div class="filter">
<div>
<label>上传文件:</label>
<div class="frockUploadFile">
<div class="accountInfoUploadFile">
<Upload
:before-upload="handleUpload"
ref="upload"
:show-upload-list="false"
:on-success="handleSuccess"
:before-upload="handleBeforeUpload"
:on-error="handleError"
type="drag"
:headers="headers"
:action="fileAction">
<Button class="UFbtn" icon="ios-cloud-upload-outline" :title="filename">{{filename?filename:'上传文件'}}</Button>
:action="UploadAction">
<div class="descicon" style="">
<Icon type="md-cloud-upload" size="15"></Icon>
<span>上传文件</span>
</div>
</Upload>
<div v-show="filename" class="hasfile">{{filename}}<Icon @click.native="delfile" type="ios-close-circle" size="15" /></div>
</div>
</div>
</div>
......@@ -143,12 +153,20 @@
export default {
data(){
return {
//导入方法
action: this.axios.publicPath + "wms/Upload/Submit?templateName=StorageLocation",
headers: {
token: localStorage.getItem("token"),
timestamp: localStorage.getItem("timestamp"),
nonce: localStorage.getItem("nonce"),
sign: localStorage.getItem("sign"),
},
//搜索
frockTypeTree:[],//树形结构
frockType:[],//工装类型
frockTypeid:'',
frockList:[],//工装编号
frockCode:'',//工装编号
frockcode:'',//工装编号
frockname:'',//工装名称
status:'',//状态
//列表
......@@ -170,108 +188,147 @@ export default {
},
{
title:'工装类型',
key:''
key:'category'
},
{
title:'管理类型',
key:''
key:'managetype',
render:(h,params)=>{
let str = '';
if(params.row.managetype===1){
str = '单件';
}else if(params.row.managetype===2){
str = '批次';
}
return h('span',str);
}
},
{
title:'工装料号',
key:''
key:'partnumber'
},
{
title:'工装名称',
key:''
key:'name'
},
{
title:'工装编号',
key:''
key:'code'
},
{
title:'规格型号',
key:''
key:'specification'
},
{
title:'数量',
key:''
key:'number'
},
{
title:'状态',
key:''
key:'status',
render:(h,params)=>{
let str = '';
if(params.row.status===1){
str = '可用';
}else{
str = '停用';
}
return h('span',str);
}
},
{
title:'备注',
key:''
key:'remark'
},
{
title:'附件',
key:''
key:'filename',
render:(h,params)=>{
return h('span',{
style:{
color:'#2b85e4',
cursor:'pointer'
},
on:{
click:()=>{
let name = params.row.filename;
let url = params.row.fileurl;
if(url){
this.downFile(url,name);
}
}
}
},params.row.filename);
}
},
{
title:'维护人',
key:''
key:'updator'
},
{
title:'维护时间',
key:''
key:'updatetime'
}
],
//弹窗
detailobj:{},
addmodal:false,
type:0,//1添加 2编辑
parentType:[],//父级类型
parentTypeid:'',
frockTypename:'',//工装类型名称
mtype:'',//管理类型
frockname:'',//工装名称
frockno:'',//工装料号
frockcode:'',//工装编号
num:0,
addmtype:1,//管理类型
addfrockname:'',//工装名称
addfrockno:'',//工装料号
addfrockcode:'',//工装编号
addnum:0,
addstatus:'1',//状态 1可用 0停用
remark:'',//备注
addfrockspec:'',//规格型号
addremark:'',//备注
filename: '',//文件名称
fileurl:'',//文件路径
loadingStatus: false,
fileAction: this.axios.publicPath + "config/upload/UploadImage",
UploadAction: this.axios.publicPath + "config/upload/UploadImage",
headers: {
token: localStorage.getItem("token"),
timestamp: localStorage.getItem("timestamp"),
nonce: localStorage.getItem("nonce"),
sign: localStorage.getItem("sign"),
},
spinShow:false,
}
},
created(){
this.initFrockType();//工装类型
this.tosearch();
this.tableColumns1 = this.$time.initTableTitle(this.tableColumns1);
},
methods:{
//工装类型
initFrockType(){
// this.axios.request({
// url: "/fms/typeMaintenance/frockTypeList",
// method: "get",
// })
// .then((res) => {
// if (res.data.ret == 1) {
// let arr = res.data.data.children;
// this.frockTypeTree = arr;
// this.contentTree(arr);
// }
// });
this.axios.request({
url: "/acc/FixtureTools/GetCategoryList",
method: "get",
})
.then((res) => {
if (res.data.ret == 1) {
let arr = res.data.data;
this.contentTree(arr);
this.frockTypeTree = arr;
}
});
},
contentTree (arr) {
arr.forEach(ele => {
ele.disabled = false;
ele.value = ele.id;
ele.label = ele.name;
if (
ele.children.length != 0 &&
ele.children != undefined &&
ele.children != null
ele.children != null &&
ele.children.length != 0
) {
this.contentTree(ele.children);
}else{
ele.children = []
}
});
},
......@@ -283,8 +340,10 @@ export default {
},
changeFrockType1(value){
this.parentTypeid = "";
this.parentType = [];
if(value!=undefined && value.length){
this.parentTypeid = value[value.length - 1];
this.parentType = value;
}
},
//获取工装列表
......@@ -308,64 +367,217 @@ export default {
},
search(toexcel){
let params = {
frockTypeid:this.frockType,//工装类型id
frockid:this.frockCode, //工装id
staus:this.status, //0停用 1可用
category:this.frockType,//工装类型id
code:this.frockcode,
name:this.frockname,
state:this.status, //0停用 1可用
page:this.page,
pagesize:this.pagesize,
toexcel:toexcel //0查询 1导出
}
this.detailobj = {};
// this.axios.request({
// url: "/fms/accountInfo/search",
// params,
// method: "get",
// })
// .then((res) => {
// if(toexcel === 1){
// if (res.data.ret === 1) {
// window.location.href =
// axios.publicPath + "" + res.data.data;
// } else {
// this.$Message.error(this.$t(res.data.msg));
// }
// }
// else{
// this.total = 0;
// this.tableData1 = [];
// let data = res.data.data;
// if (res.data.ret == 1 &&Array.isArray(data)&&data.length) {
// this.total = res.data.total;
// this.tableData1 = res.data.data;
// }
// }
// });
this.axios.request({
url: "/acc/FixtureTools/GetPageList",
params,
method: "get",
})
.then((res) => {
if(toexcel === 1){
if (res.data.ret === 1) {
window.location.href =
axios.publicPath + "" + res.data.data;
} else {
this.$Message.error(this.$t(res.data.msg));
}
}
else{
this.total = 0;
this.tableData1 = [];
let data = res.data.data;
if (res.data.ret == 1 &&Array.isArray(data)&&data.length) {
this.total = res.data.total;
this.tableData1 = res.data.data;
}
}
});
},
add(){
this.type = 1;
this.parentType = [];//工装类型 清空
this.parentTypeid = '';
this.addmtype = 1;//管理类型
this.addfrockname = '';//工装名称
this.addfrockno = '';//工装料号
this.addfrockcode = '';//工装编号
this.addnum = 1;
this.addfrockspec = '';
this.addstatus = '1';//状态 1可用 0停用
this.addremark = '';//备注
this.filename = '';//文件名称
this.fileurl = '';//文件路径
this.addmodal = true;
},
handleUpload (file) {
this.file = file;
return false;
},
handleSuccess (res) {
console.log(222222)
console.log(res)
this.loadingStatus = true;
setTimeout(() => {
this.file = null;
this.loadingStatus = false;
this.$Message.success('Success')
}, 1500);
},
handleError(error){
console.log(1111111)
console.log(error)
edit(){
if(!this.detailobj || !this.detailobj.id){
this.$Message.error(this.$t('1017'));
return false;
}
this.type = 2;
this.parentTypeid = this.detailobj.categoryid;
this.parentType = this.detailobj.categoryids;
this.addmtype = this.detailobj.managetype;//管理类型
this.addfrockname = this.detailobj.name;//工装名称
this.addfrockno = this.detailobj.partnumber;//工装料号
this.addfrockcode = this.detailobj.code;//工装编号
this.addnum = this.detailobj.number;
this.addfrockspec = this.detailobj.specification;
this.addstatus = this.detailobj.status+'';//状态 1可用 0停用
this.addremark = this.detailobj.remark;//备注
this.filename = this.detailobj.filename;//文件名称
this.fileurl = this.detailobj.fileurl;//文件路径
this.addmodal = true;
},
addPost(){
if(!this.parentTypeid){
this.$Message.error("请选择工装类型");
return false;
}
if(!this.addfrockname){
this.$Message.error("请输入工装名称");
return false;
}
if(!this.addfrockno){
this.$Message.error("请输入工装料号");
return false;
}
if(!this.addfrockcode){
this.$Message.error("请输入工装编号");
return false;
}
if(!this.addfrockspec){
this.$Message.error("请输入规格型号");
return false;
}
if(!this.addnum){
this.$Message.error("请输入工装数量");
return false;
}
let url = '';
let id = '';
if(this.type === 1){
url = '/acc/FixtureTools/Add';
id = 0;
}
else{
url = '/acc/FixtureTools/Update';
id = this.detailobj.id;
}
let data = {
id:id,
categoryid:this.parentTypeid,//工装类型id
managetype:this.addmtype,
partnumber:this.addfrockno,//料号
code:this.addfrockcode,//编号
name:this.addfrockname,//名称
specifition:this.addfrockspec,//规格型号
number:this.addnum,//数量
remark:this.addremark,//备注
status:this.addstatus,//附件
fileurl:this.fileurl,
filename:this.filename
}
this.axios.request({
url: url,
data,
method: "post",
}).then((res) => {
if (res.data.ret == 1) {
this.addmodal = false;
if(this.type===1){
this.tosearch();
this.$Message.success(this.$t('1055'));
}
else{
this.$Message.success(this.$t('1060'));
this.search(0);
}
} else {
this.$Message.error(this.$t(res.data.msg+''));
}
});
},
/*********文件上传 start******** */
handleBeforeUpload(file){
this.spinShow = true;
if(!file){
this.spinShow = false;
return false;
}
},
handleSuccess (res,file) {
this.spinShow = false;
if (res.ret == 1) {
this.$Message.success(this.$t("100378"));
this.filename = file.name;
this.fileurl = res.data;
} else {
this.$Message.error(this.$t(res.msg+''));
}
},
handleError(){
this.$Message.error(this.$t("600512") + "!");
},
delfile(){
this.filename = '';
this.fileurl = '';
},
/*********文件上传 end******** */
//下载文件
downFile(url,fileName){
let params = {
url: url,
name:fileName
};
this.axios.request({
url: "/config/Download/DownloadFileByUrl",
params,
method: "get",
responseType: "blob"
})
.then((res) => {
if (res.status == 200) {
let url;
let link = document.createElement("a");
url = window.URL.createObjectURL(res.data);
link.style.display = "none";
link.href = url;
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
}
}).catch(error=>{
this.$Message.error('请求错误')
});
},
//导出模板
loadexcel() {
// this.axios.request({
// url: "/config/Download/GetTemplate?name=StorageLocation",
// method: "get",
// })
// .then((res) => {
// if (res.data.ret === 1) {
// window.location.href =
// this.axios.publicPath + "" + res.data.data;
// } else {
// this.$Message.error(this.$t(res.data.msg));
// }
// });
},
handleRowChange(currentRow, oldCurrentRow) {
this.detailobj = currentRow;
},
......@@ -378,16 +590,62 @@ export default {
this.page = value;
this.search(0);
},
handleFormatError(file) {
this.$Message.error(
this.$t("950396") + file.name + this.$t("950397")
);
},
handleSuccess(res, file) {
if (res.ret == 1) {
this.$Message.success(this.$t("950398"));
this.tosearch();
} else {
if ((res.msg + "").indexOf(",") != -1) {
inittip(res.msg);
} else {
this.$Message.error(this.$t(res.data));
}
}
},
handleError() {
this.$Message.error(this.$t("2010006") + "!");
},
}
}
</script>
<style lang="less" scoped>
.frockUploadFile{
<style lang="less">
.accountInfoUploadFile{
display:inline-block;
.UFbtn{
width:140px;
height:29px;
line-height: 15px;
position: relative;
left: 5px;
.ivu-upload{
display: inline-block;
width: 140px;
height: 29px;
vertical-align: middle;
.descicon{
width: 140px;
height:29px;
line-height: 29px;
}
}
.ivu-upload-drag{
border:1px solid #dcdee2!important;
}
.ivu-upload-drag:hover {
border: 1px solid #2d8cf0!important;
}
.hasfile{
display: inline-block;
position: relative;
left: -140px;
top: 29px;
i{
color: red;
font-size: 15px;
cursor: pointer;
vertical-align: top;
}
}
}
</style>
\ No newline at end of file
......@@ -134,6 +134,7 @@ export default {
created(){
this.initFrockType();//工装类型树形结构
this.tosearch();
this.tableColumns1 = this.$time.initTableTitle(this.tableColumns1);
},
methods:{
//工装类型
......
......@@ -212,6 +212,7 @@ export default {
},
created(){
this.initWarehouse();//仓库
this.tableColumns1 = this.$time.initTableTitle(this.tableColumns1);
},
methods:{
//仓库下拉框
......
......@@ -105,6 +105,7 @@ namespace Siger.ApiACC.Controllers
/// <param name="line"></param>
/// <param name="mode"></param>
/// <returns></returns>
[HttpGet]
public IActionResult LineMode(int line, int mode)
{
var exitObj = _automationLineMode.Get(f => f.section == line);
......@@ -148,10 +149,35 @@ namespace Siger.ApiACC.Controllers
throw new BadRequestException(CommonEnum.Fail);
}
}
/// <summary>
/// 产线 需要检验
/// </summary>
/// <param name="line"></param>
/// <param name="enable"></param>
/// <returns></returns>
[HttpGet]
public IActionResult inspect(int line, int enable)
{
var exitObj = _automationLineMode.Get(f => f.section == line);
if (exitObj == null)
{
throw new BadRequestException(CommonEnum.RecordNotFound);
}
exitObj.updatetime = DateTime.Now;
exitObj.inspect = enable;
if (_unitOfWork.Commit() > 0)
return new ObjectResult(CommonEnum.Succefull);
else
throw new BadRequestException(CommonEnum.Fail);
}
/// <summary>
/// 任务状态接口 用于保存PLC 实时任务状态 ()
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult TaskResult([FromBody]RequestAutomationTaskResult request)
{
//1.检查Tasklist
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Siger.Middlelayer.AccRepository.Entities;
using Siger.Middlelayer.AccRepository.Repositories.Interface;
using Siger.Middlelayer.AccRepository.Request;
using Siger.Middlelayer.AccRepository.Response;
using Siger.Middlelayer.Common;
using Siger.Middlelayer.Common.Extensions;
using Siger.Middlelayer.Log;
using Siger.Middlelayer.Repository;
using Siger.Middlelayer.Repository.Repositories.Interface;
using Siger.Middlelayer.Repository.Response;
using Siger.Middlelayer.Share.Constant;
using Siger.Middlelayer.Share.Enum.ModuleEnum;
namespace Siger.ApiACC.Controllers
{
public class AutomationOperateController : BaseController
{
private readonly IUnitOfWork _unitOfWork;
private readonly ISigerProjectLevelSectionRepository _sigerProjectLevelSection;
private readonly ISigerDict _sigerDict;
private readonly IAutomationMachineStatus _automationMachineStatus;
private readonly ISigerProjectMachineAttributionRepository _sigerProjectMachineAttribution;
public AutomationOperateController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection , ISigerDict sigerDict,IAutomationMachineStatus automationMachineStatus,ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution)
{
_unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection;
_sigerDict = sigerDict;
_automationMachineStatus = automationMachineStatus;
_sigerProjectMachineAttribution = sigerProjectMachineAttribution;
}
public IActionResult Get()
{
return new ObjectResult(1);
}
/// <summary>
/// 获取字典配置
/// </summary>
/// <param name="line">产线</param>
/// <param name="type">类型:0:上料 1:检验</param>
/// <returns></returns>
[HttpGet]
public IActionResult GetloadStation(int line,int type)
{
var stationDicts = _sigerDict.GetDataByCat(AccDictCost.Automation, ProjectId);
if (!stationDicts.Any())
{
Logger.WriteLineInfo($"GetloadStation 未配置设备类型字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
}
var loadStation=new List<string>();
if (type==0)
{
var dictLoad = stationDicts.Where(s => s.dkey == DictKeyValConst.UploadloadStation);
if (!dictLoad.Any())
{
Logger.WriteLineInfo($"GetloadStation 未配置上下料工站字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
}
loadStation = dictLoad.Select(s => s.dval).ToList();
}else
{
var dictLoad = stationDicts.Where(s => s.dkey == DictKeyValConst.CleanStation);
if (!dictLoad.Any())
{
Logger.WriteLineInfo($"GetloadStation 未配置清洗工站字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
}
loadStation = dictLoad.Select(s => s.dval).ToList();
}
var data = new List<ResponseLoadStation>();
foreach (var station in loadStation)
{
var section = _sigerProjectLevelSection.Get(f => f.id == station.ToInt() && f.parentid==line && f.status == (int)RowState.Valid);
if (section == null)
continue;
var machintAttr = _sigerProjectMachineAttribution.Get(f => f.station == section.id);
if(machintAttr==null)
{
Logger.WriteLineInfo($"GetloadStation 未配置清洗工站字典");
continue;
}
var loadStatus = (int)Automation.MachineStatus.Waiting;
var machineStatus = _automationMachineStatus.Get(f => f.section == station.ToInt() && f.status==(int)RowState.Valid);
if (machineStatus==null)
{
_automationMachineStatus.Insert(new siger_automation_machine_status
{
projectId=ProjectId,
enable=1,
machineid=machintAttr.machine,
section=section.id,
updatetime=DateTime.Now
});
}else
{
loadStatus = machineStatus.status;
}
data.Add(new ResponseLoadStation {
section=section.id,
title=section.title,
status=loadStatus
});
}
return new ObjectResult(data);
}
/// <summary>
/// 准备上料
/// </summary>
/// <param name="loading"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Loading([FromBody]requestAutomationLoading loading)
{
var data = new ResponseAutomationInfo {
sn="sn0001",
wo="wo123123"
};
return new ObjectResult(data);
}
/// <summary>
/// 安装完成
/// </summary>
/// <param name="assemble"></param>
/// <returns></returns>
[HttpPost]
public IActionResult CompalateAssemble([FromBody]requestAutoCompalateAssemble assemble)
{
return new ObjectResult(1);
}
/// <summary>
/// 准备下料
/// </summary>
/// <param name="unloading"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Unloading([FromBody]requestAutomationUnloading unloading)
{
return new ObjectResult(1);
}
/// <summary>
/// 拆卸完成
/// </summary>
/// <param name="disassemble"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Disassemble([FromBody]Requestdisassemble disassemble)
{
return new ObjectResult(1);
}
}
}
......@@ -34,7 +34,7 @@ namespace Siger.ApiACC.Controllers
}
[HttpGet]
public IActionResult GetPageList(string category, string code, string name, int projectid, int page, int pagesize)
public IActionResult GetPageList(string category, string code, string name, int page, int pagesize)
{
var data = _toolsAssemblyRepository.GetPagedList(category.ToInt(), code, name, ProjectId, page, pagesize);
return new PagedObjectResult(data.Data, data.Total, page, pagesize);
......
......@@ -3,6 +3,7 @@ using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
using Microsoft.AspNetCore.Mvc;
using Siger.ApiCommon.Filters;
using Siger.ApiCommon.Utilities;
......@@ -312,5 +313,44 @@ namespace Siger.ApiConfig.Controller
return new ObjectResult(new { content = FileUtility.GetText(truePath) });
}
/// <summary>
/// 下载文件
/// </summary>
/// <returns></returns>
[HttpGet]
[NoResultFilter]
public IActionResult DownloadFileByUrl(string url, string name)
{
if (!string.IsNullOrEmpty(url))
{
var file_url = url.Split("Files");
if (url.Length == 2)
{
url = "Files" + file_url[1];
}
}
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, url).Replace("Files", "TemporaryFiles");
if (!System.IO.File.Exists(path))
{
return new NoContentResult();
}
try
{
var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(stream) };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = name
};
return File(stream, "application/octet-stream");
}
catch (Exception e)
{
throw new BadRequestException(CommonEnum.Fail);
}
}
}
}
\ No newline at end of file
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Siger.Middlelayer.Common;
using Siger.Middlelayer.Log;
using Siger.Middlelayer.Repository.Repositories.Interface;
using Siger.Middlelayer.Repository.Response;
using Siger.Middlelayer.Share.Constant;
namespace Siger.ApiConfig.Controller
{
public class PositionController : BaseController
{
private readonly ISigerProjectLevelSectionRepository _projectLevelSection;
public PositionController(ISigerProjectLevelSectionRepository projectLevelSection)
private readonly ISigerDict _sigerDict;
public PositionController(ISigerProjectLevelSectionRepository projectLevelSection ,ISigerDict sigerDict)
{
_projectLevelSection = projectLevelSection;
_sigerDict = sigerDict;
}
[HttpGet]
......@@ -30,6 +37,8 @@ namespace Siger.ApiConfig.Controller
return new ObjectResult(obj);
throw new BadRequestException(CommonEnum.RecordNotFound);
}
}
}
\ No newline at end of file
......@@ -937,6 +937,10 @@ namespace Siger.ApiWMS.Controllers
foreach (var Location in req.storeArr)
{
if (req.storeArr.Count(q => q.val == Location.val) > 1)
{
throw new BadRequestException(RequestEnum.DataExist);
}
var loca = location.Get(q => q.realname == Location.val && q.projectid == ProjectId);
if (loca != null)
{
......@@ -1056,6 +1060,10 @@ namespace Siger.ApiWMS.Controllers
foreach (var Location in req.storeArr)
{
if (req.storeArr.Count(q => q.val == Location.val) > 1)
{
throw new BadRequestException(RequestEnum.DataExist);
}
var loca = location.Get(q => q.realname == Location.val && q.projectid == ProjectId && q.id != Location.locationid.ToInt());
if (loca != null)
{
......
......@@ -67,7 +67,7 @@ namespace Siger.Middlelayer.Common
/// <summary>
/// MES 自动线类型
/// </summary>
public const string Automation = "automation";
public const string Automation = "Automation";
}
......
......@@ -34,12 +34,9 @@ namespace Siger.Middlelayer.Share.Constant
/// </summary>
public const string CleanStation = "CleanStation";
/// <summary>
/// key:上料工站
/// key:上料下料工站
/// </summary>
public const string UploadloadStation = "UploadloadStation";
/// <summary>
/// key:下料工站
/// </summary>
public const string DownloadStation = "DownloadStation";
public const string UploadloadStation = "LoadStation";
}
}
......@@ -160,5 +160,8 @@ namespace Siger.Middlelayer.AccRepository
public DbSet<siger_wms_storage> siger_wms_storage { get; set; }
public DbSet<siger_wms_storage_location> siger_wms_storage_location { get; set; }
public DbSet<siger_automation_line_mode> siger_automation_line_mode { get; set; }
public DbSet<siger_automation_machine_status> siger_automation_machine_status { get; set; }
}
}
......@@ -14,6 +14,11 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// 生产线模式 0:手动 1 自动
/// </summary>
public int mode { get; set; }
/// <summary>
/// 是否检验
/// </summary>
public int inspect { get; set; }
/// <summary>
/// 更新时间
/// </summary>
......
......@@ -39,7 +39,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories
productid = q.productid,
productname = p.name,
remark = q.remark,
updator = q.updator,
updator = u.name ?? "",
updatetime = q.updatetime.HasValue && q.updatetime > DateTime.MinValue ? q.updatetime.Value.ToString(ParameterConstant.DateTimeFormat) : ""
};
Expression<Func<ResponseAumationFixtureToolsProduct, bool>> categoryExpression = f => true;
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.AccRepository.Request
{
/// <summary>
/// 准备上料
/// </summary>
public class requestAutomationLoading
{
public int section { get; set; }
public string code { get; set; }
}
/// <summary>
/// 安装完成
/// </summary>
public class requestAutoCompalateAssemble
{
public int section { get; set; }
}
/// <summary>
/// 准备下料
/// </summary>
public class requestAutomationUnloading
{
public int section { get; set; }
}
/// <summary>
/// 拆卸
/// </summary>
public class Requestdisassemble
{
public int section { get; set; }
}
}
......@@ -103,7 +103,7 @@ namespace Siger.Middlelayer.AccRepository.Response
/// </summary>
public string remark { get; set; }
public int updator { get; set; }
public string updator { get; set; }
public string updatetime { get; set; }
}
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.AccRepository.Response
{
public class ResponseAutomationInfo
{
/// <summary>
/// 工单信息
/// </summary>
public string wo { get; set; }
public string productCode { get; set; }
public string productName { get; set; }
/// <summary>
/// 工件编码
/// </summary>
public string sn { get; set; }
public int status { get; set; }
public int statusDesc { get; set; }
/// <summary>
/// 储位位置
/// </summary>
public string locationDesc { get; set; }
/// <summary>
/// 工装编号
/// </summary>
public string fixture { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.Repository.Response
{
public class ResponseLoadStation
{
/// <summary>
/// 工站ID
/// </summary>
public int section { get; set; }
/// <summary>
/// 工站名称
/// </summary>
public string title { get; set; }
/// <summary>
/// 上料位状态
/// </summary>
public int status { get; set; }
}
}
......@@ -373,7 +373,8 @@ CREATE TABLE `siger_automation_line_mode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`section` int(11) NOT NULL DEFAULT 0 COMMENT '产线ID',
`projectid` int(11) NOT NULL DEFAULT 0,
`mode` int(11) NOT NULL DEFAULT 1 COMMENT '0:手动模式 1:自动模式',
`mode` int(1) NOT NULL DEFAULT 1 COMMENT '0:手动模式 1:自动模式',
`inspect` int(1) NOT NULL DEFAULT 1 COMMENT '0:不需要检验 1:检验',
`updatetime` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
......
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