Commit e9846913 authored by hiyonx's avatar hiyonx

订单模块

parent faa6b469
import request from '@/utils/request'
// 查询客户采购订单列表
export function listOrder(query) {
return request({
url: '/od/purchaseOrder/list',
method: 'get',
params: query
})
}
// 查询客户采购订单详细
export function getOrder(id) {
return request({
url: '/od/purchaseOrder/' + id,
method: 'get'
})
}
export function getSalesOrder(purchaseId) {
return request({
url: '/od/purchaseOrder/getSalesOrder?id=' + purchaseId,
method: 'get'
})
}
// 新增客户采购订单
export function addOrder(data) {
return request({
url: '/od/purchaseOrder',
method: 'post',
data: data
})
}
// 修改客户采购订单
export function updateOrder(data) {
return request({
url: '/od/purchaseOrder',
method: 'put',
data: data
})
}
// 删除客户采购订单
export function delOrder(id) {
return request({
url: '/od/purchaseOrder/' + id,
method: 'delete'
})
}
import request from '@/utils/request'
// 查询客户采购订单列表
export function listDetail(query) {
return request({
url: '/md/purchaseOrderDetail/list',
method: 'get',
params: query
})
}
// 查询客户采购订单详细
export function getDetail(id) {
return request({
url: '/md/purchaseOrderDetail/' + id,
method: 'get'
})
}
// 新增客户采购订单
export function addDetail(data) {
return request({
url: '/md/purchaseOrderDetail',
method: 'post',
data: data
})
}
// 修改客户采购订单
export function updateDetail(data) {
return request({
url: '/md/purchaseOrderDetail',
method: 'put',
data: data
})
}
// 删除客户采购订单
export function delDetail(id) {
return request({
url: '/md/purchaseOrderDetail/' + id,
method: 'delete'
})
}
......@@ -17,6 +17,15 @@ export function getOrder(id) {
})
}
// 查询销售订单详细
export function getOrderDetail(params) {
return request({
url: '/od/salesOrder/detail',
method: 'get',
params
})
}
// 新增销售订单
export function addOrder(data) {
return request({
......@@ -35,6 +44,14 @@ export function updateOrder(data) {
})
}
// 同步销售订单
export function syncOrder(id) {
return request({
url: '/od/salesOrder/sync/' + id,
method: 'get'
})
}
// 删除销售订单
export function delOrder(id) {
return request({
......
......@@ -21,6 +21,7 @@ export default {
value: {type: String|Number, required: true},
// 单位: 1元, 0.1角, 0.01分
unit: {type: String|Number, default: 1},
prefix: {type: String, default: '¥ '},
placeholder: {type: String},
clearable: {type: Boolean, default: false},
readonly: {type: Boolean, default: false},
......
......@@ -159,6 +159,7 @@ export default {
}
.footer {
margin: 10px;
text-align: right;
}
......
......@@ -3,6 +3,7 @@ import Vuex from 'vuex'
import app from './modules/app'
import user from './modules/user'
import tagsView from './modules/tagsView'
import order from './modules/order'
import permission from './modules/permission'
import settings from './modules/settings'
import getters from './getters'
......@@ -14,6 +15,7 @@ const store = new Vuex.Store({
app,
user,
tagsView,
order,
permission,
settings
},
......
import {listChannel} from '@/api/mes/md/saleOrder/channel'
import {listGroup} from '@/api/mes/md/saleOrder/group'
import {listOffice} from '@/api/mes/md/saleOrder/office'
import {listOrg} from '@/api/mes/md/saleOrder/org'
import {listType} from '@/api/mes/md/saleOrder/type'
import {listUnit} from '@/api/mes/md/unit'
import {listClause} from '@/api/mes/md/clause'
import {listCurrency} from '@/api/mes/md/currency'
import {listReason} from '@/api/mes/md/reason'
import {listPoint} from '@/api/mes/md/point'
import {listClause as listPaymentClause } from '@/api/mes/md/paymentClause'
const order = {
namespaced: true,
state: {
saleChannel: [],
saleGroup: [],
saleOffice: [],
saleOrg: [],
saleType: [],
saleUnit: [],
saleClause: [],
saleCurrency: [],
salePaymentClause: [],
saleReason: [],
saleShipmentPoint: [],
},
mutations: {
SET_SALE_CHANNEL(state, data) {
state.saleChannel = data
},
SET_SALE_GROUP(state, data) {
state.saleGroup = data
},
SET_SALE_OFFICE(state, data) {
state.saleOffice = data
},
SET_SALE_ORG(state, data) {
state.saleOrg = data
},
SET_SALE_TYPE(state, data) {
state.saleType = data
},
SET_SALE_UNIT(state, data) {
state.saleUnit = data
},
SET_SALE_CLAUSE(state, data) {
state.saleClause = data
},
SET_SALE_CURRENCY(state, data) {
state.saleCurrency = data
},
SET_SALE_PAYMENT_CLAUSE(state, data) {
state.salePaymentClause = data
},
SET_SALE_REASON(state, data) {
state.saleReason = data
},
SET_SALE_SHIPMENT_POINT(state, data) {
state.saleShipmentPoint = data
},
},
actions: {
getSaleChannel({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleChannel && state.saleChannel.length) return resolve(state.saleChannel)
listChannel().then(res => {
commit('SET_SALE_CHANNEL', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleGroup({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleGroup && state.saleGroup.length) return resolve(state.saleGroup)
listGroup().then(res => {
commit('SET_SALE_GROUP', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleOffice({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleOffice && state.saleOffice.length) return resolve(state.saleOffice)
listOffice().then(res => {
commit('SET_SALE_OFFICE', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleOrg({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleOrg && state.saleOrg.length) return resolve(state.saleOrg)
listOrg().then(res => {
commit('SET_SALE_ORG', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleType({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleType && state.saleType.length) return resolve(state.saleType)
listType().then(res => {
commit('SET_SALE_TYPE', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleUnit({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleUnit && state.saleUnit.length) return resolve(state.saleUnit)
listUnit().then(res => {
commit('SET_SALE_UNIT', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleClause({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleClause && state.saleClause.length) return resolve(state.saleClause)
listClause().then(res => {
commit('SET_SALE_CLAUSE', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleCurrency({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleCurrency && state.saleCurrency.length) return resolve(state.saleCurrency)
listCurrency().then(res => {
commit('SET_SALE_CURRENCY', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSalePaymentClause({commit, state}) {
return new Promise((resolve, reject) => {
if (state.salePaymentClause && state.salePaymentClause.length) return resolve(state.salePaymentClause)
listReason().then(res => {
commit('SET_SALE_PAYMENT_CLAUSE', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleReason({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleReason && state.saleReason.length) return resolve(state.saleReason)
listPoint().then(res => {
commit('SET_SALE_REASON', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
getSaleShipmentPoint({commit, state}) {
return new Promise((resolve, reject) => {
if (state.saleShipmentPoint && state.saleShipmentPoint.length) return resolve(state.saleShipmentPoint)
listPaymentClause().then(res => {
commit('SET_SALE_SHIPMENT_POINT', res.rows)
resolve(res.rows)
}).catch(() => reject())
})
},
}
}
export default order
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="客户编码" prop="clientCode">
<el-input
v-model="queryParams.clientCode"
placeholder="请输入客户编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="clientName">
<el-input
v-model="queryParams.clientName"
placeholder="请输入客户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户简称" prop="clientNick">
<el-input
v-model="queryParams.clientNick"
placeholder="请输入客户简称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="客户英文名称" prop="clientEn">
<el-input
v-model="queryParams.clientEn"
placeholder="请输入客户英文名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否启用" prop="enableFlag">
<el-select
v-model="queryParams.enableFlag"
placeholder="是否启用"
clearable
style="width: 215px"
>
<el-option
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:md:client:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes:md:client:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes:md:client:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes:md:client:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="clientList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="客户编码" align="center" prop="clientCode" >
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:md:client:query']"
>{{scope.row.clientCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="客户名称" width="150px" align="center" prop="clientName" :show-overflow-tooltip="true"/>
<el-table-column label="客户简称" align="center" prop="clientNick" />
<el-table-column label="客户类型" align="center" prop="clientType" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_client_type" :value="scope.row.clientType"/>
</template>
</el-table-column>
<el-table-column label="客户电话" align="center" prop="tel" />
<el-table-column label="联系人" align="center" prop="contact1" />
<el-table-column label="联系人-电话" align="center" prop="contact1Tel" />
<el-table-column label="是否启用" align="center" prop="enableFlag" >
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:md:client:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:md:client:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改客户对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item label="客户编码" prop="clientCode">
<el-input v-model="form.clientCode" placeholder="请输入客户编码" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称" prop="clientName">
<el-input v-model="form.clientName" placeholder="请输入客户名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="客户简称" prop="clientNick">
<el-input v-model="form.clientNick" placeholder="请输入客户简称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户英文名称" prop="clientEn">
<el-input v-model="form.clientEn" placeholder="请输入客户英文名称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户类型" prop="clientType">
<el-select v-model="form.clientType" placeholder="请选择客户类型">
<el-option
v-for="dict in dict.type.mes_client_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="客户简介" prop="clientDes">
<el-input v-model="form.clientDes" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="客户地址" prop="address">
<el-input v-model="form.address" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="客户官网地址" prop="website">
<el-input v-model="form.website" placeholder="请输入客户官网地址" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户邮箱地址" prop="email">
<el-input v-model="form.email" v-if="optType=='view'" />
<el-input v-model="form.email" placeholder="请输入客户邮箱地址" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="客户电话" prop="tel">
<el-input v-model="form.tel" v-if="optType=='view'" />
<el-input v-model="form.tel" placeholder="请输入客户电话" v-else/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户LOGO" prop="clientLogo">
<el-input v-model="form.clientLogo" v-if="optType=='view'" />
<el-input v-model="form.clientLogo" placeholder="请输入客户LOGO" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="联系人1" prop="contact1">
<el-input v-model="form.contact1" v-if="optType=='view'" />
<el-input v-model="form.contact1" placeholder="请输入联系人1" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人1-电话" prop="contact1Tel">
<el-input v-model="form.contact1Tel" v-if="optType=='view'" />
<el-input v-model="form.contact1Tel" placeholder="请输入联系人1-电话" v-else />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人1-邮箱" prop="contact1Email">
<el-input v-model="form.contact1Email" v-if="optType=='view'" />
<el-input v-model="form.contact1Email" placeholder="请输入联系人1-邮箱" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="联系人2" prop="contact2">
<el-input v-model="form.contact2" v-if="optType=='view'" />
<el-input v-model="form.contact2" placeholder="请输入联系人2" v-else />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人2-电话" prop="contact2Tel">
<el-input v-model="form.contact2Tel" v-if="optType=='view'" />
<el-input v-model="form.contact2Tel" placeholder="请输入联系人2-电话" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人2-邮箱" prop="contact2Email">
<el-input v-model="form.contact2Email" v-if="optType=='view'" />
<el-input v-model="form.contact2Email" placeholder="请输入联系人2-邮箱" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="社会信用代码" prop="creditCode">
<el-input v-model="form.creditCode" readonly v-if="optType=='view'" />
<el-input v-model="form.creditCode" placeholder="请输入统一社会信用代码" v-else />
</el-form-item>
</el-col >
<el-col :span="12">
<el-form-item label="是否有效" prop="enableFlag">
<el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
<el-radio-group v-model="form.enableFlag" v-else>
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" readonly v-if="optType=='view'" />
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" v-else />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else>确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listClient, getClient, delClient, addClient, updateClient } from "@/api/mes/md/client";
import {genCode} from "@/api/system/autocode/rule"
export default {
name: "Client",
dicts: ['mes_client_type','sys_yes_no'],
data() {
return {
//自动生成编码
autoGenFlag:false,
optType: undefined,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 客户表格数据
clientList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
clientCode: null,
clientName: null,
clientNick: null,
clientEn: null,
clientDes: null,
clientLogo: null,
clientType: null,
address: null,
website: null,
email: null,
tel: null,
contact1: null,
contact1Tel: null,
contact1Email: null,
contact2: null,
contact2Tel: null,
contact2Email: null,
creditCode: null,
enableFlag: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
clientCode: [
{ required: true, message: "客户编码不能为空", trigger: "blur" }
],
clientName: [
{ required: true, message: "客户名称不能为空", trigger: "blur" }
],
email:[
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
contact1Email:[
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
contact2Email:[
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询客户列表 */
getList() {
this.loading = true;
listClient(this.queryParams).then(response => {
this.clientList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
clientId: null,
clientCode: null,
clientName: null,
clientNick: null,
clientEn: null,
clientDes: null,
clientLogo: null,
clientType: null,
address: null,
website: null,
email: null,
tel: null,
contact1: null,
contact1Tel: null,
contact1Email: null,
contact2: null,
contact2Tel: null,
contact2Email: null,
creditCode: null,
enableFlag: 'Y',
remark: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.autoGenFlag = false;
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.clientId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加客户";
this.optType = "add";
},
// 查询明细按钮操作
handleView(row){
this.reset();
const clientId = row.clientId || this.ids
getClient(clientId).then(response => {
this.form = response.data;
this.open = true;
this.title = "查看客户";
this.optType = "view";
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const clientId = row.clientId || this.ids
getClient(clientId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改客户";
this.optType = "edit";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.clientId != null) {
updateClient(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addClient(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const clientIds = row.clientId || this.ids;
this.$modal.confirm('是否确认删除客户编号为"' + clientIds + '"的数据项?').then(function() {
return delClient(clientIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('md/client/export', {
...this.queryParams
}, `client_${new Date().getTime()}.xlsx`)
},
//自动生成编码
handleAutoGenChange(autoGenFlag){
debugger;
if(autoGenFlag){
genCode('CLIENT_CODE').then(response =>{
this.form.clientCode = response;
});
}else{
this.form.clientCode = null;
}
}
}
};
</script>
<template>
<div class="index">
purchase order
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单编号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入订单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="客户" prop="clientId">
<el-select v-model="queryParams.clientId" placeholder="请选择客户" clearable filterable remote :remote-method="getClientList">
<el-option v-for="item in clientList" :key="item.clientId" :value="item.clientId" :label="item.clientName"/>
</el-select>
</el-form-item>
<el-form-item label="交货日期" prop="deliveryDate">
<el-date-picker clearable
v-model="queryParams.deliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交货日期">
</el-date-picker>
</el-form-item>
<el-form-item label="状态" prop="state">
<el-input
v-model="queryParams.state"
placeholder="请输入状态"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="来源文件" prop="source">
<el-input
v-model="queryParams.source"
placeholder="请输入来源文件"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:purchaseOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="订单编号" prop="orderNo" />
<el-table-column label="客户编号" prop="clientNo" />
<el-table-column label="客户名称" prop="clientName" />
<el-table-column label="交货日期" prop="deliveryDate" width="180">
<template slot-scope="{row}">
<span>{{ parseTime(row.deliveryDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" />
<el-table-column label="订单状态" prop="state">
<template slot-scope="{row}">
{{ dict.type.sales_order_state.find(item => item.value == row.state).label }}
</template>
</el-table-column>
<el-table-column label="来源文件" prop="source" />
<el-table-column label="操作" class-name="small-padding fixed-width" width="200">
<template slot-scope="{row}">
<el-button
size="mini"
type="text"
icon="el-icon-search"
@click="onShowDetail(row)"
v-hasPermi="['md:order:query']"
>查看</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="toSalesEdit(row)"
v-hasPermi="['md:order:edit']"
>生成订单</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(row)"
v-hasPermi="['md:order:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { delOrder, listOrder } from '@/api/mes/od/purchaseOrder'
import { listClient } from '@/api/mes/md/client'
export default {
name: "PurchaseOrder",
dicts: ['mes_client_type','sys_yes_no', 'sales_order_state'],
data() {
return {}
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 客户采购订单表格数据
orderList: [],
clientList: [],
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null, clientId: null, deliveryDate: null, state: null, source: null
},
};
},
methods: {},
created() {
this.getList();
this.getClientList()
},
methods: {
/** 查询客户采购订单列表 */
getList() {
this.loading = true;
listOrder(this.queryParams).then(response => {
this.orderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getClientList(key) {
listClient({ clientName: key, pageNum: 1, pageSize: 100 }).then(res => this.clientList = res.rows)
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
toSalesEdit(row) {
let id = row ? row.id : this.ids[0]
this.$router.push('/order/sales/detail?purchaseId=' + id)
},
onShowDetail(row) {
let id = row ? row.id : this.ids[0]
this.$router.push('/order/purchaseEdit?id=' + id)
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除客户采购订单编号为"' + ids + '"的数据项?').then(function() {
return delOrder(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('md/order/export', {
...this.queryParams
}, `order_${new Date().getTime()}.xlsx`)
}
}
}
};
</script>
<style scoped>
</style>
<template>
<div class="form-page">
<div class="page-head">
<div class="page-title">客户采购订单详情</div>
<div class="head-btn">
<el-button size="mini" @click="onGoBack">返回</el-button>
</div>
</div>
<div class="page-body">
<div>采购信息</div>
<el-form :model="odPurchaseOrder" ref="purchaseForm" :rules="rules" label-width="130px">
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="采购订单编号" prop="orderNo">
<el-input v-model.trim="odPurchaseOrder.orderNo" placeholder="请输入" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="客户编号" prop="clientNo">
<el-input v-model.trim="odPurchaseOrder.clientNo" placeholder="请输入" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="客户名称" prop="clientName">
<el-input v-model.trim="odPurchaseOrder.clientName" placeholder="请输入" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="交货日期" prop="deliveryDate">
<el-date-picker type="date" v-model="odPurchaseOrder.deliveryDate" placeholder="请输入" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态" prop="state">
<el-select v-model="odPurchaseOrder.state" placeholder="请选择订单状态" clearable>
<el-option v-for="item in dict.type.sales_order_state" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="odPurchaseOrder.remark" placeholder="请输入 备注" show-word-limit maxlength="120" :rows="3"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="odPurchaseOrder.detailList" max-height="600">
<el-table-column label="产品编号" prop="itemNo" min-width="120"/>
<el-table-column label="产品名称" prop="itemName" min-width="120"/>
<el-table-column label="产品总数量" prop="totalNum" min-width="120"/>
<el-table-column label="loss数量" prop="lossNum" min-width="120"/>
<el-table-column label="产品数量" prop="num" min-width="120"/>
<el-table-column label="状态" prop="state" min-width="120"/>
<el-table-column label="宝绅内部品名" prop="productName" min-width="120"/>
<el-table-column label="客户产品名称" prop="poProductName" min-width="120"/>
<el-table-column label="客户产品代码" prop="poProductNo" min-width="120"/>
<el-table-column label="客户颜色" prop="poColor" min-width="120"/>
<el-table-column label="配色号" prop="poColorNo" min-width="120"/>
<el-table-column label="产地" prop="region" min-width="120"/>
<el-table-column label="尺码组" prop="sizeGroup" min-width="120"/>
<el-table-column label="尺码" prop="size" min-width="120"/>
<el-table-column label="整/半码" prop="wholeYard" min-width="120"/>
<el-table-column label="特殊size" prop="specialSize" min-width="120"/>
<el-table-column label="型体号" prop="featureNo" min-width="120"/>
<el-table-column label="指令号" prop="cmdNo" min-width="120"/>
<el-table-column label="订单量" prop="orderNum" min-width="120"/>
<el-table-column label="产品规格" prop="productSize" min-width="120"/>
<el-table-column label="交货日期" prop="deliveryDate" min-width="120"/>
<el-table-column label="客户单重" prop="poKg" min-width="120"/>
<el-table-column label="客户单号" prop="poOrderNo" min-width="120"/>
<el-table-column label="客户单位" prop="customerUnit" min-width="120"/>
<el-table-column label="签收人" prop="signer" min-width="120"/>
<el-table-column label="销线" prop="salePath" min-width="120"/>
<el-table-column label="段别" prop="segment" min-width="120"/>
<el-table-column label="版面" prop="layout" min-width="120"/>
<el-table-column label="季度" prop="quarter" min-width="120"/>
<el-table-column label="po号" prop="poNo" min-width="120"/>
<el-table-column label="wip号" prop="wipNo" min-width="120"/>
<el-table-column label="装箱数" prop="packingNum" min-width="120"/>
<el-table-column label="周期" prop="cycle" min-width="120"/>
<el-table-column label="sk编号" prop="skNo" min-width="120"/>
<el-table-column label="专利号" prop="patentNo" min-width="120"/>
<el-table-column label="材质描述" prop="materialDesc" min-width="120"/>
<el-table-column label="ShipToId" prop="shipToId" min-width="120"/>
<el-table-column label="条码" prop="barCode" min-width="120"/>
<el-table-column label="印刷方向" prop="printingDirection" min-width="120"/>
</el-table>
</div>
<el-dialog :visible.sync="showDetail" title="客户采购单详情" width="960px">
<el-form :model="detailForm" ref="detailForm" :rules="detailRules" label-width="120px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="产品编号" prop="itemNo">
<el-input v-model.trim="detailForm.itemNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品名称" prop="itemName">
<el-input v-model.trim="detailForm.itemName" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品总数量" prop="totalNum">
<el-input v-model.trim="detailForm.totalNum" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="loss数量" prop="lossNum">
<el-input v-model.trim="detailForm.lossNum" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品数量" prop="num">
<el-input v-model.trim="detailForm.num" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单价" prop="price">
<el-input-money v-model.trim="detailForm.price" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="装运点" prop="shipmentPointNo">
<el-input-money v-model.trim="detailForm.shipmentPointNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="存储地点" prop="storeAddr">
<el-input-money v-model.trim="detailForm.storeAddr" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批次号" prop="batchNo">
<el-input-money v-model.trim="detailForm.batchNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="定价值" prop="pricingVal">
<el-input-money v-model.trim="detailForm.pricingVal" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实际交货日期" prop="actualDeliveryDate">
<el-input-money v-model.trim="detailForm.actualDeliveryDate" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="报价单位" prop="offerUnit">
<el-input-money v-model.trim="detailForm.offerUnit" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="销售单位" prop="saleUnit">
<el-input-money v-model.trim="detailForm.saleUnit" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="尺码单位" prop="sizeUnit">
<el-input-money v-model.trim="detailForm.sizeUnit" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户尺码单位" prop="clientSizeUnit">
<el-input-money v-model.trim="detailForm.clientSizeUnit" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户工厂代号" prop="plantCode">
<el-input-money v-model.trim="detailForm.plantCode" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="包装方式" prop="packMode">
<el-input-money v-model.trim="detailForm.packMode" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="state">
<el-input-money v-model.trim="detailForm.state" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="宝绅内部品名" prop="productName">
<el-input-money v-model.trim="detailForm.productName" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户产品名称" prop="poProductName">
<el-input-money v-model.trim="detailForm.poProductName" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户产品代码" prop="poProductNo">
<el-input-money v-model.trim="detailForm.poProductNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户颜色" prop="poColor">
<el-input-money v-model.trim="detailForm.poColor" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="配色号" prop="poColorNo">
<el-input-money v-model.trim="detailForm.poColorNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产地" prop="region">
<el-input-money v-model.trim="detailForm.region" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="尺码组" prop="sizeGroup">
<el-input-money v-model.trim="detailForm.sizeGroup" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="尺码" prop="size">
<el-input-money v-model.trim="detailForm.size" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整/半码" prop="wholeYard">
<el-input-money v-model.trim="detailForm.wholeYard" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="特殊size" prop="specialSize">
<el-input-money v-model.trim="detailForm.specialSize" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="型体号" prop="featureNo">
<el-input-money v-model.trim="detailForm.featureNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="指令号" prop="cmdNo">
<el-input-money v-model.trim="detailForm.cmdNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单量" prop="orderNum">
<el-input-money v-model.trim="detailForm.orderNum" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品规格" prop="productSize">
<el-input-money v-model.trim="detailForm.productSize" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="交货日期" prop="deliveryDate">
<el-input-money v-model.trim="detailForm.deliveryDate" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户单重" prop="poKg">
<el-input-money v-model.trim="detailForm.poKg" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户单号" prop="poOrderNo">
<el-input-money v-model.trim="detailForm.poOrderNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户单位" prop="customerUnit">
<el-input-money v-model.trim="detailForm.customerUnit" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="签收人" prop="signer">
<el-input-money v-model.trim="detailForm.signer" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="销线" prop="salePath">
<el-input-money v-model.trim="detailForm.salePath" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="段别" prop="segment">
<el-input-money v-model.trim="detailForm.segment" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="版面" prop="layout">
<el-input-money v-model.trim="detailForm.layout" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="季度" prop="quarter">
<el-input-money v-model.trim="detailForm.quarter" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="po号" prop="poNo">
<el-input-money v-model.trim="detailForm.poNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="wip号" prop="wipNo">
<el-input-money v-model.trim="detailForm.wipNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="装箱数" prop="packingNum">
<el-input-money v-model.trim="detailForm.packingNum" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="周期" prop="cycle">
<el-input-money v-model.trim="detailForm.cycle" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="sk编号" prop="skNo">
<el-input-money v-model.trim="detailForm.skNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="专利号" prop="patentNo">
<el-input-money v-model.trim="detailForm.patentNo" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="材质描述" prop="materialDesc">
<el-input-money v-model.trim="detailForm.materialDesc" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="ShipToId" prop="shipToId">
<el-input-money v-model.trim="detailForm.shipToId" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="条码" prop="barCode">
<el-input-money v-model.trim="detailForm.barCode" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="印刷方向" prop="printingDirection">
<el-input-money v-model.trim="detailForm.printingDirection" clearable placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer">
<el-button @click="showDetail = false">取消</el-button>
<el-button type="primary" @click="onEditDetail">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getOrder } from '@/api/mes/od/purchaseOrder'
import { listUser } from '@/api/system/user'
import { listClient } from '@/api/mes/md/client'
import ItemSelect from '@/components/itemSelect/single.vue'
export default {
components: {
ItemSelect
},
dicts: ['sales_order_state'],
computed: {
totalAmount() {
return this.form.detailList.reduce((amount, item) => {
amount = +item.amount
return amount
}, 0) || 0
}
},
data() {
return {
showDetail: false,
detailForm: {
itemNo: null,
itemName: null,
totalNum: null,
lossNum: null,
num: null,
price: null,
shipmentPointNo: null,
storeAddr: null,
batchNo: null,
pricingVal: null,
actualDeliveryDate: null,
offerUnit: null,
saleUnit: null,
sizeUnit: null,
clientSizeUnit: null,
plantCode: null,
packMode: null,
state: null,
productName: null,
poProductName: null,
poProductNo: null,
poColor: null,
poColorNo: null,
region: null,
sizeGroup: null,
size: null,
wholeYard: null,
specialSize: null,
featureNo: null,
cmdNo: null,
orderNum: null,
productSize: null,
deliveryDate: null,
poKg: null,
poOrderNo: null,
customerUnit: null,
signer: null,
salePath: null,
segment: null,
layout: null,
quarter: null,
poNo: null,
wipNo: null,
packingNum: null,
cycle: null,
skNo: null,
patentNo: null,
materialDesc: null,
shipToId: null,
barCode: null,
printingDirection: null,
},
detailRules: {
itemName: { required: true, message: '请选择产品名称', trigger: ['change'] },
itemCode: { required: true, message: '请选择产品编码', trigger: ['change'] },
num: { required: true, message: '请输入产品数量', trigger: ['blur'] },
amount: { required: true, message: '请输入产品金额', trigger: ['blur'] },
state: { required: true, message: '请选择产品状态', trigger: ['change'] }
},
odPurchaseOrder: {
orderNo: null,
clientId: null,
clientNo: null,
clientName: null,
deliveryDate: null,
state: '1',
source: null,
detailList: []
},
odSalesOrder: {
orderNo: null,
purchaseNo: null,
purchaseDate: null,
clientId: null,
clientNo: null,
clientName: null,
typeNo: null,
amount: null,
merchandiser: null,
custom: null,
orgNo: null,
channelNo: null,
reasonNo: null,
agencyNo: null,
groupNo: null,
currencyNo: null,
deliveryDate: null,
clauseNo: null,
clauseAddr: null,
netValue: null,
despatchType: null,
barCode: null,
urgent: null,
ospNo: null,
state: '1',
remark: '1',
detailList: []
},
rules: {
orderNo: { required: true, message: '请输入订单编号', trigger: ['change'] },
clientId: { required: true, message: '请选择客户', trigger: ['change'] },
deliveryDate: { required: true, message: '请选择交货日期', trigger: ['change'] },
amount: { required: true, message: '请输入订单总金额', trigger: ['blur'] },
merchandiser: { required: true, message: '请选择更进入', trigger: ['change'] },
state: { required: true, message: '请选择订单状态', trigger: ['change'] }
},
clientList: [],
userList: []
}
},
methods: {
onGoBack() {
this.$store.dispatch('tagsView/delView', this.$router.currentRoute)
this.$router.back()
},
getClientList(key) {
listClient({ clientName: key, pageNum: 1, pageSize: 100 }).then(res => this.clientList = res.rows)
},
getUserList(key) {
listUser({ nickName: key, pageNum: 1, pageSize: 100 }).then(res => this.userList = res.rows)
},
getDetail() {
let orderId = this.$route.query.id
if (orderId) {
getOrder(orderId).then(res => {
let { odPurchaseOrder, odSalesOrder } = res.data
this.odPurchaseOrder = odPurchaseOrder
this.odSalesOrder = odSalesOrder
})
}
}
},
created() {
this.getDetail()
this.getUserList()
this.getClientList()
}
}
</script>
<style lang="scss" scoped>
.page-head {
border-bottom: 1px solid #dddddd;
box-shadow: 0 2px 2px #dddddd;
}
.page-title {
line-height: 80px;
text-align: center;
font-size: 18px;
font-weight: bold;
}
.head-btn {
margin: 0 20px 20px;
}
.page-body {
margin: 20px 40px;
}
.item-spec-title {
line-height: 30px;
font-size: 20px;
font-weight: bold;
margin: 20px;
padding: 10px;
border-bottom: 1px solid #dddddd;
}
</style>
......@@ -96,7 +96,7 @@
<el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"/>
<el-table-column label="订单编号" prop="orderNo"/>
<el-table-column label="客户编号" prop="mdClient.clientCode"/>
<el-table-column label="客户编号" prop="clientNo"/>
<el-table-column label="交货期" prop="deliveryDate" width="180"/>
<el-table-column label="总金额" prop="amount" :formatter="r => this.formatMoney(r.amount)"/>
<el-table-column label="跟单人" prop="merchandiser"
......@@ -125,6 +125,14 @@
v-hasPermi="['od:salesOrder:remove']"
>删除
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-refresh"
@click="onSync(scope.row)"
v-hasPermi="['od:salesOrder:edit']"
>同步
</el-button>
</template>
</el-table-column>
</el-table>
......@@ -212,6 +220,16 @@ export default {
handleUpdate(row) {
this.$router.push('/order/sales/detail?id=' + row.id)
},
/** 同步数据 */
onSync(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认同步销售订单编号为"' + ids + '"的数据项?').then(() => {
syncOrder(ids).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
})
})
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
......
......@@ -8,7 +8,7 @@
</div>
</div>
<div class="page-body">
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form :model="form" ref="form" :rules="rules" label-width="130px">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="订单编号" prop="orderNo">
......@@ -16,19 +16,123 @@
<el-button @click="onGenCode" style="width: 80px; margin-left: 20px" :disabled="!!form.id">生成</el-button>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="订单销售类型" prop="typeNo">
<el-select v-model="form.typeNo" clearable placeholder="请选择 订单销售类型">
<el-option v-for="item in saleType" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="销售组织" prop="orgNo">
<el-select v-model="form.orgNo" clearable placeholder="请选择 销售组织">
<el-option v-for="item in saleOrg" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="分销渠道" prop="channelNo">
<el-select v-model="form.channelNo" clearable placeholder="请选择 分销渠道">
<el-option v-for="item in saleChannel" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="订单原因" prop="reasonNo">
<el-select v-model="form.reasonNo" clearable placeholder="请选择 订单原因">
<el-option v-for="item in saleReason" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="销售办事处" prop="agencyNo">
<el-select v-model="form.agencyNo" clearable placeholder="请选择 销售办事处">
<el-option v-for="item in saleOffice" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="销售小组" prop="groupNo">
<el-select v-model="form.groupNo" clearable placeholder="请选择 销售小组">
<el-option v-for="item in saleGroup" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户编号" prop="clientNo">
<el-select v-model="form.clientId" placeholder="请选择 客户" clearable filterable remote :remote-method="getClientList">
<el-option v-for="item in clientList" :key="item.clientId" :value="item.clientId" :label="item.clientCode"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="clientId">
<el-select v-model="form.clientId" placeholder="请选择 客户" clearable filterable remote :remote-method="getClientList">
<el-option v-for="item in clientList" :key="item.clientId" :value="item.clientId" :label="item.clientName"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="交货日期" prop="deliveryDate">
<el-form-item label="客户采购订单号" prop="purchaseNo">
<el-input v-model="form.purchaseNo" placeholder="请输入客户订单号"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="销售币别" prop="currencyNo">
<el-select v-model="form.currencyNo" clearable placeholder="请选择 销售币别">
<el-option v-for="item in saleCurrency" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="要求交货期" prop="deliveryDate">
<el-date-picker v-model="form.deliveryDate" type="date" value-format="yyyy-MM-dd 23:59:59" placeholder="选择交货日期" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="国际贸易条款" prop="clauseNo">
<el-select v-model="form.clauseNo" clearable placeholder="请选择 国际贸易条款">
<el-option v-for="item in saleClause" :key="item.code" :value="item.code" :label="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="国际贸易条款地址" prop="clauseAddr">
<el-input v-model="form.clauseAddr" placeholder="请输入国际贸易条款地址"/>
</el-form-item>
</el-col>
<el-col :span="8" title="凭证货币中销售订单的">
<el-form-item label="净值" prop="netValue">
<el-input v-model="form.netValue" placeholder="请输入凭证货币中销售订单的净值"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发货方式" prop="despatchType">
<el-select v-model="form.despatchType" placeholder="请选择发货方式">
<el-option label="款到发货" value="1"/>
<el-option label="款到生产" value="2"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="条码" prop="barCode">
<el-input v-model="form.barCode" placeholder="请输入条码"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="加急" prop="urgent">
<el-select v-model="form.urgent" placeholder="请选择加急">
<el-option label="加急" value="1"/>
<el-option label="不加急" value="0"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="osp订单号" prop="ospNo">
<el-input v-model="form.ospNo" placeholder="请输入osp订单号"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="总金额" required>
<el-input-money v-model="totalAmount" placeholder="请输入 总金额" readonly/>
......@@ -41,6 +145,16 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户采购订单日期" prop="purchaseDate">
<el-date-picker clearable v-model="form.purchaseDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择客户采购订单日期"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户定制信息" prop="custom">
<el-input v-model="form.custom" placeholder="请输入客户定制信息"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="订单状态" prop="state">
<el-select v-model="form.state" clearable placeholder="请选择订单状态">
......@@ -48,7 +162,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :offset="16" :span="8">
<el-col :offset="8" :span="16">
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="form.remark" placeholder="请输入 备注" show-word-limit maxlength="120" :rows="3"/>
</el-form-item>
......@@ -58,72 +172,309 @@
</div>
<div class="page-item">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-table :data="form.detailList" @selection-change="handleSelectionChange" max-height="600">
<el-table-column type="selection" width="55"/>
<el-table-column label="产品名称" prop="itemName" show-overflow-tooltip/>
<el-table-column label="产品编码" prop="itemNo" show-overflow-tooltip/>
<el-table-column label="总数量" prop="totalNum" show-overflow-tooltip/>
<el-table-column label="loss数量" prop="lossNum" show-overflow-tooltip/>
<el-table-column label="数量" prop="num" show-overflow-tooltip/>
<el-table-column label="单价" :formatter="r => this.formatMoney(r.price)" show-overflow-tooltip/>
<el-table-column label="装运点" prop="shipmentPointNo" show-overflow-tooltip/>
<el-table-column label="存储地点" prop="storeAddr" show-overflow-tooltip/>
<el-table-column label="批次号" prop="batchNo" show-overflow-tooltip/>
<el-table-column label="批次号" prop="batchNo" show-overflow-tooltip/>
<el-table-column label="实际交货日期" prop="actualDeliveryDate" show-overflow-tooltip/>
<el-table-column label="定价值" prop="pricingVal" show-overflow-tooltip/>
<el-table-column label="报价单位" prop="offerUnit" show-overflow-tooltip/>
<el-table-column label="销售单位" prop="saleUnit" show-overflow-tooltip/>
<el-table-column label="尺码单位" prop="sizeUnit" show-overflow-tooltip/>
<el-table-column label="客户订单号" prop="poOrderNo" show-overflow-tooltip/>
<el-table-column label="客户产品代码" prop="clientItemNo" show-overflow-tooltip/>
<el-table-column label="客户产品名称" prop="clientItemName" show-overflow-tooltip/>
<el-table-column label="客户尺码单位" prop="clientSizeUnit" show-overflow-tooltip/>
<el-table-column label="客户指令号" prop="clientCmd" show-overflow-tooltip/>
<el-table-column label="客户单重" prop="clientKg" show-overflow-tooltip/>
<el-table-column label="销线" prop="salePath" show-overflow-tooltip/>
<el-table-column label="段别" prop="segment" show-overflow-tooltip/>
<el-table-column label="版面" prop="layout" show-overflow-tooltip/>
<el-table-column label="季度" prop="quarter" show-overflow-tooltip/>
<el-table-column label="整/半码" prop="wholeSize" show-overflow-tooltip/>
<el-table-column label="特殊尺码" prop="specSize" show-overflow-tooltip/>
<el-table-column label="po号" prop="poNo" show-overflow-tooltip/>
<el-table-column label="wip号" prop="wipNo" show-overflow-tooltip/>
<el-table-column label="装箱数" prop="packingNum" show-overflow-tooltip/>
<el-table-column label="周期" prop="cycle" show-overflow-tooltip/>
<el-table-column label="周期" prop="cycle" show-overflow-tooltip/>
<el-table-column label="sk号" prop="skNo" show-overflow-tooltip/>
<el-table-column label="专利号" prop="patentNo" show-overflow-tooltip/>
<el-table-column label="材质描述" prop="materialDesc" show-overflow-tooltip/>
<el-table-column label="签收人" prop="signer" show-overflow-tooltip/>
<el-table-column label="ShipToId" prop="shipToId" show-overflow-tooltip/>
<el-table-column label="ShipToId" prop="shipToId" show-overflow-tooltip/>
<el-table-column label="交货日期" prop="deliveryDate" show-overflow-tooltip/>
<el-table-column label="尺码组" prop="sizeGroup" show-overflow-tooltip/>
<el-table-column label="订单量" prop="orderNum" show-overflow-tooltip/>
<el-table-column label="条码" prop="barCode" show-overflow-tooltip/>
<el-table-column label="印刷方向" prop="printingDirection" show-overflow-tooltip/>
<el-table-column label="产品规格" prop="prodSpec" show-overflow-tooltip/>
<el-table-column label="客户工厂代号" prop="plantCode" show-overflow-tooltip/>
<el-table-column label="包装方式" prop="packMode" show-overflow-tooltip/>
<el-table-column label="备注" prop="remark" show-overflow-tooltip/>
<el-table-column label="状态" prop="state">
<template slot-scope="{row}">
{{ dict.type.sales_order_state.find(item => item.value == row.state).label }}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="{row, $index}">
<el-button
type="primary"
plain
icon="el-icon-plus"
v-hasPermi="['od:salesOrder:edit']"
size="mini"
@click="onShowEditDetail(null)"
v-hasPermi="['mes:md:client:add']"
>新增
type="text"
@click="onShowEditDetail(row, $index)"
>查看
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
v-hasPermi="['od:salesOrder:edit']"
size="mini"
:disabled="multiple"
@click="onDeleteDetail"
v-hasPermi="['mes:md:client:remove']"
>删除
type="text"
@click="onShowSpecDetail(row)"
>特性
</el-button>
</el-col>
</el-row>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog :visible="showEditDetail" :title="itemForm.id ? '修改订单产品' : '新增订单产品'" width="960px">
<el-dialog :visible="showEditDetail" title="订单详情" width="1200px">
<el-form :model="itemForm" ref="itemForm" :rules="itemRules" label-width="100px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="产品名称" prop="itemName">
<el-input v-model="itemForm.itemName" readonly placeholder="请选择产品" clearable>
<el-button slot="append" icon="el-icon-search" @click="$refs['ItemSelectRef'].showFlag = true"/>
</el-input>
<ItemSelect ref="ItemSelectRef" @onSelected="onItemSelect"/>
<el-col :span="8">
<el-form-item prop="" label="产品名称">
<el-input v-model="itemForm.itemName" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品编码" prop="itemName">
<el-input v-model="itemForm.itemCode" placeholder="请输入 产品编码" readonly/>
<el-col :span="8">
<el-form-item prop="" label="产品编码">
<el-input v-model="itemForm.itemNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量" prop="num">
<el-input v-model.number="itemForm.num" placeholder="请输入 数量" clearable/>
<el-col :span="8">
<el-form-item prop="" label="总数量">
<el-input v-model="itemForm.totalNum" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="金额" prop="amount">
<el-input-money v-model="itemForm.amount" placeholder="请输入 金额" clearable/>
<el-col :span="8">
<el-form-item prop="" label="loss数量">
<el-input v-model="itemForm.lossNum" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="state">
<el-select v-model="itemForm.state" clearable placeholder="请选择订单状态">
<el-option v-for="item in dict.type.sales_order_state" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<el-col :span="8">
<el-form-item prop="" label="数量">
<el-input v-model="itemForm.num" placeholder="" clearable/>
</el-form-item>
</el-col>
<template v-if="itemForm.specList">
<el-col v-for="(spec, i) in itemForm.specList" :span="12" :key="spec.specId">
<el-form-item :label="spec.specKey" :prop="'specList.' + i + '.specVal'" :rules="{required: true, message: '特性值不能为空', trigger: 'blur'}">
<el-input v-model="spec.specVal" clearable/>
<el-col :span="8">
<el-form-item prop="" label="单价">
<el-input v-model="itemForm.price" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="装运点">
<el-input v-model="itemForm.shipmentPointNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="存储地点">
<el-input v-model="itemForm.storeAddr" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="批次号">
<el-input v-model="itemForm.batchNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="实际交货日期">
<el-date-picker clearable v-model="itemForm.actualDeliveryDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择实际交货日期"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="定价值">
<el-input v-model="itemForm.pricingVal" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="报价单位">
<el-input v-model="itemForm.offerUnit" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="销售单位">
<el-input v-model="itemForm.saleUnit" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="尺码单位">
<el-input v-model="itemForm.sizeUnit" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户订单号">
<el-input v-model="itemForm.poOrderNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户产品代码">
<el-input v-model="itemForm.clientItemNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户产品名称">
<el-input v-model="itemForm.clientItemName" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户尺码单位">
<el-input v-model="itemForm.clientSizeUnit" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户指令号">
<el-input v-model="itemForm.clientCmd" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户单重">
<el-input v-model="itemForm.clientKg" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="销线">
<el-input v-model="itemForm.salePath" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="段别">
<el-input v-model="itemForm.segment" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="版面">
<el-input v-model="itemForm.layout" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="季度">
<el-input v-model="itemForm.quarter" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="整/半码">
<el-input v-model="itemForm.wholeSize" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="特殊尺码">
<el-input v-model="itemForm.specSize" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="po号">
<el-input v-model="itemForm.poNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="wip号">
<el-input v-model="itemForm.wipNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="装箱数">
<el-input v-model="itemForm.packingNum" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="周期">
<el-input v-model="itemForm.cycle" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="sk号">
<el-input v-model="itemForm.skNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="专利号">
<el-input v-model="itemForm.patentNo" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="材质描述">
<el-input v-model="itemForm.materialDesc" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="签收人">
<el-input v-model="itemForm.signer" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="ShipToId">
<el-input v-model="itemForm.shipToId" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="交货日期">
<el-date-picker clearable v-model="itemForm.deliveryDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择交货日期"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="尺码组">
<el-input v-model="itemForm.sizeGroup" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="订单量">
<el-input v-model="itemForm.orderNum" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="条码">
<el-input v-model="itemForm.barCode" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="印刷方向">
<el-input v-model="itemForm.printingDirection" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="产品规格">
<el-input v-model="itemForm.prodSpec" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="客户工厂代号">
<el-input v-model="itemForm.plantCode" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="包装方式">
<el-input v-model="itemForm.packMode" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="备注">
<el-input v-model="itemForm.remark" placeholder="" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="状态">
<el-input v-model="itemForm.state" placeholder="" clearable/>
</el-form-item>
</el-col>
</template>
</el-row>
</el-form>
<div slot="footer">
......@@ -147,58 +498,18 @@
</div>
</el-dialog>
<el-table :data="form.detailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"/>
<el-table-column label="产品名称" prop="itemName" show-overflow-tooltip/>
<el-table-column label="产品编码" prop="itemCode"/>
<el-table-column label="数量" prop="num" width="150"/>
<el-table-column label="金额" :formatter="r => this.formatMoney(r.amount)" width="250"/>
<el-table-column label="订单状态" prop="state" width="150">
<template slot-scope="{row}">
{{ dict.type.sales_order_state.find(item => item.value == row.state).label }}
</template>
</el-table-column>
<el-table-column label="操作" width="180">
<template slot-scope="{row}">
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
icon="el-icon-search"
@click="onShowSpecDetail(row)"
>产品特性
</el-button>
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
icon="el-icon-edit"
@click="onShowEditDetail(row)"
>修改
</el-button>
<el-button
v-hasPermi="['od:salesOrder:remove']"
size="mini"
type="text"
icon="el-icon-delete"
@click="onDeleteDetail(row)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import { addOrder, getOrder, updateOrder } from '@/api/mes/od/salesOrder'
import { getSalesOrder } from '@/api/mes/od/purchaseOrder'
import { listUser } from '@/api/system/user'
import { listClient } from '@/api/mes/md/client'
import { listSpec } from '@/api/mes/md/spec.js'
import ItemSelect from '@/components/itemSelect/single.vue'
import {genCode} from "@/api/system/autocode/rule"
import { genCode } from '@/api/system/autocode/rule'
export default {
components: {
......@@ -210,28 +521,88 @@ export default {
return this.form.detailList.reduce((amount, item) => {
amount = +item.amount
return amount
}, 0)
},
}, 0) || 0
}
},
data() {
return {
form: {
id: null,
remark: null,
orderNo: null,
purchaseNo: null,
purchaseDate: null,
clientId: null,
deliveryDate: null,
clientNo: null,
orderNo: null,
typeNo: null,
amount: null,
merchandiser: null,
custom: null,
orgNo: null,
channelNo: null,
reasonNo: null,
agencyNo: null,
groupNo: null,
currencyNo: null,
deliveryDate: null,
clauseNo: null,
clauseAddr: null,
netValue: null,
despatchType: null,
barCode: null,
urgent: null,
ospNo: null,
state: null,
detailList: []
},
itemForm: {
id: null,
orderId: null,
itemId: null,
itemNo: null,
itemName: null,
itemCode: null,
totalNum: null,
num: null,
amount: null,
lossNum: null,
price: null,
shipmentPointNo: null,
storeAddr: null,
batchNo: null,
actualDeliveryDate: null,
pricingVal: null,
offerUnit: null,
saleUnit: null,
sizeUnit: null,
poOrderNo: null,
clientItemNo: null,
clientItemName: null,
clientSizeUnit: null,
clientCmd: null,
clientKg: null,
salePath: null,
segment: null,
layout: null,
quarter: null,
wholeSize: null,
specSize: null,
poNo: null,
wipNo: null,
packingNum: null,
cycle: null,
skNo: null,
patentNo: null,
materialDesc: null,
signer: null,
shipToId: null,
deliveryDate: null,
sizeGroup: null,
size: null,
orderNum: null,
barCode: null,
printingDirection: null,
prodSpec: null,
plantCode: null,
packMode: null,
remark: null,
state: null,
specList: []
},
......@@ -259,7 +630,19 @@ export default {
showSpecDetail: false,
showEditDetail: false,
loading: false,
multiple: false
multiple: false,
saleChannel: [],
saleGroup: [],
saleOffice: [],
saleOrg: [],
saleType: [],
saleUnit: [],
saleClause: [],
saleCurrency: [],
salePaymentClause: [],
saleReason: [],
saleShipmentPoint: [],
}
},
methods: {
......@@ -268,6 +651,11 @@ export default {
this.loading = true
this.$refs.form.validate(valid => {
if (valid) {
let msg = this.checkedItem()
if (msg) {
this.loading = false
return this.$message.error(msg)
}
let editOrder = this.form.id ? updateOrder : addOrder
editOrder(this.form).then(() => {
this.$message.success('操作成功')
......@@ -283,32 +671,19 @@ export default {
this.showEditDetail = false
this.$refs.itemForm.validate(valid => {
if (valid) {
let index = this.form.detailList.indexOf(item => item.id === this.itemForm.id)
if (index != -1) {
this.form.detailList[index] = this.itemForm
} else {
this.form.detailList.push(this.itemForm)
}
this.form.detailList[this.itemForm.index] = this.itemForm
}
})
},
onItemSelect(row) {
if (row != null) {
this.itemForm.itemId = row.itemId
this.itemForm.itemName = row.itemName
this.itemForm.itemCode = row.itemCode
listSpec({ itemId: row.itemId }).then(res => {
for (let itemSpec of res.rows) {
const itemSize = { specId: itemSpec.itemSpecId, specKey: itemSpec.spec, specVal: null }
this.itemForm.specList.push(itemSize)
}
}).finally(() => this.$forceUpdate())
checkedItem() {
let {detailList} = this.form
for (let i = 0; i < detailList.length; i++) {
let detail = detailList[i]
if (!detail.itemId) return '第' + i + '项缺少itemId'
// todo 检测未做
}
return null
},
onShowSpecDetail(row) {
console.log(row)
this.showSpecDetail = true
......@@ -316,11 +691,12 @@ export default {
},
onShowEditDetail(item) {
onShowEditDetail(item, $index) {
console.log(item)
this.showEditDetail = true
this.$refs.itemForm && this.$refs.itemForm.resetFields()
this.itemForm = item || { itemName: null, itemCode: null, num: null, amount: null, state: null, specList: [] }
this.itemForm.index = $index
},
onDeleteDetail(row) {
......@@ -343,13 +719,13 @@ export default {
this.multiple = !selection.length
},
onGenCode() {
genCode('SALES_ORDER_CODE').then(response => {
this.form.orderNo = response;
});
genCode('SALES_ORDER').then(response => {
this.form.orderNo = response
})
},
onGoBack() {
this.$store.dispatch("tagsView/delView", this.$router.currentRoute)
this.$store.dispatch('tagsView/delView', this.$router.currentRoute)
this.$router.back()
},
......@@ -361,19 +737,93 @@ export default {
listUser({ nickName: key, pageNum: 1, pageSize: 100 }).then(res => this.userList = res.rows)
},
getDetail() {
let orderId = this.$route.query.id
let { id: orderId, purchaseId } = this.$route.query
if (orderId) {
getOrder(orderId).then(res => {
this.form = res.data
this.form.detailList = this.form.detailList || []
})
} else if (purchaseId) {
getSalesOrder(purchaseId).then(res => {
this.form = res.data
this.form.detailList = this.form.detailList || []
})
}
},
listSaleChannel() {
this.$store.dispatch('order/getSaleChannel').then(res => {
this.saleChannel = res
})
},
listSaleGroup() {
this.$store.dispatch('order/getSaleGroup').then(res => {
this.saleGroup = res
})
},
listSaleOffice() {
this.$store.dispatch('order/getSaleOffice').then(res => {
this.saleOffice = res
})
},
listSaleOrg() {
this.$store.dispatch('order/getSaleOrg').then(res => {
this.saleOrg = res
})
},
listSaleType() {
this.$store.dispatch('order/getSaleType').then(res => {
this.saleType = res
})
},
listSaleUnit() {
this.$store.dispatch('order/getSaleUnit').then(res => {
this.saleUnit = res
})
},
listSaleClause() {
this.$store.dispatch('order/getSaleClause').then(res => {
this.saleClause = res
})
},
listSaleCurrency() {
this.$store.dispatch('order/getSaleCurrency').then(res => {
this.saleCurrency = res
})
},
listSalePaymentClause() {
this.$store.dispatch('order/getSalePaymentClause').then(res => {
this.salePaymentClause = res
})
},
listSaleReason() {
this.$store.dispatch('order/getSaleReason').then(res => {
this.saleReason = res
})
},
listSaleShipmentPoint() {
this.$store.dispatch('order/getSaleShipmentPoint').then(res => {
this.saleShipmentPoint = res
})
},
getSaleNos() {
this.listSaleChannel()
this.listSaleGroup()
this.listSaleOffice()
this.listSaleOrg()
this.listSaleType()
this.listSaleUnit()
this.listSaleClause()
this.listSaleCurrency()
this.listSalePaymentClause()
this.listSaleReason()
this.listSaleShipmentPoint()
}
},
created() {
this.getDetail()
this.getUserList()
this.getClientList()
this.getSaleNos()
}
}
</script>
......
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