Commit adaf7141 authored by wanglianghe's avatar wanglianghe
parents 1bd6a686 4b913bac
......@@ -209,3 +209,13 @@ function jsonToFormData(params) {
}
return formData;
}
// 根据订单ID下载提货单
export function downloadByOrderId(orderId) {
return request({
url: "/shipment/make-bill-of-lading/downloadByOrderId",
method: "get",
params: {orderId},
responseType: 'arraybuffer'
});
}
\ No newline at end of file
......@@ -346,9 +346,9 @@ export function cancelOrderSpecial(orderApprovalId,data) {
}
// 获得订单特价申请详情
export function getOrderSpecial(offerProdId, type = 1) {
export function getOrderSpecial(orderItemId, type = 1) {
return request({
url: '/ecw/order/special/info/' + offerProdId + '/' + type,
url: '/ecw/order/special/info/' + orderItemId + '/' + type,
method: 'get'
})
}
......
......@@ -2,7 +2,6 @@ import Vue from 'vue'
import Router from 'vue-router'
/* Layout */
import Layout from '@/layout'
import query from '@/views/ecw/customer/query'
Vue.use(Router)
......@@ -163,6 +162,19 @@ export const constantRoutes = [
}
]
},
{
path: '/deptTarget',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [ {
path: 'empAchievement',
component: (resolve) => require(['@/views/ecw/deptTarget/empAchievement'], resolve),
name: '员工业绩',
meta: {title: '员工业绩', activeMenu: '/deptTarget/index'}
}
]
},
{
path: '/node',
component: Layout,
......
......@@ -112,6 +112,8 @@ export const DICT_TYPE = {
ECW_PICK_RECURRENT_NUCLEAR_TYPE: 'PICK_RECURRENT_NUCLEAR_TYPE', // 放货反复核类型
ECW_COST_FEE_TYPE: 'cost_fee_type', // 清单费用类型
ECW_PRICE_AUDIT_STATUS: 'price_audit_status', // 路线价格审核状态
ECW_CANCEL_PICK_TYPE: 'cancel_pick_type', // 取消放货类型
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -178,7 +178,8 @@ export default {
const { bookSeaInfo } = this.shipmentObj;
makeBillService({
orderId: row.orderId,
zgDate: bookSeaInfo.sailTime,
zgDate: '2022-09-27',
// zgDate: bookSeaInfo.sailTime,
}).then((res) => {
const { data } = res;
const { titleZh = "", contentZh = "" } = data?.ladingTemplate ?? {};
......
......@@ -27,8 +27,8 @@
<el-form-item label="快递ID" prop="expressId">
<el-input v-model="queryParams.expressId" placeholder="请输入快递ID" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="到达时间">
<el-input v-model="queryParams.dateRangeEtaTime" placeholder="预计到达天数" clearable @keyup.enter.native="handleQuery"/>
<el-form-item label="预计时间">
<el-input v-model="queryParams.etaTime" placeholder="预计到达天数" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="渠道代理" prop="channelAgent">
<el-input v-model="queryParams.channelAgent" placeholder="请输入渠道代理" clearable @keyup.enter.native="handleQuery"/>
......@@ -114,10 +114,6 @@
<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-dialog>
</div>
</template>
......@@ -149,19 +145,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
nameZh: null,
nameEn: null,
internalNameZh: null,
internalNameEn: null,
typeNumber: null,
warehouseIds: null,
sort: null,
expressId: null,
channelAgent: null,
remarksZh: null,
remarksEn: null,
status: null,
pageSize: 10
},
// 表单参数
form: {},
......@@ -180,8 +164,6 @@ export default {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeEtaTime, 'etaTime');
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询
getChannelPage(params).then(response => {
this.list = response.data.list;
......@@ -189,32 +171,6 @@ export default {
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
channelId: undefined,
nameZh: undefined,
nameEn: undefined,
internalNameZh: undefined,
internalNameEn: undefined,
typeNumber: undefined,
code: undefined,
warehouseIds: undefined,
sort: undefined,
expressId: undefined,
etaTime: undefined,
channelAgent: undefined,
remarksZh: undefined,
remarksEn: undefined,
status: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
......@@ -222,9 +178,10 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeEtaTime = [];
this.dateRangeCreateTime = [];
this.resetForm("queryForm");
this.queryParams = {
pageNo: 1,
pageSize: 10
}
this.handleQuery();
},
/** 新增按钮操作 */
......@@ -259,7 +216,7 @@ export default {
this.exportLoading = true;
return exportChannelExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.$download.excel(response, '渠道列表.xls');
this.exportLoading = false;
}).catch(() => {});
}
......
......@@ -543,6 +543,7 @@ export default {
},
/** 取消按钮 */
cancel() {
this.$tab.closePage()
this.open = false;
this.reset();
},
......
......@@ -11,36 +11,50 @@
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="客户等级" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-select clearable v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="联系方式">
<el-input placeholder="请输入联系方式" v-model="queryParams.defaultContactPhone"></el-input>
</el-form-item>
<el-form-item label="客户类别" prop="level">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" multiple v-model="queryParams.type"></dict-selector>
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select clearable v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<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="source">
<el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-select clearable v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</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 customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
<el-form-item label="国家" prop="source">
<el-select clearable v-model="form.country" placeholder="请选择国家">
<el-option v-for="dict in countryList"
:key="dict.id" :label="dict.nameZh" :value="parseInt(dict.id)" />
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-select clearable v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="部门" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item label="信用等级" prop="department">
<el-select clearable v-model="form.level" >
<el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
......@@ -57,36 +71,44 @@
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-col :span="1.5" >
<el-button :disabled="selectCustomerList.length === 0" type="warning" size="mini" @click="batchTransferShow = true;" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">批量移交</el-button>
</el-col>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column label="客户编号" align="center" prop="number" />
<el-table-column label="客户名称" align="center" prop="name" />
<el-table-column label="客户等级" align="center" prop="level">
<el-table-column label="客户等级" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template>
</el-table-column>
<el-table-column label="国家" align="center" prop="country">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COUNTRY" :value="scope.row.country" />
</template>
</el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="信用等级" prop="creditLevelNameZh"></el-table-column>
<el-table-column label="客户状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="部门" align="center" prop="department" />
<el-table-column label="主联系人" prop="defaultContactName"></el-table-column>
<el-table-column label="主联系方式" prop="defaultContactPhone"></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="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></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)"
......@@ -120,6 +142,7 @@
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
</div>
</template>
......@@ -129,13 +152,18 @@ import { createCustomer, updateCustomer, deleteCustomer, getCustomer,handOverCus
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload'
import {listServiceUser} from "@/api/system/user";
import {getCountryListAll} from "@/api/ecw/country";
import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer";
export default {
name: "customerToBeAssigned",
components: {
upload
upload,
transferCustomer
},
data() {
return {
batchTransferShow:false,
getDictDatas,
DICT_TYPE,
// 遮罩层
......@@ -186,9 +214,19 @@ export default {
service:undefined,//客服
transferData:undefined,//移交数据
transferShow:false,
creditList:[],
selectCustomerList:[],
countryList:[]
};
},
created() {
getCountryListAll().then(r => {
console.log(r,'国家')
this.countryList = r.data
})
getCreditPage({page:1,rows:999}).then(r => {
this.creditList = r.data.list
})
this.getList();
listServiceUser().then(r=>{
console.log(r,'客服');
......@@ -199,6 +237,13 @@ export default {
// })
},
methods: {
countryFormatter(row, column, cellValue) {
const country = this.countryList.find((e) => e.id === cellValue)
return country?.nameZh
},
handleSelectionChange(val){
this.selectCustomerList = val.map(i => i.id);
},
/** 查询列表 */
getList() {
this.loading = true;
......@@ -370,6 +415,14 @@ export default {
return ''
}
}
},
watch:{
selectCustomerList(val){
if(val.length === 0){
this.getList()
this.$refs.multipleTable.clearSelection();
}
},
}
};
</script>
This diff is collapsed.
......@@ -40,7 +40,9 @@
<el-table v-loading="loading" :data="list">
<el-table-column label="目标名称" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.deptName}}{{scope.row.targetPeriodName}}目标</span>
<router-link :to="{path: '/deptTarget/empAchievement',query: {row: scope.row}}" class="link-type">
<span>{{scope.row.deptName}}{{scope.row.targetPeriodName}}目标</span>
</router-link>
</template>
</el-table-column>
<el-table-column label="部门" align="center" prop="deptName"/>
......@@ -80,8 +82,8 @@
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:dept-target:delete']">删除
</el-button>
<el-button size="mini" type="text" icon="el-icon-search" @click="handleView(scope.row)"
v-hasPermi="['ecw:dept-target:create']"></el-button>
<!-- <el-button size="mini" type="text" icon="el-icon-search" @click="handleView(scope.row)"-->
<!-- v-hasPermi="['ecw:dept-target:create']"></el-button>-->
</template>
</el-table-column>
</el-table>
......@@ -109,9 +111,9 @@
</el-select>
</el-form-item>
<el-form-item label="运输方式" prop="transportType">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportType" formatter="number"/>
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportType" formatter="number" @change="showChannel"/>
</el-form-item>
<el-form-item label="出货渠道" prop="shippingChannel">
<el-form-item label="出货渠道" prop="shippingChannel" v-if="this.showFlag">
<el-select v-model="form.shippingChannel" placeholder="请选择出货渠道">
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId"
:key="item.channelId"></el-option>
......@@ -127,49 +129,6 @@
</div>
</el-dialog>
<!--人员目标进度-->
<el-dialog title="人员目标进度" :visible.sync="tableOpen" width="1000px" append-to-body>
<div><span><b>{{detail.deptName}}-{{getDictDataLabel(DICT_TYPE.TARGET_TYPE,detail.targetType)}}</b></span></div>
<div>
<span>运输方式:</span><span>{{getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE,detail.transportType)}}</span>
<span>出货渠道:</span><span>{{ getShipChannelName(detail.shippingChannel) }}</span>
<span>部门目标:</span><span>{{detail.cubeNum}}</span>
</div>
<el-table v-loading="loading" :data="tableList">
<el-table-column label="员工名称" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.userName}}</span>
</template>
</el-table-column>
<el-table-column label="部门" align="center">
<template>
<span>{{detail.deptName}}</span>
</template>
</el-table-column>
<el-table-column label="目标类型" align="center" prop="targetType">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.TARGET_TYPE" :value="scope.row.targetType"/>
</template>
</el-table-column>
<el-table-column label="时间范围" align="center" prop="targetPeriodName">
<template slot-scope="scope">
<span>{{dateFormat(scope.row.startTime)}}~{{dateFormat(scope.row.endTime)}}</span>
</template>
</el-table-column>
<el-table-column label="个人目标方数" align="center" prop="personalCubeNum"/>
<el-table-column label="已完成方数" align="center" prop="personalCompleteCubeNum"/>
<el-table-column label="完成比例" align="center">
<template slot-scope="scope">
<span>{{ (scope.row.personalCompleteCubeNum/scope.row.personalCubeNum*100).toFixed(2)+'%' }}</span>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="tableTotal > 0" :total="tableTotal" :page.sync="tableQueryParams.pageNo"
:limit.sync="tableQueryParams.pageSize"
@pagination="getTableList"/>
</el-dialog>
</div>
</template>
......@@ -195,6 +154,7 @@
return {
// 遮罩层
loading: true,
showFlag:false,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
......@@ -247,8 +207,10 @@
form: {},
// 表单校验
rules: {
deptId: [{required: true, message: "部门ID不能为空", trigger: "blur"}],
deptId: [{required: true, message: "部门不能为空", trigger: "blur"}],
targetType: [{required: true, message: "目标类型不能为空", trigger: "change"}],
targetPeriodName: [{required: true, message: "计算周期不能为空", trigger: "change"}],
transportType: [{required: true, message: "运输方式不能为空", trigger: "change"}],
cubeNum: [{required: true, message: "立方数不能为空", trigger: "blur"}],
}
};
......@@ -320,6 +282,14 @@
}
})
},
showChannel(val){
console.log(val);
if(val===3 || val===4){
this.showFlag = true;
} else {
this.showFlag = false;
}
},
/** 查询列表 */
getList() {
this.loading = true;
......
......@@ -159,8 +159,8 @@
v-model="form.openInvoice"
placeholder="请选择是否需要开票"
>
<el-option :value="1" label="需要"></el-option>
<el-option :value="0" label="不需要"></el-option>
<el-option :value="1" label=""></el-option>
<el-option :value="0" label=""></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
......@@ -377,7 +377,8 @@
</el-card>
</el-form>
<div slot="footer" style="margin: 20px 0">
<el-button type="primary" :loading="saveBtnLoading" @click="submitForm(1)"> </el-button>
<el-button v-if="id==0" type="primary" :loading="saveBtnLoading" @click="submitForm(1)"> </el-button>
<el-button v-else type="primary" :loading="saveBtnLoading" @click="$store.dispatch('tagsView/delCurrentView')"> </el-button>
<el-button type="primary" :loading="saveBtnLoading" @click="submitForm(0)">{{ id ? '修 改' : '新 增' }}</el-button>
</div>
<el-dialog
......@@ -596,7 +597,7 @@
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="selectListRow.currencyId" />
</el-form-item>
<el-form-item label="优惠金额">
<el-input v-model="discountForm.discountTotal" style="width: 300px"></el-input>
<el-input v-model="discountForm.discountTotal" type="number" min="0" :max="selectListRow.totalAmount" @input="checkDiscount" style="width: 300px" ></el-input>
&nbsp;&nbsp;
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="selectListRow.currencyId" />
</el-form-item>
......@@ -698,6 +699,7 @@ export default {
let that = this;
if (that.$route.query.id) {
this.id = this.$route.query.id;
console.log(this.id)
getReceiptInfoByIds({ id: this.id }).then(res => {
res.data.rateValidateDate = dayjs(res.data.rateValidateDate).format('YYYY-MM-DD HH:mm:ss')
this.form = Object.assign({}, this.form, res.data)
......@@ -808,6 +810,12 @@ export default {
}
},
methods: {
checkDiscount(e){
console.log(e)
if(e>this.selectListRow.totalAmount){
this.discountForm.discountTotal = this.selectListRow.totalAmount
}
},
currencyIdChange(val, row, index) {
row.collectionCurrencyId = val
if (val == row.currencyId) row.collectionRate = 1
......@@ -819,7 +827,7 @@ export default {
if (row.currencyId == 3 && val == 1) row.collectionRate = this.NANtoUS()
if (row.currencyId == 3 && val == 2) row.collectionRate = this.NANtoRMB()
}
this.rateChange(row, index)
},
writeOffRateChange(row, index) {
......@@ -835,13 +843,13 @@ export default {
setTimeout(() => {
// 收款总计
const dollarList = this.form.receiptAccountList.filter(v => v.collectionCurrencyId == 1)
const dollar = dollarList.reduce((total, currentValue) => NP.plus(total, NP.minus(currentValue.receivableAmount, currentValue.discountTotal || 0) || 0), 0)
const dollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0)
const rmbList = this.form.receiptAccountList.filter(v => v.collectionCurrencyId == 2)
const rmb = rmbList.reduce((total, currentValue) => NP.plus(total, NP.minus(currentValue.receivableAmount, currentValue.discountTotal || 0) || 0), 0)
const rmb = rmbList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0)
const nairaList = this.form.receiptAccountList.filter(v => v.collectionCurrencyId == 3)
const naira = nairaList.reduce((total, currentValue) => NP.plus(total, NP.minus(currentValue.receivableAmount, currentValue.discountTotal || 0) || 0), 0)
const naira = nairaList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0)
this.form.receiptAccountList[this.form.receiptAccountList.length -1].collectionAmount = [dollar, rmb, naira]
this.$set(this.form, 'receiptAccountList', [...this.form.receiptAccountList])
......@@ -857,7 +865,7 @@ export default {
discountDollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.discountTotal || 0), 0)
const t = copyList.find(v => v.currencyId == 1)
this.form.receiptAccountList = [
{
{
discountTotal: discountDollar,
currencyId: 1,
receivableAmount: dollar,
......@@ -877,7 +885,7 @@ export default {
const t = copyList.find(v => v.currencyId == 2)
this.form.receiptAccountList = [
...this.form.receiptAccountList,
{
{
discountTotal: discountRmb,
currencyId: 2,
receivableAmount: rmb,
......@@ -897,7 +905,7 @@ export default {
const t = copyList.find(v => v.currencyId == 3)
this.form.receiptAccountList = [
...this.form.receiptAccountList,
{
{
discountTotal: discountNaira,
currencyId: 3,
receivableAmount: naira,
......@@ -996,7 +1004,7 @@ export default {
})
},
getReceivableListByIds() {
},
cancelDiscount() {
this.discountVisible = false
......
......@@ -15,7 +15,7 @@
<el-form-item label="柜号:">
<el-input
style="max-width: 188px"
v-model="queryParams.orderNo"
v-model="queryParams.containerNo"
placeholder="请输入柜号"
clearable
@keyup.enter.native="handleQuery"
......@@ -24,7 +24,7 @@
<el-form-item label="自编号:">
<el-input
style="max-width: 188px"
v-model="queryParams.orderNo"
v-model="queryParams.payableNo"
placeholder="请输入自编号"
clearable
@keyup.enter.native="handleQuery"
......@@ -37,6 +37,7 @@
<el-select
v-model="queryParams.departureId"
placeholder="请选择始发城市"
clearable
>
<el-option
v-for="item in expoerCityList"
......@@ -50,6 +51,7 @@
<el-select
v-model="queryParams.objectiveId"
placeholder="请选择目的城市"
clearable
>
<el-option
v-for="item in importCityList"
......@@ -64,6 +66,7 @@
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model="queryParams.transportId"
formatter="number"
clearable
/>
</el-form-item>
</el-row>
......
......@@ -42,6 +42,7 @@
<el-select
v-model="queryParams.departureId"
placeholder="请选择始发城市"
clearable
>
<el-option
v-for="item in expoerCityList"
......@@ -55,6 +56,7 @@
<el-select
v-model="queryParams.objectiveId"
placeholder="请选择目的城市"
clearable
>
<el-option
v-for="item in importCityList"
......@@ -69,12 +71,14 @@
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model="queryParams.transportId"
formatter="number"
clearable
/>
</el-form-item>
<el-form-item label="控货:">
<dict-selector
:type="DICT_TYPE.INFRA_BOOLEAN_STRING"
v-model="queryParams.isCargoControl"
clearable
/>
</el-form-item>
</el-row>
......@@ -83,12 +87,14 @@
<dict-selector
:type="DICT_TYPE.ORDER_STATUS"
v-model="queryParams.status"
clearable
/>
</el-form-item>
<el-form-item label="报关方式:">
<dict-selector
:type="DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model="queryParams.customsType"
clearable
/>
</el-form-item>
<el-form-item label="订单号:">
......@@ -133,12 +139,14 @@
<dict-selector
:type="DICT_TYPE.FEE_TYPE"
v-model="queryParams.feeType"
clearable
></dict-selector>
</el-form-item>
<el-form-item label="发货人:">
<customer-selector
v-model="queryParams.consignorNameOrPhone"
@change="consignor = $event"
clearable
/>
</el-form-item>
<!-- <el-form-item label="发货人:" >
......@@ -151,6 +159,7 @@
<customer-selector
v-model="queryParams.consigneeNameOrPhone"
@change="consignor = $event"
clearable
/>
</el-form-item>
<el-form-item label="自编号:">
......@@ -189,7 +198,7 @@
<el-table-column label="唛头" align="center" prop="marks" />
<el-table-column label="品名" align="center" prop="title">
<template slot-scope="scope">
{{ scope.row.titleZh + "(" + scope.row.titleEn + ")" }}
{{ scope.row.titleZh? (scope.row.titleZh + "(" + scope.row.titleEn + ")"):'' }}
</template>
</el-table-column>
<el-table-column label="箱数" align="center" prop="num" />
......
......@@ -11,36 +11,50 @@
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="客户等级" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-select clearable v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="联系方式">
<el-input placeholder="请输入联系方式" v-model="queryParams.defaultContactPhone"></el-input>
</el-form-item>
<el-form-item label="客户类别" prop="level">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" multiple v-model="queryParams.type"></dict-selector>
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select clearable v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<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="source">
<el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-select clearable v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</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 customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
<el-form-item label="国家" prop="source">
<el-select clearable v-model="form.country" placeholder="请选择国家">
<el-option v-for="dict in countryList"
:key="dict.id" :label="dict.nameZh" :value="parseInt(dict.id)" />
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-select clearable v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="部门" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item label="信用等级" prop="department">
<el-select clearable v-model="form.level" >
<el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
......@@ -73,29 +87,27 @@
</el-table-column>
<el-table-column label="客户编号" align="center" prop="number" />
<el-table-column label="客户名称" align="center" prop="name" />
<el-table-column label="客户等级" align="center" prop="level">
<el-table-column label="客户等级" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template>
</el-table-column>
<el-table-column label="国家" align="center" prop="country">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COUNTRY" :value="scope.row.country" />
</template>
</el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="信用等级" prop="creditLevelNameZh"></el-table-column>
<el-table-column label="客户状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="部门" align="center" prop="department" />
<el-table-column label="主联系人" prop="defaultContactName"></el-table-column>
<el-table-column label="主联系方式" prop="defaultContactPhone"></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="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></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-folder-add" @click="distribution(scope.row)">移交</el-button>
......@@ -134,6 +146,8 @@ import { createCustomer, updateCustomer, deleteCustomer,handOverCustomer,getPubl
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload'
import {listServiceUser} from "@/api/system/user";
import {getCountryListAll} from "@/api/ecw/country";
import {getCreditPage} from "@/api/customer/credit";
export default {
name: "customerToBeAssigned",
components: {
......@@ -193,6 +207,8 @@ export default {
transferShow:false,
multipleSelection:[],
isBatch:false,
countryList:[],
creditList:[]
};
},
created() {
......@@ -201,11 +217,21 @@ export default {
console.log(r,'客服');
this.customerServiceList = r.data;
})
getCountryListAll().then(r => {
this.countryList = r.data
})
getCreditPage({page:1,rows:999}).then(r => {
this.creditList = r.data.list
})
// getNodeList().then(r => {
// this.nodeList = r.data
// })
},
methods: {
countryFormatter(row, column, cellValue) {
const country = this.countryList.find((e) => e.id === cellValue)
return country?.nameZh
},
/** 查询列表 */
getList() {
this.loading = true;
......
......@@ -18,17 +18,17 @@
<el-row v-if="!form.charging">
<el-col :span="12">
<el-form-item :label="$t('运费')">
{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{form.orgSeaFreight}} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('清关费')">
{{form.orgClearanceFreight}} {{ currentMap[form.orgClearanceFreightCurrency] }} / {{ unitMap[form.orgClearanceFreightVolume] }}
{{form.orgClearanceFreight}} {{ currencyMap[form.clearanceFreightCurrency] }} / {{ unitMap[form.clearanceFreightVolume] }}
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('全包价')" v-if="form.charging">
{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{form.orgSeaFreight}} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
<el-form-item :label="$t('佣金类型')" prop="commissionType">
<dict-selector :type="DICT_TYPE.COMMISSION_TYPE" v-model="form.commissionType" form-type="radio" />
......@@ -37,36 +37,37 @@
<!-- 明佣或者明佣+暗佣才显示 -->
<el-form-item label="明佣佣金" v-if="form.commissionType == 1 || form.commissionType == 3">
<el-input v-model.number="form.lightCommissionAmount" placeholder="" class="w-100"></el-input>
{{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
<!-- 明佣+暗佣才显示 -->
<el-form-item label="暗佣佣金" v-if="form.commissionType == 3">
<el-input v-model.number="form.shadeCommissionAmount" placeholder="" class="w-100"></el-input>
{{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
<!-- 无佣金不显示 -->
<div class="pl-50" v-if="form.commissionType != 0">
<div>{{$l(form, 'prodTitle')}}</div>
<div v-if="form.commissionType != 2">{{$l(form, 'prodTitle')}}</div>
<!-- 明佣+暗佣显示 -->
<div v-if="form.commissionType == 3">
成本价:{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{$t('成本价')}}{{form.orgSeaFreight}} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</div>
<!-- 暗佣显示 -->
<div v-if="form.commissionType == 2">
{{$l(form, 'prodTitle')}}
<template v-if="darkCommission">
{{$t('暗佣')}}{{darkCommission}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
{{$t('暗佣')}}{{darkCommission}} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</template>
<el-link type="primary" @click.native="$router.push('/customer/customerCommission?customerId=' + customerId)">去设置</el-link>
</div>
<div v-if="form.commissionType == 1 || form.commissionType == 3">销售价:{{form.orgSeaFreight + form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
<div v-if="form.commissionType == 3">实际佣金返点:{{form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
<div v-if="form.commissionType == 1 || form.commissionType == 3">{{$t('销售价')}}{{form.orgSeaFreight + form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}</div>
<div v-if="form.commissionType == 3">{{$t('实际佣金返点')}}{{form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currencyMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}</div>
</div>
<div class="page-title">审批流程</div>
<div class="page-title">{{$t('审批流程')}}</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
</el-form>
......@@ -139,7 +140,7 @@ export default {
return s ? '' + s + '' : ''
}
},
currentMap(){
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
......
......@@ -25,35 +25,40 @@
</div>
<div>
原运费:{{form.seaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
原运费:{{form.seaFreight + currencyMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
新运费:{{newSeaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
新运费:{{newSeaFreight + currencyMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
成本价:{{form.orgSeaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
成本价:{{form.orgSeaFreight + currencyMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
明佣:{{ form.lightCommissionAmount + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
明佣:{{ form.lightCommissionAmount + currencyMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
暗佣:{{form.shadeCommissionAmount + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
暗佣:{{form.shadeCommissionAmount + currencyMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
</el-descriptions-item>
<el-descriptions-item label="申请原因" :span="3" v-if="type == 1">
<div class="item">
商品:{{$l(form, 'prodTitle')}}
</div>
<div>
原运费:{{form.orgSeaFreight + currentMap[form.seaFreight] + '/' + unitMap[form.seaFreight]}}
原清关费:{{form.orgClearanceFreight + currentMap[form.clearanceFreightCurrency] + '/' + unitMap[form.clearanceFreightVolume]}}
</div>
<div>
新运费:{{seaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
新清关费:{{form.clearanceFreight + currentMap[form.clearanceFreightCurrency] + '/' + unitMap[form.clearanceFreightVolume]}}
</div>
<template v-if="form.charging">
原全包价:{{form.orgSeaFreight}} {{currencyMap[form.seaFreightCurrency]}} / {{unitMap[form.seaFreightVolume]}},
新全包价:{{form.seaFreight}} {{currencyMap[form.seaFreightCurrency]}} / {{unitMap[form.seaFreightVolume]}}
</template>
<template v-else>
<div>
原运费:{{form.orgSeaFreight}} {{ currencyMap[form.seaFreightCurrency]}} /{{unitMap[form.seaFreightVolume]}}
原清关费:{{form.orgClearanceFreight}} {{currencyMap[form.clearanceFreightCurrency]}} / {{unitMap[form.clearanceFreightVolume]}}
</div>
<div>
新运费:{{form.seaFreight}} {{currencyMap[form.seaFreightCurrency]}} / {{unitMap[form.seaFreightVolume]}}
新清关费:{{form.clearanceFreight}} {{currencyMap[form.clearanceFreightCurrency]}} / {{unitMap[form.clearanceFreightVolume]}}
</div>
</template>
</el-descriptions-item>
<!--
......@@ -71,10 +76,10 @@
<el-descriptions-item label="是否预付">
<dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="form.isPayAdvance" />
</el-descriptions-item> -->
<!-- <el-descriptions-item label="旧运费">{{ form.orgSeaFreight }} {{ currentMap[form.orgSeaFreightCurrency] }}/{{ unitMap[form.orgSeaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currentMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.seaFreight }} {{ currentMap[form.seaFreightCurrency] }}/{{ unitMap[form.seaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currentMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item> -->
<!-- <el-descriptions-item label="旧运费">{{ form.orgSeaFreight }} {{ currencyMap[form.orgSeaFreightCurrency] }}/{{ unitMap[form.orgSeaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currencyMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.seaFreight }} {{ currencyMap[form.seaFreightCurrency] }}/{{ unitMap[form.seaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currencyMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item> -->
</el-descriptions>
</template>
......@@ -112,7 +117,7 @@ export default {
}
},
computed: {
currentMap(){
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
......
......@@ -49,7 +49,7 @@
</el-form-item>
<el-form-item :label="$t('新全包价')" style="width: 400px" prop="clearanceFreight" v-if="form.charging">
<el-input v-model="form.seaFreight" type="number" class="w-100" />
{{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.sorgSeaFreightVolume] }}
{{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
</el-form>
......
......@@ -120,12 +120,20 @@
</el-table-column>
<el-table-column :label="$t('运费')" width="200px">
<template slot-scope="scope">
<div v-if="scope.row.seaFreight">
<div>{{$t('运费')+":"+scope.row.seaFreight}}{{currentcyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}</div>
<div>{{$t('清关费')+':'+scope.row.clearanceFreight}}{{currentcyMap[scope.row.clearanceFreightCurrency]}} / {{unitMap[scope.row.clearanceFreightVolume]}}</div>
</div>
<div v-else>未报价</div>
<template slot-scope="{row}">
<template v-if="row.charging ==1">
<template v-if="!row.seaFreight">未报价</template>
<template>{{$t('全包价')}} {{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</template>
</template>
<template v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template>
<template v-else>
<div>
{{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div>
<div>
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div>
</template>
</template>
</el-table-column>
</el-table>
......
......@@ -532,6 +532,17 @@ export default {
},
// 表单校验
rules: {
marks: [
{
validator: (rule, value, callback) => {
if(value && !/[a-zA-Z]/.test(value.charAt(0))){
return callback(new Error(this.$t('唛头必须以字母开头')))
}
callback()
},
trigger: 'blur'
}
],
lineId: [{ required: true, message: "请选择线路"}],
consignorId: [{ required: true, message: "发货人不能为空",}],
consigneeId: [{ required: true, message: "收货人不能为空"}],
......
......@@ -47,25 +47,43 @@
<el-table-column
:label="$t('原价')">
<template v-slot="{row}">
{{$t('运费')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.originalSeaFreight">未报价</template>
<template v-else-if="row.charging ==1">
{{$t('全包价')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<el-table-column
label="成本价">
<template v-slot="{row}">
{{$t('运费')}}{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.costSeaFreight">未报价</template>
<template v-else-if="row.charging">
{{$t('全包价')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<el-table-column
:label="$t('销售价')">
<template v-slot="{row}">
{{$t('运费')}}{{ row.saleSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.oneSeaFreight">未报价</template>
<template v-else-if="row.charging">
{{$t('全包价')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<el-table-column
......@@ -77,7 +95,7 @@
</el-table-column>
</el-table>
<!-- <div style="text-align: center;margin-top: 80px">
<el-button type="primary">申请重货优惠</el-button>
<el-button type="primary">申请泡货优惠</el-button>
......
......@@ -62,7 +62,7 @@
<el-table-column :label="$t('操作')" width="300px">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 1" type="primary" size="mini" @click="editIndex=scope.$index">{{$t('修改')}}</el-button>
<el-button v-if="scope.row.status == 1" type="danger" size="mini" @click="cancel(scope.row.id)">{{$t('取消')}}</el-button>
<el-button v-if="scope.row.status == 1" type="danger" size="mini" @click="cancelCargoPickId = scope.row.id">{{$t('取消')}}</el-button>
<el-button v-if="scope.row.status == 1" type="success" size="mini" @click="review(scope.row.id)">{{$t('放货复核')}}</el-button>
<el-button v-if="scope.row.status == 3" type="danger" size="mini" @click="fallbackIndex=scope.$index">{{$t('反复核')}}</el-button>
<el-button v-if="scope.row.status == 3" type="success" size="mini" @click="cargoControlPickId=scope.row.id">{{$t('调货')}}</el-button>
......@@ -106,11 +106,16 @@
<fallback v-if="fallbackIndex !== null" :order="detail" :index="fallbackIndex" @close="fallbackIndex=null" @success="onFallbackSuccess" />
<edit v-if="editIndex !== null" @close="editIndex=null" :order="detail" :index="editIndex" @success="onEditSuccess" />
<transfer-cargo
v-if="cargoControlPickId !== null"
:order-id="detail.orderId"
:cargo-control-pick-id="cargoControlPickId"
@close="cargoControlPickId=null"
@success="onTransferCargoSuccess" />
v-if="cargoControlPickId !== null"
:order-id="detail.orderId"
:cargo-control-pick-id="cargoControlPickId"
@close="cargoControlPickId=null"
@success="onTransferCargoSuccess" />
<cancel-cargo v-if="!!cancelCargoPickId"
:order="detail"
:cargo-control-pick-id="cancelCargoPickId"
@close="cancelCargoPickId=null"
@success="onCancelCargoSuccess" />
</div>
</template>
<script>
......@@ -119,10 +124,11 @@ import {createPick, getPickRleaseInfo, review, cancel, cancelApproval} from '@/a
import {parseTime} from '@/utils/ruoyi'
import Fallback from './components/Fallback'
import TransferCargo from '@/views/ecw/order/components/TransferCargo'
import CancelCargo from './components/CancelCargo.vue'
export default {
filters: {parseTime},
components: {edit, Fallback, TransferCargo},
components: {edit, Fallback, TransferCargo, CancelCargo, CancelCargo},
data(){
return {
detail: null,
......@@ -131,6 +137,7 @@ export default {
editIndex: null, // 修改索引
fallbackIndex: null, // 反复核索引
cargoControlPickId: null, // 调货ID
cancelCargoPickId: null, // 取消返货ID
}
},
created(){
......@@ -205,6 +212,10 @@ export default {
onTransferCargoSuccess(){
this.cargoControlPickId = null
this.loadData()
},
onCancelCargoSuccess(){
this.cancelCargoPickId = null
this.loadData()
}
}
}
......
......@@ -8,12 +8,12 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('收货人')">
{{info.consigneeName}}
{{detail.consigneeName}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('收货人电话')">
+{{info.consigneeCountryCode}} {{info.consigneePhone}}
+{{detail.consigneeCountryCode}} {{detail.consigneePhone}}
</el-form-item>
</el-col>
</el-row>
......@@ -21,16 +21,16 @@
{{order.sumNum}}
</el-form-item>
<el-form-item :label="$t('取消放货原因')">
<el-form-item :label="$t('取消放货原因')" prop="cancelPickType">
<dict-selector :type="DICT_TYPE.ECW_CANCEL_PICK_TYPE" v-model="formData.cancelPickType" form-type="radio" />
</el-form-item>
<el-form-item :label="$t('上传凭证')">
<image-upload v-model="formData.voucher" />
</el-form-item>
<el-form-item :label="$t('控货手机号')">
+{{info.countryCode}} {{info.phone}}
+{{detail.countryCode}} {{detail.phone}}
</el-form-item>
<el-form-item :label="$t('手机验证码')">
<el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input>
......@@ -44,11 +44,6 @@
<el-button type="primary" @click="submit">{{$t('提交申请')}}</el-button>
<el-button @click="closeDialog">{{$t('关闭')}}</el-button>
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">{{$t('提交申请')}}</el-button>
<el-button type="default" @click="closeDialog">{{$t('关闭')}}</el-button>
</el-form-item>
</el-form>
</el-dialog>
</template>
......@@ -57,33 +52,29 @@ import {createPick, getRleaseInfo, seasoningCondimentsSelect, updateApply} from
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import WorkFlow from '@/components/WorkFlow'
import ImageUpload from '@/components/ImageUpload'
export default {
props:{
orderId: [String, Number],
order: Object,
cargoControlPickId: Number
},
components: {AreaCodeSelector, SendSmsCode, WorkFlow},
components: {AreaCodeSelector, SendSmsCode, WorkFlow, ImageUpload},
data(){
return {
show: false,
detail: null,
ccIdArr: [],
formData:{
applyType: 10, // 调货审核
applyType: 10, // 取消审核
ccIds: ''
},
rules:{
cancelPickType: {required: true, message: this.$t('请选择取消放货类型')},
code: {required: true, message: this.$t('请填写验证码')}
},
orders: [],
selectedOrders:[]
}
},
watch:{
'formData.orderIds'(val){
this.selectedOrders = this.orders.filter(item => val.indexOf(item.orderId) > -1)
},
ccIdArr(val){
this.formData.ccIds = val.join(',')
}
......@@ -94,10 +85,7 @@ export default {
},
methods:{
loadData(){
getRleaseInfo(this.orderId).then(res => this.detail = res.data)
seasoningCondimentsSelect({orderId: this.orderId}).then(res => {
this.orders = res.data
})
getRleaseInfo(this.order.orderId).then(res => this.detail = res.data)
},
closeDialog(){
this.show = false
......@@ -112,15 +100,13 @@ export default {
updateApply(Object.assign({
cargoControlPickId: this.cargoControlPickId,
orderBackPageVOList: this.selectedOrders,
orderId: this.orderId
orderId: this.order.orderId
}, this.formData)).then(res => {
this.$message.success(this.$t('操作成功'))
this.show = false
this.$emit('success')
})
})
}
}
}
......
......@@ -33,7 +33,7 @@
<!-- 取消放货 -->
<el-descriptions-item label="申请原因" v-if="applyType == 10">
{{detail.reason}}
<dict-tag :type="DICT_TYPE.ECW_CANCEL_PICK_TYPE" :value="detail.cancelPickType" />
</el-descriptions-item>
</el-descriptions>
......
......@@ -16,13 +16,15 @@ import {getLadingBill} from '@/api/ecw/order'
import lodop from '@/utils/lodop'
import PdfViewer from '@/components/PdfViewer'
import FileSaver from 'file-saver'
import {downloadByOrderId} from '@/api/ecw/box'
export default {
components: {PdfViewer},
filters: {parseTime},
props:{
transportType: Number,
tidanNO: [String, Number]
// tidanNO: [String, Number],
orderId: String
},
data(){
return {
......@@ -56,10 +58,7 @@ export default {
methods:{
loadData(){
this.loading = true
getLadingBill({
billLadingNo: this.tidanNo,
type: this.type
})
downloadByOrderId(this.orderId)
.then(arrayBuffer => {
this.pdfData = arrayBuffer
})
......
<template>
<el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('优惠申请')">
<el-form ref="form" :model="form" label-width="80px" :rules="rules">
<el-form-item :label="$t('商品类型')">
<span>{{ $l(productType, 'title') }}</span>
</el-form-item>
<el-form-item :label="$t('商品名称')">
<span>{{ form.prodTitleZh }}</span>
</el-form-item>
<el-form-item :label="$t('英文名称')">
<span>{{ form.prodTitleEn }}</span>
</el-form-item>
<el-form-item :label="$t('线路')">
<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="form.transportId" />
{{ channel ? $l(channel, 'title') : '' }}
{{$t("从【{departureName}】发往【{objectiveName}", {departureName: form.departureName, objectiveName: form.objectiveName})}}
</el-form-item>
<el-form-item :label="$t('是否预付')">
<dict-tag :type="DICT_TYPE.ECW_YESNO" :value="form.isPayAdvance" />
</el-form-item>
<el-row v-if="!form.charging">
<el-col :span="12">
<el-form-item :label="$t('旧运费')">
{{form.orgSeaFreight}} {{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('旧清关费')">
{{form.orgClearanceFreight}} {{ currentMap[form.clearanceFreightCurrency] }} / {{ unitMap[form.clearanceFreightVolume] }}
</el-form-item>
</el-col>
</el-row>
<el-row v-if="!form.charging">
<el-col :span="12">
<el-form-item :label="$t('新运费')" style="width: 400px" prop="seaFreight">
<el-input v-model="form.seaFreight" type="number" class="w-100" />
{{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('新清关费')" style="width: 400px" prop="clearanceFreight">
<el-input v-model="form.clearanceFreight" type="number" class="w-100" />
{{ currentMap[form.clearanceFreightCurrency] }} / {{ unitMap[form.clearanceFreightVolume] }}
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('旧全包价')" v-if="form.charging">
{{form.orgSeaFreight}} {{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
<el-form-item :label="$t('新全包价')" style="width: 400px" prop="clearanceFreight" v-if="form.charging">
<el-input v-model="form.seaFreight" type="number" class="w-100" />
{{ currentMap[form.seaFreightCurrency] }} / {{ unitMap[form.seaFreightVolume] }}
</el-form-item>
</el-form>
<div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
<div v-if="!form.applyStatus">
<el-button type="primary" @click="handleSubmit">提交</el-button>
</div>
<div v-else>
<el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">
<dict-tag :type="DICT_TYPE.APPLY_STATUS" :value="form.applyStatus" />
</el-button>
</div>
</el-dialog>
</template>
<script>
import {createOrderSpecial, getOrderSpecial} from "@/api/ecw/order"
import {getUnitList} from "@/api/ecw/unit"
import {getChannel, getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency'
import { getProductTypeList, getProductType } from '@/api/ecw/productType'
import WorkFlow from '@/components/WorkFlow'
export default {
name: "specialDiscount",
props: {
orderItemId: Number,
},
components: {
WorkFlow
},
created() {
// 查看详情,列表进来的
if(this.orderItemId){
this.getOrderSpecial()
}
getUnitList().then(res => this.unitList = res.data)
// getChannelList().then(res => this.channelList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
// getProductTypeList().then(res => this.productTypeList = res.data)
},
data() {
return {
unitList:[],
// channelList:[],
currencyList:[],
// productTypeList:[],
ccIdArr: [],
form: {
type: 1
},
rules:{
seaFreight : {required: true, message: '运费不能为空'},
clearanceFreight: {required: true, message: '清关费不能为空'}
},
productType: null,
channel: null
}
},
watch:{
ccIdArr(){
this.$set(this.form, 'ccIds', this.ccIdArr.join(','))
}
},
methods: {
handleSubmit(){
this.$refs.form.validate().then(res => {
createOrderSpecial(Object.assign({}, this.form, {type: 1})).then(res => {
this.$message.success(this.$t('提交成功'))
this.$emit('success')
})
})
},
getOrderSpecial(){
getOrderSpecial(this.orderItemId).then(r => {
this.form = r.data
getProductType(this.form.productType).then(res => {
this.productType = res.data
})
if(this.form.channelId){
getChannel(this.form.channelId).then(res => {
this.channel = res.data
})
}
})
},
/* getProductTypeNameById(id){
return this.$l(this.productTypeList.find(e => e.id === id), 'title')
}, */
closeDialog(){
this.$emit('close')
}
},
computed: {
// 根据渠道id显示渠道名
getChannelNameById(){
return channelId => {
const s = this.channelList.find(item => item.channelId == channelId) ?. nameZh
return s ? '' + s + '' : ''
}
},
currentMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
unitMap(){
let map = {}
this.unitList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
}
}
}
</script>
......@@ -478,7 +478,11 @@
</el-table-column>
<el-table-column :label="$t('中文品名')" prop="prodTitleZh"></el-table-column>
<el-table-column :label="$t('英文品名')" prop="prodTitleEn"></el-table-column>
<el-table-column :label="$t('品牌')" prop="brand"></el-table-column>
<el-table-column :label="$t('品牌')" prop="brand">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template>
</el-table-column>
<el-table-column :label="$t('件数')" prop="num"></el-table-column>
<el-table-column :label="$t('重量') + '(kg)'" prop="weight"></el-table-column>
<el-table-column :label="$t('体积') + '(m³)'" prop="volume"></el-table-column>
......@@ -563,7 +567,18 @@ export default {
},
// 表单校验
rules: {
marks : [{required: true, message: this.$t('请填写唛头')}],
marks: [
{required: true, message: this.$t('请填写唛头')},
{
validator: (rule, value, callback) => {
if(!/[a-zA-Z]/.test(value.charAt(0))){
return callback(new Error(this.$t('唛头必须以字母开头')))
}
callback()
},
trigger: 'blur'
}
],
consignorContactsId : [{required: true, message: this.$t('发货人不能为空')}],
consigneeContactsId : [{required: true, message: this.$t('收货人不能为空')}],
transportId : [{required: true, message: this.$t('请选择运输方式')}],
......@@ -820,7 +835,7 @@ export default {
let form = new FormData()
form.append('file', e.file)
orderImport(form).then(res => {
if(!this.importList.length){
if(!res.data.list.length){
return this.$message.error('无有效数据')
}
......
......@@ -196,6 +196,7 @@ export default {
/** 查询列表 */
getList() {
this.loading = true;
this.list = []
// 处理查询参数
let params = {...this.queryParams}
// 执行查询
......@@ -203,7 +204,7 @@ export default {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
this.reset()
// this.reset()
});
},
/** 表单重置 */
......
......@@ -214,13 +214,13 @@
<el-dropdown-item @click.native="$router.push('/order/special/' + scope.row.orderId)" v-hasPermi="['ecw:order:update']" >{{$t('特价')}}</el-dropdown-item>
</template>
<!-- 确认货 -->
<!-- 确认货 -->
<template v-if="
exclude(scope.row.status, [0,2]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.shipmentState, [320,322,323])
">
<el-dropdown-item @click.native="$router.push(`/order/release?orderId=${scope.row.orderId}`)" >{{$t('确认')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`/order/release?orderId=${scope.row.orderId}`)" >{{$t('确认')}}</el-dropdown-item>
</template>
<!-- 合单,拆单 -->
......@@ -254,13 +254,13 @@
include(scope.row.inWarehouseState, [201,202, 208, 202, 210, 202, 211, 202, 213, 214, 215, 216]) ||
include(scope.row.abnormalState, [99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14])
">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓补充')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓补充')}}</el-dropdown-item>
</template>
<!-- 入仓修改 -->
<template v-if="
include(scope.row.inWarehouseState, [202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216, 204, 205, 206])
">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓修改')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/order/warehousing-update?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓修改')}}</el-dropdown-item>
</template>
<!-- 退仓 -->
......@@ -307,7 +307,7 @@
<!--打印相关的-->
<el-dropdown>
<el-button type="text">{{$t('操作')}}</el-button>
<el-button type="text">{{$t('打印')}}</el-button>
<el-dropdown-menu slot="dropdown">
<!-- 打印标签 -->
<template v-if="
......@@ -328,7 +328,7 @@
</template>
<!-- 打印提单 -->
<el-dropdown-item @click.native="printLadingBillInfo={tidanNO: scope.row.tidanNo, transportType: scope.row.transportId}" :disabled="!scope.row.tidanNo">{{$t('打印提单')}}</el-dropdown-item>
<el-dropdown-item @click.native="printLadingBillOrderId=scope.row.orderId" :disabled="!scope.row.tidanNo">{{$t('打印提单')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
......@@ -341,7 +341,7 @@
<special-needs :show.sync="isShow" :order-id="orderId" @determine="getList" ></special-needs>
<print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" />
<print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
<print-lading-bill v-if="printLadingBillInfo !== null" v-bind="printLadingBillInfo" @close="printLadingBillInfo=null" />
<print-lading-bill v-if="printLadingBillOrderId !== null" :order-id="printLadingBillOrderId" @close="printLadingBillOrderId=null" />
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal>
<batch-single-application :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
......@@ -430,7 +430,7 @@ export default {
printTagOrderId: null, // 显示打印标签的订单ID
printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
printLadingBillInfo: null, // 打印提单
printLadingBillOrderId: null, // 打印提单的订单ID
showBatchPickup: false, // 是否显示批量提货弹窗
showMergedLogOrderNo:null, // 显示合单日志订单号
showPickupLogOrderNo: null, // 显示提货日志的订单号
......
......@@ -8,7 +8,7 @@
<el-divider></el-divider>
<el-form inline label-width="100px">
<el-form-item label="订单号"><div class="content">
<el-input v-model.trim="params.relateOrderNo"></el-input>
<el-input v-model.trim="params.mutualOrderNo"></el-input>
</div></el-form-item>
<el-form-item><div class="content">
<el-button @click="getList">查询</el-button>
......
......@@ -5,7 +5,7 @@
<el-form inline label-width="85px" label-position="left">
<el-form-item label="订单号">
<div class="content">
<el-input v-model.trim="params.relateOrderNo"></el-input>
<el-input v-model.trim="params.mutualOrderNo"></el-input>
</div>
</el-form-item>
<el-form-item>
......
......@@ -3,10 +3,10 @@
<el-row type="flex" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="16">
<el-card class="box-card">
<div slot="header" class="clearfix" v-if="!readonly">
<span style="font-size: 18px;font-weight: bold">{{ isDiscount ? '折扣管理' : '优惠申请' }}</span>
<div slot="header" class="clearfix">
<span style="font-size: 18px;font-weight: bold">{{$t('优惠申请')}}</span>
</div>
<el-form v-if="!readonly" ref="form" :model="form" label-width="80px">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="商品类型">
<span>{{ getProductAttrNameById(form.prodType) }}</span>
</el-form-item>
......@@ -18,6 +18,7 @@
</el-form-item>
<el-form-item label="线路">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${startTitleZh}】发往【${destTitleZh}】`}}
</el-form-item>
<el-form-item label="是否预付">
{{ form.isPayAdvance === 0 ? '' : '' }}
......@@ -48,29 +49,14 @@
</el-form-item>
</el-form>
<div >
<div>
<h2>审批流程</h2>
<work-flow xmlkey="free_apply" v-model="form.channelId" />
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
<div v-if="!readonly">
<div>
<el-button type="primary" @click="handleSubmit">提交</el-button>
</div>
<el-descriptions border v-if="readonly" :column="1">
<el-descriptions-item label="商品类型">{{ form.productType }}</el-descriptions-item>
<el-descriptions-item label="商品名称">{{ form.prodTitleZh }}</el-descriptions-item>
<el-descriptions-item label="英文名称">{{ form.prodTitleEn }}</el-descriptions-item>
<el-descriptions-item label="线路">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${startTitleZh}】发往【${destTitleZh}】`}}
</el-descriptions-item>
<el-descriptions-item label="是否预付">{{ form.isPayAdvance === 0 ? '' : '' }}</el-descriptions-item>
<el-descriptions-item label="旧运费">{{ form.orgFreight }} {{ currentMap[form.orgFreightCurrency] }}/{{ unitMap[form.orgFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currentMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.freight }} {{ currentMap[form.freightCurrency] }}/{{ unitMap[form.freightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currentMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item>
</el-descriptions>
</el-card>
</el-col>
</el-row>
......
<template>
<div class="app-container">
<el-card>
<div slot="header" class="card-title">申请特价</div>
<div slot="header" class="card-title">{{$t('申请特价')}}</div>
<!-- 列表 -->
<div class="order-header">
<span style="font-size: 15px;">订单号{{ order.orderNo }}</span>
<span style="font-size: 15px;">{{$t('订单号')}}{{ order.orderNo }}</span>
</div>
<el-table v-loading="loading" :data="order.orderItemVOList">
<el-table-column label="序号" align="center" prop="id" type="index"></el-table-column>
<el-table-column :label="$t('序号')" align="center" prop="id" type="index"></el-table-column>
<el-table-column
prop="prodTitleZh"
label="品名">
:label="$t('品名')">
<template v-slot="{row}">
{{ row.prodTitleZh }}/{{ row.prodTitleEn }}
</template>
</el-table-column>
<el-table-column
prop="prodAttrIds"
label="填单货物属性">
:label="$t('填单货物属性')">
<template v-slot="{row}">
品牌:{{ ['无牌', '有牌', '中性'][row.brandType] }}<br>
箱数{{ row.num }}<br>
体积{{ row.volume }}<br>
重量{{ row.weight }}Kg
{{$t('品牌')}}<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /><br>
{{$t('箱数')}}{{ row.num }}<br>
{{$t('体积')}}{{ row.volume }}<br>
{{$t('重量')}}{{ row.weight }}Kg
</template>
</el-table-column>
<el-table-column
prop="address"
label="入库货物属性">
:label="$t('入库货物属性')">
<template v-slot="{row}">
<!-- // TODO 待测试完善 -->
<template v-if="row.warehouseInInfoVO">
品牌:{{ ['无牌', '有牌', '中性'][row.brandType] }}<br>
箱数{{ row.warehouseInInfoVO.cartonsNum }}<br>
体积{{ row.warehouseInInfoVO.volume }}<br>
重量{{ row.warehouseInInfoVO.weight }}Kg
{{$t('品牌')}}<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /><br>
{{$t('箱数')}}{{ row.warehouseInInfoVO.cartonsNum }}<br>
{{$t('体积')}}{{ row.warehouseInInfoVO.volume }}<br>
{{$t('重量')}}{{ row.warehouseInInfoVO.weight }}Kg
</template>
<span v-else>暂时没有入库信息</span>
<span v-else>{{$t('暂时没有入库信息')}}</span>
</template>
</el-table-column>
<el-table-column
prop="updateTime"
:formatter="(_, __, v) => parseTime(v)"
label="最后操作时间">
:label="$t('最后操作时间')">
</el-table-column>
<el-table-column
label="原价">
:label="$t('原价')">
<template v-slot="{row}">
运费:{{ row.originalSeaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.originalClearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.originalSeaFreight">未报价</template>
<template v-else-if="row.charging ==1">
{{$t('全包价')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<el-table-column
prop="address"
label="成本价">
<template v-slot="{row}">
运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.costSeaFreight">未报价</template>
<template v-else-if="row.charging">
{{$t('全包价')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<el-table-column
prop="address"
label="销售价">
:label="$t('销售价')">
<template v-slot="{row}">
运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
<template v-if="!row.oneSeaFreight">未报价</template>
<template v-else-if="row.charging">
{{$t('全包价')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
</template>
<template v-else>
{{$t('运费')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
{{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="status"-->
<!-- :formatter="(v) => ['取消报价', '特价审批中', '需求确认(草稿)', '跟进中', '赢单', '输单', '报价完成', '审批通过', '审批拒绝'][v.status]"-->
<!-- label="审核状态">-->
<!-- </el-table-column>-->
<el-table-column
prop="address"
label="操作">
:label="$t('操作')">
<template v-slot="{row}">
<template v-if="row.originalSeaFreight !== 0 && row.originalClearanceFreight !== 0">
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount/${row.orderItemId}?orderId=${row.orderId}`)">优惠申请</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="showDiscountItemId=row.orderItemId">优惠申请</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/specialCommission/${row.orderItemId}`)">佣金规则</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount1/${row.orderItemId}?orderId=${row.orderId}&discount=1`)">管理折扣</el-button>
</template>
</template>
</el-table-column>
......@@ -95,6 +107,10 @@
<el-button type="primary" @click="$tab.closePage()">关闭窗口</el-button>
</div>
</el-card>
<special-discount v-if="!!showDiscountItemId" :orderItemId="showDiscountItemId" />
</div>
</template>
......@@ -105,9 +121,12 @@ import {getCurrencyList} from "@/api/ecw/currency"
import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
import {getOrder} from "@/api/ecw/order"
import SpecialDiscount from '@/views/ecw/order/components/SpecialDiscount.vue'
export default {
name: "OrderSpecial",
components: {
SpecialDiscount
},
props: {
orderId: [String, Number]
......@@ -136,7 +155,9 @@ export default {
unitList:[],
currencyList:[],
productAttrList:[],
hasWarehouseInInfo: false
hasWarehouseInInfo: false,
showDiscountItemId: null
};
},
created() {
......@@ -171,7 +192,7 @@ export default {
path:"/order/specialLight/"+this.params.orderId,
})
},
getProductNamesByIds(ids){
/* getProductNamesByIds(ids){
const result = []
ids.split(',').forEach(e => {
this.productAttrList.forEach(f => {
......@@ -181,20 +202,20 @@ export default {
})
})
return result.join(',')
}
} */
},
computed: {
currentMap(){
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
}
......
<template>
<div>
<el-dialog
:title="(edit ? '入仓修改' : (warehousing.orderWarehouseInBackItemDoList.length > 0 ? '入仓补充' : '入仓操作')) + ' - ' + warehousing.orderNo"
:title="title + ' - ' + warehousing.orderNo"
:visible.sync="opened"
width="1080px"
>
......@@ -431,7 +431,7 @@ export default {
opened(val) {
if (val) {
this.form.material = this.warehousing.material
this.form.brand = this.warehousing.brand
this.form.brand = this.warehousing.brand || '0'
this.handleBrandChange(this.form.brand)
} else {
this.$emit('update:visible', false)
......@@ -442,8 +442,10 @@ export default {
this.form.orderWarehouseInItemDoList = []
this.form1.orderWarehouseInItemDoList = []
this.activeName = 'first'
this.handleAdd()
this.handleAdd(1)
if (!this.edit){
this.handleAdd()
this.handleAdd(1)
}
}
}
},
......@@ -587,6 +589,9 @@ export default {
},
computed: {
title() {
return this.$route.name
},
brandObject(){
return this.brandList.find(e => e.id === this.form.brand) || ''
},
......
<template>
<div class="app-container">
<h2>入仓操作-{{ order.orderNo }}</h2>
<h2>{{ title }}-{{ order.orderNo }}</h2>
<order-base-info :order="order"></order-base-info>
......@@ -74,14 +74,12 @@
prop="address"
label="操作">
<template v-slot="{ row, column, $index }">
<el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button>
<template v-else>
<template v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0">
<el-button size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
</template>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
<el-button v-if="isEdit" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button>
<template v-else-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0">
<el-button size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
</template>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
</template>
</el-table-column>
</el-table>
......@@ -145,7 +143,7 @@
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList"
:order-id="orderId" :city-id="cityId"></warehouse-area-dialog>
<edit-dialog :customer-id="order.customerId" :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="order.status === 5"></edit-dialog>
<edit-dialog :title="title" :customer-id="order.customerId" :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="isEdit"></edit-dialog>
<!-- 完成入仓 -->
<el-dialog
......@@ -267,6 +265,16 @@ export default {
},
methods: {
include(){
return (state, arr) => {
return arr.indexOf(state) > -1
}
},
exclude(){
return (state, arr) => {
return arr.indexOf(state) == -1
}
},
handleLabelSubmit(){
orderWarehouseInUpdateLabel({
...this.label,
......@@ -367,14 +375,14 @@ export default {
}).then(() => {
this.$message({
type: 'success',
message: '申请退仓成功!'
message: '货物退仓成功!'
});
getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data.reverse())
this.getOrder()
})
}).catch(() => {
}).catch(e => {
});
}
},
......@@ -398,6 +406,15 @@ export default {
},
computed: {
// isAdd() {
// return this.$route.path === "/order/warehousing-add"
// },
isEdit() {
return this.$route.path === "/order/warehousing-update"
},
title() {
return this.$route.name
},
orderSpecialNeedsDict() {
return this.$store.state.dict.dictDatas.order_special_needs
},
......
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