Commit 3f56be13 authored by dcy's avatar dcy

Merge remote-tracking branch 'origin/dev' into dev

parents 3ca01a36 53394ffa
......@@ -9,6 +9,16 @@ export function createWarehouse(data) {
})
}
//创建提单模板
export function createTemplate(data) {
console.log(data);
return request({
url: '/ecw/lading-template/create',
method: 'post',
data: data
})
}
// 更新仓库
export function updateWarehouse(data) {
return request({
......@@ -80,6 +90,14 @@ export function changeRouteStatus(data) {
})
}
export function getLadingTemplate(data) {
console.log(data);
return request({
url: '/ecw/lading-template/getByLineId?lineId='+data,
method: 'get'
})
}
/**查看已开通线路列表 */
export function openedRouterList(data = {}) {
return request({
......
......@@ -91,6 +91,7 @@ export const DICT_TYPE = {
ECW_TRADE_TYPE: 'trade_type', // 交货放肆
ECW_OFFER_RESULT: 'offer_result', // 报单结果 赢单 输单
ECW_WAREHOUSING_TYPE: 'warehousing_type', // 入仓类型
ECW_OFFER_STATUS: 'offer_status', // 销售阶段(报价单)
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -31,69 +31,73 @@
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<!-- <el-table-column label="主键ID" align="center" prop="offerId" /> -->
<el-table-column label="报价单号" align="center" prop="number" />
<!-- <el-table-column label="订单ids" align="center" prop="orderIds" /> -->
<el-table-column label="订单编号" align="center" prop="orderNo" />
<el-table-column label="客户名称" align="center" prop="consignorId" />
<!-- <el-table-column label="收货人id" align="center" prop="consigneeId" />
<el-table-column label="唛头" align="center" prop="marks" />
<el-table-column label="报关类别:我司全代:1,自单代报:2,混合报关:3" align="center" prop="customsType" />
<el-table-column label="始发地" align="center" prop="departureId" />
<el-table-column label="始发地信息" align="center" prop="departure" /> -->
<el-table-column label="目的地" align="center" prop="objectiveId" />
<!-- <el-table-column label="目的地信息" align="center" prop="objective" /> -->
<el-table-column label="预计结束时间" align="center" prop="stopTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.stopTime) }}</span>
<el-table v-loading="loading" :data="list" border>
<el-table-column label="报价单号" align="left" prop="number" width="200px" />
<el-table-column label="订单编号" align="left" prop="orderNo" />
<el-table-column label="客户名称" align="left" prop="relationName" />
<el-table-column label="目的地" align="center" prop="objectiveName" />
<el-table-column label="销售阶段" align="left" width="180">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="row.status" />
</template>
</el-table-column>
<el-table-column label="运输方式" align="center" prop="stopTime" width="180">
<el-table-column label="预计结束时间" align="left">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.stopTime) }}</span>
<span>{{ parseTime(scope.row.stopTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="业务员" align="center" prop="stopTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.stopTime) }}</span>
<el-table-column label="运输方式" align="left">
<template slot-scope="scope" v-if="scope.row.transportIds" >
<span v-for="(item, index) in scope.row.transportIds.split(',')" :key="index">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item" />
</span>
</template>
</el-table-column>
<!-- <el-table-column label="控货" align="center" prop="control" />
<el-table-column label="竞争对手" align="center" prop="competitor" />
<el-table-column label="重要程度" align="center" prop="importance" />
<el-table-column label="价格有效期开始" align="center" prop="startTime" width="180">
<el-table-column label="业务员" align="left">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startTime) }}</span>
暂无
</template>
</el-table-column>
<el-table-column label="价格有效期结束" align="center" prop="endTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endTime) }}</span>
<el-table-column label="预计销售额" align="center" prop="estCost">
<template slot-scope="{row}">
<div class="" v-if="row.estCostVO.clearanceNGN || row.estCostVO.clearanceRMB || row.estCostVO.clearanceUSD">
清关费:
<span v-if="row.estCostVO.clearanceNGN">{{row.estCostVO.clearanceNGN}}N</span>
<span v-if="row.estCostVO.clearanceRMB">{{row.estCostVO.clearanceRMB}}</span>
<span v-if="row.estCostVO.clearanceUSD">{{row.estCostVO.clearanceUSD}}$</span>
</div>
<div class="" v-if="row.estCostVO.seaNGN || row.estCostVO.seaRMB || row.estCostVO.seaUSD">
运费:
<span v-if="row.estCostVO.seaNGN">{{row.estCostVO.seaNGN}}N</span>
<span v-if="row.estCostVO.seaRMB">{{row.estCostVO.seaRMB}}</span>
<span v-if="row.estCostVO.seaUSD">{{row.estCostVO.seaUSD}}$</span>
</div>
</template>
</el-table-column>
<el-table-column label="交货方式:FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)" align="center" prop="tradeType" />
<el-table-column label="交货港口、地点" align="center" prop="tradeAdress" />
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column label="状态:取消报价:0,特价审批中:1,需求确认:2跟进中:3,赢单:4,输单:5,报价完成:6" align="center" prop="status" />
<el-table-column label="取消报价前状态" align="center" prop="oldStatus" />
<el-table-column label="报价关联客户,发货人:1,收货人:2" align="center" prop="relation" />
<el-table-column label="报价关联客户id" align="center" prop="relationId" />
<el-table-column label="佣金类型:0 无 1 明佣 2 暗佣 3 明+暗 " align="center" prop="commissionType" />
<el-table-column label="入仓类型类型" align="center" prop="warehousingType" />
<el-table-column label="原因" align="center" prop="reason" /> -->
<el-table-column label="预计销售额" align="center" prop="estCost" />
<!-- <el-table-column label="站内信状态,0未发送,1已发送" align="center" prop="sendstatus" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</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="['ecw:offer:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
<template v-if="[1,2].indexOf(scope.row.status) > -1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="$router.push('edit?id=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="$router.push('createLog?id=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">跟进</el-button>
</template>
<template v-if="scope.row.status == 2">
<el-button size="mini" type="text" icon="el-icon-edit" @click="$router.push('result?id=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">结果</el-button>
<el-button size="mini" type="text" icon="el-icon-edit"
v-hasPermi="['ecw:offer:update']">特价</el-button>
<el-button size="mini" type="text" icon="el-icon-edit"
v-hasPermi="['ecw:offer:update']">取消</el-button>
<el-button size="mini" type="text" icon="el-icon-edit"
v-hasPermi="['ecw:offer:update']">恢复</el-button>
</template>
<el-button size="mini" type="text" icon="el-icon-delete"
v-hasPermi="['ecw:offer:delete']">删除</el-button>
</template>
</el-table-column>
......@@ -102,118 +106,7 @@
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="报价单号" prop="number">
<el-input v-model="form.number" placeholder="请输入报价单号" />
</el-form-item>
<el-form-item label="订单ids" prop="orderIds">
<el-input v-model="form.orderIds" placeholder="请输入订单ids" />
</el-form-item>
<el-form-item label="订单编号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入订单编号" />
</el-form-item>
<el-form-item label="客户id,发货人" prop="consignorId">
<el-input v-model="form.consignorId" placeholder="请输入客户id,发货人" />
</el-form-item>
<el-form-item label="收货人id" prop="consigneeId">
<el-input v-model="form.consigneeId" placeholder="请输入收货人id" />
</el-form-item>
<el-form-item label="唛头" prop="marks">
<el-input v-model="form.marks" placeholder="请输入唛头" />
</el-form-item>
<el-form-item label="报关类别:我司全代:1,自单代报:2,混合报关:3" prop="customsType">
<el-select v-model="form.customsType" placeholder="请选择报关类别:我司全代:1,自单代报:2,混合报关:3">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="始发地" prop="departureId">
<el-input v-model="form.departureId" placeholder="请输入始发地" />
</el-form-item>
<el-form-item label="始发地信息" prop="departure">
<el-input v-model="form.departure" placeholder="请输入始发地信息" />
</el-form-item>
<el-form-item label="目的地" prop="objectiveId">
<el-input v-model="form.objectiveId" placeholder="请输入目的地" />
</el-form-item>
<el-form-item label="目的地信息" prop="objective">
<el-input v-model="form.objective" placeholder="请输入目的地信息" />
</el-form-item>
<el-form-item label="预计结束时间" prop="stopTime">
<el-date-picker clearable v-model="form.stopTime" type="date" value-format="yyyy-MM-dd" placeholder="选择预计结束时间" />
</el-form-item>
<el-form-item label="控货" prop="control">
<el-radio-group v-model="form.control">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="竞争对手" prop="competitor">
<el-input v-model="form.competitor" placeholder="请输入竞争对手" />
</el-form-item>
<el-form-item label="重要程度" prop="importance">
<el-input v-model="form.importance" placeholder="请输入重要程度" />
</el-form-item>
<el-form-item label="价格有效期开始" prop="startTime">
<el-date-picker clearable v-model="form.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择价格有效期开始" />
</el-form-item>
<el-form-item label="价格有效期结束" prop="endTime">
<el-date-picker clearable v-model="form.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择价格有效期结束" />
</el-form-item>
<el-form-item label="交货方式:FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)" prop="tradeType">
<el-select v-model="form.tradeType" placeholder="请选择交货方式:FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="交货港口、地点" prop="tradeAdress">
<el-input v-model="form.tradeAdress" placeholder="请输入交货港口、地点" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="状态:取消报价:0,特价审批中:1,需求确认:2跟进中:3,赢单:4,输单:5,报价完成:6" prop="status">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="取消报价前状态" prop="oldStatus">
<el-radio-group v-model="form.oldStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="报价关联客户,发货人:1,收货人:2" prop="relation">
<el-input v-model="form.relation" placeholder="请输入报价关联客户,发货人:1,收货人:2" />
</el-form-item>
<el-form-item label="报价关联客户id" prop="relationId">
<el-input v-model="form.relationId" placeholder="请输入报价关联客户id" />
</el-form-item>
<el-form-item label="佣金类型:0 无 1 明佣 2 暗佣 3 明+暗 " prop="commissionType">
<el-select v-model="form.commissionType" placeholder="请选择佣金类型:0 无 1 明佣 2 暗佣 3 明+暗 ">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="入仓类型类型" prop="warehousingType">
<el-select v-model="form.warehousingType" placeholder="请选择入仓类型类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="原因" prop="reason">
<el-input v-model="form.reason" placeholder="请输入原因" />
</el-form-item>
<el-form-item label="预计费用清单" prop="estCost">
<el-input v-model="form.estCost" placeholder="请输入预计费用清单" />
</el-form-item>
<el-form-item label="站内信状态,0未发送,1已发送" prop="sendstatus">
<el-radio-group v-model="form.sendstatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
......@@ -275,15 +168,6 @@ export default {
estCost: null,
sendstatus: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
number: [{ required: true, message: "报价单号不能为空", trigger: "blur" }],
consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }],
consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }],
sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }],
}
};
},
created() {
......@@ -306,47 +190,7 @@ export default {
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
offerId: undefined,
number: undefined,
orderIds: undefined,
orderNo: undefined,
consignorId: undefined,
consigneeId: undefined,
marks: undefined,
customsType: undefined,
departureId: undefined,
departure: undefined,
objectiveId: undefined,
objective: undefined,
stopTime: undefined,
control: undefined,
competitor: undefined,
importance: undefined,
startTime: undefined,
endTime: undefined,
tradeType: undefined,
tradeAdress: undefined,
remarks: undefined,
status: undefined,
oldStatus: undefined,
relation: undefined,
relationId: undefined,
commissionType: undefined,
warehousingType: undefined,
reason: undefined,
estCost: undefined,
sendstatus: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
......@@ -364,43 +208,12 @@ export default {
/** 新增按钮操作 */
handleAdd() {
return this.$router.push('edit')
this.reset();
this.open = true;
this.title = "添加报价单管理";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const offerId = row.offerId;
getOffer(offerId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改报价单管理";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.offerId != null) {
updateOffer(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
// 添加的提交
createOffer(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
return this.$router.push('edit?id=' + row.offerId)
},
/** 删除按钮操作 */
handleDelete(row) {
const offerId = row.offerId;
......
......@@ -108,6 +108,8 @@
<template slot-scope="scope">
<el-button size="mini" type="text" @click="routeStatusClick(scope.row)"
v-hasPermi="['ecw:warehouse:routerQuery']">{{scope.row.lineId ? '关闭线路' : '开通线路'}}</el-button>
<el-button size="mini" type="primary" @click="templateClick(scope.row)" v-if="scope.row.lineId != null"
v-hasPermi="['ecw:warehouse:routerQuery']">设置路线提单模板</el-button>
</template>
</el-table-column>
</el-table>
......@@ -245,11 +247,77 @@
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="设置路线提单模板" :visible.sync="templateOpen" width="1000px" append-to-body>
<el-form ref="form" :model="ladingform" :rules="rules" label-width="80px">
<el-form-item label="货柜前缀" prop="prefixCounter">
<el-input v-model="ladingform.prefixCounter" placeholder="请输入货柜前缀" />
</el-form-item>
<el-form-item label="抬头" prop="titleZh">
<editor v-model="ladingform.titleZh" :min-height="192"/>
</el-form-item>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>账户详情</span>
<el-button style="float: right;" size="small" type="primary" @click="handleAddAccount">添加账户+</el-button>
</div>
<el-table
:data="arr"
style="width: 100%"
>
<el-table-column
prop="detail"
label="详情"
width=""
>
<template v-slot="{ row, column, $index }">
<el-input v-model="row.detail" placeholder="请输入详情" size="mini"/>
</template>
</el-table-column>
<el-table-column
prop="name"
label="名称"
width=""
>
<template v-slot="{row}">
<el-input v-model="row.name" placeholder="请输入名称" size="mini"/>
</template>
</el-table-column>
<el-table-column
prop="company"
label="公司"
>
<template v-slot="{row}">
<el-input v-model="row.company" placeholder="请输入公司" size="mini"/>
</template>
</el-table-column>
<el-table-column
prop="operate"
label="操作"
>
<template slot-scope="scope">
<el-button type="danger" @click="delRow(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-form-item label="条款" prop="contentZh">
<editor v-model="ladingform.contentZh" :min-height="192"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitTemplateForm">保 存</el-button>
<el-button @click="resetTemplate()">重 置</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createWarehouse, updateWarehouse, deleteWarehouse, getWarehouse, getWarehousePage,
import { createWarehouse, updateWarehouse, deleteWarehouse, getWarehouse, getWarehousePage,createTemplate,getLadingTemplate,
exportWarehouseExcel,routerList,changeRouteStatus,deptBind,deptList } from "@/api/ecw/warehouse";
import { getNodePage } from "@/api/ecw/node";
import { getListTree } from "@/api/ecw/region";
......@@ -257,11 +325,15 @@ import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import {CommonStatusEnum} from '@/utils/constants'
import { uploadFile } from "@/api/infra/file";
import { listDept } from "@/api/system/dept";
import Editor from '@/components/Editor';
import { has } from 'min-dash';
import Template from "../../cms/template/index";
export default {
name: "Warehouse",
components: {
Template,
Editor
},
data() {
......@@ -315,6 +387,7 @@ export default {
title: "",
// 是否显示弹出层
open: false,
templateOpen:false,
dateRangeCreateTime: [],
isUpdate: false,
......@@ -331,7 +404,8 @@ export default {
id: null,
tradeType: null
},
arr:[],
cols:[{prop:"detail",label:"详情"},{prop:"name",label:"名称"},{prop:"company",label:"公司"},{prop:"operate",label:"操作"}],
// 查询参数
queryParams: {
pageNo: 1,
......@@ -356,6 +430,7 @@ export default {
},
// 表单参数
form: {checkList:[],},
ladingform: {prefixCounter:null,titleZh:null,contentZh:null,account:null,acctArr:[]},
// 表单校验
rules: {
nodeId: [{ required: true, message: "服务网点不能为空", trigger: "blur" }],
......@@ -446,6 +521,16 @@ export default {
});
},
delRow(index){
this.arr.splice(index, 1);
},
handleAddAccount(){
const obj = {"detail": "",
"name": "",
"company": ""};
this.arr.push(obj)
},
/** 查询部门列表 */
getDeptList() {
listDept(this.queryParams).then(response => {
......@@ -556,6 +641,21 @@ export default {
});
},
templateClick(row) {
getLadingTemplate(row.lineId).then(response => {
if(response.data!=null){
this.ladingform = response.data;
var jsonArr = JSON.parse(response.data.account);
for (var i in jsonArr) {
this.arr.push(jsonArr[i]);
}
}
});
this.templateOpen = true;
this.ladingform.lineId = row.lineId;
},
routeStatusClick(row) {
this.routeQueryParam.transportType = row.transportType;
this.routeQueryParam.warehouseId = row.id;
......@@ -650,6 +750,14 @@ export default {
this.open = false;
this.reset();
},
resetTemplate(){
this.ladingform={
prefixCounter:undefined,
titleZh:undefined,
account:undefined,
contentZh:undefined
}
},
/** 表单重置 */
reset() {
this.form = {
......@@ -766,6 +874,16 @@ export default {
});
});
},
submitTemplateForm(){
console.log(this.arr);
this.ladingform.account = JSON.stringify(this.arr);
createTemplate(this.ladingform).then(response => {
this.$modal.msgSuccess("设置路线提单模板成功");
this.templateOpen = false;
this.arr = [];
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
......
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