2 changed files with 501 additions and 0 deletions
@ -0,0 +1,11 @@ |
|||||
|
import {createAPI} from "../../utils/httpRequest"; |
||||
|
|
||||
|
export const getDataList = (data) => createAPI(`/shop/order/list`,'post',data) |
||||
|
export const getDataPageList = (data) => createAPI(`/shop/order/page/${data.no}/${data.size}`,'post',data) |
||||
|
|
||||
|
export const saveData = (data) => createAPI(`/shop/order/add`,'post',data) |
||||
|
|
||||
|
export const editData = (data) => createAPI(`/shop/order/edit`,'post',data) |
||||
|
|
||||
|
export const deleteData = (data) => createAPI(`/shop/order/remove`,'post',data) |
||||
|
export const getPartDataList = (data) => createAPI(`/shop/order/part`,'post',data) |
||||
@ -0,0 +1,490 @@ |
|||||
|
<script> |
||||
|
import { |
||||
|
deleteData, |
||||
|
editData, |
||||
|
getDataList, |
||||
|
getDataPageList, |
||||
|
getPartDataList, |
||||
|
saveData |
||||
|
} from "../../../api/production/shopOrder"; |
||||
|
import dayjs from "dayjs"; |
||||
|
|
||||
|
export default { |
||||
|
name: 'order', |
||||
|
props:{ |
||||
|
height:{ |
||||
|
type:Number, |
||||
|
default:500 |
||||
|
} |
||||
|
}, |
||||
|
data(){ |
||||
|
return{ |
||||
|
open:false, |
||||
|
loading:true, |
||||
|
queryForm:{ |
||||
|
orderNo: '', |
||||
|
partNo: '', |
||||
|
startDate:'', |
||||
|
endDate:'' |
||||
|
}, |
||||
|
no:1, |
||||
|
size:50, |
||||
|
total:0, |
||||
|
form:{}, |
||||
|
rules:{ |
||||
|
orderNo: [{ required: true, message: '请输入订单号', trigger: 'blur' }], |
||||
|
partNo: [{ required: true, message: '请输入产品编码', trigger: 'blur' }], |
||||
|
partDesc: [{ required: true, message: '请输入产品描述', trigger: 'blur' }], |
||||
|
lotSize: [{ required: true, message: '请输入订单数量', trigger: 'blur' }], |
||||
|
planStartDate: [{ required: true, message: '请选择订单日期', trigger: 'blur' }], |
||||
|
}, |
||||
|
dataList:[], |
||||
|
|
||||
|
columnList:[ |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TableOrderNo', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "orderNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "订单号", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 80 |
||||
|
},{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TablePlanStartDate', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "planStartDate", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "订单日期", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 80 |
||||
|
},{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TablePartNo', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "partNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "产品编码", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 100 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TablePartDesc', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "partDesc", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "产品描述", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 100 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TableLotSize', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "lotSize", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "订单数量", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 100 |
||||
|
},{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TableStatus', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "status", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "状态", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 100 |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TableUserName', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "username", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "录入人", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 80 |
||||
|
},{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 300001, |
||||
|
serialNumber: '300001TableEnterDate', |
||||
|
tableId: "300001Table", |
||||
|
tableName: "ShopOrder", |
||||
|
columnProp: "enterDate", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "录入时间", |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
columnWidth: 100 |
||||
|
}, |
||||
|
], |
||||
|
partOpen:false, |
||||
|
partForm: { |
||||
|
partNo: '', |
||||
|
partDesc: '', |
||||
|
}, |
||||
|
partDataList:[], |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
getList(){ |
||||
|
let params = { |
||||
|
...this.queryForm, |
||||
|
site:this.$store.state.user.site, |
||||
|
no:this.no, |
||||
|
size:this.size |
||||
|
} |
||||
|
this.loading = true |
||||
|
getDataPageList(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.dataList = data.rows.records |
||||
|
this.total = data.rows.total |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
this.loading = false |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}, |
||||
|
handleSizeChange(val){ |
||||
|
this.size = val |
||||
|
this.getList() |
||||
|
}, |
||||
|
handleCurrentChange(val){ |
||||
|
this.no = val |
||||
|
this.getList() |
||||
|
}, |
||||
|
handleQuery(){ |
||||
|
this.no = 1; |
||||
|
this.getList() |
||||
|
}, |
||||
|
handleAdd(){ |
||||
|
this.form={ |
||||
|
orderNo:'', |
||||
|
partNo:'', |
||||
|
partDesc:'', |
||||
|
lotSize:'', |
||||
|
planStartDate:'', |
||||
|
status:'', |
||||
|
remark:'', |
||||
|
} |
||||
|
this.open = true; |
||||
|
}, |
||||
|
handleEdit(row){ |
||||
|
this.form={...row} |
||||
|
this.open = true; |
||||
|
}, |
||||
|
handleDelete(row){ |
||||
|
this.$confirm('确定要删除这条数据?', '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
deleteData(row).then(({data}) => { |
||||
|
if (data && data.code === 0){ |
||||
|
this.handleQuery(); |
||||
|
this.$message.success(data.msg) |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
handleSave(){ |
||||
|
this.$refs.form.validate((valid,obj) => { |
||||
|
if (valid){ |
||||
|
if (!this.form.site){ |
||||
|
// 新增 |
||||
|
let params = { |
||||
|
...this.form, |
||||
|
site:this.$store.state.user.site, |
||||
|
username:this.$store.state.user.name, |
||||
|
enterDate:dayjs().format('YYYY-MM-DD HH:mm:ss') |
||||
|
} |
||||
|
saveData(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.getList(); |
||||
|
this.open = false; |
||||
|
this.$message.success(data.msg) |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}else { |
||||
|
// 修改 |
||||
|
editData(this.form).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.getList(); |
||||
|
this.open = false; |
||||
|
this.$message.success(data.msg) |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
} |
||||
|
}else { |
||||
|
let i = 0; |
||||
|
Object.keys(obj).forEach(key => { |
||||
|
if (i === 0){ |
||||
|
this.$message.warning(obj[key][0].message) |
||||
|
return |
||||
|
} |
||||
|
i++; |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
handleQueryPart(){ |
||||
|
this.partOpen = true; |
||||
|
let params = { |
||||
|
...this.partForm, |
||||
|
site:this.$store.state.user.site, |
||||
|
} |
||||
|
this.partDataList = [] |
||||
|
getPartDataList(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.partDataList = data.rows |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}, |
||||
|
partRowClick(row){ |
||||
|
this.form.partNo = row.partNo |
||||
|
this.form.partDesc = row.partDesc |
||||
|
this.partOpen = false |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.getList(); |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div style="width: 1100px"> |
||||
|
<el-form label-position="top" :model="queryForm" ref="queryForm"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="3"> |
||||
|
<el-form-item label="订单号"> |
||||
|
<el-input v-model="queryForm.orderNo"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="物料编码"> |
||||
|
<el-input v-model="queryForm.partNo"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="7"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="11"> |
||||
|
<el-form-item label="订单日期"> |
||||
|
<el-date-picker |
||||
|
style="width: 100%" |
||||
|
v-model="queryForm.startDate" |
||||
|
type="date" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
placeholder="选择日期"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="2"> |
||||
|
<el-form-item label=" "> |
||||
|
<label style="margin-left: 0px;font-size: 19px">➞</label> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="11"> |
||||
|
<el-form-item label=" "> |
||||
|
<el-date-picker |
||||
|
style="width: 100%" |
||||
|
v-model="queryForm.endDate" |
||||
|
type="date" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
placeholder="选择日期"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label=" "> |
||||
|
<el-button type="primary" @click="handleQuery">查询</el-button> |
||||
|
<el-button type="primary" @click="handleAdd">新增</el-button> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<el-table :data="dataList" border :height="height" v-loading="loading"> |
||||
|
<el-table-column label="操作" align="center" width="80"> |
||||
|
<template slot-scope="{row,$index}"> |
||||
|
<el-link @click="handleEdit(row)">编辑</el-link> |
||||
|
<el-link @click="handleDelete(row)">删除</el-link> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in columnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed==''?false:item.fixed" |
||||
|
:min-width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" |
||||
|
style="width: 100px; height: 80px"/></span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-pagination |
||||
|
@size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:current-page="no" |
||||
|
:page-sizes="[20, 50, 100, 1000]" |
||||
|
:page-size="size" |
||||
|
:total="total" |
||||
|
layout="total, sizes, prev, pager, next, jumper"> |
||||
|
</el-pagination> |
||||
|
|
||||
|
<el-dialog title="订单详情" :close-on-click-modal="false" v-drag :visible.sync="open" width="500px"> |
||||
|
<el-form :model="form" ref="form" label-position="top" :rules="rules"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="订单号" prop="orderNo" :show-message="false"> |
||||
|
<el-input v-model="form.orderNo" :disabled="form.site"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label=" " > |
||||
|
<el-button type="primary">从IFS导入</el-button> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label="产品编码" prop="partNo" :show-message="false"> |
||||
|
<span slot="label" style="" @click="handleQueryPart" ><a herf="#">产品编码</a></span> |
||||
|
<el-input v-model="form.partNo"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="14"> |
||||
|
<el-form-item label="产品名称" prop="partDesc" :show-message="false"> |
||||
|
<el-input v-model="form.partDesc" disabled></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8" > |
||||
|
<el-form-item label="订单日期" prop="planStartDate" :show-message="false"> |
||||
|
<el-date-picker |
||||
|
style="width: 100%" |
||||
|
v-model="form.planStartDate" |
||||
|
type="date" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
placeholder="选择日期"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="14" :offset="2"> |
||||
|
<el-form-item label="订单数量" prop="lotSize" :show-message="false"> |
||||
|
<el-input-number :min="0" :controls="false" :step="0" v-model="form.lotSize"></el-input-number> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label="备注" prop="remark" :show-message="false"> |
||||
|
<el-input v-model="form.remark"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<el-footer style="height:30px;text-align:center"> |
||||
|
<el-button type="primary" @click="handleSave">保存</el-button> |
||||
|
<el-button type="primary" @click="open = false">取 消</el-button> |
||||
|
</el-footer> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<el-dialog :title="`产品信息`" :visible.sync="partOpen" width="500px"> |
||||
|
<el-table :data="partDataList" border height="300" @row-dblclick="partRowClick"> |
||||
|
<el-table-column label="产品编码" prop="partNo"></el-table-column> |
||||
|
<el-table-column label="产品名称" prop="partDesc"></el-table-column> |
||||
|
</el-table> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue