Commit 36a3de98 authored by 我在何方's avatar 我在何方
parents bf995089 d202add2
......@@ -106,7 +106,7 @@
//,fullscreen : false //是否开启初始化时即全屏,默认关闭
//,imagePopup:true //图片操作的浮层开关,默认打开
,imagePopup:true //图片操作的浮层开关,默认打开
//,autoSyncData:true //自动同步编辑器要提交的数据
//,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹
......@@ -297,7 +297,7 @@
//,toolbarTopOffset:400
//设置远程图片是否抓取到本地保存
//,catchRemoteImageEnable: true //设置是否抓取远程图片
,catchRemoteImageEnable: true //设置是否抓取远程图片
//pageBreakTag
//分页标识符,默认是_ueditor_page_break_tag_
......
......@@ -33,6 +33,14 @@ export function orderWarehouseInDelete(data){
data:data,
})
}
//获取退仓审批详情
export function getRollbackApprovalInfo(params){
return request({
url:'/order/order-warehouse-in/get-rollback-approval-info',
method:'get',
params
})
}
//通过bpmFormId 获得仓库审核单详情
export function warehouseApprovalGetByFormId(params){
return request({
......
......@@ -166,7 +166,7 @@ export function getBrankByCustomer(data){
//
export function levelLogPage(params){
return request({
url:'/customer/level-log/page',
url:'/customer/detail/infoList/levelLogPage',
method:'get',
params
})
......@@ -174,7 +174,31 @@ export function levelLogPage(params){
//获取信用等级日志列表
export function customerCreditLogPage(params){
return request({
url:'/customer/credit-log/page',
url:'/customer/detail/infoList/creditLogPage',
method:'get',
params
})
}
//客户详情订单分页
export function infoListOrderPage(params){
return request({
url:'/customer/detail/infoList/orderPage',
method:'get',
params
})
}
//客户详情 --- 报价
export function infoListOfferPage(params){
return request({
url:'/customer/detail/infoList/offerPage',
method:'get',
params
})
}
//客户数据
export function orderStatistics(params){
return request({
url:'/customer/detail/infoList/orderStatistics',
method:'get',
params
})
......
......@@ -171,6 +171,16 @@ export function orderWarehouseInUpdateApply(data){
data
})
}
// 入仓修改箱号
export function orderWarehouseInUpdateLabel(data){
return request({
url: '/order/order-warehouse-in/update-label',
method: 'post',
data
})
}
// 获取入仓修改审批单详情-审批使用
export function getWarehouseUpdateApprovalInfo(id) {
return request({
......@@ -429,3 +439,19 @@ export function orderSpecialNeedGet(params){
params
})
}
//取消调仓
export function cancelAdjust(data){
return request({
url:'/order/order-warehouse-in/cancel-adjust',
method:'post',
data
})
}
//取消订单费用申请
export function feeApplicationCancel(data){
return request({
url:'/order/fee-application/cancel',
method:'delete',
data
})
}
......@@ -10,6 +10,15 @@ export function createProductBrank(data) {
}
// 更新品牌
export function updateProductBrank(data) {
return request({
url: '/ecw/product-brank/update',
method: 'put',
data: data
})
}
// 修改品牌默认收费模式
export function changeFeeModel(data) {
return request({
url: '/ecw/product-brank/changeFeeMode',
......
......@@ -36,11 +36,11 @@ export function getUser(id) {
}
// 获得用户分页
export function getUserPage(query) {
export function getUserPage(params) {
return request({
url: '/member/user/page',
method: 'get',
params: query
params: params
})
}
......@@ -104,8 +104,8 @@ export function memberUserAuditIdCard(query) {
export function memberUserAuditEnterprise(query) {
return request({
url: '/member/user/audit-enterprise',
method: 'get',
params: query,
method: 'put',
data: query,
})
}
......@@ -143,3 +143,11 @@ export function userCreateAuditEnterprise(data){
data:data,
})
}
//新增用户
export function createAuditIdCard(data){
return request({
url:'/member/user/create-audit-idcard',
method:'put',
data
})
}
......@@ -60,3 +60,13 @@ export function exportNeedKnowExcel(query) {
responseType: 'blob'
})
}
// 下载需知
export function download(query) {
return request({
url: '/system/need-know/download',
method: 'get',
params: query,
responseType: 'blob'
})
}
......@@ -2,7 +2,7 @@
<el-dialog title="选择联系人" visible :before-close="closeDialog" :close-on-click-modal="false">
<div class="header mb-10 flex-center">
<div class="flex-center">关键字:</div>
<el-input v-model="form.searchKey" placeholder="" class="w-200"></el-input>
<el-input v-model="form.searchKey" clearable class="w-200"></el-input>
<el-button type="primary" class="ml-10" @click="handleQuery">搜索</el-button>
</div>
<div class="list">
......@@ -18,7 +18,7 @@
</div>
<div class="line">
<div class="label">邮箱:</div>
<div class="value">{{item.emial}}</div>
<div class="value">{{item.email}}</div>
</div>
<div class="line">
<div class="label">公司:</div>
......
......@@ -5,9 +5,10 @@
</div>
</template>
<script>
import {getNeedKnowByKey} from '@/api/system/needKnow'
import {getNeedKnowByKey, download} from '@/api/system/needKnow'
import html2canvas from 'html2canvas'
import FileSaver from 'file-saver'
import saveFie from '@/plugins/download'
export default {
props:{
keyname: String
......@@ -23,6 +24,11 @@ export default {
})
},
methods:{
downloadPdf(){
download({id: this.detail.id}).then(res => {
this.$download.pdf(res, '入仓须知.pdf')
})
},
download(){
// 直接保存图片
let l = this.$loading()
......
......@@ -108,11 +108,30 @@ import '@/styles/index.scss'
Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
})
// 重定向路由(关闭当前标签)
Vue.prototype.$redirect = (path) =>{
let currentView = router.history.current
router.replace(path)
store.dispatch("tagsView/delView", currentView)
}
window.ElementUI = Element
// 显示表单错误信息
Vue.prototype.$showFormValidateErrors = (errors) => {
let vm = new Vue()
let createElement = vm.$createElement
let fieldList = Object.values(errors)
Element.Notification({
title: '表单错误',
type: 'warning',
duration: 3000,
message: createElement('div', fieldList.map(function (errorList) {
return createElement('div', errorList.map((item) => {
return createElement('div', item.message)
}))
}))
})
}
Vue.config.productionTip = false
......
......@@ -24,6 +24,11 @@ export default {
this.download0(data, fileName, 'text/markdown');
},
// 下载pdf
pdf(data, fileName){
this.download0(data, fileName, 'application/pdf');
},
download0(data, fileName, mineType) {
// 创建 blob
let blob = new Blob([data], {type: mineType});
......
......@@ -32,7 +32,11 @@ export default {
// 关闭指定tab页签
closePage(obj) {
if (obj === undefined) {
return store.dispatch('tagsView/delView', router.currentRoute).then(({ lastPath }) => {
return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => {
let lastPath = '/'
if (visitedViews.length > 0){
lastPath = visitedViews[visitedViews.length - 1]
}
return router.push(lastPath || '/');
});
}
......
......@@ -252,6 +252,13 @@ export const constantRoutes = [
name: 'customerEdit',
meta: {title: '编辑客户', icon: '', activeMenu: '/customer/customer'}
},
{
path: 'add-edit/:customerId(\\d+)',
component: (resolve) => import('@/views/ecw/customer/edit'),
props: true,
name: 'customerEdit',
meta: {title: '新建客户', icon: '', activeMenu: '/customer/customer'}
},
{
path: 'query/:customerId(\\d+)',
component: (resolve) => import('@/views/ecw/customer/query'),
......
......@@ -317,7 +317,7 @@ export default {
/** 表格订单号点击 */
orderClick(row) {
orderTagList({ orderId: row.orderId }).then((res) => {
const { data = [] } = res;
const { data = {} } = res;
this.orderList = [];
// 取最长的list
let dataLength = data.loadList.length;
......
......@@ -74,6 +74,7 @@ export default {
};
},
created() {
this.getBoxInfo();
// 仓库
getWarehouseList().then((r) => {
this.warehouseList = r.data;
......@@ -99,9 +100,6 @@ export default {
this.allUsers = data.list ?? [];
});
},
activated() {
this.getBoxInfo();
},
methods: {
/* 获取仓库 */
importCityName(id) {
......
......@@ -33,7 +33,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="客户类别" prop="type">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" form-type="select" multiple v-model="form.type"></dict-selector>
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" form-type="checkbox" multiple v-model="form.type"></dict-selector>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -412,7 +412,7 @@ import {getTradeCityList} from "@/api/ecw/region"
import {getWarehouseList} from "@/api/ecw/warehouse"
import CustomerLineTable from '@/components/CustomerLineTable'
import {getCustomerSelect} from "@/api/ecw/customer"
import {listServiceUser} from "@/api/system/user"
import {listServiceUser, listSimpleUsers} from "@/api/system/user"
import { getZhongPaoBest, getZhongPaoPage } from '@/api/ecw/zhongPao'
import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import { getCountryListAll } from '@/api/ecw/country'
......@@ -456,7 +456,7 @@ export default {
getCustomerSelect().then(r => {
this.customerSelect = r.data
})
listServiceUser().then(r => {
listSimpleUsers().then(r => {
this.serviceUserList = r.data
})
getCountryListAll().then(r => {
......
......@@ -23,8 +23,8 @@
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
......@@ -209,8 +209,8 @@
<el-col :span="12">
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="form.customerService" placeholder="请选择客户经理">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
......@@ -535,7 +535,6 @@ export default {
// this.nodeList = r.data
// })
listServiceUser().then(r=>{
console.log(r,'客服');
this.customerServiceList = r.data;
})
getCountryListAll().then(r => {
......@@ -627,7 +626,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/customer/edit/0')
this.$router.push('/customer/add-edit/0')
// this.reset();
// this.open = true;
// this.title = "添加客户";
......
......@@ -109,7 +109,7 @@
<el-form-item label="报关方式:">
<dict-selector
:type="DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model="queryParams.customsType"
v-model="queryParams.customerType"
/>
</el-form-item>
<el-form-item label="控货">
......@@ -119,7 +119,8 @@
/>
</el-form-item>
<el-form-item label="入仓时间:">
<el-date-picker v-model="queryParams.rucangtime"
<el-date-picker v-model="rucangtime"
@change="changeDate"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
......@@ -172,55 +173,58 @@
</template>
</el-table-column>
</el-table>
<pagination @pagination="creditLogPage" :page.sync="queryParams.page" :limit.sync="queryParams.row" :total="orderTotal" ></pagination>
<pagination @pagination="getorderList" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="orderTotal" ></pagination>
</el-card>
</el-tab-pane>
<el-tab-pane label="报价">
<el-table
:data="[]"
:data="infoListOfferList"
style="width: 100%"
>
<el-table-column
prop=""
type="index"
label="序号"
>
</el-table-column>
<el-table-column
prop=""
prop="number"
label="报价单号"
>
</el-table-column>
<el-table-column
prop=""
prop="orderNo"
label="订单号"
>
</el-table-column>
<el-table-column
prop=""
prop="consignorName"
label="客户名称"
>
</el-table-column>
<el-table-column
prop=""
prop="objectiveName"
label="目的地"
>
</el-table-column>
<el-table-column
prop=""
label="销售阶段"
>
<template v-slot="{row}">
{{STATUS[row.status]}}
</template>
</el-table-column>
<el-table-column
prop=""
prop="stopTime"
label="预计结束时间"
>
</el-table-column>
<el-table-column
prop=""
prop="businessManagerName"
label="负责人"
>
</el-table-column>
</el-table>
<pagination @pagination="getInfoListOfferPage" :page.sync="infoListOfferFrom.pageNo" :limit.sync="infoListOfferFrom.pageSize" :total="infoListOfferTotal" ></pagination>
</el-tab-pane>
<el-tab-pane label="跟进">
<customer-follow ref="customerFollow" :id="id" :customer-id="id"></customer-follow>
......@@ -247,13 +251,13 @@
</el-tab-pane>
<el-tab-pane label="数据">
<el-descriptions :column="2">
<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="海空联运/海运拼柜/海运整柜/专线空运">{{orderStatisticsObj.hklyTotal || 0}}/{{orderStatisticsObj.hypgTotal || 0 }}/{{orderStatisticsObj.hyzgTotal || 0}}/{{orderStatisticsObj.zxkyTotal || 0}}</el-descriptions-item>
<el-descriptions-item label="最后交易日期">{{orderStatisticsObj.lastBusinessDate}}</el-descriptions-item>
<el-descriptions-item label="全部订单/控货订单">{{orderStatisticsObj.allOrderTotal || 0}}/{{orderStatisticsObj.controlOrderTotal || 0}}</el-descriptions-item>
<el-descriptions-item label="最后交易单号">{{orderStatisticsObj.lastBusinessOrderNo}}</el-descriptions-item>
<el-descriptions-item label="报价/下单/入仓">{{orderStatisticsObj.offerOrderTotal || 0}}/{{orderStatisticsObj.pickOrderTotal || 0}}/{{orderStatisticsObj.wareHousingTotal || 0}}</el-descriptions-item>
<el-descriptions-item label="储存量">{{orderStatisticsObj.stock || 0}}</el-descriptions-item>
<el-descriptions-item label="已出货订单">{{orderStatisticsObj.shipmentTotal || 0}}</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="品牌授权">
......@@ -306,15 +310,23 @@
<el-tab-pane label="信用日志">
<el-card class="box-card">
<div slot="header" class="clearfix">
<div style="width:300px;height: 300px;margin: auto">
</div>
<el-button style="float: right;" type="primary" @click="dialogVisible = true" >添加信用日志</el-button>
<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>
</div>
<el-table :data="customerCreditLogList">
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column prop="name" label="规则名称"></el-table-column>
<el-table-column prop="type" label="规则分类"></el-table-column>
<el-table-column prop="type" label="规则分类">
<template v-slot="{row}">
<dict-tag :type="DICT_TYPE.CUSTOMER_CREDIT_RULE_TYPE" :value="row.type" />
</template>
</el-table-column>
<el-table-column prop="score" label="规则得分"></el-table-column>
<el-table-column prop="remark" label="备注"></el-table-column>
<el-table-column label="添加人"></el-table-column>
......@@ -323,16 +335,19 @@
{{parseTime(row.createTime)}}
</template>
</el-table-column>
<el-table-column label="操作"></el-table-column>
</el-table>
<pagination @pagination="creditLogPage" :page.sync="customerCreditLogFrom.page" :limit.sync="customerCreditLogFrom.row" :total="customerCreditLogFrom.total" ></pagination>
<pagination @pagination="creditLogPage" :page.sync="customerCreditLogFrom.pageNo" :limit.sync="customerCreditLogFrom.pageSize" :total="customerCreditLogFrom.total" ></pagination>
</el-card>
</el-tab-pane>
<el-tab-pane label="等级日志">
<el-table style="width: 100%" :data="getCustomerGradeList">
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="规则名称" prop="name"></el-table-column>
<el-table-column label="规则分类" prop="type"></el-table-column>
<el-table-column label="规则分类" prop="type">
<template v-slot="{row}">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL_RULE_TYPE" :value="row.type" />
</template>
</el-table-column>
<el-table-column label="规则得分" prop="score"></el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column>
<el-table-column label="时间">
......@@ -340,9 +355,8 @@
{{parseTime(row.createTime)}}
</template>
</el-table-column>
<el-table-column label="操作"></el-table-column>
</el-table>
<pagination @pagination="getCustomerGrade" :page.sync="getCustomerGradeFrom.page" :limit.sync="getCustomerGradeFrom.row" :total="getCustomerGradeFrom.total" ></pagination>
<pagination @pagination="getCustomerGrade" :page.sync="getCustomerGradeFrom.pageNo" :limit.sync="getCustomerGradeFrom.pageSize" :total="getCustomerGradeFrom.total" ></pagination>
</el-tab-pane>
</el-tabs>
</el-col>
......@@ -378,7 +392,7 @@ import {
getCustomerSelect,
getBrankByCustomer,
levelLogPage,
customerCreditLogPage
customerCreditLogPage, infoListOrderPage, infoListOfferPage, orderStatistics
} from '@/api/ecw/customer'
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import { getProductTypeList } from '@/api/ecw/productType'
......@@ -389,6 +403,7 @@ import CustomerComplaint from '@/views/ecw/customerComplaint'
import { listServiceUser } from '@/api/system/user'
import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import {getOrderPage} from "@/api/ecw/order";
import Template from "@/views/cms/template";
export default {
name: 'query',
......@@ -396,6 +411,7 @@ export default {
customerId: String
},
components: {
Template,
CustomerFollow,
CustomerComplaint
},
......@@ -424,9 +440,20 @@ export default {
this.getCustomerGrade()
this.creditLogPage()
this.getorderList()
this.getInfoListOfferPage()
this.getOrderStatistics()
},
data() {
return {
STATUS:{
0:'取消报价',
1:'特价审批中',
2:'需求确认',
3:'跟进中',
4:'赢单',
5:'输单',
6:'报价完成'
},
dialogVisible:false,
DICT_TYPE,
getDictDataLabel,
......@@ -480,23 +507,31 @@ export default {
brandAuthorizationList:[],
brandAuthorizationTotal:0,
getCustomerGradeFrom:{
page:1,
rows:10,
pageNo:1,
pageSize:10,
total:0
},
getCustomerGradeList:[],
customerCreditLogFrom:{
page:1,
rows:10,
total: 0,
pageNo:1,
pageSize:10,
total:0
},
customerCreditLogList:[],
rucangtime:[],
queryParams:{
rows:10,
page:1
pageSize:10,
pageNo:1
},
orderList:[],
orderTotal:0
orderTotal:0,
infoListOfferFrom:{
pageNo:1,
pageSize:10,
},
infoListOfferTotal:0,
infoListOfferList:[],
orderStatisticsObj:{}
}
},
computed: {
......@@ -519,34 +554,66 @@ export default {
}
},
methods:{
changeDate(val){
if(val){
this.queryParams.houseStartDate = val[0];
this.queryParams.houseEndDate = val[1];
}else {
this.queryParams.houseStartDate = undefined;
this.queryParams.houseEndDate = undefined;
}
},
//品牌授权
getBrankByCustomerList(){
getBrankByCustomer({...this.brandAuthorizationFrom,customerId:this.id}).then(r => {this.brandAuthorizationList = r.data.list; this.brandAuthorizationTotal = r.data.total})
},
getCustomerGrade(){
levelLogPage({...this.getCustomerGradeFrom,customerId:this.id}).then(r => {
console.log(r)
levelLogPage({...this.getCustomerGradeFrom,customerId:this.id,total:undefined}).then(r => {
console.log(r,'客户等级');
if(r.code === 0){
this.getCustomerGradeList = r.data.list;
this.getCustomerGradeFrom.total = r.data.total;
}
})
},
// 获取信用等级日志列表
creditLogPage(){
customerCreditLogPage({...this.customerCreditLogFrom,customerId:this.id}).then(r => {
if(r.code === 0){
console.log(r,'r');
this.customerCreditLogList = r.data.list;
this.customerCreditLogFrom.total = r.data.total;
}
})
},
//订单
getorderList(){
getOrderPage({consignorId:this.id,...this.queryParams}).then(r => {
infoListOrderPage({customerId:this.id,...this.queryParams}).then(r => {
console.log(r)
if(r.code === 0){
this.orderList = r.data.list
this.orderTotal = r.data.total
}
})
},
// 客户报价
getInfoListOfferPage(){
infoListOfferPage({...this.infoListOfferFrom,customerId:this.id}).then(r => {
console.log(r,'报价')
this.infoListOfferList = r.data.list;
this.infoListOfferTotal = r.data.total;
}).catch(r => {
console.log(r,'报价')
})
},
// 数据
getOrderStatistics(){
orderStatistics({customerId:this.id}).then(r => {
console.log(r,'数据')
if(r.code === 0){
this.orderStatisticsObj = r.data
}
})
}
}
}
......
......@@ -23,8 +23,8 @@
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
<el-option v-for="dict in serviceStaffOptions"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
......@@ -195,8 +195,8 @@
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="form.customerService" placeholder="请选择客户经理">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
<el-option v-for="dict in serviceStaffOptions"
:key="dict.id" :label="dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
......
......@@ -24,8 +24,8 @@
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
......@@ -271,7 +271,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/customer/edit/0')
this.$router.push('/customer/add-edit/0')
// this.reset();
// this.open = true;
// this.title = "添加客户";
......
......@@ -244,7 +244,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/customer/edit/0')
this.$router.push('/customer/add-edit/0')
// this.reset();
// this.open = true;
// this.title = "添加客户";
......
......@@ -24,8 +24,8 @@
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
......@@ -278,7 +278,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/customer/edit/0')
this.$router.push('/customer/add-edit/0')
// this.reset();
// this.open = true;
// this.title = "添加客户";
......
......@@ -6,8 +6,8 @@
<div slot="header" class="card-title">{{$t('新建报价单')}}</div>
<el-form-item :label="$t('所属人')" prop="relation">
<el-radio-group v-model="form.relation">
<el-radio label="1">{{$t('发件人')}}</el-radio>
<el-radio label="2">{{$t('收件人')}}</el-radio>
<el-radio :label="1">{{$t('发件人')}}</el-radio>
<el-radio :label="2">{{$t('收件人')}}</el-radio>
</el-radio-group>
</el-form-item>
<br/>
......@@ -21,39 +21,39 @@
<div class="form-section">
<el-form-item :label="$t('发货人')" prop="consignorId" >
<div class="contact">
<el-input v-model="form.consignorName" placeholder="选择或新建" disabled/>
<el-input v-model="form.consignorName" placeholder="选择或新建" disabled style="width:120px"/>
<img src="@/assets/images/phonebook.png" class="phonebook" @click="contactChooseType='consignor'" />
<img src="@/assets/images/new_customer.png" class="phonebook" @click="quickCreateType='1'" />
</div>
</el-form-item>
<el-form-item :label="$t('发货人电话')" prop="consignorPhone">
<!-- <area-code-selector v-model="form.consignorCountryCode" class="w-200 mr-10" disabled /> -->
<el-input :value="`${form.consignorCountryCode || ''} ${form.consignorPhone || ''}`" class="w-200" disabled />
<el-input :value="`${form.consignorCountryCode || ''} ${form.consignorPhone || ''}`" class="w-200" disabled/>
</el-form-item>
<el-form-item :label="$t('发货人公司')" prop="consignorCompany">
<el-input v-model="form.consignorCompany" disabled />
<el-input v-model="form.consignorCompany" disabled class="w-200"/>
</el-form-item>
<el-form-item label="Email" prop="consignorEmail">
<el-input v-model="form.consignorEmail" disabled />
<el-input v-model="form.consignorEmail" disabled class="w-200"/>
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('收货人')" prop="consigneeId">
<div class="contact">
<el-input v-model="form.consigneeName" placeholder="请选择或新建" :disabled="true"/>
<el-input v-model="form.consigneeName" placeholder="请选择或新建" :disabled="true" style="width:120px"/>
<img src="@/assets/images/phonebook.png" class="phonebook" @click="contactChooseType='consignee'" />
<img src="@/assets/images/new_customer.png" class="phonebook" @click="quickCreateType='2'" />
</div>
</el-form-item>
<el-form-item :label="$t('收货人电话')" prop="consigneePhone">
<!-- <area-code-selector v-model="form.consigneeCountryCode" class="w-200 mr-10" disabled/> -->
<el-input :value="`${form.consigneeCountryCode || ''} ${form.consigneePhone || ''}`" class="w-200" disabled/>
<el-input :value="`${form.consigneeCountryCode || ''} ${form.consigneePhone || ''}`" class="w-200"/>
</el-form-item>
<el-form-item :label="$t('收货人公司')" prop="consigneeCompany">
<el-input v-model="form.consigneeCompany" :disabled="true" />
<el-input v-model="form.consigneeCompany" :disabled="true" class="w-200"/>
</el-form-item>
<el-form-item label="Email" prop="consigneeEmail">
<el-input v-model="form.consigneeEmail" :disabled="true"/>
<el-input v-model="form.consigneeEmail" :disabled="true" class="w-200"/>
</el-form-item>
</div>
......@@ -93,7 +93,7 @@
<div class="form-section">
<el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" @input="calculationPrice" />
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" @input="calculationPrice" class="w-200"/>
</el-form-item>
<el-form-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'" prop="channelId">
<selector
......@@ -103,18 +103,19 @@
value-field="channelId"
label-field="nameZh"
@input="calculationPrice"
class="w-200"
></selector>
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('始发城市')" prop="departureId">
<el-select v-model="form.departureId" :placeholder="$t('请选择始发地')">
<el-select v-model="form.departureId" :placeholder="$t('请选择始发地')" class="w-200">
<el-option v-for="item in exportCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的城市')" prop="objectiveId">
<el-select v-model="form.objectiveId" :placeholder="$t('请选择目的地')">
<el-select v-model="form.objectiveId" :placeholder="$t('请选择目的地')" class="w-200">
<el-option v-for="item in importCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
......@@ -122,7 +123,7 @@
<div class="form-section">
<el-form-item :label="$t('选择线路')" prop="lineId">
<!-- <el-input :value="getRouterNameById(form.lineId)" readonly :placeholder="$t('请在右侧选择线路')"></el-input> -->
<el-input :value="selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''" disabled :placeholder="$t('请在右侧选择线路')"></el-input>
<el-input :value="selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''" disabled :placeholder="$t('请在右侧选择线路')" class="w-200"></el-input>
</el-form-item>
<select size="5" v-model="form.lineId" style="min-width: 300px; border:1px solid #DCDFE6; border-radius:4px">
<template v-for="item in routerList">
......@@ -208,7 +209,7 @@
}"
class="mb-0 mr-0"
>
<el-input v-model="scope.row.worth" />
<el-input v-model="scope.row.worth" @input="calculationPrice" />
</el-form-item>
</template>
</el-table-column>
......@@ -294,13 +295,13 @@
{{fee.insuranceFee || 0}} {{$t('美元')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('总运费')">
<template v-for="item in clearanceFeeList">
<template v-for="item in freightFeeList">
<div :key="item.currencyId">{{item.amount || 0}}{{currencyMap[item.currencyId]}}</div>
</template>
</el-descriptions-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-descriptions-item :label="$t('总清关费')">
<template v-for="item in freightFeeList">
<template v-for="item in clearanceFeeList">
<div :key="item.currencyId">{{item.amount || 0}}{{currencyMap[item.currencyId]}}</div>
</template>
</el-descriptions-item>
......@@ -365,7 +366,7 @@
<div class="card-title" slot="header">{{$t('通用')}}</div>
<div class="form-section">
<el-form-item :label="$t('唛头')" prop="marks">
<el-input v-model="form.marks" placeholder=""></el-input>
<el-input v-model="form.marks" placeholder="" class="w-200"></el-input>
</el-form-item>
</div>
<div class="form-section">
......@@ -375,15 +376,15 @@
</div>
<div class="form-section">
<el-form-item :label="$t('预计结束时间')" prop="stopTime">
<el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('是否控货')" prop="control">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" defaultable />
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" />
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('竞争对手')" prop="competitor">
<el-input v-model="form.competitor" placeholder=""></el-input>
<el-input v-model="form.competitor" placeholder="" class="w-200"></el-input>
</el-form-item>
<el-form-item :label="$t('重要程度')" prop="importance">
<el-rate v-model="form.importance"></el-rate>
......@@ -391,10 +392,10 @@
</div>
<div class="form-section">
<el-form-item :label="$t('价格有效时间')" prop="startTime">
<el-date-picker v-model="form.startTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker v-model="form.startTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker>
</el-form-item>
<el-form-item label="" prop="endTime">
<el-date-picker v-model="form.endTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker v-model="form.endTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker>
</el-form-item>
</div>
......@@ -404,7 +405,7 @@
接口要求数据为整数,所以增加trade_type类型的字典,用1234代码以下不同类型
FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)
-->
<dict-selector :type="DICT_TYPE.ECW_TRADE_TYPE" fomtter="number" v-model="form.tradeType" />
<dict-selector :type="DICT_TYPE.ECW_TRADE_TYPE" fomtter="number" v-model="form.tradeType" class="w-200"/>
</el-form-item>
<el-form-item :label="$t('交货地址')">
......@@ -464,7 +465,8 @@
<el-form-item label="" class="mt-20">
<el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button>
<el-button type="primary" @click="submitForm(2)">{{$t('保存草稿')}}</el-button>
<el-button type="primary" @click="submitForm(3)">{{$t('确认报价')}}</el-button>
<el-button @click="$store.dispatch('tagsView/delCurrentView')">{{$t('取消')}}</el-button>
</el-form-item>
</el-form>
......@@ -517,6 +519,7 @@ export default {
form: {
sendstatus:0,
type: [],
control: false,
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
......@@ -706,6 +709,11 @@ export default {
})
}
},
activated(){
if(this.form.offerId != this.$route.query.id){
this.getOffer()
}
},
created() {
getProductAttrList().then(res => this.productAttrList = res.data)
getChannelList().then(res => this.channelList = res.data)
......@@ -715,6 +723,11 @@ export default {
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
if(this.$route.query.id){
this.getOffer()
}else this.addProduct()
},
methods: {
getOffer(){
getOffer(this.$route.query.id).then(res => {
let formData = res.data
formData.type = formData.type ? formData.type.split(',').filter(item => item != '') : []
......@@ -748,9 +761,7 @@ export default {
this.onContactChoose(data.list.find(item => item.customerContactsId == res.data.consignorId))
})
})
}//else this.addProduct()
},
methods: {
},
onContactChoose(contact){
console.log('选择联系人', contact)
if(!this.contactChooseType && !this.quickCreateType) return
......@@ -788,10 +799,6 @@ export default {
this.calculationPrice()
},
addProduct(data){
if(!data && !this.form.lineId){
return this.$message.error(this.$t('请先选择路线'))
}
console.log('addProduct', JSON.stringify(data))
this.form.prodCreateReqVOList.push(data || {prodAttrArr:[]})
},
// 计算商品运费
......@@ -838,9 +845,20 @@ export default {
})
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
submitForm(status) {
this.$refs["form"].validate((valid, errors) => {
console.log({valid, errors})
if (!valid) {
return this.$showFormValidateErrors(errors);
/* let h = this.$createElement
this.$notify({
'title': '表单错误',
type: 'warning',
message: h('div', [
h('div', '请填写某某'),
h('div', '水电费水电费')
])
}) */
return;
}
......@@ -851,18 +869,21 @@ export default {
item.transportId = this.form.transportId
// item.brandType = item.brand ? 1 : 0
})
this.transportList.map(item => {
/* this.transportList.map(item => {
if(item._enabled){
item.lineIds = Array.from(item.lineIdSet).join(',')
item.channelIds = Array.from(item.channelIdSet).join(',')
}
})
}) */
// 修改的提交
if (this.form.offerId != null) {
let data = Object.assign({}, this.form, {
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
prodUpdateReqVOList: this.getProductListWithDefaultValue()
})
if(data.status < 3){
data.status = status
}
updateOffer(data).then(response => {
this.$modal.msgSuccess(this.$t("修改成功"));
this.$router.back()
......@@ -871,7 +892,8 @@ export default {
}
let data = Object.assign({}, this.form, {
// transportCreateReqVOList: this.transportList.filter(item => item._enabled),
prodCreateReqVOList: this.getProductListWithDefaultValue()
prodCreateReqVOList: this.getProductListWithDefaultValue(),
status
})
// 添加的提交
createOffer(data).then(response => {
......
......@@ -2,19 +2,67 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item :label="$t('报价单号')" prop="number">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号')" clearable @keyup.enter.native="handleQuery"/>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item :label="$t('编号')" prop="number">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item>
<el-form-item :label="$t('订单编号')" prop="orderNo">
<el-input v-model="queryParams.orderNo" :placeholder="$t('请输入订单编号')" clearable @keyup.enter.native="handleQuery"/>
<el-form-item :label="$t('客户')" prop="orderNo">
<el-input v-model="queryParams.orderNo" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item>
<el-form-item :label="$t('创建时间')" prop="orderNo">
<el-date-picker v-model="queryParams.beginCreateTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker v-model="queryParams.endCreateTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('始发地')" prop="departureId">
<el-select v-model="queryParams.departureId" :placeholder="$t('请选择始发地')">
<el-option v-for="item in exportCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的地')" prop="objectiveId">
<el-select v-model="queryParams.objectiveId" :placeholder="$t('请选择目的地')">
<el-option v-for="item in importCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
<el-form-item :label="$t('运输方式')" prop="orderNo">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" />
</el-form-item>
<el-form-item :label="$t('商品')" prop="orderNo">
<el-input v-model="queryParams.product" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item>
<el-form-item :label="$t('控货')" prop="control">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" />
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="orderNo">
<user-selector v-model="queryParams.salesman" />
<!--// TODO -->
</el-form-item>
<el-form-item :label="$t('销售阶段')" prop="status">
<dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" />
</el-form-item>
<el-form-item :label="$t('报关方式')" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" />
</el-form-item>
<div>
<el-form-item :label="$t('预计结束时间')" prop="orderNo">
<el-date-picker v-model="queryParams.beginStopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker v-model="queryParams.endStopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
</el-form-item>
</div>
</el-form>
<!-- 操作工具栏 -->
......@@ -55,7 +103,7 @@
<el-table-column :label="$t('预计销售额')" align="left" prop="estCost">
<template slot-scope="{row}">
<div class="" v-for="item in row.estCostVO.feeDtoList" :key="item.feeType">
<div class="" v-for="(item, feeIndex) in row.estCostVO.feeDtoList" :key="feeIndex">
<dict-tag :type="DICT_TYPE.ECW_COST_FEE_TYPE" :value="item.feeType" />
{{item.amount}} {{currencyMap[item.currencyId]}}
</div>
......@@ -65,32 +113,58 @@
</el-table-column>
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<template v-if="[1,2].indexOf(scope.row.status) > -1">
<el-button size="mini" type="text" @click="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text" @click="$router.push('edit?id=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('编辑')}}</el-button>
<el-button size="mini" type="text" @click="$router.push('logList?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-button>
</template>
<template v-if="scope.row.status == 2">
<el-button size="mini" type="text" @click="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text" @click="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)"
v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-button>
<el-button size="mini" type="text" @click="$router.push('/offer/special/' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-button>
</template>
<el-button size="mini" type="text" @click="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-button>
<el-dropdown>
<el-button icon="el-icon-plus" circle type="primary"></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="$router.push('detail?offerId=' + scope.row.offerId)">{{$t('详情')}}</el-dropdown-item>
<el-dropdown-item v-if="[1,2].indexOf(scope.row.status) > -1" @click.native="$router.push('edit?id=' + scope.row.offerId)" v-hasPermi="['ecw:offer:update']">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item v-if="[1,2].indexOf(scope.row.status) > -1" @click.native="$router.push('logList?offerId=' + scope.row.offerId)" v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-dropdown-item>
<el-dropdown-item v-if="[2].indexOf(scope.row.status) > -1" @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-dropdown-item>
<el-dropdown-item v-if="[2].indexOf(scope.row.status) > -1" @click.native="$router.push('/offer/special/' + scope.row.offerId)" v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-dropdown-item>
<el-dropdown-item v-if="[1,2].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-dropdown-item>
<el-dropdown-item v-if="[0].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-dropdown-item>
<el-dropdown-item v-if="[1,2,4,5].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-popover
style="margin-left: 10px;"
placement="bottom"
width="100"
trigger="hover">
<el-button slot="reference" icon="el-icon-plus" circle type="primary"></el-button>
<div style=" display:flex; flex-direction:column">
<template v-if="[1,2].indexOf(scope.row.status) > -1">
<el-link type="primary" @click.native="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:detail']">{{$t('详情')}}</el-link>
<el-link type="primary" @click="$router.push('edit?id=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('编辑')}}</el-link>
<el-link type="primary" @click="$router.push('logList?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-link>
</template>
<template v-if="scope.row.status == 2">
<el-button size="mini" type="text" @click="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text" @click="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)"
v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-button>
<el-button size="mini" type="text" @click="$router.push('/offer/special/' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-button>
</template>
<el-button size="mini" type="text" @click="$router.push('detail?offerId=' + scope.row.offerId)"
v-hasPermi="['ecw:offer:update']">{{$t('详情')}}</el-button>
<el-button size="mini" type="text"
v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-button>
</div>
</el-popover> -->
</template>
</el-table-column>
</el-table>
......@@ -104,10 +178,12 @@
<script>
import { deleteOffer, getOfferPage, exportOfferExcel } from "@/api/ecw/offer";
import { getCurrencyList } from '@/api/ecw/currency';
import {getTradeCityList} from '@/api/ecw/region'
import UserSelector from '@/components/UserSelector'
export default {
name: "Offer",
components: {
UserSelector
},
data() {
return {
......@@ -160,7 +236,8 @@ export default {
estCost: null,
sendstatus: null,
},
currencyList: []
currencyList: [],
tradeCityList:[]
};
},
......@@ -172,12 +249,21 @@ export default {
})
return map
},
exportCityList() {
return this.tradeCityList.filter(item => item.type == 2)
},
importCityList() {
return this.tradeCityList.filter(item => item.type == 1)
},
},
created() {
this.getList();
getTradeCityList().then(res => this.tradeCityList = res.data)
getCurrencyList().then(res => {
this.currencyList = res.data
})
this.getList();
},
methods: {
/** 查询列表 */
......
......@@ -25,7 +25,7 @@
</template>
<el-form-item>
<el-button type="primary" @click="submitForm">{{form.result==1?"确定并新增草稿订单":"提交"}}</el-button>
<el-button type="primary" @click="submitForm">{{form.result==1? $t("确定并新增草稿订单") : $t("提交")}}</el-button>
<el-button @click="$router.back()">返 回</el-button>
</el-form-item>
</el-form>
......@@ -86,8 +86,12 @@ export default {
return;
}
let data = Object.assign({}, this.form)
updateOfferResult(data).then((response) => {
this.$modal.msgSuccess("修改成功");
updateOfferResult(data).then(response => {
this.$modal.msgSuccess(this.$t("赢单成功"));
if(response.data > 0){
this.$redirect('../order/edit?id=' + response.data)
return
}
this.$router.back();
});
});
......
......@@ -11,7 +11,7 @@
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="offer.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货渠道')">
// TODO
{{channel ? $l(channel, 'name') : '/'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">{{offer.createTime}}</el-descriptions-item>
......@@ -47,25 +47,25 @@
<el-table-column
:label="$t('原价')">
<template v-slot="{row}">
运费{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
{{$t('运费')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
label="成本价">
<template v-slot="{row}">
运费{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
{{$t('运费')}}{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
label="销售价">
:label="$t('销售价')">
<template v-slot="{row}">
运费:{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
{{$t('运费')}}{{ row.saleSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
......@@ -96,6 +96,7 @@ import {getCurrencyList} from "@/api/ecw/currency"
import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
import {listByIds} from '@/api/ecw/region'
import {getChannel} from '@/api/ecw/channel'
export default {
name: "OfferSpecial",
components: {
......@@ -128,7 +129,8 @@ export default {
currencyList:[],
productAttrList:[],
objective: null,
departure: null
departure: null,
channel: null, // 渠道信息
};
},
watch:{
......@@ -147,6 +149,13 @@ export default {
this.loading = false
this.offer = response.data
this.getCity()
this.getChannel()
})
},
getChannel(){
if(!this.offer.channelId) return
getChannel(this.offer.channelId).then(res => {
this.channel = res.data
})
},
getCity(){
......@@ -171,14 +180,14 @@ export default {
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = item.titleZh
map[item.id] = this.$l(item, 'title')
})
return map
},
unitMap(){
let map = {}
this.unitList.forEach(item => {
map[item.id] = item.titleZh
map[item.id] = this.$l(item, 'title')
})
return map
}
......
......@@ -43,7 +43,7 @@
{{row.orderBackVO.costVO.totalVolume}}
</div>
<div>
{{row.orderBackVO.costVO.totalWorth}}KG
{{row.orderBackVO.costVO.totalWeight}}KG
</div>
</template>
</el-table-column>
......
......@@ -78,7 +78,11 @@
</template>
</el-table-column>
<el-table-column :label="$t('唛头')" align="center" prop="marks" />
<el-table-column :label="$t('箱数')" align="center" prop="sumNum" />
<el-table-column :label="$t('箱数')" align="center" prop="sumNum" >
<template v-slot="{row}">
{{row.inWarehouseState > 1 ? row.sumNum : row.totalNum}}
</template>
</el-table-column>
<el-table-column :label="$t('已放箱数')" align="center" prop="sumWeight">
<template slot-scope="{row}">{{row.releaseNum}}</template>
</el-table-column>
......
......@@ -5,7 +5,7 @@
<div id="myproa">
<p style="padding-bottom:10px;font-size:16px;">
{{$t('订单号')}}{{detail.orderNo}}
&nbsp;&nbsp;&nbsp;{{$t('发货人电话')}}{{detail.name}} {{detail.phone}}
&nbsp;&nbsp;&nbsp;{{$t('发货人电话')}}{{detail.consignorVO.countryCode}} {{detail.consignorVO.phone}}
&nbsp;&nbsp;&nbsp;{{$t('提货地点')}}{{objective.titleZh}}
<img :src="qrcode" style="margin-left: 10px;width:17mm;vertical-align:middle" />
</p>
......@@ -33,7 +33,7 @@
</label>
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{item.marks}}
{{detail.marks}}
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{item.prodTitleZh}}<br/>{{item.prodTitleEn}}
......
......@@ -11,18 +11,17 @@
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="details.transportId"></dict-tag>
</el-descriptions-item>
<el-descriptions-item label="出货渠道">
{{details.channelId}}123
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="details.channelId"></dict-tag>
</el-descriptions-item>
<el-descriptions-item label="始发地">{{ details.logisticsInfoDto ? details.logisticsInfoDto.startTitleZh :''}}</el-descriptions-item>
<el-descriptions-item label="目的地">{{details.logisticsInfoDto ? details.logisticsInfoDto.destTitleZh : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{details.consignorVO ? details.consignorVO.name : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{details.consignorVO ? details.consignorVO.company : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{details.consignorVO ? details.consignorVO.phone : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{details.consignorVO ? details.consignorVO.countryCode : ''}} {{details.consignorVO ? details.consignorVO.phone : ''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{details.consigneeVO ? details.consigneeVO.name :''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{details.consigneeVO ? details.consigneeVO.company :''}}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{details.consigneeVO ? details.consigneeVO.phone :''}}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{details.consigneeVO ? details.consigneeVO.countryCode :''}} {{details.consigneeVO ? details.consigneeVO.phone :''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
</el-descriptions>
</div>
......
......@@ -3,6 +3,7 @@
<el-dialog :before-close="()=>{$emit('update:show',false)
}" center width="80%" :visible.sync="show">
<div class="content">
<h1>{{orderNo}} 特需</h1>
<el-form label-width="180px" label-position="left">
<el-form-item label="特殊要求">
<el-checkbox-group v-model="advanceType">
......@@ -40,6 +41,7 @@ export default {
orderId:{
type:[String,Number],
},
orderNo:[String,Number],
show:Boolean,
},
computed:{
......
......@@ -54,32 +54,23 @@
</el-table-column>
<el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>
<el-table-column label="目的地" prop="objectiveName"></el-table-column>
<el-table-column
label="发货人">
<el-table-column label="发货人">
<template v-slot="{row}">
<p>
{{row.consignorName}}
</p>
<p>
{{row.consignorPhone}}
{{row.consignorCountryCode}} {{row.consignorPhone}}
</p>
</template>
</el-table-column>
<
<el-table-column
header-align="center"
align="center"
prop="columnProp"
label="columnLabel"
>
</el-table-column>
label="收货人">
<template v-slot="{row}">
<el-table-column label="收货人">
<template v-slot="{row}">
<p>
{{row.consigneeName}}
</p>
<p>
{{row.consigneePhone}}
{{row.consigneeCountryCode}} {{row.consigneePhone}}
</p>
</template>
</el-table-column>
......@@ -123,8 +114,8 @@
申请说明
</p>
<div >
【{{selectWarehouse(FeeDetails.details && FeeDetails.details.warehouseInId ? FeeDetails.details.warehouseInId : '' )}}】 调到
【{{selectWarehouse(FeeDetails.details && FeeDetails.details.warehouseOutId ? FeeDetails.details.warehouseOutId : '' )}}】
【{{selectWarehouse(FeeDetails.details && FeeDetails.details.warehouseOutId ? FeeDetails.details.warehouseOutId : '' )}}】 调到
【{{selectWarehouse(FeeDetails.details && FeeDetails.details.warehouseInId ? FeeDetails.details.warehouseInId : '' )}}】
</div>
</div>
<div v-if="type === 2">
......@@ -226,7 +217,7 @@ export default {
warehouseApprovalGetByFormId({formId:this.processInstanceID}).then( r => {
this.FeeDetails = r.data
this.FeeDetails.details = JSON.parse(r.data.details)
getOrderPage({orderIdList:r.data.adjustActualOrderIds}).then(res=>{
getOrderPage({orderIdList:r.data.adjustActualOrderIds}).then(res=>{
this.list = res.data.list
})
......
<script>
// 对edit组件复用并更名,防止keepalive缓存数据
import edit from './edit.vue'
edit.name = 'OrderCreate'
export default edit
</script>
\ No newline at end of file
......@@ -360,12 +360,11 @@
</div>
</div>
<div>
<el-form-item :label="$t('预计送货日期')" prop="deliveryDate" class="ml-20">
<el-form-item :label="$t('预计送货日期')" prop="deliveryDate">
<el-date-picker v-model="form.deliveryDate" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('收货方式')" prop="harvestMethod" class="ml-20">
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD" v-model="form.harvestMethod" :filter="item => item.value == 1 || homeDeliveryService" defaultable />
</el-form-item>
......@@ -407,30 +406,39 @@
<el-button type="primary" slot="append" @click="getOrderCourierNumber">{{$t('生成单号')}}</el-button>
</el-input>
</el-form-item>
<br/>
<el-form-item :label="$t('是否双清')" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item>
<el-form-item :label="$t('航空公司')" v-if="[3,4].indexOf(+form.transportId) > -1">
<!--待查询备选数据-->
<el-select placeholder="" v-model="form.airlineCompany">
</el-select>
</el-form-item>
<el-form-item :label="$t('船公司')" v-if="[2].indexOf(+form.transportId) > -1">
<el-select placeholder="" v-model="form.shippingCompany">
</el-select>
</el-form-item>
<el-form-item :label="$t('清关证书')" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="清关证书备注" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-input v-model="form.remarks" ></el-input>
</el-form-item>
<el-form-item label="是否拆包" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否双清')">
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item>
</div>
<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')">
<!--待查询备选数据-->
<el-select placeholder="" v-model="form.airlineCompany">
</el-select>
</el-form-item>
</div>
<div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')">
<el-select placeholder="" v-model="form.shippingCompany">
</el-select>
</el-form-item>
</div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('清关证书')">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item label="清关证书备注" >
<el-input v-model="form.remarks" ></el-input>
</el-form-item>
</div>
<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item label="是否拆包">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
......@@ -513,6 +521,8 @@ import ChooseContactDialog from '@/components/ChooseContactDialog'
import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {calculationPrice} from '@/api/ecw/product'
// 缓存默认的表单数据
let defaultFormData = null
export default {
name: "EcwOrderEdit",
......@@ -716,6 +726,8 @@ export default {
}
},
created() {
defaultFormData = Object.assign({}, this.form)
this.couponTypeList = this.getDictDatas(this.DICT_TYPE.ECW_COUPON_TYPE)
this.couponTypeList.forEach(item => {
this.$set(this.selectedCoupons, item.value, null)
......@@ -935,6 +947,11 @@ export default {
// 添加的提交
createOrder(data).then(response => {
this.$modal.msgSuccess(this.$t("新增成功"));
// 重置数据
this.form = {...defaultFormData}
this.$refs.form.clearValidate()
this.$redirect('success?orderId=' + response.data)
});
});
......
......@@ -62,7 +62,9 @@
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div>
<div style="text-align: center;margin-top: 20px;">
<el-button style="margin-right: 30px;" @click="submit">提交</el-button>
<el-button v-if="!IsExamine" style="margin-right: 30px;" @click="submit">提交</el-button>
<el-button v-if="IsExamine" style="margin-right: 30px;" @click="examineFn">审核中</el-button>
<el-button v-if="IsExamine" style="margin-right: 30px;" @click="cancel">取消审核</el-button>
<el-button>取消</el-button>
</div>
</div>
......@@ -71,7 +73,13 @@
</template>
<script>
import {getOrder, feeApplicationCreate, ApplicationListByOrderId, applicationUpdate} from "@/api/ecw/order";
import {
getOrder,
feeApplicationCreate,
ApplicationListByOrderId,
applicationUpdate,
feeApplicationListByOrderId, feeApplicationCancel
} from "@/api/ecw/order";
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import Template from "@/views/cms/template";
import workFlow from "@/components/WorkFlow";
......@@ -108,6 +116,9 @@ export default {
return (row)=>{
return this.list.findIndex(e => e.id = row.id)
}
},
IsExamine(){
return this.list.some(e => e.status === 1)
}
},
methods:{
......@@ -163,8 +174,28 @@ export default {
},
modify(row){
this.isModifyIf = true;
this.$set(this.isModify, this.list.findIndex(e => e.id = row.id), false )
this.$set(this.isModify, this.list.findIndex(e => e.id = row.id), false )
},
examineFn(){
let item = this.list.find(e => e.status === 1);
this.$router.push({path:'/bpm/process-instance/detail',query:{id:item.bpmProcessId}})
},
cancel(){
this.$prompt('请输入取消原因', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
let item = this.list.find(e => e.status === 1);
feeApplicationCancel({huifu:value,bpmProcessId:item.bpmProcessId}).then(r => {
this.$message({
type: 'success',
message:'取消成功'
});
this.$emit('update:dialogVisible',false)
})
}).catch(() => {
});
}
},
watch:{
dialogVisible(val){
......
......@@ -22,7 +22,7 @@
</el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')">
<el-option v-for="item in expoerCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
<el-option v-for="item in exportCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的地')" prop="destWarehouseId">
......@@ -173,7 +173,7 @@
<el-button v-if="scope.row.status == 88" size="mini" type="text" icon="el-icon-delete" @click="oprateOrder(scope.row.orderId, 'recoveryOrder')">{{$t('恢复订单')}}</el-button>
<el-button type="text" size="mini" @click="feeApplicationBol = true; orderId = scope.row.orderId">{{$t('费用申请')}}</el-button>
<el-button type="text" size="mini" @click="orderId = scope.row.orderId;isShow = true" >{{$t('特需')}}</el-button>
<el-button type="text" size="mini" @click="orderId = scope.row.orderId;orderNo = scope.row.orderNo;isShow = true" >{{$t('特需')}}</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/associated-order/${scope.row.orderId}`)" >{{$t('关联')}}</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >{{$t('互斥')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="$router.push('/order/special/' + scope.row.orderId)"
......@@ -209,9 +209,9 @@
v-hasPermi="['ecw:order:update']">{{$t('入仓')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="show = true;orderId = scope.row.orderId; "
v-hasPermi="['ecw:order:update']">{{$t('退仓')}}</el-button>
<el-button type="text" size="mini" @click="orderId = scope.row.orderId;warehouseBol=true;">{{$t('调仓')}}</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >{{$t('调拨出仓')}}</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >{{$t('调拨到仓')}}</el-button>
<el-button type="text" :disabled="!(scope.row.status === 5 && (scope.row.inWarehouseState === 215 ||scope.row.inWarehouseState === 0))" size="mini" @click="orderId = scope.row.orderId;warehouseBol=true;">{{$t('调仓')}}</el-button>
<el-button type="text" :disabled="!(scope.row.status === 8 && scope.row.inWarehouseState === 213)" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >{{$t('调拨出仓')}}</el-button>
<el-button type="text" :disabled="!(scope.row.status === 8 && scope.row.inWarehouseState === 214)" size="mini" @click="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >{{$t('调拨到仓')}}</el-button>
</div>
</el-popover>
......@@ -373,7 +373,7 @@ export default {
};
},
computed: {
expoerCityList() {
exportCityList() {
return this.tradeCityList.filter(item => item.type == 2)
},
importCityList() {
......
......@@ -43,7 +43,7 @@
{{row.orderBackVO.costVO.totalVolume}}
</div>
<div>
{{row.orderBackVO.costVO.totalWorth}}KG
{{row.orderBackVO.costVO.totalWeight}}KG
</div>
</template>
</el-table-column>
......
......@@ -33,7 +33,7 @@
{{row.costVO.totalVolume}}
</div>
<div>
{{row.costVO.totalWorth}}KG
{{row.costVO.totalWeight}}KG
</div>
</template>
</el-table-column>
......
......@@ -31,7 +31,7 @@
<!-- <img :src="noticeUrl" id="noticeImg" /> -->
<need-know keyname="warehousing" ref="needKnow" />
<div style="text-align:center">
<el-button type="primary" @click="$refs.needKnow.download()">{{$t('下载')}}</el-button>
<el-button type="primary" @click="$refs.needKnow.downloadPdf()">{{$t('下载')}}</el-button>
</div>
</el-dialog>
</div>
......
<template>
<div style="padding: 0 20px">
<h1>调拨出仓</h1>
<h1>{{type == 1 ? '调拨出仓' :'调拨到仓'}}</h1>
<el-divider content-position="left">
订单信息
</el-divider>
......@@ -123,7 +123,7 @@
<el-button v-if="type == 1" size="medium" @click="cancellationOfOrder">取消调仓</el-button>
<el-button size="medium" @click="$tab.closeOpenPage({path:'/order/order'})">返回</el-button>
</div>
<warehouse-location ref="area" :city-id="warehouseDetails.warehouseInShi" :visible.sync="areaVisible" v-model="params.orderLocationCreateReqVOList" :warehouse-id="warehouseDetails.warehouseInId" :order-id="Number(orderId)"></warehouse-location>
<warehouse-location ref="area" :city-id="warehouseInShi" :visible.sync="areaVisible" v-model="params.orderLocationCreateReqVOList" :warehouse-id="warehouseDetails.warehouseInId" :order-id="Number(orderId)"></warehouse-location>
<el-dialog :title="'订单转异'" center :visible.sync="escapeBol">
<el-form label-position="top" label-width="200">
<el-form-item label="原因类型">
......@@ -147,6 +147,7 @@
<script>
import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm";
import {
cancelAdjust,
getAdjustInfo,
getOrder, listByOrderId,
orderWarehouseInGetAdjustInfo,
......@@ -198,7 +199,7 @@ export default {
descZh:'',
exceptionUrls:[]
},
warehouseInShi:'',
warehouseInShi:0,
expressList:[],
storageSpaceList:[],
applyStatus:{}
......@@ -282,7 +283,7 @@ export default {
})
}
})
this.warehouseInShi = this.warehouseDetails.warehouseInShi
this.warehouseInShi = this.warehouseDetails.warehouseInShi || ''
this.params.phone = this.warehouseDetails.phone || '';
this.params.logisticsNo = this.warehouseDetails.logisticsNo;
this.params.id = this.warehouseDetails.id;
......@@ -335,11 +336,17 @@ export default {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
warehouseApprovalCancel(this.applyStatus.orderWarehouseApprovalBackVO.id,value) .then(r => {
if(r.data){
this.$message.success('取消调仓成功')
cancelAdjust({
orderId: this.orderId,
reason: value,
}).then(r => {
console.log(r,'r');
if(r.code === 0){
this.$message({
type: 'info',
message: '取消调仓成功'
});
this.$tab.closeOpenPage({path:'/order/order'})
}
})
}).catch(() => {
......@@ -348,7 +355,7 @@ export default {
message: '取消成功'
});
});
}
},
},
}
</script>
......
<template>
<div>
<el-dialog
:title="(edit ? '入仓修改' : (warehousing.orderWarehouseInBackItemDoList.length > 0 ? '入仓补充' : '入仓操作')) + '-货物入仓'"
:title="(edit ? '入仓修改' : (warehousing.orderWarehouseInBackItemDoList.length > 0 ? '入仓补充' : '入仓操作')) + ' - ' + warehousing.orderNo"
:visible.sync="opened"
width="1080px"
>
......@@ -11,7 +11,7 @@
<el-descriptions-item label="中文品名">{{ warehousing.prodTitleZh }}</el-descriptions-item>
<el-descriptions-item label="英文品名">{{ warehousing.prodTitleEn }}</el-descriptions-item>
<el-descriptions-item label="品牌">
<span v-if="warehousing.orderWarehouseInBackItemDoList && warehousing.orderWarehouseInBackItemDoList.length">{{ form.brand ? brand : '' }}</span>
<span v-if="false">{{ form.brand ? brand : '' }}</span>
<el-select
v-else v-model="form.brand"
placeholder="可修改"
......@@ -29,16 +29,22 @@
<el-descriptions-item label="是否备案">{{ isBeian }}</el-descriptions-item>
<el-descriptions-item label="收费模式">{{ feeType }}</el-descriptions-item>
<el-descriptions-item label="填单参数">
箱数:{{ warehousing.num }}<br>
体积:{{ warehousing.volume }}<br>
重量:{{ warehousing.weight }}Kg
箱数:
<el-input size="mini" v-if="edit" v-model="warehousing.num" style="display: inline-block;width: 100px"></el-input>
<span v-else>{{ warehousing.num }}</span><br>
体积:
<el-input size="mini" v-if="edit" v-model="warehousing.volume" style="display: inline-block;width: 100px"></el-input>
<span v-else>{{ warehousing.volume }}</span><br>
重量:
<el-input size="mini" v-if="edit" v-model="warehousing.weight" style="display: inline-block;width: 100px"></el-input>
<span v-else>{{ warehousing.weight }}</span>Kg
</el-descriptions-item>
</el-descriptions>
<el-form ref="form" :model="form" label-width="80px" style="margin-top: 20px">
<el-form-item label="材质">
<dict-selector :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form.material"></dict-selector>
</el-form-item>
<el-form-item label="入仓时间">
<el-form-item label="入仓时间" v-if="!edit">
<el-date-picker v-model="form.inTime" type="datetime" placeholder="请选择入仓时间" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
......@@ -56,7 +62,7 @@
<el-table-column label="箱数" width="150px">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.cartonsNum" :prop="$index + '.cartonsNum'">
<span v-if="tableData[$index].id">
<span v-if="tableData[$index].id && !edit">
{{ tableData[$index].cartonsNum }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}
</span>
......@@ -69,31 +75,31 @@
<el-table-column label="包装类型" width="100px">
<template v-slot="{r,c,$index}">
<el-form-item>
<span v-if="tableData[$index].id">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}</span>
<span v-if="tableData[$index].id && !edit">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}</span>
<dict-selector v-else :type="DICT_TYPE.ECW_PACKAGE_TYPE" v-model="tableData[$index].unit"></dict-selector>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="长(cm)">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge1" :prop="$index + '.boxGauge1'">
<span v-if="tableData[$index].id">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[0] : '' }}</span>
<el-form-item :rules="tableFormRules.boxGauge1" :prop="!tableData[$index].id && $index + '.boxGauge1'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[0] : '' }}</span>
<el-input v-else v-model.number="tableData[$index].boxGauge1" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="宽(cm)">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge2" :prop="$index + '.boxGauge2'">
<span v-if="tableData[$index].id">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[1] : '' }}</span>
<el-form-item :rules="tableFormRules.boxGauge2" :prop="!tableData[$index].id && $index + '.boxGauge2'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[1] : '' }}</span>
<el-input v-else v-model.number="tableData[$index].boxGauge2" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="高(cm)">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge3" :prop="$index + '.boxGauge3'">
<span v-if="tableData[$index].id">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[2] : '' }}</span>
<el-form-item :rules="tableFormRules.boxGauge3" :prop="!tableData[$index].id && $index + '.boxGauge3'">
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].boxGauge ? tableData[$index].boxGauge.split('*')[2] : '' }}</span>
<el-input v-else v-model.number="tableData[$index].boxGauge3" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
......@@ -101,7 +107,7 @@
<el-table-column label="体积(m³)">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.volume" :prop="$index + '.volume'">
<span v-if="tableData[$index].id">{{ tableData[$index].volume }}</span>
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].volume }}</span>
<el-input v-else v-model.number="tableData[$index].volume" placeholder=""></el-input>
</el-form-item>
</template>
......@@ -109,7 +115,7 @@
<el-table-column label="重量(Kg)">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.weight" :prop="$index + '.weight'">
<span v-if="tableData[$index].id">{{ tableData[$index].weight }}</span>
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].weight }}</span>
<el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input>
</el-form-item>
</template>
......@@ -117,7 +123,7 @@
<el-table-column label="数量" width="130px">
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.quantityAll" :prop="$index + '.quantityAll'">
<span v-if="tableData[$index].id">{{ tableData[$index].quantityAll }}</span>
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].quantityAll }}</span>
<el-input v-else v-model.number="tableData[$index].quantityAll" placeholder="">
<template slot="append"></template>
</el-input>
......@@ -127,7 +133,7 @@
<el-table-column label="快递单号">
<template v-slot="{r,c,$index}">
<el-form-item>
<span v-if="tableData[$index].id">{{ tableData[$index].expressNo }}</span>
<span v-if="tableData[$index].id && !edit">{{ tableData[$index].expressNo }}</span>
<el-input v-else v-model="tableData[$index].expressNo" placeholder=""></el-input>
</el-form-item>
</template>
......@@ -588,7 +594,13 @@ export default {
return this.brandList.find(e => e.id === this.form1.brand) || ''
},
tableData() {
return [...this.warehousing.orderWarehouseInBackItemDoList, ...this.form.orderWarehouseInItemDoList]
if (!this.edit){
return [...this.warehousing.orderWarehouseInBackItemDoList, ...this.form.orderWarehouseInItemDoList]
}
// 入仓修改的时候
this.form.orderWarehouseInItemDoList = this.warehousing.orderWarehouseInBackItemDoList
return this.form.orderWarehouseInItemDoList
},
tableData1() {
return this.form1.orderWarehouseInItemDoList
......@@ -638,7 +650,7 @@ export default {
return brand.titleZh
}
}
return ''
return '0'
}
}
}
......
......@@ -86,8 +86,8 @@
</el-table>
<h2 v-if="orderSpecialNeeds.length > 0">特殊需求</h2>
<el-form ref="form" :model="form" label-width="120px" style="max-width: 500px;">
<el-form-item :label="item.label" v-for="(item, index) in orderSpecialNeeds" :key="item.value">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item :label="item.label" v-for="(item, index) in orderSpecialNeeds" :key="item.value" style="width: 400px">
<el-input v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoney" :placeholder="'请输入' + item.label">
<el-select v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoneyCurrency" placeholder="请选择" slot="append" style="width: 100px">
<el-option
......@@ -125,6 +125,20 @@
<el-button @click="escapeBol = true;" type="primary">转异</el-button>
<el-button type="primary" @click="finishVisible = true">完成入仓</el-button>
</div>
<template v-if="order.status === 5">
<h2>标枪箱号</h2>
<div v-for="(item, index) in label.orderLabelDtoList" :key="index" style="margin-bottom: 10px">
<el-input-number v-model="item.start" controls-position="right"></el-input-number> -
<el-input-number v-model="item.end" controls-position="right"></el-input-number>
<el-button icon="el-icon-minus" circle v-show="index !== 0" @click="label.orderLabelDtoList.splice(index, 1)" style="margin-left: 10px"></el-button>
<el-button icon="el-icon-plus" circle @click="handleLabelAdd(index)"></el-button>
</div>
<div style="text-align: center">
<el-button type="primary" @click="handleLabelSubmit">修改箱号</el-button>
</div>
</template>
</el-form>
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList"
......@@ -176,7 +190,7 @@ import {
getOrder,
getOrderWarehouseIn,
getSpecialListByOrderId, listByOrderId,
orderWarehouseInFinish,
orderWarehouseInFinish, orderWarehouseInUpdateLabel,
rollbackDelete
} from '@/api/ecw/order'
import orderBaseInfo from "@/components/OrderBaseInfo"
......@@ -238,10 +252,36 @@ export default {
isShowPrintTag: false,
isShowPrint: false,
escapeBol:false,
label: {
"orderId": 0,
"orderLabelDtoList": [
{
"end": 0,
"start": 0
}
]
}
}
},
methods: {
handleLabelSubmit(){
orderWarehouseInUpdateLabel({
...this.label,
orderId: this.orderId
}).then(r => {
if (r.code === 0){
}
})
},
handleLabelAdd(index){
this.label.orderLabelDtoList.splice(index + 1, 0, {
"end": '',
"start": ''
})
},
getTowSum(){
let sumVolume = 0
let sumWeight = 0
......
......@@ -20,7 +20,9 @@
<work-flow xmlkey="retired_warehouse" v-model="params.copyUserId" />
</div>
<div>
<el-button @click="submit" type="primary" style="margin-right: 20px;">确定退仓</el-button>
<el-button v-if="isExamine" @click="submit" type="primary" style="margin-right: 20px;">确定退仓</el-button>
<el-button v-if="!isExamine" @click="$router.push({query:{id:details.formId},path:'/bpm/process-instance/detail'})" type="primary" style="margin-right: 20px;">审核中</el-button>
<el-button v-if="!isExamine" type="primary" style="margin-right: 20px;" @click="cancellationOfOrder">取消审核</el-button>
<el-button @click="$parent.show = false;">不,再考虑考虑</el-button>
</div>
</div>
......@@ -28,8 +30,12 @@
</template>
<!--退仓-->
<script>
import {getOrder} from "@/api/ecw/order";
import {orderWarehouseInDelete} from "@/api/ecw/batchSingleApplication";
import {cancelAdjust, getOrder} from "@/api/ecw/order";
import {
getRollbackApprovalInfo,
orderWarehouseInDelete,
warehouseApprovalCancel
} from "@/api/ecw/batchSingleApplication";
import workFlow from "@/components/WorkFlow";
export default {
......@@ -48,12 +54,25 @@ export default {
orderId:undefined,
orderNo:undefined,
reason:'',
copyUserId:[]
copyUserId:[],
},
isExamine:true,
details:{},
}
},
created() {
getOrder(this.orderId).then(r => this.orderDetails = r.data);
getRollbackApprovalInfo({orderId:this.orderId}).then(r => {
console.log(r)
if(r.data.status === 1){
this.details = r.data;
this.isExamine = false;
this.params.reason = JSON.parse(this.details.details).reason
}
})
},
methods:{
submit(){
......@@ -66,6 +85,26 @@ export default {
this.$parent.show = false
}
})
},
cancellationOfOrder(){
this.$prompt('请输入取消审核原因', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
warehouseApprovalCancel(this.details.id,value) .then(r => {
if(r.data){
this.$message.success('取消成功')
this.params = {}
this.$parent.show = false
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '取消成功'
});
});
}
}
}
......
......@@ -15,11 +15,11 @@
<el-input v-model="queryParams.titleZh" placeholder="请输入商品名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="商品类型" prop="typeId">
<!-- <el-form-item label="商品属性" prop="attrId">
<el-select v-model="queryParams.typeId" placeholder="选择商品类型" clearable>
<el-option v-for="type in typeList" :key="type.id" :label="type.titleZh" :value="type.id" />
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="商品特性" prop="attrId">
<el-select v-model="queryParams.attrId" placeholder="选择商品特性" clearable>
......@@ -27,7 +27,7 @@
</el-select>
</el-form-item>
<el-form-item label="审核状态" prop="auditStatus">
<!-- <el-form-item label="审核状态" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" placeholder="选择审核状态" clearable>
<el-option v-for="auditStatusItem in auditStatusDictDatas" :key="auditStatusItem.id" :label="auditStatusItem.label" :value="auditStatusItem.value" />
</el-select>
......@@ -37,7 +37,7 @@
<el-select v-model="queryParams.status" placeholder="选择上架状态" clearable>
<el-option v-for="statusItem in statusDictDatas" :key="statusItem.id" :label="statusItem.value == CommonStatusEnum.ENABLE ? '已上架' : '已下架'" :value="statusItem.value" />
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
......@@ -70,11 +70,19 @@
<el-table-column label="海关编码" align="center" prop="customsCode" />
<el-table-column label="中文标题" align="center" prop="titleZh" />
<el-table-column label="英文标题" align="center" prop="titleEn" />
<el-table-column label="商品性" align="center" prop="attrId">
<el-table-column label="商品性" align="center" prop="attrId">
<template slot-scope="scope">
<span>{{ getAttrName(scope.row.attrId) }}</span>
</template>
</el-table-column>
<!--商品特性-->
<el-table-column label="商品图片" align="center" prop="attrId">
<template slot-scope="scope">
<el-image :src="firstImg(scope.row.imgs)" style="width:50px; height:50px">
</el-image>
</template>
</el-table-column>
<el-table-column prop="auditStatus" align="center" label="是否审核" width="120">
<template slot-scope="scope">
......@@ -86,9 +94,10 @@
<el-table-column prop="status" align="center" label="状态" width="120">
<template slot-scope="scope">
<el-select v-model="scope.row.status" @change="handleStatusChange(scope.row, 'status')">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
<!-- <el-select v-model="scope.row.status" @change="handleStatusChange(scope.row, 'status')">
<el-option v-for="statusItem in statusDictDatas" :key="statusItem.id" :label="statusItem.value == CommonStatusEnum.ENABLE + '' ? '已上架' : '已下架'" :value="parseInt(statusItem.value)" />
</el-select>
</el-select> -->
</template>
</el-table-column>
......@@ -123,16 +132,17 @@
</el-form-item>
<el-form-item label="商品图片" prop="img">
<el-col :span="8">
<image-upload v-model="form.imgs" />
<!-- <el-col :span="8">
<el-input v-model="form.imgs" placeholder="请上传图片" disabled />
</el-col>
</el-col> -->
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<!-- <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small">
上传图片
<i class="el-icon-upload el-icon--right"></i>
</el-button>
</el-upload>
</el-upload> -->
</el-form-item>
......@@ -206,10 +216,11 @@ import { getProductTypeList } from "@/api/ecw/productType";
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import { CommonStatusEnum, AuditStatusEnum } from '@/utils/constants';
import { uploadFile } from "@/api/infra/file";
import ImageUpload from '@/components/ImageUpload'
export default {
name: "ProductList",
components: {
ImageUpload
},
data() {
return {
......@@ -309,6 +320,13 @@ export default {
return productAttrArray.join(',');
}
},
firstImg(){
return imgString => {
if(!imgString || imgString == '') return imgString
let imgs = imgString.split(',')
return imgs.length ? imgs[0] : null
}
}
},
......
......@@ -45,7 +45,7 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="" align="center" prop="id" />
<!-- <el-table-column label="来源" align="center" prop="fromId" />-->
<el-table-column label="来源" align="center" prop="fromId" />
<el-table-column label="发送时间" align="center" prop="sendTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sendTime) }}</span>
......@@ -58,11 +58,11 @@
<dict-tag :type="DICT_TYPE.INTERNAL_MESSAGE_TYPE" :value="scope.row.type" />
</template>
</el-table-column>
<!-- <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" 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)"
......@@ -79,9 +79,9 @@
<!-- 对话框(添加 / 修改) -->
<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="fromId">-->
<!-- <el-input v-model="form.fromId" placeholder="请输入站内信来源" />-->
<!-- </el-form-item>-->
<el-form-item label="来源" prop="fromId">
<el-input v-model="form.fromId" placeholder="请输入站内信来源" />
</el-form-item>
<el-form-item label="发送时间" prop="sendTime">
<el-date-picker clearable v-model="form.sendTime" type="date" value-format="yyyy-MM-dd" placeholder="选择发送时间" />
</el-form-item>
......
......@@ -95,10 +95,10 @@
<el-input v-model="form.titleEn" placeholder="请输入标题英文" />
</el-form-item>
<el-form-item label="内容中文" prop="contentZh">
<editor v-model="form.contentZh" :min-height="192" placeholder="请输入内容中文"/>
<ueditor v-model="form.contentZh" :min-height="192" placeholder="请输入内容中文"/>
</el-form-item>
<el-form-item label="内容英语" prop="contentEn">
<editor v-model="form.contentEn" :min-height="192" placeholder="plese entry english"/>
<ueditor v-model="form.contentEn" :min-height="192" placeholder="plese entry english"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
......@@ -117,11 +117,11 @@
<script>
import { createNeedKnow, updateNeedKnow, deleteNeedKnow, getNeedKnow, getNeedKnowPage, exportNeedKnowExcel } from "@/api/system/needKnow";
import Editor from '@/components/Editor';
import Ueditor from '@/components/Ueditor'
export default {
name: "NeedKnow",
components: {
Editor
Ueditor
},
data() {
return {
......
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