Commit 6a1c1cb3 authored by 我在何方's avatar 我在何方

添加应收款,应付款UI

parents dd6d4602 ad637e33
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
"build:prod": "vue-cli-service build", "build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging", "build:stage": "vue-cli-service build --mode staging",
"build:demo1024": "vue-cli-service build --mode demo1024", "build:demo1024": "vue-cli-service build --mode demo1024",
"dev:demo1024": "vue-cli-service serve --mode demo1024",
"preview": "node build/index.js --preview", "preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src" "lint": "eslint --ext .js,.vue src"
}, },
......
...@@ -22,3 +22,10 @@ export function getProcessDefinitionBpmnXML(id) { ...@@ -22,3 +22,10 @@ export function getProcessDefinitionBpmnXML(id) {
method: 'get' method: 'get'
}) })
} }
export function getProcessDefinitionBpmnXMLByKey(id) {
return request({
url: '/bpm/model/get-bpmn-xml-key?key=' + id,
method: 'get'
})
}
import request from '@/utils/request'
// 创建出货
export function createbox(data) {
return request({
url: '/shipment/box/create',
method: 'post',
data: data
})
}
// 更新出货
export function updatebox(data) {
return request({
url: '/shipment/box/update',
method: 'put',
data: data
})
}
// 删除出货
export function deletebox(id) {
return request({
url: '/shipment/box/delete?id=' + id,
method: 'delete'
})
}
// 获得出货
export function getbox(id) {
return request({
url: '/shipment/box/get?id=' + id,
method: 'get'
})
}
// 获得出货分页
export function getboxPage(query) {
return request({
url: '/shipment/box/page',
method: 'get',
params: query
})
}
// 导出出货 Excel
export function exportboxExcel(query) {
return request({
url: '/shipment/box/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -27,9 +27,9 @@ export function deleteOrder(id) { ...@@ -27,9 +27,9 @@ export function deleteOrder(id) {
} }
// 获得订单 // 获得订单
export function getOrder(id) { export function getOrder(orderId) {
return request({ return request({
url: '/ecw/order/get?id=' + id, url: '/ecw/order/info/' + orderId,
method: 'get' method: 'get'
}) })
} }
......
...@@ -52,3 +52,21 @@ export function exportProductPriceExcel(query) { ...@@ -52,3 +52,21 @@ export function exportProductPriceExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 批量获得产品价格
export function getProductPriceList(query) {
return request({
url: '/ecw/product-price/list',
method: 'get',
params: query
})
}
// 批量修改产品价格
export function batchUpdateProductPrice(query) {
return request({
url: '/ecw/product-price/batchUpdate',
method: 'put',
data: query
})
}
...@@ -34,6 +34,14 @@ export function getWarehouseArea(id) { ...@@ -34,6 +34,14 @@ export function getWarehouseArea(id) {
}) })
} }
// 获得仓库查询库域
export function getByWarehouseId() {
return request({
url: '/ecw/warehouse-area/getByWarehouseId',
method: 'get'
})
}
// 获得库区库域分页 // 获得库区库域分页
export function getWarehouseAreaPage(query) { export function getWarehouseAreaPage(query) {
return request({ return request({
......
...@@ -26,15 +26,15 @@ export default { ...@@ -26,15 +26,15 @@ export default {
}, },
data(){ data(){
return { return {
index: {}, index: null,
list:[], list:[],
loading: false loading: false
} }
}, },
watch:{ watch:{
index(val){ index(val){
this.$emit('input', val !== null ? this.list[val].id : null) this.$emit('input', val !== null ? this.list[val].id: null)
this.$emit('change', val !== null ? this.list[val] : null) this.$emit('change', val !== null ? this.list[val]: null)
}, },
value(val){ value(val){
this.init() this.init()
...@@ -45,7 +45,7 @@ export default { ...@@ -45,7 +45,7 @@ export default {
}, },
methods:{ methods:{
init(){ init(){
if(!this.value) return null if(!this.value) return
let index = this.list.findIndex(item => item.id == this.value) let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){ if(index < 0){
getCustomer(this.value).then(res => { getCustomer(this.value).then(res => {
......
...@@ -34,7 +34,12 @@ ...@@ -34,7 +34,12 @@
import {getCustomerSelect, getCustomerList} from '@/api/ecw/customer' import {getCustomerSelect, getCustomerList} from '@/api/ecw/customer'
export default { export default {
props:{ props:{
value: [Array] value: {
type: Array,
default: () => {
return []
}
}
}, },
data(){ data(){
return { return {
...@@ -60,16 +65,16 @@ export default { ...@@ -60,16 +65,16 @@ export default {
customerIds(val){ customerIds(val){
this.$emit('input', val) this.$emit('input', val)
}, },
value(val, old){ value(val){
if(val.sort().join(',') != old.sort().join(',')){ if(Array.from(new Set(val)).sort().join(',') != Array.from(new Set(this.customerIds)).sort().join(',')){
this.getChoosedList() this.getChoosedList()
} }
} }
}, },
created(){ created(){
if(this.value && this.value.length){ /* if(this.value && this.value.length){
this.getChoosedList() this.getChoosedList()
} } */
this.reLoad() this.reLoad()
}, },
methods:{ methods:{
......
<template>
<div>
<el-descriptions border v-if="order.orderId">
<el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item>
<el-descriptions-item label="已到箱数">{{ order.sumNum }}</el-descriptions-item>
<el-descriptions-item label="订单状态">{{ order.status }}</el-descriptions-item>
<el-descriptions-item label="送货时间">todo</el-descriptions-item>
<el-descriptions-item label="运输方式">{{ order.logisticsInfoDto.transportId }}</el-descriptions-item>
<el-descriptions-item label="始发地">{{ order.logisticsInfoDto.startWarehouseId }}</el-descriptions-item>
<el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destWarehouseId }}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{ order.consignorVO.name }}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{ order.consignorVO.company }}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{ order.consignorVO.phone }}</el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{ order.consigneeVO.name }}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{ order.consigneeVO.company }}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{ order.consigneeVO.phone }}</el-descriptions-item>
<el-descriptions-item label="入仓类型">{{ order.warehouseType }}</el-descriptions-item>
<el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
export default {
name: "orderBaseInfo",
props: {
order: Object
}
}
</script>
<style scoped>
</style>
...@@ -44,7 +44,9 @@ export default { ...@@ -44,7 +44,9 @@ export default {
props: { props: {
defaultIds: { defaultIds: {
type: Array, type: Array,
default: [] default: () => {
return []
}
} }
}, },
data() { data() {
......
<template>
<div>
<el-dialog
title="选择储位"
:visible.sync="opened"
width="600px"
:before-close="handleClose()"
>
<el-tabs v-model="activeName" type="card" @tab-click="activeWarehouse = {}">
<el-tab-pane :label="item.name" :name="'' + index" v-for="(item, index) in area" :key="index">
<div>
<div style="text-align: center">区域</div>
<div style="background-color: #efefef;padding: 10px 10px 0;border: #dcdcdc solid 1px;border-radius: 2px">
<el-row :gutter="20">
<el-col :span="12" v-for="(warehouse, i) in item.children" :key="i">
<div
class="warehouse-block"
:class="{'warehouse-block-selected': warehouse.selected, 'warehouse-block-active': warehouse.id === activeWarehouse.id}"
@click="handleSelectWarehouse(warehouse)"
>
{{ warehouse.name }}
</div>
</el-col>
</el-row>
</div>
</div>
<div>
<div style="text-align: center">仓位</div>
<div class="position-group">
<div class="position" v-for="position in activeWarehouse.positionList" :key="item.id">
<div
class="position-item"
v-for="item in position.children"
@click="handleSelectPosition(item)"
:class="{'position-item-active': item.selected}">
{{ item.code }}
</div>
</div>
</div>
</div>
<el-divider></el-divider>
已选择:{{ selected.join(', ') }}
<el-divider></el-divider>
</el-tab-pane>
</el-tabs>
<span slot="footer">
<el-button @click="opened = false">关 闭</el-button>
<el-button type="primary" @click="opened = false">提 交</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { getByWarehouseId } from '@/api/ecw/warehouseArea'
export default {
name: 'WarehouseAreaDialog',
props: {
visible: {
type: Boolean,
default: false
},
},
data() {
return {
opened: false,
key: 0,
orderId: '',
area: [],
activeName: '0',
selectedWarehouse: [],
selectedPosition: [],
activeWarehouse: {}
};
},
watch: {
visible(val) {
if (val) {
this.opened = true
} else {
}
},
opened(val) {
if (val) {
} else {
this.$emit('update:visible', false)
}
}
},
methods: {
handleClose() {},
handleSelectWarehouse(warehouse) {
this.activeWarehouse = warehouse
if (!!warehouse.selected) {
warehouse.selected = false
} else {
warehouse.selected = true
// 区域被选,清空该区域下的位置
warehouse.positionList.forEach(g => {
g.children.forEach(k => {
k.selected = false
})
})
}
},
handleSelectPosition(position) {
if (!!position.selected) {
position.selected = false
// 反选位置时,检查父区域下是否所有位置被反选,若是,选父区域
const parentAre = this.area.find(e => e.id === position.domainId).children.find(f => f.id === position.areaId)
if (!parentAre.selected) {
// 检查父区域下是否所有位置被反选
let hasSelected = false
parentAre.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
// 子位置
if (k.selected) hasSelected = true
})
})
// 所有子位置被反选,选父区域
if (!hasSelected) parentAre.selected = true
}
} else {
position.selected = true
// 选位置时,父区域反选
this.area.find(e => e.id === position.domainId).children.find(f => f.id === position.areaId).selected = false
}
}
},
mounted() {
if (this.visible) {
this.opened = true
}
getByWarehouseId().then(r => {
const area = r.data
area.forEach(e => {
// 仓库
e.children.forEach(f => {
// 区域
f.selected = false
f.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
// 子位置
k.selected = false
})
})
})
})
this.area = area
})
},
computed: {
selected() {
const result = []
this.area.forEach(e => {
// 仓库
e.children.forEach(f => {
// 区域
if (f.selected) result.push(f.code)
f.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
// 子位置
if (k.selected) result.push(k.code)
})
})
})
})
return result
}
}
}
</script>
<style scoped>
.warehouse-block{
background-color: white;
border-radius: 5px;
height: 42px;
line-height: 42px;
text-align: center;
margin-bottom: 15px;
cursor: pointer;
transition: 0.5s;
box-shadow: #bfbfbf 3px 3px 14px 0;
}
.warehouse-block:hover{
opacity: 0.9;
transition: 0.5s;
transform: scale(1.02);
box-shadow: #8f8f8f 7px 5px 14px 0;
}
.warehouse-block-active{
box-shadow: #7e9dbd 7px 5px 14px 0;
transform: scale(1.04);
}
.warehouse-block-selected{
color: #ffffff;
background-color: #4085e3;
}
.position-group{
display: flex;
background-color: #EFEFEF;
border: 1px #EFEFEF solid;
gap: 1px;
min-height: 64px;
}
.position{
width: 20%;
height: 64px;
display: flex;
flex-direction: column;
gap: 1px;
}
.position-item{
width: 100%;
background-color: #FFFFFF;
flex: 1;
cursor: pointer;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.position-item:hover{
background-color: #d7dbe3;
}
.position-item-active{
background-color: #4085e3;
color: white;
}
.position-item-active:hover{
background-color: #4085e3;
opacity: 0.8;
}
</style>
...@@ -283,6 +283,38 @@ export const constantRoutes = [ ...@@ -283,6 +283,38 @@ export const constantRoutes = [
}, },
] ]
}, },
<<<<<<< HEAD
=======
{
path: '/boxSea',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
/* {
path: 'query/:boxId(\\d+)',
component: (resolve) => import('@/views/ecw/box/query'),
props: true,
name: 'boxQuery',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'}
}, */
{
path: 'shippingSea/:boxId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shipping/shippingSea'),
props: true,
name: 'shippingSea',
meta: {title: '海运出货操作', icon: '', activeMenu: '/shipment/boxSea'}
},
{
path: 'shippingSea/preinstall/:boxId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shipping/preinstall'),
props: true,
name: 'preinstall',
meta: {title: '出货安排(预装)', icon: '', activeMenu: '/shipment/boxSea'}
}
]
},
>>>>>>> ad637e33746d81b425acb8e13903cb24f27ecd6e
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
......
...@@ -55,6 +55,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { ...@@ -55,6 +55,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
title: route.name, title: route.name,
icon: route.icon icon: route.icon
} }
route.hidden = typeof route.isShowInMenuBar != 'undefined' && (route.isShowInMenuBar == 'false' || !route.isShowInMenuBar)
// 处理 component 属性 // 处理 component 属性
if (route.children) { // 父节点 if (route.children) { // 父节点
// debugger // debugger
......
...@@ -10,6 +10,7 @@ export const DICT_TYPE = { ...@@ -10,6 +10,7 @@ export const DICT_TYPE = {
COMMON_STATUS: 'common_status', COMMON_STATUS: 'common_status',
AUDIT_STATUS: 'audit_status', AUDIT_STATUS: 'audit_status',
ADVANCE_STATUS: 'advance_status', ADVANCE_STATUS: 'advance_status',
BOX_SHIPMENT_STATUS: 'box_shipment_status',
// ========== SYSTEM 模块 ========== // ========== SYSTEM 模块 ==========
SYSTEM_USER_SEX: 'system_user_sex', SYSTEM_USER_SEX: 'system_user_sex',
...@@ -134,6 +135,7 @@ export const DICT_TYPE = { ...@@ -134,6 +135,7 @@ export const DICT_TYPE = {
PRODUCT_RECORD_ATTRIBUTE: 'product_record_attribute', //产品备案属性 PRODUCT_RECORD_ATTRIBUTE: 'product_record_attribute', //产品备案属性
CONTROL_GOODS_STATUS: 'control_goods_status', //控货状态 CONTROL_GOODS_STATUS: 'control_goods_status', //控货状态
DISBURSEMENT_TYPE: 'disbursement_type' ,//垫付类型 DISBURSEMENT_TYPE: 'disbursement_type' ,//垫付类型
DRAWEE: 'drawee', // 付款人
ORDER_STATUS:'order_status',//订单状态 ORDER_STATUS:'order_status',//订单状态
BEGINTIME_TYPE_ENDTIME:'begintime_type_endtime',//订单日期筛选类别 BEGINTIME_TYPE_ENDTIME:'begintime_type_endtime',//订单日期筛选类别
} }
......
...@@ -11,7 +11,7 @@ const baseURL = process.env.VUE_APP_BASE_API ...@@ -11,7 +11,7 @@ const baseURL = process.env.VUE_APP_BASE_API
* @param pattern {String} '{y}-{m}-{d} {h}:{i}:{s}' * @param pattern {String} '{y}-{m}-{d} {h}:{i}:{s}'
* @returns {string|null} * @returns {string|null}
*/ */
export function parseTime(time, pattern) { export function parseTime(time, pattern = undefined) {
if (arguments.length === 0 || !time) { if (arguments.length === 0 || !time) {
return null return null
} }
......
...@@ -53,7 +53,11 @@ ...@@ -53,7 +53,11 @@
</template> </template>
<script> <script>
import {getProcessDefinitionBpmnXML, getProcessDefinitionList} from "@/api/bpm/definition"; import {
getProcessDefinitionBpmnXML,
getProcessDefinitionBpmnXMLByKey,
getProcessDefinitionList
} from "@/api/bpm/definition";
import {DICT_TYPE, getDictDatas} from "@/utils/dict"; import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {getForm} from "@/api/bpm/form"; import {getForm} from "@/api/bpm/form";
import {decodeFields} from "@/utils/formGenerator"; import {decodeFields} from "@/utils/formGenerator";
...@@ -118,15 +122,14 @@ export default { ...@@ -118,15 +122,14 @@ export default {
...JSON.parse(row.formConf), ...JSON.parse(row.formConf),
fields: decodeFields(row.formFields) fields: decodeFields(row.formFields)
} }
// 加载流程图 // 加载流程图
getProcessDefinitionBpmnXML(row.id).then(response => { getProcessDefinitionBpmnXML(row.id).then(response => {
this.bpmnXML = response.data this.bpmnXML = response.data
}) })
/*getProcessDefinitionBpmnXMLByKey("sheet_sale").then(response => {
this.bpmnXML = response.data
})*/
} else if (row.formCustomCreatePath) { } else if (row.formCustomCreatePath) {
//
console.log("-------------------------------");
console.log(row.formCustomCreatePath);
this.$router.push({ path: row.formCustomCreatePath}); this.$router.push({ path: row.formCustomCreatePath});
// 这里暂时无需加载流程图,因为跳出到另外个 Tab; // 这里暂时无需加载流程图,因为跳出到另外个 Tab;
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template>
<div>
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="16">
<div style="display: flex; justify-content: space-between;align-items: flex-end;">
<h2>出货详情</h2>
<div>
<el-button size="small">编辑</el-button>
<el-button size="small">操作</el-button>
<el-button type="primary" size="small">异常登记</el-button>
<el-button type="primary" size="small">费用登记</el-button>
<el-button type="danger" size="small">删除</el-button>
</div>
</div>
<el-card style="margin-top: 15px">
<el-descriptions :column="4" border>
<el-descriptions-item label="自编号"></el-descriptions-item>
<el-descriptions-item label="运输方式"></el-descriptions-item>
<el-descriptions-item label="出货渠道"></el-descriptions-item>
<!-- <el-descriptions-item label="柜型"></el-descriptions-item> -->
<el-descriptions-item label="状态"></el-descriptions-item>
<el-descriptions-item label="总计"></el-descriptions-item>
<el-descriptions-item label="始发地"></el-descriptions-item>
<el-descriptions-item label="目的地"></el-descriptions-item>
<el-descriptions-item label="SO.NO"></el-descriptions-item>
</el-descriptions>
</el-card>
<el-tabs style="margin-top: 15px" type="border-card">
<el-tab-pane label="明细">
<div class="detail-pane">
<p>当前部分:</p>
<el-select v-model="value" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<p class="box-weight">9箱子xxx</p>
<p class="document-status">单证状态:我司全代</p>
</div>
<el-table :data="[]" style="width: 100%">
<el-table-column prop="" label="序号"> </el-table-column>
<el-table-column prop="" label="订单号"> </el-table-column>
<el-table-column prop="" label="货物信息"> </el-table-column>
<el-table-column prop="" label="计划箱数"> </el-table-column>
<el-table-column prop="" label="实装箱数"> </el-table-column>
<el-table-column prop="" label="卸柜箱数"> </el-table-column>
<el-table-column prop="" label="提货点"> </el-table-column>
<el-table-column prop="" label="体积"> </el-table-column>
<el-table-column prop="" label="重量"> </el-table-column>
<el-table-column prop="" label="货值"> </el-table-column>
<el-table-column prop="" label="报关方式"> </el-table-column>
<el-table-column prop="" label="报关费用"> </el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="状态"></el-tab-pane>
<el-tab-pane label="费用">
<el-table :data="[]" style="width: 100%">
<el-table-column prop="" label="序号"> </el-table-column>
<el-table-column prop="" label="费用类型"> </el-table-column>
<el-table-column prop="" label="供应商"> </el-table-column>
<el-table-column prop="" label="金额"> </el-table-column>
<el-table-column prop="" label="实付金额"> </el-table-column>
<el-table-column prop="" label="实付日期"> </el-table-column>
<el-table-column prop="" label="操作"> </el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="异常">
<el-table :data="[]" style="width: 100%">
<el-table-column prop="" label="序号"> </el-table-column>
<el-table-column prop="" label="操作步骤"> </el-table-column>
<el-table-column prop="" label="异常"> </el-table-column>
<el-table-column prop="" label="异常详情"> </el-table-column>
<el-table-column prop="" label="异常时间"> </el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="表单">
<el-table :data="[]" style="width: 50%">
<el-table-column prop="" label="文件类型"> </el-table-column>
<el-table-column prop="" label="下载链接"> </el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</el-col>
</el-row>
</div>
</template>
<script>
import { getCustomer, getCustomerSelect } from "@/api/ecw/customer";
import { DICT_TYPE, getDictDataLabel } from "@/utils/dict";
import { getProductTypeList } from "@/api/ecw/productType";
import { getNodeList } from "@/api/ecw/node";
import CustomerFollow from "@/components/CustomerFollow";
import { parseTime } from "@/utils/ruoyi";
import CustomerComplaint from "@/views/ecw/customerComplaint";
import { listServiceUser } from "@/api/system/user";
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts";
export default {
name: "boxQuery",
props: {
customerId: String,
},
components: {
CustomerFollow,
CustomerComplaint,
},
created() {
getNodeList().then((r) => {
this.nodeList = r.data;
});
getCustomer(this.id).then((response) => {
this.customer = { ...this.customer, ...response.data };
getCustomerContactsListByCustomer({ customerId: this.id }).then((r) => {
this.customerContacts = r.data;
});
});
getProductTypeList().then((r) => {
this.productTypeList = r.data;
});
getCustomerSelect().then((r) => {
this.customerSelect = r.data;
});
listServiceUser().then((r) => {
this.serviceUserList = r.data;
});
},
data() {
return {
DICT_TYPE,
getDictDataLabel,
parseTime,
nodeList: [],
productTypeList: [],
customerSelect: [],
serviceUserList: [],
customerContacts: [],
customer: {
id: undefined,
number: undefined,
name: undefined,
level: undefined,
country: undefined,
type: undefined,
agentId: undefined,
company: undefined,
address: undefined,
productType: undefined,
productId: undefined,
pickupPoint: undefined,
memberId: undefined,
birthday: undefined,
balance: undefined,
source: undefined,
picture: undefined,
customerService: undefined,
customerLines: [],
promoter: undefined,
status: undefined,
founder: undefined,
department: undefined,
invoiceTitle: undefined,
licenseNumber: undefined,
bank: undefined,
bankNumber: undefined,
project: undefined,
billingAddress: undefined,
billingTell: undefined,
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
createTime: undefined,
},
};
},
computed: {
productType() {
const productType = this.productTypeList.find(
(p) => p.id === parseInt(this.customer.productType)
);
return productType ? productType.titleZh : "";
},
pickupPoint() {
const pickupPoint = this.nodeList.find(
(p) => p.id === parseInt(this.customer.pickupPoint)
);
return pickupPoint ? pickupPoint.titleZh : "";
},
promoter() {
return (
this.customerSelect.find((e) => e.id === this.customer.promoter)
?.name || ""
);
},
customerService() {
return (
this.serviceUserList.find((e) => e.id === this.customer.customerService)
?.nickname || ""
);
},
id() {
return this.customerId ? parseInt(this.customerId) : undefined;
},
},
};
</script>
<style lang="scss" scoped>
.detail-pane {
display: flex;
.box-weight {
margin-left: 10px;
}
.document-status {
flex: 1;
text-align: right;
}
}
</style>
<template>
<div>
<el-form ref="agentForm" :rules="rules" :model="agent" label-width="120px">
<el-form-item label="代理商Agent">
<el-select v-model="agent.agent" placeholder="请选择代理商">
</el-select>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit">提交</el-button>
<el-button @click="cancel">保存</el-button>
</el-row>
</div>
</template>
<script>
export default {
name: "agent",
data() {
return {
agent: {},
};
},
methods: {
onSubmit() {
this.$refs["agentForm"].validate((valid) => {
if (valid) {
alert("submit!");
}
});
},
cancel() {
this.$emit("closeDialog");
},
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-form ref="bookingForm" :rules="rules" :model="booking" label-width="140px" class="booking-form">
<el-form-item label="SO NO">
<el-input v-model="booking.soNo"></el-input>
</el-form-item>
<el-form-item label="船公司类型">
<el-select v-model="booking.type" placeholder="请选择船公司类型">
<el-option v-for="type in types" :key="type" :label="type" :value="type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="驳船港">
<el-select v-model="booking.bargePort" placeholder="请选择驳船港">
<el-option v-for="type in types" :key="type" :label="type" :value="type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="大船港">
<el-select v-model="booking.bigShipPort" placeholder="请选择大船港">
<el-option v-for="type in types" :key="type" :label="type" :value="type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="目的港">
<el-select v-model="booking.destination" placeholder="请选择目的港">
<el-option v-for="type in types" :key="type" :label="type" :value="type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="订舱公司">
<el-select v-model="booking.bookingCompany" placeholder="请选择订舱公司">
<el-option v-for="type in types" :key="type" :label="type" :value="type"></el-option>
</el-select>
</el-form-item>
<el-form-item label="预计驳船时间" prop="time">
<el-date-picker type="date" placeholder="请选择日期" v-model="booking.bargeTime"></el-date-picker>
</el-form-item>
<el-row>
<el-col span="12">
<el-form-item label="预计开船时间" prop="time">
<el-date-picker type="date" placeholder="请选择日期" v-model="booking.departureTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="通知人" label-width="80px">
<el-select v-model="booking.feedTimePerson" placeholder="请选择通知人">
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="预计提单补料时间">
<el-date-picker type="date" placeholder="请选择日期" v-model="booking.feedTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="通知人" label-width="80px">
<el-select v-model="booking.feedTimePerson" placeholder="请选择通知人">
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="预计报关时间">
<el-date-picker type="date" placeholder="请选择日期" v-model="booking.declarationTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="通知人" label-width="80px">
<el-select v-model="booking.feedTimePerson" placeholder="请选择通知人">
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="预计截关时间">
<el-date-picker type="date" placeholder="请选择日期" v-model="booking.cutOffTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="通知人" label-width="80px">
<el-select v-model="booking.feedTimePerson" placeholder="请选择通知人">
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit">提交</el-button>
<el-button @click="cancel">取消</el-button>
</el-row>
</div>
</template>
<script>
export default {
name: "booking",
data() {
return {
types: ["PIL", "MSK", "CMA", "COSCO", "ZIM", "ONE", "OOCL", "MSC", "HPL"],
booking: {},
rules: {
time: [{ required: true, message: "请选择时间", trigger: "change" }],
},
};
},
methods: {
onSubmit() {
this.$refs["bookingForm"].validate((valid) => {
if (valid) {
alert("submit!");
}
});
},
cancel() {
this.$emit("closeDialog");
},
},
};
</script>
This diff is collapsed.
<template>
<div>
<el-scrollbar :vertical="true" style="width: 100%;" viewClass="shipping-chart">
<div v-for="(nodes,index) in chartData['sea']" :key="index" class="chart-nodes">
<div>
<div v-for="node in nodes" :key="node.title" @click="nodeClick(node)" class="node-div">
<template v-if="!node.unNode">
<img :src="node.imgSrc" alt="">
<p>{{node.title}}</p>
</template>
<template v-else-if="node.unNode">
<el-button type="primary" @click="nodeClick(node)">AGENT</el-button>
</template>
</div>
</div>
<div class="chart-arrow" v-if="index !== (chartData['sea'].length-1)">
<img src="@/assets/images/shipping/jt-start.png" alt="">
</div>
</div>
</el-scrollbar>
<el-dialog :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" :width="dialogConfig.width" destroy-on-close>
<booking @closeDialog="closeDialog" v-if="dialogConfig.type === 'booking'" />
<trailer @closeDialog="closeDialog" v-if="dialogConfig.type === 'trailer'" />
<preinstall v-if="dialogConfig.type === 'preinstall'" />
<agentWidget @closeDialog="closeDialog" v-if="dialogConfig.type === 'agent'" />
</el-dialog>
</div>
</template>
<script>
import booking from "./booking";
import trailer from "./trailer";
import preinstall from "./preinstall";
import agentWidget from "./agent";
export default {
name: "shippingChart",
components: { booking, trailer, preinstall, agentWidget },
props: {
shippingType: String,
boxId: String,
},
data() {
return {
dialogConfig: {
dialogVisible: false,
title: "",
width: "30%",
type: "",
},
chartData: {
sea: [
[
{
title: "订舱",
imgSrc: require("@/assets/images/shipping/dc-start.png"),
type: "booking",
},
],
[
{
title: "预装",
imgSrc: require("@/assets/images/shipping/yz-start.png"),
type: "preinstall",
},
{
title: "拖车",
imgSrc: require("@/assets/images/shipping/tc-start.png"),
type: "trailer",
},
{
unNode: true,
type: "agent",
title: "代理商设置",
},
],
[
{
title: "装柜",
imgSrc: require("@/assets/images/shipping/zg-start.png"),
type: "cabinet",
},
],
[
{
title: "报关",
imgSrc: require("@/assets/images/shipping/bg-start.png"),
type: "customsDeclaration",
},
{
title: "配船",
imgSrc: require("@/assets/images/shipping/pc-start.png"),
type: "ship",
},
{
title: "提单材料",
imgSrc: require("@/assets/images/shipping/tdcl-start.png"),
type: "subMaterial",
},
],
[
{
title: "驳船",
imgSrc: require("@/assets/images/shipping/bc-start.png"),
type: "barge",
},
],
[
{
title: "起运",
imgSrc: require("@/assets/images/shipping/qy-start.png"),
type: "departure",
},
],
[
{
title: "清关文件",
imgSrc: require("@/assets/images/shipping/qg-start.png"),
type: "clearanceDocument",
},
],
[
{
title: "到港",
imgSrc: require("@/assets/images/shipping/dg-start.png"),
type: "arrival",
},
],
[
{
title: "清关",
imgSrc: require("@/assets/images/shipping/qg-start.png"),
type: "customsClearance",
},
],
[
{
title: "卸柜",
imgSrc: require("@/assets/images/shipping/xg-start.png"),
type: "unloading",
},
],
[
{
title: "结算",
imgSrc: require("@/assets/images/shipping/js-start.png"),
type: "settlement",
},
],
],
},
};
},
methods: {
closeDialog() {
this.$set(this.dialogConfig, "dialogVisible", false);
},
setCommonAttr(node) {
this.$set(this.dialogConfig, "dialogVisible", true);
this.$set(this.dialogConfig, "title", node.title);
this.$set(this.dialogConfig, "type", node.type);
},
nodeClick(node) {
console.log(node);
switch (node.type) {
case "booking":
this.$set(this.dialogConfig, "width", "40%");
this.setCommonAttr(node);
break;
case "trailer":
case "agent":
this.$set(this.dialogConfig, "width", "25%");
this.setCommonAttr(node);
break;
case "preinstall":
this.$router.push(`/boxSea/shippingSea/preinstall/${this.boxId}`);
break;
}
},
},
};
</script>
<style lang="scss">
.shipping-chart {
width: max-content;
display: flex;
justify-content: center;
padding: 10px;
.chart-nodes {
display: flex;
align-items: center;
justify-content: center;
.node-div {
margin-top: 10px;
cursor: pointer;
p {
margin-top: -10px;
margin-bottom: 0px;
text-align: center;
}
}
}
.chart-arrow {
margin: 0 10px;
}
}
</style>
<template>
<div>
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="20">
<div style="display: flex; justify-content: space-between;align-items: flex-end;">
<h2>海运出货操作</h2>
</div>
<el-card style="margin-top: 15px">
<el-descriptions :column="5" border>
<el-descriptions-item label="自编号"></el-descriptions-item>
<el-descriptions-item label="运输方式"></el-descriptions-item>
<el-descriptions-item label="始发地"></el-descriptions-item>
<el-descriptions-item label="目的地"></el-descriptions-item>
<el-descriptions-item label="状态"></el-descriptions-item>
</el-descriptions>
</el-card>
<div class="shipping-flow">
<shippingChart :boxId="boxId" />
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import shippingChart from "./shippingChart";
export default {
name: "shippingSea",
components: {
shippingChart,
},
props: {
boxId: String,
},
};
</script>
<style lang="scss">
.shipping-flow {
margin-top: 5px;
// 页面内元素弹框form控件宽度设置
.el-form-item__content {
> div {
width: 100%;
}
}
.operate-button {
text-align: center;
}
}
</style>
<template>
<div>
<el-form ref="trailerForm" :rules="rules" :model="trailer" label-width="120px" class="trailer-form">
<el-form-item label="状态">
<el-select v-model="trailer.status" placeholder="请选择状态">
<el-option v-for="item in status" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="拖车公司">
<el-select v-model="trailer.trailerCompany" placeholder="请选择拖车公司">
<el-option v-for="item in status" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="拖车时间" prop="time">
<el-date-picker type="date" placeholder="请选择日期" v-model="trailer.trailerTime"></el-date-picker>
</el-form-item>
<el-form-item label="车牌">
<el-input v-model="trailer.licensePlate"></el-input>
</el-form-item>
<el-form-item label="司机">
<el-input v-model="trailer.driver"></el-input>
</el-form-item>
<el-form-item label="司机联系方式">
<el-input v-model="trailer.telephone"></el-input>
</el-form-item>
<el-form-item label="货柜号">
<el-input v-model="trailer.containerNumber"></el-input>
</el-form-item>
<el-form-item label="封条">
<el-input v-model="trailer.seal"></el-input>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit">提交</el-button>
<el-button @click="cancel">取消</el-button>
</el-row>
</div>
</template>
<script>
export default {
name: "trailer",
data() {
return {
status: [
{
value: "1",
label: "已派车,待提柜",
},
{
value: "2",
label: "已提柜,待还柜",
},
{
value: "3",
label: "已还柜",
},
],
trailer: {},
rules: {
time: [{ required: true, message: "请选择时间", trigger: "change" }],
},
};
},
methods: {
onSubmit() {
this.$refs["trailerForm"].validate((valid) => {
if (valid) {
alert("submit!");
}
});
},
cancel() {
this.$emit("closeDialog");
},
},
};
</script>
...@@ -670,7 +670,7 @@ export default { ...@@ -670,7 +670,7 @@ export default {
// 添加的提交 // 添加的提交
createOffer(data).then(response => { createOffer(data).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.$router.replace('offer/index') this.$router.replace('index')
}); });
}); });
}, },
......
...@@ -12,39 +12,63 @@ ...@@ -12,39 +12,63 @@
<el-table-column <el-table-column
prop="prodTitleZh" prop="prodTitleZh"
label="品名"> label="品名">
<template v-slot="{row}">
{{ row.prodTitleZh }}/{{ row.prodTitleEn }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="prodAttrIds" prop="prodAttrIds"
label="填单货物属性"> label="填单货物属性">
<template v-slot="{row}">
{{ getProductNamesByIds(row.prodAttrIds) }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
label="入库货物属性"> label="入库货物属性">
<template v-slot="{row}">
品牌:{{ row.brand ? '' : '' }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="updateTime"
:formatter="(_, __, v) => parseTime(v)"
label="最后操作时间"> label="最后操作时间">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="原价"> label="原价">
<template v-slot="{row}"> <template v-slot="{row}">
运费:{{ row.originalSeaFreight }}美元/立方米 清关费:{{ row.originalClearanceFreight }}奈拉/立方米 运费:{{ row.originalSeaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.originalClearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
label="成本价"> label="成本价">
<template v-slot="{row}"> <template v-slot="{row}">
运费:{{ row.seaFreight }}美元/立方米 清关费:{{ row.clearanceFreight }}奈拉/立方米 运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
label="销售价"> label="销售价">
<template v-slot="{row}"> <template v-slot="{row}">
运费:{{ row.seaFreight }}美元/立方米 清关费:{{ row.clearanceFreight }}奈拉/立方米 运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
prop="status"
:formatter="(v) => ['取消报价', '特价审批中', '需求确认(草稿)', '跟进中', '赢单', '输单', '报价完成', '审批通过', '审批拒绝'][v.status]"
label="审核状态">
</el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
label="操作"> label="操作">
...@@ -67,19 +91,24 @@ ...@@ -67,19 +91,24 @@
</template> </template>
<script> <script>
import {getOfferLogPage} from "@/api/ecw/offerLog"; import {DICT_TYPE, getDictDataLabel} from '@/utils/dict'
import {DICT_TYPE} from '@/utils/dict'
import {getOffer} from '@/api/ecw/offer' import {getOffer} from '@/api/ecw/offer'
import {getUnitList} from "@/api/ecw/unit"
import {getCurrencyList} from "@/api/ecw/currency"
import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
export default { export default {
name: "OfferSpecial", name: "OfferSpecial",
components: { components: {
}, },
props: { props: {
offerId: String offerId: String
}, },
data() { data() {
return { return {
parseTime,
DICT_TYPE,
getDictDataLabel,
// 遮罩层 // 遮罩层
loading: true, loading: true,
list: [], list: [],
...@@ -95,7 +124,10 @@ export default { ...@@ -95,7 +124,10 @@ export default {
offer: { offer: {
number: '', number: '',
offerProdRespVOList: [] offerProdRespVOList: []
} },
unitList:[],
currencyList:[],
productAttrList:[],
}; };
}, },
created() { created() {
...@@ -103,6 +135,9 @@ export default { ...@@ -103,6 +135,9 @@ export default {
this.params.offerId = this.offerId this.params.offerId = this.offerId
this.getOffer() this.getOffer()
} }
getUnitList().then(res => this.unitList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data)
}, },
methods: { methods: {
getOffer(){ getOffer(){
...@@ -111,8 +146,36 @@ export default { ...@@ -111,8 +146,36 @@ export default {
this.loading = false this.loading = false
this.offer = response.data this.offer = response.data
}) })
},
getProductNamesByIds(ids){
const result = []
ids.split(',').forEach(e => {
this.productAttrList.forEach(f => {
if (parseInt(e) === f.id) {
result.push(f.attrName)
}
})
})
return result.join(',')
}
},
computed: {
currentMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = item.titleZh
})
return map
},
unitMap(){
let map = {}
this.unitList.forEach(item => {
map[item.id] = item.titleZh
})
return map
} }
} }
}; };
</script> </script>
<style> <style>
......
This diff is collapsed.
<template>
<div class="app-container">
<el-card class="card">
<div slot="header" class="card-title">订单详情-EC00636U-CNG2506-01</div>
<div slot="header" class="card-title">订单编号:EC00636U</div>
<el-row :gutter="20">
<el-col :span="12">
<el-descriptions class="margin-top" border title="发货人" :column="2">
<el-descriptions-item label="发货人">kooriookami</el-descriptions-item>
<el-descriptions-item label="发货人电话">18100000000</el-descriptions-item>
<el-descriptions-item label="发货人邮箱">18100000000</el-descriptions-item>
<el-descriptions-item label="发货人公司名称">
<el-tag size="small">学校学校学校学校</el-tag>
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="12">
<el-descriptions class="margin-top" border title="收货人" :column="2">
<el-descriptions-item label="收货人">kooriookami</el-descriptions-item>
<el-descriptions-item label="收货人电话">18100000000</el-descriptions-item>
<el-descriptions-item label="收货人邮箱">18100000000</el-descriptions-item>
<el-descriptions-item label="收货人公司名称">
<el-tag size="small">学校学校学校学校</el-tag>
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-card>
<el-card class="card">
<div slot="header" class="card-title">物流信息/基础信息</div>
<el-row :gutter="20">
<el-col :span="12">
<el-descriptions class="margin-top" border title="物流信息" :column="2">
<el-descriptions-item label="始发仓">广州仓</el-descriptions-item>
<el-descriptions-item label="目的仓">Dubai</el-descriptions-item>
<el-descriptions-item label="地址" :span="2">广州市白云区鹤边鹤泰二横路民通院内第一栋捷道仓库E&C(收货时间周一至周六10:00-19:30)
</el-descriptions-item>
<el-descriptions-item label="运输方式">海运拼柜</el-descriptions-item>
<el-descriptions-item label="出货渠道">/</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="12">
<el-descriptions class="margin-top" border title="基础信息" :column="2">
<el-descriptions-item label="唛头">kooriookami</el-descriptions-item>
<el-descriptions-item label="送货时间">2022-05-22</el-descriptions-item>
<el-descriptions-item label="是否控货"></el-descriptions-item>
<el-descriptions-item label="填单信息">22箱 1000KG 14m³</el-descriptions-item>
<el-descriptions-item label="仓库实测">123箱 900Kg 11.23m³</el-descriptions-item>
<el-descriptions-item label="收款数据">123箱 900Kg 11.23m³</el-descriptions-item>
<el-descriptions-item label="入仓类型">一次到齐</el-descriptions-item>
<el-descriptions-item label="单证报关">我司全代</el-descriptions-item>
<el-descriptions-item label="代收货款">是(50000美元)</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-card>
<el-card class="card">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="货物详情" name="first">
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="中文品名" />
<el-table-column prop="name" label="英文品名" />
<el-table-column prop="address" label="品牌" />
<el-table-column prop="address" label="填单件数" />
<el-table-column prop="address" label="入仓件数" />
<el-table-column prop="address" label="单位" />
<el-table-column prop="address" label="货值" />
<el-table-column prop="address" label="材质" />
<el-table-column prop="address" label="体积(m3)" />
<el-table-column prop="address" label="重量(kg)" />
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize" @pagination="getList" />
</el-tab-pane>
<el-tab-pane label="订单动态" name="second">
<el-timeline :reverse="true">
<el-timeline-item v-for="(activity, index) in activities" :key="index" :timestamp="activity.timestamp">
{{ activity.content }}
</el-timeline-item>
</el-timeline>
</el-tab-pane>
<el-tab-pane label="运单资料/提货单" name="three">
<el-descriptions class="margin-top" border title="" :column="3">
<el-descriptions-item label="单票立即转运"></el-descriptions-item>
<el-descriptions-item label="包装类型">纸箱</el-descriptions-item>
<el-descriptions-item label="包装要求备注">多个订单一起打包,不要单独打</el-descriptions-item>
</el-descriptions>
<el-button type="text">查看入仓单</el-button>
<el-button type="text" disabled>
<el-dropdown>
<span class="el-dropdown-link">
查看提货单<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>海运提货单</el-dropdown-item>
<el-dropdown-item>空运提货单</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-button>
<el-button :disabled="true" type="text">装箱单未上传</el-button>
</el-tab-pane>
</el-tabs>
</el-card>
</div>
</template>
<script>
import { getOrder } from '@/api/ecw/order'
export default {
name: "detail",
components: {
},
data() {
return {
// 遮罩层
loading: false,
list: [],
activeName: 'first',
orderId: 17,
tableData: [],
queryParams: {
pageNo: 1,
pageSize: 10,
},
activities: [{
content: '活动按期开始',
timestamp: '2018-04-15'
}, {
content: '通过审核',
timestamp: '2018-04-13'
}, {
content: '创建成功',
timestamp: '2018-04-11'
}]
};
},
created() {
if (this.$route.query.orderId) {
this.orderId = this.$route.query.orderId
this.getList();
}
this.getList();
},
methods: {
/** 查询列表 */
getList() {
let that = this
that.loading = true;
// 执行查询
getOrder(that.orderId).then(response => {
that.list = response.data;
});
},
}
};
</script>
<style scoped>
.card {
margin-bottom: 20px;
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
}
.el-icon-arrow-down {
font-size: 12px;
}
</style>
This diff is collapsed.
This diff is collapsed.
<template>
<div class="app-container">
<h2>入仓操作-{{ order.orderNo }}</h2>
<order-base-info :order="order"></order-base-info>
<div style="margin-top: 20px">
<span>储位:</span><el-button type="primary" size="mini" @click="areaVisible = true">选择</el-button>
</div>
<h2>货物信息</h2>
<el-table
:data="order.orderItemVOList || []"
style="width: 100%">
<el-table-column
type="index"
width="50"
label="序号">
</el-table-column>
<el-table-column
prop="prodTitleZh"
label="品名">
</el-table-column>
<el-table-column
label="填单货物属性">
<template v-slot="{row}">
品牌:{{ row.brand ? '' : '' }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
</template>
</el-table-column>
<el-table-column
label="入库货物属性">
<template v-slot="{row}">
品牌:{{ row.brand ? '' : '' }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
</template>
</el-table-column>
<el-table-column
prop="address"
label="快递单号">
</el-table-column>
<el-table-column
prop="address"
label="最后操作时间">
</el-table-column>
<el-table-column
prop="address"
label="状态">
</el-table-column>
<el-table-column
prop="address"
label="操作">
<template v-slot="{row}">
<el-button size="mini" type="text">入仓</el-button>
<el-button size="mini" type="text">追加</el-button>
<el-button size="mini" type="text">退仓</el-button>
</template>
</el-table-column>
</el-table>
<h2>特殊需求</h2>
<el-form ref="form" :model="form" label-width="180px" style="max-width: 600px;">
<el-form-item label="套编织袋费">
<el-input v-model="form.a" placeholder="请输入套编织袋费">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="木架包装费">
<el-input v-model="form.a" placeholder="请输入木架包装费">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="纸箱包装费">
<el-input v-model="form.a" placeholder="请输入纸箱包装费">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="内陆运输费">
<el-input v-model="form.a" placeholder="请输入内陆运输费">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="打包费">
<el-input v-model="form.a" placeholder="请输入打包费">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="易碎标签">
<el-input v-model="form.a" placeholder="请输入易碎标签">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="其他费用">
<el-input v-model="form.a" placeholder="请输入其他费用">
<el-select v-model="form.b" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-input>
</el-form-item>
<div style="text-align: center">
<el-button type="primary">转异</el-button>
<el-button type="primary">完成入仓</el-button>
</div>
</el-form>
<warehouse-area-dialog :visible.sync="areaVisible"></warehouse-area-dialog>
</div>
</template>
<script>
import {getCurrencyList} from "@/api/ecw/currency"
import {getOrder} from "@/api/ecw/order"
import orderBaseInfo from "@/components/OrderBaseInfo"
import WarehouseAreaDialog from '@/components/WarehouseAreaDialog'
export default {
name: "Warehousing",
components: {
orderBaseInfo,
WarehouseAreaDialog
},
mounted() {
if(this.$route.query.id){
this.orderId = this.$route.query.id
getOrder(this.orderId).then(r => this.order = r.data)
}
getCurrencyList().then(res => this.currencyList = res.data)
},
data() {
return {
areaVisible: false,
form: {
a: '',
b: 3
},
currencyList:[],
order: {}
}
}
}
</script>
<style scoped>
</style>
This diff is collapsed.
...@@ -60,8 +60,10 @@ ...@@ -60,8 +60,10 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">新增</el-button>
v-hasPermi="['ecw:product-price:create']">新增</el-button> </el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="multiple" v-hasPermi="['ecw:product:attr']">批量设置路线</el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
...@@ -71,7 +73,8 @@ ...@@ -71,7 +73,8 @@
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column label="序号" prop="id" width="50" /> <el-table-column label="序号" prop="id" width="50" />
<el-table-column label="商品编码" align="center" prop="productCode" > <el-table-column label="商品编码" align="center" prop="productCode" >
...@@ -347,6 +350,12 @@ export default { ...@@ -347,6 +350,12 @@ export default {
}, },
data() { data() {
return { return {
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
//特性列表 //特性列表
attrList:[], attrList:[],
typeList: [], typeList: [],
...@@ -708,6 +717,10 @@ export default { ...@@ -708,6 +717,10 @@ export default {
this.open = true; this.open = true;
this.title = "添加路线价格"; this.title = "添加路线价格";
}, },
// 批量设置路线
handleEdit() {
this.$router.push('product-price/edit?id=' + this.ids)
},
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
return this.$router.push('product-price/edit?id=' + row.id) return this.$router.push('product-price/edit?id=' + row.id)
...@@ -826,6 +839,12 @@ export default { ...@@ -826,6 +839,12 @@ export default {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
},
// 表格多选
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
} }
} }
}; };
......
...@@ -78,6 +78,11 @@ ...@@ -78,6 +78,11 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.type == 2">
<el-form-item label="显示菜单" prop="isShowInMenuBar">
<dict-selector v-model="form.isShowInMenuBar" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" form-type="radio" />
</el-form-item>
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item v-if="form.type != '3'" label="菜单图标"> <el-form-item v-if="form.type != '3'" label="菜单图标">
<el-popover placement="bottom-start" width="460" trigger="click" @show="$refs['iconSelect'].reset()"> <el-popover placement="bottom-start" width="460" trigger="click" @show="$refs['iconSelect'].reset()">
...@@ -242,6 +247,7 @@ export default { ...@@ -242,6 +247,7 @@ export default {
parentId: 0, parentId: 0,
name: undefined, name: undefined,
icon: undefined, icon: undefined,
isShowInMenuBar: undefined,
type: SystemMenuTypeEnum.DIR, type: SystemMenuTypeEnum.DIR,
sort: undefined, sort: undefined,
status: CommonStatusEnum.ENABLE status: CommonStatusEnum.ENABLE
......
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