Commit b9d19d8c authored by dragondean@qq.com's avatar dragondean@qq.com

订单控货ui

parent b007a325
<template>
<el-row class="" :gutter="10">
<el-col :span="10">
<el-card>
<div slot="header" class="header">
<el-input v-model="queryParams.searchKey" placeholder="用户名/手机/邮箱" style="width:200px" />
<!-- <dict-selector :type="DICT_TYPE.USER_TYPE" v-model="queryParams.customerType" style="width:100px" /> -->
<el-button type="primary" @click="reLoad">搜索</el-button>
</div>
<div class="list">
<div class="item" v-for="item in list" :key="item.customerContactsId">
<el-link class="el-icon-plus" @click="choose(item)" :disabled="selectedIds.indexOf(item.customerContactsId) > -1" />
{{item.customerName}} - {{item.contactsName}}{{item.areaCode}} {{item.phoneNew}}
</div>
</div>
</el-card>
</el-col>
<el-col :span="10">
<el-card>
<div slot="header" class="header">
已选客户
</div>
<div class="list">
<div class="item" v-for="item in choosedList" :key="item.customerContactsId">
<el-link class="el-icon-delete" @click="remove(item)" />
{{item.customerName}} - {{item.contactsName}}{{item.areaCode}} {{item.phoneNew}}
</div>
</div>
</el-card>
</el-col>
</el-row>
</template>
<script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
export default {
props:{
value: {
type: Array,
default: () => {
return []
}
}
},
data(){
return {
list:[],
queryParams:{
page: 1,
searchKey: null,
// level: null
},
choosedList:[]
}
},
computed:{
selectedIds(){
let arr = []
this.choosedList.forEach(item => {
arr.push(item.customerContactsId)
})
return arr
}
},
watch:{
selectedIds(val){
this.$emit('input', val)
},
value(val){
if(Array.from(new Set(val)).sort().join(',') != Array.from(new Set(this.selectedIds)).sort().join(',')){
this.getChoosedList()
}
}
},
created(){
/* if(this.value && this.value.length){
this.getChoosedList()
} */
this.reLoad()
},
methods:{
getChoosedList(){
if(!this.value || !this.value.length){
return
}
getCustomerContactsSelect({ids: this.value.join(',')})
.then(res => {
this.$set(this, 'choosedList', res.data)
})
},
reLoad(){
this.queryParams.page = 1
this.list = []
this.getList()
},
getList(){
getCustomerContactsSelect(this.queryParams).then(res => {
this.list = res.data
})
},
choose(item){
this.choosedList.push(item)
},
remove(item){
this.choosedList.forEach((item,index) => {
if(item.customerContactsId==item.customerContactsId) this.choosedList.splice(index,1)
})
}
}
}
</script>
<style scoped lang="scss">
.header{
>div{
margin-right: 5px;
}
}
.list{
height: 200px;
border: 1px solid #ccc;
overflow-y: auto;
overflow-x: hidden;
padding: 0 10px;
}
</style>
\ No newline at end of file
<template>
<el-select
v-model="index"
filterable
clearable
remote
reserve-keyword
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="`${item.name}(${item.number})`"
:value="index">
</el-option>
</el-select>
</template>
<script>
import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
// TODO 接口暂不支持关键词搜索,待接口支持后完善
export default {
props:{
productType: [String, Number],
value: [String, Number]
},
data(){
return {
index: null,
list:[],
loading: false
}
},
watch:{
index(val){
this.$emit('input', val !== null ? this.list[val].id: null)
this.$emit('change', val !== null ? this.list[val]: null)
},
value(val){
this.init()
}
},
created(){
this.init()
},
methods:{
init(){
if(!this.value) return
let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){
getSupplier(this.value).then(res => {
this.list.unshift(res.data)
this.index = 0
})
}
},
remoteMethod(keyword){
let params = {}
params.searchKey = keyword
this.loading = true
getSupplierPage(params)
.then(res => this.list = res.data)
.finally(() => this.loading = false)
}
}
}
</script>
\ No newline at end of file
......@@ -11,7 +11,7 @@
/>
<el-form label-position="left" label-width="100px">
<el-form-item label="抄送">
<el-select v-model="valueSync" multiple placeholder="请选择抄送人">
<el-select v-model="valueSync" multiple placeholder="请选择抄送人" style="width:100%">
<el-option
v-for="item in users"
:key="item.id"
......
......@@ -14,32 +14,6 @@ export const formConf = {
// 输入型组件 【左面板】
export const inputComponents = [
{
// 组件的自定义配置
__config__: {
label: '表格输入',
labelWidth: null,
showLabel: true,
changeTag: true,
tag: 'table-form',
tagIcon: 'input',
defaultValue: [],
required: false,
layout: 'colFormItem',
span: 24,
document: 'https://element.eleme.cn/#/zh-CN/component/input',
// 正则校验规则
regList: []
},
// 组件的插槽属性
__slot__: {
prepend: '',
append: ''
},
// 其余的为可直接写在组件标签上的属性
title: '表格标题',
style: { width: '100%' },
},
{
// 组件的自定义配置
__config__: {
......
......@@ -101,6 +101,8 @@ export const DICT_TYPE = {
ECW_HARVEST_METHOD: 'harvest_method', // 收货方式
ECW_PAY_ADVANCE: 'pay_advance', // 是否预付
ECW_BEGINTIME_TYPE_ENDTIME: 'begintime_type_endtime', // 时间筛选字段(订单)
ECW_CUSTOM_DRAWEE: 'custom_drawee', // 自定义付款人费用类型
ECW_IS_DRAFT: 'is_draft', // 草稿发布状态
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -172,7 +172,7 @@
>
<dict-selector v-if="form.type != 1" :type="DICT_TYPE.ECW_SUITABLE_USER_TYPE" v-model="form.suitableUserType" defaultable />
<dict-selector form-type="radio" v-else :type="DICT_TYPE.ECW_SUITABLE_USER_TYPE" :filter="item => item.colorType == 'danger'" v-model="form.suitableUserType" defaultable />
<customers-selector v-if="showCustomerSelector" v-model="form.customerIds" style="margin-top:5px" />
<customer-contacts-selector v-if="showCustomerSelector" v-model="form.customerIds" style="margin-top:5px" />
</el-form-item>
<el-form-item
label="适用线路类型"
......@@ -249,7 +249,7 @@ import {
exportCouponExcel,
getCouponSelect
} from "@/api/ecw/coupon";
import CustomersSelector from '@/components/CustomersSelector'
import CustomerContactsSelector from '@/components/CustomerContactsSelector'
import {getDictData} from '@/utils/dict'
import RoutersSelector from '@/components/RoutersSelector'
import ProductsSelector from '@/components/ProductsSelector'
......@@ -257,7 +257,7 @@ import Editor from '@/components/Editor'
import Selector from '@/components/Selector/index'
export default {
name: "CouponEdit",
components: {CustomersSelector, RoutersSelector, ProductsSelector, Editor, Selector},
components: {CustomerContactsSelector, RoutersSelector, ProductsSelector, Editor, Selector},
data() {
return {
// 遮罩层
......
......@@ -154,9 +154,14 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="createTime" width="180">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_DRAFT" :value="row.status" />
</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)"
<el-button v-if="scope.row.status != 1" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:coupon:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:coupon:delete']">删除</el-button>
......
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="日期筛选">
<dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" style="width: 150px; margin-right: 5px" />
<el-date-picker v-model="dateFilter" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="始发地" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" placeholder="请选择始发地">
<el-option v-for="item in expoerCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="目的地" prop="destWarehouseId">
<el-select v-model="queryParams.destWarehouseId" placeholder="请选择目的地">
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="运输方式" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" />
</el-form-item>
<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="prodId">
<product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="控货" prop="isCargoControl">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="订单状态" prop="status">
<dict-selector :type="DICT_TYPE.PAY_ORDER_STATUS" v-model="queryParams.status"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="提单号" prop="tidanNo">
<el-input v-model="queryParams.tidanNo" placeholder="提单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="发货人" prop="consignorId">
<el-input v-model="queryParams.consignorId" placeholder="发货人" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="收货人" prop="consigneeId">
<el-input v-model="queryParams.consigneeId" placeholder="收货人" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="报关方式" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="唛头" prop="marks">
<el-input v-model="queryParams.marks" placeholder="唛头" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
:loading="exportLoading" v-hasPermi="['ecw:order:export']">导出</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单编号" width="120px" align="center" prop="orderNo" >
<template slot-scope="scope">
<span>{{ scope.row.orderNo }}</span>
</template>
</el-table-column>
<el-table-column label="唛头" align="center" prop="marks" />
<el-table-column label="箱数" align="center" prop="sumNum">
<template slot-scope="{row}">{{row.totalNum}}</template>
</el-table-column>
<el-table-column label="已放箱数" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="提单号" align="center" prop="status">
<template slot-scope="scope">
{{scope.row.tidanNo}}
</template>
</el-table-column>
<el-table-column label="放货人" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template>
</el-table-column>
<el-table-column label="控货状态" align="center" prop="transportId">
<template slot-scope="{row}">
// TODO
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
<template slot-scope="scope">
<el-button type="text" size="mini" @click="showReleaseOrderId=scope.row.orderId">放货</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/associated-order/${scope.row.orderId}`)" >修改</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >取消</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >放货复核</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >查看</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >调货</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >反复核</el-button>
<el-button type="text" size="mini" @click="showTransferOrderId = scope.row.orderId" >控货权转移</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList" />
<transfer v-if="showTransferOrderId" order-id="1" @close="showTransferOrderId=null" />
<release v-if="showReleaseOrderId" order-id="1" @close="showReleaseOrderId=null" />
</div>
</template>
<script>
import Selector from '@/components/Selector'
import ProductSelector from '@/components/ProductSelector'
import { getProductAttrList } from '@/api/ecw/productAttr'
import CustomerSelector from '@/components/CustomerSelector'
import specialNeeds from '@/views/ecw/order/components/specialNeeds';
import { getTradeCityList } from '@/api/ecw/region'
import Transfer from '@/views/ecw/order/components/Transfer'
import Release from './components/Release'
import {
getOrder,
getOrderPage,
exportOrderExcel,
} from "@/api/ecw/order";
export default {
name: "Order",
components: {
CustomerSelector, ProductSelector, Selector, Transfer, Release
},
data() {
return {
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 订单列表
list: [],
// 弹出层标题
title: "",
// 查询参数
queryParams: {
page: 1,
rows: 10
},
tradeCityList: [],
productAttrList: [], // 商品属性
molecule: '', //重货比分子
denominator: '', //重货比分母
dateFilterType: '', //日期筛选类别
dateFilter: [], //筛选日期
showTransferOrderId: null, // 控制权转移操作订单
showReleaseOrderId: null
};
},
computed: {
expoerCityList() {
return this.tradeCityList.filter(item => item.type == 2)
},
importCityList() {
return this.tradeCityList.filter(item => item.type == 1)
},
combinedQueryParams(){
let timeParams = {}
if(this.dateFilterType && this.dateFilter){
timeParams['begin' + this.dateFilterType] = this.dateFilter[0]
timeParams['end' + this.dateFilterType] = this.dateFilter[1]
}
return Object.assign({}, this.queryParams, timeParams)
}
},
created() {
this.getList();
getProductAttrList().then(res => this.productAttrList = res.data)
getTradeCityList().then(res => this.tradeCityList = res.data)
},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
getOrderPage(this.combinedQueryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
// 执行导出
this.$modal.confirm('是否确认导出所有订单数据项?').then(() => {
this.exportLoading = true;
return exportOrderExcel(this.combinedQueryParams);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => { });
},
// 表格多选
handleSelectionChange(selection) {
this.ids = selection.map(item => item.orderId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
handleEdit() {
this.$router.push({
path:'/order/batch-single-application',
query:{list:this.ids.join(',')}
})
},
moleculeChange() { },
denominatorChange() { },
specialRendering(val){
if(val !== undefined){
let i = val.split(',')
let special = this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
return i.indexOf(e.value) > -1
})
return special
}
},
deleteSpecial(id,orderId){
orderSpecialNeed({orderId:orderId,advanceType:id}).then(
r =>{
if(r.code === 0){
this.getList()
}
}
)
},
}
};
</script>
<template>
<div class="app-container">
<div class="title">控货订单</div>
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货数" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
111 m³
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
111 kg
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="可放货箱数" prop="field105">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="已放货箱数" prop="field106">
111
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="title">放货详情</div>
<el-table :data="[1]" border>
<el-table-column label="序号" width="50px">
</el-table-column>
<el-table-column label="收货人">
1
</el-table-column>
<el-table-column label="控货箱数">
1
</el-table-column>
<el-table-column label="放货箱数">
1
</el-table-column>
<el-table-column label="体积(m³)">
1
</el-table-column>
<el-table-column label="提单号">
1
</el-table-column>
<el-table-column label="备注">
1
</el-table-column>
<el-table-column label="操作人">
1
</el-table-column>
<el-table-column label="日期">
1
</el-table-column>
<el-table-column label="状态">
1
</el-table-column>
<el-table-column label="操作" width="300px">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="showEdit=true">修改</el-button>
<el-button type="danger" size="mini">取消</el-button>
<el-button type="success" size="mini" @click="review">放货复核</el-button>
</template>
</el-table-column>
</el-table>
<div class="title">历史放货记录</div>
<el-table :data="[1]" border>
<el-table-column label="序号" width="50px">
</el-table-column>
<el-table-column label="操作">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请原因">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="附件">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请时间">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请人">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="审批时间">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="审批人">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<edit v-if="showEdit" @close="showEdit=false" />
</div>
</template>
<script>
import edit from './components/CargoControlEdit.vue'
export default {
components: {edit},
data(){
return {
showEdit: false,
formData:{}
}
},
methods:{
review(){
this.$confirm('已核实放货信息,确认放货?')
.then(res => {
this.$alert('// TODO ')
})
}
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" size="small" label-width="100px" >
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="收货人" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话" prop="field103">
111
</el-form-item>
</el-col>
</el-row>
<el-form-item label="总控货箱数" prop="field105">
111
</el-form-item>
<el-form-item label="原放货箱数" prop="field106">
111
</el-form-item>
<el-form-item label="现放货箱数" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item>
<el-form-item label="备注" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item>
<el-form-item label="控货手机号" prop="field106">
13000000000
</el-form-item>
<el-form-item label="手机验证码" prop="field106">
<el-input v-model="formData.cnt" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<el-button type="default">获取验证码</el-button>
</el-form-item>
<div class="title">审批流程</div>
<work-flow bmpkey="free_apple" />
<el-form-item label="">
<el-button type="primary" @click="$alert('// TODO')">提交申请</el-button>
<el-button @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
<release-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import releaseAgreement from "./releaseAgreement"
import WorkFlow from '@/components/WorkFlow'
export default {
props:{
orderId: [String, Number]
},
components: {releaseAgreement, WorkFlow},
data(){
return {
show: false,
detail: null,
formData:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '放货修改'
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总箱数" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货箱数" prop="field105">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="剩余放货箱数" prop="field106">
111
</el-form-item>
</el-col>
</el-row>
<div class="title">请填写放货信息</div>
<el-row>
<el-col :span="8">
<el-form-item label="收货人" prop="field108">
<el-input v-model="formData.field108" placeholder="请输入收货人" clearable ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人电话" prop="field109">
<el-input v-model="formData.field109" placeholder="请输入收货人电话" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人邮箱" prop="field110">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[1]" border>
<el-table-column label="控货箱数">
</el-table-column>
<el-table-column label="放货箱数">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="体积(m³)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="重量(kg)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
<el-input v-model="formData.field117" placeholder="请输入控货手机号" clearable >
</el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="field118">
<el-input v-model="formData.field118" placeholder="请输入手机验证码" clearable style="width:200px; margin-right:10px" ></el-input>
<el-button type="success">获取验证码</el-button>
</el-form-item>
<el-form-item label="" prop="field117" style="margin-top:20px">
<el-button type="success">确认放货</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
<release-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import ReleaseAgreement from "./ReleaseAgreement"
export default {
props:{
orderId: [String, Number]
},
components: {ReleaseAgreement},
data(){
return {
show: false,
detail: null,
formData:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '控货权转移'
if(this.detail){
t += '-' + this.detail.orderNo
}
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<div>
<h2>《捷道控放货须知》</h2>
<pre>
请您仔细阅读我们的控货须知,如果您对此须知中有任何部分存在疑问,请联系我司售前客服,如您已下单表示您已清楚我司控放货流程及风险。
1. 关于控货与放货
1.1控货是指由发货人与我司约定在货物的国际运输过程中,我司作为第三方对该货物进行临时控制;非经发货人按约定程序授权,我司不解除对该货物的控制的行为;
1.2您在订舱时选择控货选项,在货物入仓后,系统将会自动生成入仓号,表示货物已经控货成功;
1.3同一入仓号所属的货物只能控货一次,若出现分批次放货的情形,则最多不得超过3次,且每次只能有一个提货人;
1.4货物运抵目的地之后捷道公司会对货物进行临时控制。一经向系统申请放货并获得系统确认,则表明我司已获得您的授权,我司将根据约定向提货单持有人放货;
1.5您应在货物抵达目的地后30个自然日内通知捷道公司放货。尼日利亚:超过30日的,您应向捷道公司支付相应的仓储费尼;超过30天每天收取20naira/CBM ,超过60天每天40naira/CBM ,超过90天每天60naira/CBM;加纳:超过15日,需支付每天$1/CBM,超过180个自然日捷道公司有权根据依照相关法律规定处理该临时控制的货物;
1.6放货方式:A:登陆我司后台www.groupage.cn点击放货,通过账号原始绑定手机获取验证码进行放货;B:联系我司客服进行放货,联系电话4009009962,上班时间周一至周六 9:00-18:00。
2. 免责声明
2.1接受控货并不表明捷道公司对您货物所有权瑕疵进行担保;
2.2捷道公司经授权放货不代表同意对买卖双方的货款结算进行担保;
2.3若系统后台注册信息与实际信息不一致,如绑定手机号码需要更改,请自行登录系统后台操作,我司不提供任何注册信息主动变更服务,因注册信息与实际不一致而造成的损失,由您自行承担。
</pre>
</div>
</template>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog">
<div class="" v-if="agreement">
<el-form ref="form" :model="form" label-position="left" label-width="120px">
<el-form-item v-if="detail" label="原控货人">
<el-input v-model="detail.orderNo" readonly></el-input>
</el-form-item>
<el-form-item label="原控货手机号" prop="start" required>
<el-input v-model.number="form.start" type="number"></el-input>
</el-form-item>
<el-form-item label="新控货人" prop="end" required>
<el-input v-model.number="form.end" type="number" :max="detail ? detail.num : 1"></el-input>
</el-form-item>
<el-form-item label="新控货手机号" prop="start" required>
<el-input v-model.number="form.start" type="number">
<el-select slot="prepend" v-model="form.areaCode" placeholder="">
<el-option :label="1" :value="1"></el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="新控货人邮箱" prop="end" required>
<el-input v-model.number="form.end" type="number" :max="detail ? detail.num : 1"></el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="end" required>
<el-input v-model.number="form.end" type="number">
<span slot="append">获取验证码</span>
</el-input>
</el-form-item>
<el-form-item label="">
<el-button type="primary" @click="showPreview">确定转移</el-button>
</el-form-item>
</el-form>
</div>
<div v-else>
<transfer-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import TransferAgreement from "./TransferAgreement"
export default {
props:{
orderId: [String, Number]
},
components: {TransferAgreement},
data(){
return {
show: false,
detail: null,
form:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '控货权转移'
if(this.detail){
t += '-' + this.detail.orderNo
}
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
\ No newline at end of file
<template>
<pre>
控货权转移须知
《控货权转移须知》
为了切实加强施工现场安全生产管理,依照《中华人民共和国安全生产法》、《中华人民共和国建筑法》、《中华人民共和国合同法》以及《建设工程安全生产管理条例》建设部《施工现场临时用电安全技术规范》(JGJ46-88)、《建筑施工安全检查标准》(JGJ59-99),双方本着平等、自愿的原则,签订本协议书。甲方和乙方均严格遵守本协议书规定的权力、责任和义务,确保施工现场的安全生产和施工现场临时用电的安全。
一、甲方的权利、责任和义务:
1、贯彻落实国家有关施工现场安全生产、文明施工的法规和管理规定,对乙方施工现场和区域进行全面的安全生产管理和监督检查并对施工现场临时用电进行安全检查与指导。
2、及时纠正乙方施工人员违章指挥和违章作业行为,并按照有关规定予以查处。对乙方施工区域内的重大安全事故隐患,应开具隐患通知单。
3、要求乙方提供施工现场《生产安全事故应急救援预案》。
4、建立健全施工现场各项安全生产管理制度。
5、对乙方的安全生产培训、劳动保护用品的使用和危险预知工作提出指导意见,并监督落实情况。
6、对乙方提出的安全生产要求积极提供帮助。
7、向乙方提供电源时,应与乙方办理交接验收手续。
8、按照有关临时用电标准对乙方的临时用电设备设施进行监督和检查。发现乙方在临时用电中存在隐患必须责成乙方以整改。并监督整改落实情况。
9、对乙方特种作业人员的名单、操作证复印件及培训记录进行存档备案。
二、乙方的权利、责任和义务:
1、遵守国家有关施工现场安全生产的法规和管理制度,建立健全安全生产责任制和安全生产管理制度。严格执行国家施工现场临时用电及机械设备使用有关技术规范和安全操作规程,对施工区域内自行管辖的临时用电负全面管理责任。
2、服从甲方安全生产管理。
3、乙方必须为施工作业人员参加人身意外保险。
4、乙方造成生产安全事故,导致人员伤亡时,由乙方承担事故责任和经济责任。
5、未经安全生产教育培训和无证人员,不得上岗作业。
三、协议内容:
(一)登高上架要求
1、施工采用的脚手架、安全网必须由专业人员搭设,由项目经理(工地负责人)组织技术部、安全部门的有关人员验收合格后,方可投入使用,应按类别逐项查验,并应有验收记录。
2、高空作业时,严禁立体交叉作业。水平作业时,各工位间必须有一定的距离,作业人员必须配备相应劳动保护用品如安全帽、安全带、防护眼镜、防护手套、防护工作服等,并应正确使用,施工作业现场周边设置相关安全标志牌,并设专人巡查。
3、进入施工现场的人员必须佩带安全帽。凡在2m以上高处作业人员,必须正确使用安全带,安全带应高挂低用。
4、工程施工前,除工程技术人员对施工作业人员进行书面安全技术交底,并履行签字手续外,必须各施工班组长向施工人员进行班组交底及履行签字手续。
5、特殊工程施工项目如;电气、易燃、易爆容器、管道等,必须持有效证件及上岗证的专业人员操作。
6、拆除施工现场,必须设有临时急救人员及药品或设立临时救助站。
7、严禁在工作前和工作中饮酒,不许穿高跟鞋、硬底鞋、拖鞋,应穿防滑鞋。
8、进入施工现场须服从领导和安检人员的指挥,遵守劳动纪律、严守岗位、不串岗,作业时思想要集中。
9、严禁随意拆除或损坏防护栏杆、拉杆、安全网、跳板、脚手板、支撑等防护设施。
10、面砖搬运、安装时应注意安全,防止因面砖翻倒而受伤。
11、各种材料加工时注意操作安全及施工用电,不得随便乱接乱拉电线。
12、施工现场各周边洞口,必须有符合安全规范要求的安全防护,若因施工作业场地要求而拆除的,操作完成后,立即恢复。
13、脚手架上禁止有探头板、飞跳板,脚手架上应满铺脚手板,脚手架上禁止堆放砂浆、砖块、面砖等物料。
14、不准从正在起吊、运吊中的物件下通过,以防突然事件,不准从高处往下跑、跳;不准在没有防护的外墙和外悬挑板等建筑物上行走;不准站在小推车等不稳定的物件上操作;不得攀登起重臂、绳索、脚手架、井字架和随同运料的吊盘和吊篮及吊装物上下;井架吊篮禁止乘人。
15、作业中不得往下投掷物件、碎砖、灰渣等,清理物料时应设溜槽或使用垃圾桶;手持工具和零星物料应随时放在工具袋中。
16、年龄未满18周岁者,患有心脏病、贫血、高血压、低血压、癫痫病及其他不适于高空作业的病症者严禁从事外墙施工作业。
17、遇到雷雨、大风等天气外墙施工应暂停作业。
18、手持电动工具使用前应进行检查,空载试验运转正常合格后方可使用,转移工作点应切断电源,潮湿场所严禁使用手持式电动工具。
19、作业前必须认真检
</pre>
</template>
\ No newline at end of file
......@@ -246,7 +246,7 @@
</el-descriptions>
<div class="card-title" style="padding:20px 0;">优惠信息</div>
<el-row v-for="(item, index) in couponTypeList" :key="item.value">
<el-row v-for="(item, index) in couponTypeList" :key="item.value" :gutter="10">
<el-col :span="2">{{index+1}}.{{item.label}}</el-col>
<el-col :span="4">
<el-select placeholder="请选择优惠" v-model="selectedCoupons[item.value]" :data-type="item.value" clearable>
......@@ -255,7 +255,7 @@
</template>
</el-select>
</el-col>
<el-col :span="2" v-if="getCoupon(selectedCoupons[item.value])"> -// TODO 美元</el-col>
<el-col :span="2" v-if="getCoupon(selectedCoupons[item.value])"> -{{getCoupon(selectedCoupons[item.value]).reduceAmount}} 美元</el-col>
<el-col :span="5" v-if="getCoupon(selectedCoupons[item.value])">有效期:{{getCoupon(selectedCoupons[item.value]).endTime || '永久有效'}}</el-col>
</el-row>
<el-descriptions :column="1" border>
......@@ -324,8 +324,8 @@
<dict-selector :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable form-type="radio" />
</el-descriptions-item>
<el-descriptions-item v-if="form.drawee==3" label="费用类型" :span="2">
<template v-for="(item,index) in customDraweeVOList" v-key="index">
<el-form-item :label="item.name" :key="index" >
<template v-for="(item,index) in customDraweeList" v-key="index">
<el-form-item :label="item.label" :key="index" >
<dict-selector :type="DICT_TYPE.DRAWEE" :filter="(e) => e.value == '1' || e.value == '2'" v-model="item.value" form-type="radio" />
</el-form-item>
</template>
......@@ -407,13 +407,8 @@ export default {
},
data() {
return {
customDraweeVOList: [
{name: '运费',value: undefined},
{name: '清关费',value: undefined},
{name: '其他费用',value: undefined},
{name: '报关费',value: undefined}
],
draweeList: [],
customDraweeList: [],
// draweeList: [],
// 遮罩层
loading: true,
productList:[], // 商品信息
......@@ -576,6 +571,13 @@ export default {
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({
label: item.label, // 显示文字
name: item.value, // key值
value: 2 // 1 发货人,2收货人,默认收货人,可修改
})
})
},
methods: {
onProductChange(row, product){
......@@ -708,7 +710,7 @@ export default {
// 修改的提交
if (this.form.orderNo != null) {
let data = Object.assign({}, this.form, {
customDraweeVOList: this.customDraweeVOList,
customDraweeVOList: this.customDraweeList,
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
orderItemVOList: this.productList,
couponIds: coupons.join(",")
......@@ -726,7 +728,7 @@ export default {
couponIds: coupons.join(","),
status: type
}, this.form, {
customDraweeVOList: this.customDraweeVOList,
customDraweeVOList: this.customDraweeList,
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
orderItemVOList: this.productList
})
......
......@@ -191,14 +191,14 @@ export default {
transportPrice: [{ required: true, message: "海运费不能为空", trigger: "blur" }],
clearancePrice: [{ required: true, message: "清关费不能为空", trigger: "blur" }],
advanceStatus: [{ required: true, message: "是否预付不能为空", trigger: "blur" }],
containerLocation: [{ required: true, message: "货柜位置不能为空", trigger: "blur" }],
square: [{ required: true, message: "方数不能为空", trigger: "blur" }],
//containerLocation: [{ required: true, message: "货柜位置不能为空", trigger: "blur" }],
//square: [{ required: true, message: "方数不能为空", trigger: "blur" }],
// zhongLinjie:[{ required: true, message: "默认重货标准不能为空", trigger: "blur" }],
// paoLinjie:[{ required: true, message: "默认泡货标准不能为空", trigger: "blur" }],
needBook: [{ required: true, message: "预约入仓不能为空", trigger: "blur" }],
},
product: null,
productType: null,
/* productType: null, */
currencyList: [],
unitList: [],
productTypeList: [],
......@@ -219,11 +219,11 @@ export default {
this.form.lineChannelList = []
}
},
product() {
/* product() {
getProductType(this.product.typeId).then(res => {
this.productType = res.data
})
},
}, */
form(val) {
if (!val) return
// 特殊需求回显
......@@ -265,18 +265,29 @@ export default {
}
this.lineList = res.data
})
}
/* // 指定产品
else if (this.$route.query.product_id) {
getProduct(this.$route.query.product_id).then(res => {
this.product = res.data
})
} */
// 获取类型列表
else {
}else{
this.productDisabled = false
// 获取类型列表
getProductTypeList().then(res => this.productTypeList = res.data)
if (this.$route.query.product_type) {
this.$set(this.form, 'productType', +this.$route.query.product_type)
}
if (this.$route.query.product_id) {
this.$set(this.form, 'productId', +this.$route.query.product_id)
/*
getProduct(this.$route.query.product_id).then(res => {
this.product = res.data
}) */
}
}
/* // 指定产品
else
} */
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
......
......@@ -69,7 +69,7 @@
@pagination="getList"/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典名称" prop="name">
<el-input v-model="form.name" placeholder="请输入字典名称" />
......
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